Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

118517 rader
7.4 MiB

  1. <?xml version="1.0"?>
  2. <!--
  3. /**
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. -->
  8. <jmeterTestPlan version="1.2" properties="3.1" jmeter="3.1 r1770033">
  9. <hashTree>
  10. <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Benchmark" enabled="true">
  11. <stringProp name="TestPlan.comments"></stringProp>
  12. <boolProp name="TestPlan.functional_mode">false</boolProp>
  13. <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
  14. <stringProp name="TestPlan.user_define_classpath"></stringProp>
  15. <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  16. <collectionProp name="Arguments.arguments">
  17. <elementProp name="host" elementType="Argument">
  18. <stringProp name="Argument.name">host</stringProp>
  19. <stringProp name="Argument.value">${__P(host,localhost)}</stringProp>
  20. <stringProp name="Argument.metadata">=</stringProp>
  21. </elementProp>
  22. <elementProp name="base_path" elementType="Argument">
  23. <stringProp name="Argument.name">base_path</stringProp>
  24. <stringProp name="Argument.value">${__P(base_path,/)}</stringProp>
  25. <stringProp name="Argument.metadata">=</stringProp>
  26. </elementProp>
  27. <elementProp name="files_folder" elementType="Argument">
  28. <stringProp name="Argument.name">files_folder</stringProp>
  29. <stringProp name="Argument.value">${__P(files_folder,./files/)}</stringProp>
  30. <stringProp name="Argument.metadata">=</stringProp>
  31. </elementProp>
  32. <elementProp name="request_protocol" elementType="Argument">
  33. <stringProp name="Argument.name">request_protocol</stringProp>
  34. <stringProp name="Argument.value">${__P(request_protocol,http)}</stringProp>
  35. <stringProp name="Argument.metadata">=</stringProp>
  36. </elementProp>
  37. <elementProp name="graphql_port_number" elementType="Argument">
  38. <stringProp name="Argument.name">graphql_port_number</stringProp>
  39. <stringProp name="Argument.value">${__P(graphql_port_number,)}</stringProp>
  40. <stringProp name="Argument.metadata">=</stringProp>
  41. </elementProp>
  42. <elementProp name="admin_password" elementType="Argument">
  43. <stringProp name="Argument.name">admin_password</stringProp>
  44. <stringProp name="Argument.value">${__P(admin_password,)}</stringProp>
  45. <stringProp name="Argument.metadata">=</stringProp>
  46. </elementProp>
  47. <elementProp name="admin_path" elementType="Argument">
  48. <stringProp name="Argument.name">admin_path</stringProp>
  49. <stringProp name="Argument.value">${__P(admin_path,admin)}</stringProp>
  50. <stringProp name="Argument.metadata">=</stringProp>
  51. </elementProp>
  52. <elementProp name="admin_user" elementType="Argument">
  53. <stringProp name="Argument.name">admin_user</stringProp>
  54. <stringProp name="Argument.value">${__P(admin_user,admin)}</stringProp>
  55. <stringProp name="Argument.metadata">=</stringProp>
  56. </elementProp>
  57. <elementProp name="cache_hits_percentage" elementType="Argument">
  58. <stringProp name="Argument.name">cache_hits_percentage</stringProp>
  59. <stringProp name="Argument.value">${__P(cache_hits_percentage,100)}</stringProp>
  60. <stringProp name="Argument.metadata">=</stringProp>
  61. </elementProp>
  62. <elementProp name="seedForRandom" elementType="Argument">
  63. <stringProp name="Argument.name">seedForRandom</stringProp>
  64. <stringProp name="Argument.value">${__P(seedForRandom,1)}</stringProp>
  65. <stringProp name="Argument.metadata">=</stringProp>
  66. </elementProp>
  67. <elementProp name="loops" elementType="Argument">
  68. <stringProp name="Argument.name">loops</stringProp>
  69. <stringProp name="Argument.value">${__P(loops,1)}</stringProp>
  70. <stringProp name="Argument.metadata">=</stringProp>
  71. </elementProp>
  72. <elementProp name="frontendPoolUsers" elementType="Argument">
  73. <stringProp name="Argument.name">frontendPoolUsers</stringProp>
  74. <stringProp name="Argument.value">${__P(frontendPoolUsers,0)}</stringProp>
  75. <stringProp name="Argument.metadata">=</stringProp>
  76. </elementProp>
  77. <elementProp name="adminPoolUsers" elementType="Argument">
  78. <stringProp name="Argument.name">adminPoolUsers</stringProp>
  79. <stringProp name="Argument.value">${__P(adminPoolUsers,0)}</stringProp>
  80. <stringProp name="Argument.metadata">=</stringProp>
  81. </elementProp>
  82. <elementProp name="csrPoolUsers" elementType="Argument">
  83. <stringProp name="Argument.name">csrPoolUsers</stringProp>
  84. <stringProp name="Argument.value">${__P(csrPoolUsers,0)}</stringProp>
  85. <stringProp name="Argument.metadata">=</stringProp>
  86. </elementProp>
  87. <elementProp name="apiPoolUsers" elementType="Argument">
  88. <stringProp name="Argument.name">apiPoolUsers</stringProp>
  89. <stringProp name="Argument.value">${__P(apiPoolUsers,0)}</stringProp>
  90. <stringProp name="Argument.metadata">=</stringProp>
  91. </elementProp>
  92. <elementProp name="oneThreadScenariosPoolUsers" elementType="Argument">
  93. <stringProp name="Argument.name">oneThreadScenariosPoolUsers</stringProp>
  94. <stringProp name="Argument.value">${__P(oneThreadScenariosPoolUsers,0)}</stringProp>
  95. <stringProp name="Argument.metadata">=</stringProp>
  96. </elementProp>
  97. <elementProp name="graphQLPoolUsers" elementType="Argument">
  98. <stringProp name="Argument.name">graphQLPoolUsers</stringProp>
  99. <stringProp name="Argument.value">${__P(graphQLPoolUsers,0)}</stringProp>
  100. <stringProp name="Argument.metadata">=</stringProp>
  101. </elementProp>
  102. <elementProp name="combinedBenchmarkPoolUsers" elementType="Argument">
  103. <stringProp name="Argument.name">combinedBenchmarkPoolUsers</stringProp>
  104. <stringProp name="Argument.value">${__P(combinedBenchmarkPoolUsers,0)}</stringProp>
  105. <stringProp name="Argument.metadata">=</stringProp>
  106. </elementProp>
  107. <elementProp name="restAPIcombinedBenchmarkPoolUsers" elementType="Argument">
  108. <stringProp name="Argument.name">restAPIcombinedBenchmarkPoolUsers</stringProp>
  109. <stringProp name="Argument.value">${__P(restAPIcombinedBenchmarkPoolUsers,0)}</stringProp>
  110. <stringProp name="Argument.metadata">=</stringProp>
  111. </elementProp>
  112. <elementProp name="graphQLcombinedBenchmarkPoolUsers" elementType="Argument">
  113. <stringProp name="Argument.name">graphQLcombinedBenchmarkPoolUsers</stringProp>
  114. <stringProp name="Argument.value">${__P(graphQLcombinedBenchmarkPoolUsers,0)}</stringProp>
  115. <stringProp name="Argument.metadata">=</stringProp>
  116. </elementProp>
  117. <elementProp name="accountManagementPercentage" elementType="Argument">
  118. <stringProp name="Argument.name">accountManagementPercentage</stringProp>
  119. <stringProp name="Argument.value">${__P(accountManagementPercentage,0)}</stringProp>
  120. <stringProp name="Argument.metadata">=</stringProp>
  121. </elementProp>
  122. <elementProp name="addToCartByCustomerPercentage" elementType="Argument">
  123. <stringProp name="Argument.name">addToCartByCustomerPercentage</stringProp>
  124. <stringProp name="Argument.value">${__P(addToCartByCustomerPercentage,0)}</stringProp>
  125. <stringProp name="Argument.metadata">=</stringProp>
  126. </elementProp>
  127. <elementProp name="addToCartByGuestPercentage" elementType="Argument">
  128. <stringProp name="Argument.name">addToCartByGuestPercentage</stringProp>
  129. <stringProp name="Argument.value">${__P(addToCartByGuestPercentage,0)}</stringProp>
  130. <stringProp name="Argument.metadata">=</stringProp>
  131. </elementProp>
  132. <elementProp name="addToWishlistPercentage" elementType="Argument">
  133. <stringProp name="Argument.name">addToWishlistPercentage</stringProp>
  134. <stringProp name="Argument.value">${__P(addToWishlistPercentage,0)}</stringProp>
  135. <stringProp name="Argument.metadata">=</stringProp>
  136. </elementProp>
  137. <elementProp name="adminCMSManagementDelay" elementType="Argument">
  138. <stringProp name="Argument.name">adminCMSManagementDelay</stringProp>
  139. <stringProp name="Argument.value">${__P(adminCMSManagementDelay,0)}</stringProp>
  140. <stringProp name="Argument.metadata">=</stringProp>
  141. </elementProp>
  142. <elementProp name="adminCMSManagementPercentage" elementType="Argument">
  143. <stringProp name="Argument.name">adminCMSManagementPercentage</stringProp>
  144. <stringProp name="Argument.value">${__P(adminCMSManagementPercentage,0)}</stringProp>
  145. <stringProp name="Argument.metadata">=</stringProp>
  146. </elementProp>
  147. <elementProp name="adminCategoryCount" elementType="Argument">
  148. <stringProp name="Argument.name">adminCategoryCount</stringProp>
  149. <stringProp name="Argument.value">${__P(adminCategoryCount,0)}</stringProp>
  150. <stringProp name="Argument.metadata">=</stringProp>
  151. </elementProp>
  152. <elementProp name="adminCategoryManagementDelay" elementType="Argument">
  153. <stringProp name="Argument.name">adminCategoryManagementDelay</stringProp>
  154. <stringProp name="Argument.value">${__P(adminCategoryManagementDelay,0)}</stringProp>
  155. <stringProp name="Argument.metadata">=</stringProp>
  156. </elementProp>
  157. <elementProp name="adminCategoryManagementPercentage" elementType="Argument">
  158. <stringProp name="Argument.name">adminCategoryManagementPercentage</stringProp>
  159. <stringProp name="Argument.value">${__P(adminCategoryManagementPercentage,0)}</stringProp>
  160. <stringProp name="Argument.metadata">=</stringProp>
  161. </elementProp>
  162. <elementProp name="adminCreateOrderPercentage" elementType="Argument">
  163. <stringProp name="Argument.name">adminCreateOrderPercentage</stringProp>
  164. <stringProp name="Argument.value">${__P(adminCreateOrderPercentage,0)}</stringProp>
  165. <stringProp name="Argument.metadata">=</stringProp>
  166. </elementProp>
  167. <elementProp name="adminCreateProcessReturns" elementType="Argument">
  168. <stringProp name="Argument.name">adminCreateProcessReturns</stringProp>
  169. <stringProp name="Argument.value">${__P(adminCreateProcessReturns,0)}</stringProp>
  170. <stringProp name="Argument.metadata">=</stringProp>
  171. </elementProp>
  172. <elementProp name="adminCreateProcessReturnsDelay" elementType="Argument">
  173. <stringProp name="Argument.name">adminCreateProcessReturnsDelay</stringProp>
  174. <stringProp name="Argument.value">${__P(adminCreateProcessReturnsDelay,0)}</stringProp>
  175. <stringProp name="Argument.metadata">=</stringProp>
  176. </elementProp>
  177. <elementProp name="adminCustomerManagementDelay" elementType="Argument">
  178. <stringProp name="Argument.name">adminCustomerManagementDelay</stringProp>
  179. <stringProp name="Argument.value">${__P(adminCustomerManagementDelay,0)}</stringProp>
  180. <stringProp name="Argument.metadata">=</stringProp>
  181. </elementProp>
  182. <elementProp name="adminCustomerManagementPercentage" elementType="Argument">
  183. <stringProp name="Argument.name">adminCustomerManagementPercentage</stringProp>
  184. <stringProp name="Argument.value">${__P(adminCustomerManagementPercentage,0)}</stringProp>
  185. <stringProp name="Argument.metadata">=</stringProp>
  186. </elementProp>
  187. <elementProp name="adminEditOrderPercentage" elementType="Argument">
  188. <stringProp name="Argument.name">adminEditOrderPercentage</stringProp>
  189. <stringProp name="Argument.value">${__P(adminEditOrderPercentage,0)}</stringProp>
  190. <stringProp name="Argument.metadata">=</stringProp>
  191. </elementProp>
  192. <elementProp name="adminImportCustomerBehavior" elementType="Argument">
  193. <stringProp name="Argument.name">adminImportCustomerBehavior</stringProp>
  194. <stringProp name="Argument.value">${__P(adminImportCustomerBehavior,append)}</stringProp>
  195. <stringProp name="Argument.metadata">=</stringProp>
  196. </elementProp>
  197. <elementProp name="adminImportCustomerFilePath" elementType="Argument">
  198. <stringProp name="Argument.name">adminImportCustomerFilePath</stringProp>
  199. <stringProp name="Argument.value">${__P(adminImportCustomerFilePath,import_customers/customer_import_addupdate.csv)}</stringProp>
  200. <stringProp name="Argument.metadata">=</stringProp>
  201. </elementProp>
  202. <elementProp name="adminImportProductBehavior" elementType="Argument">
  203. <stringProp name="Argument.name">adminImportProductBehavior</stringProp>
  204. <stringProp name="Argument.value">${__P(adminImportProductBehavior,append)}</stringProp>
  205. <stringProp name="Argument.metadata">=</stringProp>
  206. </elementProp>
  207. <elementProp name="adminImportProductFilePath" elementType="Argument">
  208. <stringProp name="Argument.name">adminImportProductFilePath</stringProp>
  209. <stringProp name="Argument.value">${__P(adminImportProductFilePath,import_products/product_import_append_1.csv)}</stringProp>
  210. <stringProp name="Argument.metadata">=</stringProp>
  211. </elementProp>
  212. <elementProp name="adminProductCreationPercentage" elementType="Argument">
  213. <stringProp name="Argument.name">adminProductCreationPercentage</stringProp>
  214. <stringProp name="Argument.value">${__P(adminProductCreationPercentage,0)}</stringProp>
  215. <stringProp name="Argument.metadata">=</stringProp>
  216. </elementProp>
  217. <elementProp name="adminProductEditingPercentage" elementType="Argument">
  218. <stringProp name="Argument.name">adminProductEditingPercentage</stringProp>
  219. <stringProp name="Argument.value">${__P(adminProductEditingPercentage,0)}</stringProp>
  220. <stringProp name="Argument.metadata">=</stringProp>
  221. </elementProp>
  222. <elementProp name="adminPromotionRulesPercentage" elementType="Argument">
  223. <stringProp name="Argument.name">adminPromotionRulesPercentage</stringProp>
  224. <stringProp name="Argument.value">${__P(adminPromotionRulesPercentage,0)}</stringProp>
  225. <stringProp name="Argument.metadata">=</stringProp>
  226. </elementProp>
  227. <elementProp name="adminPromotionsManagement" elementType="Argument">
  228. <stringProp name="Argument.name">adminPromotionsManagement</stringProp>
  229. <stringProp name="Argument.value">${__P(adminPromotionsManagement,0)}</stringProp>
  230. <stringProp name="Argument.metadata">=</stringProp>
  231. </elementProp>
  232. <elementProp name="adminPromotionsManagementDelay" elementType="Argument">
  233. <stringProp name="Argument.name">adminPromotionsManagementDelay</stringProp>
  234. <stringProp name="Argument.value">${__P(adminPromotionsManagementDelay,0)}</stringProp>
  235. <stringProp name="Argument.metadata">=</stringProp>
  236. </elementProp>
  237. <elementProp name="adminReturnsManagementPercentage" elementType="Argument">
  238. <stringProp name="Argument.name">adminReturnsManagementPercentage</stringProp>
  239. <stringProp name="Argument.value">${__P(adminReturnsManagementPercentage,0)}</stringProp>
  240. <stringProp name="Argument.metadata">=</stringProp>
  241. </elementProp>
  242. <elementProp name="admin_browse_customer_filter_text" elementType="Argument">
  243. <stringProp name="Argument.name">admin_browse_customer_filter_text</stringProp>
  244. <stringProp name="Argument.value">${__P(admin_browse_customer_filter_text,Firstname)}</stringProp>
  245. <stringProp name="Argument.metadata">=</stringProp>
  246. </elementProp>
  247. <elementProp name="admin_browse_orders_filter_text" elementType="Argument">
  248. <stringProp name="Argument.name">admin_browse_orders_filter_text</stringProp>
  249. <stringProp name="Argument.value">${__P(admin_browse_orders_filter_text,pending)}</stringProp>
  250. <stringProp name="Argument.metadata">=</stringProp>
  251. </elementProp>
  252. <elementProp name="admin_browse_product_filter_text" elementType="Argument">
  253. <stringProp name="Argument.name">admin_browse_product_filter_text</stringProp>
  254. <stringProp name="Argument.value">${__P(admin_browse_product_filter_text,Product)}</stringProp>
  255. <stringProp name="Argument.metadata">=</stringProp>
  256. </elementProp>
  257. <elementProp name="admin_token" elementType="Argument">
  258. <stringProp name="Argument.name">admin_token</stringProp>
  259. <stringProp name="Argument.value">${__P(admin_token,admin_token)}</stringProp>
  260. <stringProp name="Argument.metadata">=</stringProp>
  261. </elementProp>
  262. <elementProp name="admin_users_distribution_per_admin_pool" elementType="Argument">
  263. <stringProp name="Argument.name">admin_users_distribution_per_admin_pool</stringProp>
  264. <stringProp name="Argument.value">${__P(admin_users_distribution_per_admin_pool,1)}</stringProp>
  265. <stringProp name="Argument.metadata">=</stringProp>
  266. </elementProp>
  267. <elementProp name="apiBasePercentage" elementType="Argument">
  268. <stringProp name="Argument.name">apiBasePercentage</stringProp>
  269. <stringProp name="Argument.value">${__P(apiBasePercentage,0)}</stringProp>
  270. <stringProp name="Argument.metadata">=</stringProp>
  271. </elementProp>
  272. <elementProp name="apiOrderInvoiceShipmentSync" elementType="Argument">
  273. <stringProp name="Argument.name">apiOrderInvoiceShipmentSync</stringProp>
  274. <stringProp name="Argument.value">${__P(apiOrderInvoiceShipmentSync,0)}</stringProp>
  275. <stringProp name="Argument.metadata">=</stringProp>
  276. </elementProp>
  277. <elementProp name="apiProcessOrders" elementType="Argument">
  278. <stringProp name="Argument.name">apiProcessOrders</stringProp>
  279. <stringProp name="Argument.value">${__P(apiProcessOrders,1)}</stringProp>
  280. <stringProp name="Argument.metadata">=</stringProp>
  281. </elementProp>
  282. <elementProp name="apiSinglePercentage" elementType="Argument">
  283. <stringProp name="Argument.name">apiSinglePercentage</stringProp>
  284. <stringProp name="Argument.value">${__P(apiSinglePercentage,0)}</stringProp>
  285. <stringProp name="Argument.metadata">=</stringProp>
  286. </elementProp>
  287. <elementProp name="browseCatalogByCustomerPercentage" elementType="Argument">
  288. <stringProp name="Argument.name">browseCatalogByCustomerPercentage</stringProp>
  289. <stringProp name="Argument.value">${__P(browseCatalogByCustomerPercentage,0)}</stringProp>
  290. <stringProp name="Argument.metadata">=</stringProp>
  291. </elementProp>
  292. <elementProp name="browseCatalogByGuestPercentage" elementType="Argument">
  293. <stringProp name="Argument.name">browseCatalogByGuestPercentage</stringProp>
  294. <stringProp name="Argument.value">${__P(browseCatalogByGuestPercentage,0)}</stringProp>
  295. <stringProp name="Argument.metadata">=</stringProp>
  296. </elementProp>
  297. <elementProp name="browseCustomerGridPercentage" elementType="Argument">
  298. <stringProp name="Argument.name">browseCustomerGridPercentage</stringProp>
  299. <stringProp name="Argument.value">${__P(browseCustomerGridPercentage,0)}</stringProp>
  300. <stringProp name="Argument.metadata">=</stringProp>
  301. </elementProp>
  302. <elementProp name="browseOrderGridPercentage" elementType="Argument">
  303. <stringProp name="Argument.name">browseOrderGridPercentage</stringProp>
  304. <stringProp name="Argument.value">${__P(browseOrderGridPercentage,0)}</stringProp>
  305. <stringProp name="Argument.metadata">=</stringProp>
  306. </elementProp>
  307. <elementProp name="browseProductGridPercentage" elementType="Argument">
  308. <stringProp name="Argument.name">browseProductGridPercentage</stringProp>
  309. <stringProp name="Argument.value">${__P(browseProductGridPercentage,0)}</stringProp>
  310. <stringProp name="Argument.metadata">=</stringProp>
  311. </elementProp>
  312. <elementProp name="cAccountManagementPercentage" elementType="Argument">
  313. <stringProp name="Argument.name">cAccountManagementPercentage</stringProp>
  314. <stringProp name="Argument.value">${__P(cAccountManagementPercentage,1)}</stringProp>
  315. <stringProp name="Argument.metadata">=</stringProp>
  316. </elementProp>
  317. <elementProp name="cAddToCartByGuestPercentage" elementType="Argument">
  318. <stringProp name="Argument.name">cAddToCartByGuestPercentage</stringProp>
  319. <stringProp name="Argument.value">${__P(cAddToCartByGuestPercentage,26)}</stringProp>
  320. <stringProp name="Argument.metadata">=</stringProp>
  321. </elementProp>
  322. <elementProp name="cAddToWishlistPercentage" elementType="Argument">
  323. <stringProp name="Argument.name">cAddToWishlistPercentage</stringProp>
  324. <stringProp name="Argument.value">${__P(cAddToWishlistPercentage,1.5)}</stringProp>
  325. <stringProp name="Argument.metadata">=</stringProp>
  326. </elementProp>
  327. <elementProp name="cAdminBrowseCustomerGridPercentage" elementType="Argument">
  328. <stringProp name="Argument.name">cAdminBrowseCustomerGridPercentage</stringProp>
  329. <stringProp name="Argument.value">${__P(cAdminBrowseCustomerGridPercentage,0.1)}</stringProp>
  330. <stringProp name="Argument.metadata">=</stringProp>
  331. </elementProp>
  332. <elementProp name="cAdminBrowseOrderGridPercentage" elementType="Argument">
  333. <stringProp name="Argument.name">cAdminBrowseOrderGridPercentage</stringProp>
  334. <stringProp name="Argument.value">${__P(cAdminBrowseOrderGridPercentage,0.2)}</stringProp>
  335. <stringProp name="Argument.metadata">=</stringProp>
  336. </elementProp>
  337. <elementProp name="cAdminBrowseProductGridPercentage" elementType="Argument">
  338. <stringProp name="Argument.name">cAdminBrowseProductGridPercentage</stringProp>
  339. <stringProp name="Argument.value">${__P(cAdminBrowseProductGridPercentage,0.2)}</stringProp>
  340. <stringProp name="Argument.metadata">=</stringProp>
  341. </elementProp>
  342. <elementProp name="cAdminCMSManagementPercentage" elementType="Argument">
  343. <stringProp name="Argument.name">cAdminCMSManagementPercentage</stringProp>
  344. <stringProp name="Argument.value">${__P(cAdminCMSManagementPercentage,0.35)}</stringProp>
  345. <stringProp name="Argument.metadata">=</stringProp>
  346. </elementProp>
  347. <elementProp name="cAdminCategoryManagementPercentage" elementType="Argument">
  348. <stringProp name="Argument.name">cAdminCategoryManagementPercentage</stringProp>
  349. <stringProp name="Argument.value">${__P(cAdminCategoryManagementPercentage,0.15)}</stringProp>
  350. <stringProp name="Argument.metadata">=</stringProp>
  351. </elementProp>
  352. <elementProp name="cAdminCreateOrderPercentage" elementType="Argument">
  353. <stringProp name="Argument.name">cAdminCreateOrderPercentage</stringProp>
  354. <stringProp name="Argument.value">${__P(cAdminCreateOrderPercentage,0.5)}</stringProp>
  355. <stringProp name="Argument.metadata">=</stringProp>
  356. </elementProp>
  357. <elementProp name="cAdminCustomerManagementPercentage" elementType="Argument">
  358. <stringProp name="Argument.name">cAdminCustomerManagementPercentage</stringProp>
  359. <stringProp name="Argument.value">${__P(cAdminCustomerManagementPercentage,0.4)}</stringProp>
  360. <stringProp name="Argument.metadata">=</stringProp>
  361. </elementProp>
  362. <elementProp name="cAdminEditOrderPercentage" elementType="Argument">
  363. <stringProp name="Argument.name">cAdminEditOrderPercentage</stringProp>
  364. <stringProp name="Argument.value">${__P(cAdminEditOrderPercentage,1)}</stringProp>
  365. <stringProp name="Argument.metadata">=</stringProp>
  366. </elementProp>
  367. <elementProp name="cAdminProductCreationPercentage" elementType="Argument">
  368. <stringProp name="Argument.name">cAdminProductCreationPercentage</stringProp>
  369. <stringProp name="Argument.value">${__P(cAdminProductCreationPercentage,0.5)}</stringProp>
  370. <stringProp name="Argument.metadata">=</stringProp>
  371. </elementProp>
  372. <elementProp name="cAdminProductEditingPercentage" elementType="Argument">
  373. <stringProp name="Argument.name">cAdminProductEditingPercentage</stringProp>
  374. <stringProp name="Argument.value">${__P(cAdminProductEditingPercentage,0.65)}</stringProp>
  375. <stringProp name="Argument.metadata">=</stringProp>
  376. </elementProp>
  377. <elementProp name="cAdminPromotionRulesPercentage" elementType="Argument">
  378. <stringProp name="Argument.name">cAdminPromotionRulesPercentage</stringProp>
  379. <stringProp name="Argument.value">${__P(cAdminPromotionRulesPercentage,0.2)}</stringProp>
  380. <stringProp name="Argument.metadata">=</stringProp>
  381. </elementProp>
  382. <elementProp name="cAdminReturnsManagementPercentage" elementType="Argument">
  383. <stringProp name="Argument.name">cAdminReturnsManagementPercentage</stringProp>
  384. <stringProp name="Argument.value">${__P(cAdminReturnsManagementPercentage,0.75)}</stringProp>
  385. <stringProp name="Argument.metadata">=</stringProp>
  386. </elementProp>
  387. <elementProp name="cBrowseCatalogByGuestPercentage" elementType="Argument">
  388. <stringProp name="Argument.name">cBrowseCatalogByGuestPercentage</stringProp>
  389. <stringProp name="Argument.value">${__P(cBrowseCatalogByGuestPercentage,29)}</stringProp>
  390. <stringProp name="Argument.metadata">=</stringProp>
  391. </elementProp>
  392. <elementProp name="cCheckoutByCustomerPercentage" elementType="Argument">
  393. <stringProp name="Argument.name">cCheckoutByCustomerPercentage</stringProp>
  394. <stringProp name="Argument.value">${__P(cCheckoutByCustomerPercentage,3.5)}</stringProp>
  395. <stringProp name="Argument.metadata">=</stringProp>
  396. </elementProp>
  397. <elementProp name="cCheckoutByGuestPercentage" elementType="Argument">
  398. <stringProp name="Argument.name">cCheckoutByGuestPercentage</stringProp>
  399. <stringProp name="Argument.value">${__P(cCheckoutByGuestPercentage,3.5)}</stringProp>
  400. <stringProp name="Argument.metadata">=</stringProp>
  401. </elementProp>
  402. <elementProp name="cCompareProductsPercentage" elementType="Argument">
  403. <stringProp name="Argument.name">cCompareProductsPercentage</stringProp>
  404. <stringProp name="Argument.value">${__P(cCompareProductsPercentage,1.5)}</stringProp>
  405. <stringProp name="Argument.metadata">=</stringProp>
  406. </elementProp>
  407. <elementProp name="cSiteSearchPercentage" elementType="Argument">
  408. <stringProp name="Argument.name">cSiteSearchPercentage</stringProp>
  409. <stringProp name="Argument.value">${__P(cSiteSearchPercentage,29)}</stringProp>
  410. <stringProp name="Argument.metadata">=</stringProp>
  411. </elementProp>
  412. <elementProp name="catalogGraphQLPercentage" elementType="Argument">
  413. <stringProp name="Argument.name">catalogGraphQLPercentage</stringProp>
  414. <stringProp name="Argument.value">${__P(catalogGraphQLPercentage,0)}</stringProp>
  415. <stringProp name="Argument.metadata">=</stringProp>
  416. </elementProp>
  417. <elementProp name="categories_count" elementType="Argument">
  418. <stringProp name="Argument.name">categories_count</stringProp>
  419. <stringProp name="Argument.value">${__P(categories_count,100)}</stringProp>
  420. <stringProp name="Argument.metadata">=</stringProp>
  421. </elementProp>
  422. <elementProp name="checkoutALargeBulkOfProductsByGuestPercentage" elementType="Argument">
  423. <stringProp name="Argument.name">checkoutALargeBulkOfProductsByGuestPercentage</stringProp>
  424. <stringProp name="Argument.value">${__P(checkoutALargeBulkOfProductsByGuestPercentage,0)}</stringProp>
  425. <stringProp name="Argument.metadata">=</stringProp>
  426. </elementProp>
  427. <elementProp name="checkoutByCustomerPercentage" elementType="Argument">
  428. <stringProp name="Argument.name">checkoutByCustomerPercentage</stringProp>
  429. <stringProp name="Argument.value">${__P(checkoutByCustomerPercentage,0)}</stringProp>
  430. <stringProp name="Argument.metadata">=</stringProp>
  431. </elementProp>
  432. <elementProp name="checkoutByGuestPercentage" elementType="Argument">
  433. <stringProp name="Argument.name">checkoutByGuestPercentage</stringProp>
  434. <stringProp name="Argument.value">${__P(checkoutByGuestPercentage,0)}</stringProp>
  435. <stringProp name="Argument.metadata">=</stringProp>
  436. </elementProp>
  437. <elementProp name="compareProductsPercentage" elementType="Argument">
  438. <stringProp name="Argument.name">compareProductsPercentage</stringProp>
  439. <stringProp name="Argument.value">${__P(compareProductsPercentage,0)}</stringProp>
  440. <stringProp name="Argument.metadata">=</stringProp>
  441. </elementProp>
  442. <elementProp name="configurable_products_count" elementType="Argument">
  443. <stringProp name="Argument.name">configurable_products_count</stringProp>
  444. <stringProp name="Argument.value">${__P(configurable_products_count,15)}</stringProp>
  445. <stringProp name="Argument.metadata">=</stringProp>
  446. </elementProp>
  447. <elementProp name="customer_checkout_percent" elementType="Argument">
  448. <stringProp name="Argument.name">customer_checkout_percent</stringProp>
  449. <stringProp name="Argument.value">${__P(customer_checkout_percent,100)}</stringProp>
  450. <stringProp name="Argument.metadata">=</stringProp>
  451. </elementProp>
  452. <elementProp name="customer_password" elementType="Argument">
  453. <stringProp name="Argument.name">customer_password</stringProp>
  454. <stringProp name="Argument.value">${__P(customer_password,)}</stringProp>
  455. <stringProp name="Argument.metadata">=</stringProp>
  456. </elementProp>
  457. <elementProp name="customers_page_size" elementType="Argument">
  458. <stringProp name="Argument.name">customers_page_size</stringProp>
  459. <stringProp name="Argument.value">${__P(customers_page_size,100)}</stringProp>
  460. <stringProp name="Argument.metadata">=</stringProp>
  461. </elementProp>
  462. <elementProp name="dashboard_enabled" elementType="Argument">
  463. <stringProp name="Argument.name">dashboard_enabled</stringProp>
  464. <stringProp name="Argument.value">${__P(dashboard_enabled,0)}</stringProp>
  465. <stringProp name="Argument.metadata">=</stringProp>
  466. </elementProp>
  467. <elementProp name="exportCustomersPercentage" elementType="Argument">
  468. <stringProp name="Argument.name">exportCustomersPercentage</stringProp>
  469. <stringProp name="Argument.value">${__P(exportCustomersPercentage,0)}</stringProp>
  470. <stringProp name="Argument.metadata">=</stringProp>
  471. </elementProp>
  472. <elementProp name="exportProductsPercentage" elementType="Argument">
  473. <stringProp name="Argument.name">exportProductsPercentage</stringProp>
  474. <stringProp name="Argument.value">${__P(exportProductsPercentage,0)}</stringProp>
  475. <stringProp name="Argument.metadata">=</stringProp>
  476. </elementProp>
  477. <elementProp name="form_key" elementType="Argument">
  478. <stringProp name="Argument.name">form_key</stringProp>
  479. <stringProp name="Argument.value">${__P(form_key,uVEW54r8kKday8Wk)}</stringProp>
  480. <stringProp name="Argument.metadata">=</stringProp>
  481. </elementProp>
  482. <elementProp name="graphqlAddConfigurableProductToCartPercentage" elementType="Argument">
  483. <stringProp name="Argument.name">graphqlAddConfigurableProductToCartPercentage</stringProp>
  484. <stringProp name="Argument.value">${__P(graphqlAddConfigurableProductToCartPercentage,0)}</stringProp>
  485. <stringProp name="Argument.metadata">=</stringProp>
  486. </elementProp>
  487. <elementProp name="graphqlAddSimpleProductToCartPercentage" elementType="Argument">
  488. <stringProp name="Argument.name">graphqlAddSimpleProductToCartPercentage</stringProp>
  489. <stringProp name="Argument.value">${__P(graphqlAddSimpleProductToCartPercentage,0)}</stringProp>
  490. <stringProp name="Argument.metadata">=</stringProp>
  491. </elementProp>
  492. <elementProp name="graphqlApplyCouponToCartPercentage" elementType="Argument">
  493. <stringProp name="Argument.name">graphqlApplyCouponToCartPercentage</stringProp>
  494. <stringProp name="Argument.value">${__P(graphqlApplyCouponToCartPercentage,0)}</stringProp>
  495. <stringProp name="Argument.metadata">=</stringProp>
  496. </elementProp>
  497. <elementProp name="graphqlCatalogBrowsingByGuestPercentage" elementType="Argument">
  498. <stringProp name="Argument.name">graphqlCatalogBrowsingByGuestPercentage</stringProp>
  499. <stringProp name="Argument.value">${__P(graphqlCatalogBrowsingByGuestPercentage,0)}</stringProp>
  500. <stringProp name="Argument.metadata">=</stringProp>
  501. </elementProp>
  502. <elementProp name="graphqlCheckoutALargeBulkOfProductsByGuestPercentage" elementType="Argument">
  503. <stringProp name="Argument.name">graphqlCheckoutALargeBulkOfProductsByGuestPercentage</stringProp>
  504. <stringProp name="Argument.value">${__P(graphqlCheckoutALargeBulkOfProductsByGuestPercentage,0)}</stringProp>
  505. <stringProp name="Argument.metadata">=</stringProp>
  506. </elementProp>
  507. <elementProp name="graphqlCheckoutByGuestPercentage" elementType="Argument">
  508. <stringProp name="Argument.name">graphqlCheckoutByGuestPercentage</stringProp>
  509. <stringProp name="Argument.value">${__P(graphqlCheckoutByGuestPercentage,0)}</stringProp>
  510. <stringProp name="Argument.metadata">=</stringProp>
  511. </elementProp>
  512. <elementProp name="graphqlCreateEmptyCartPercentage" elementType="Argument">
  513. <stringProp name="Argument.name">graphqlCreateEmptyCartPercentage</stringProp>
  514. <stringProp name="Argument.value">${__P(graphqlCreateEmptyCartPercentage,0)}</stringProp>
  515. <stringProp name="Argument.metadata">=</stringProp>
  516. </elementProp>
  517. <elementProp name="graphqlGetCategoryListByCategoryIdPercentage" elementType="Argument">
  518. <stringProp name="Argument.name">graphqlGetCategoryListByCategoryIdPercentage</stringProp>
  519. <stringProp name="Argument.value">${__P(graphqlGetCategoryListByCategoryIdPercentage,0)}</stringProp>
  520. <stringProp name="Argument.metadata">=</stringProp>
  521. </elementProp>
  522. <elementProp name="graphqlGetCmsPageByIdPercentage" elementType="Argument">
  523. <stringProp name="Argument.name">graphqlGetCmsPageByIdPercentage</stringProp>
  524. <stringProp name="Argument.value">${__P(graphqlGetCmsPageByIdPercentage,0)}</stringProp>
  525. <stringProp name="Argument.metadata">=</stringProp>
  526. </elementProp>
  527. <elementProp name="graphqlGetCmsPageWithPageBuilderProductListPercentage" elementType="Argument">
  528. <stringProp name="Argument.name">graphqlGetCmsPageWithPageBuilderProductListPercentage</stringProp>
  529. <stringProp name="Argument.value">${__P(graphqlGetCmsPageWithPageBuilderProductListPercentage,0)}</stringProp>
  530. <stringProp name="Argument.metadata">=</stringProp>
  531. </elementProp>
  532. <elementProp name="graphqlGetConfigurableProductDetailsByNamePercentage" elementType="Argument">
  533. <stringProp name="Argument.name">graphqlGetConfigurableProductDetailsByNamePercentage</stringProp>
  534. <stringProp name="Argument.value">${__P(graphqlGetConfigurableProductDetailsByNamePercentage,0)}</stringProp>
  535. <stringProp name="Argument.metadata">=</stringProp>
  536. </elementProp>
  537. <elementProp name="graphqlGetConfigurableProductDetailsByProductUrlKeyPercentage" elementType="Argument">
  538. <stringProp name="Argument.name">graphqlGetConfigurableProductDetailsByProductUrlKeyPercentage</stringProp>
  539. <stringProp name="Argument.value">${__P(graphqlGetConfigurableProductDetailsByProductUrlKeyPercentage,0)}</stringProp>
  540. <stringProp name="Argument.metadata">=</stringProp>
  541. </elementProp>
  542. <elementProp name="graphqlGetEmptyCartPercentage" elementType="Argument">
  543. <stringProp name="Argument.name">graphqlGetEmptyCartPercentage</stringProp>
  544. <stringProp name="Argument.value">${__P(graphqlGetEmptyCartPercentage,0)}</stringProp>
  545. <stringProp name="Argument.metadata">=</stringProp>
  546. </elementProp>
  547. <elementProp name="graphqlGetListOfProductsByCategoryIdPercentage" elementType="Argument">
  548. <stringProp name="Argument.name">graphqlGetListOfProductsByCategoryIdPercentage</stringProp>
  549. <stringProp name="Argument.value">${__P(graphqlGetListOfProductsByCategoryIdPercentage,0)}</stringProp>
  550. <stringProp name="Argument.metadata">=</stringProp>
  551. </elementProp>
  552. <elementProp name="graphqlGetNavigationMenuByCategoryIdPercentage" elementType="Argument">
  553. <stringProp name="Argument.name">graphqlGetNavigationMenuByCategoryIdPercentage</stringProp>
  554. <stringProp name="Argument.value">${__P(graphqlGetNavigationMenuByCategoryIdPercentage,0)}</stringProp>
  555. <stringProp name="Argument.metadata">=</stringProp>
  556. </elementProp>
  557. <elementProp name="graphqlGetProductSearchByTextAndCategoryIdPercentage" elementType="Argument">
  558. <stringProp name="Argument.name">graphqlGetProductSearchByTextAndCategoryIdPercentage</stringProp>
  559. <stringProp name="Argument.value">${__P(graphqlGetProductSearchByTextAndCategoryIdPercentage,0)}</stringProp>
  560. <stringProp name="Argument.metadata">=</stringProp>
  561. </elementProp>
  562. <elementProp name="graphqlGetSimpleProductDetailsByNamePercentage" elementType="Argument">
  563. <stringProp name="Argument.name">graphqlGetSimpleProductDetailsByNamePercentage</stringProp>
  564. <stringProp name="Argument.value">${__P(graphqlGetSimpleProductDetailsByNamePercentage,0)}</stringProp>
  565. <stringProp name="Argument.metadata">=</stringProp>
  566. </elementProp>
  567. <elementProp name="graphqlGetSimpleProductDetailsByProductUrlKeyPercentage" elementType="Argument">
  568. <stringProp name="Argument.name">graphqlGetSimpleProductDetailsByProductUrlKeyPercentage</stringProp>
  569. <stringProp name="Argument.value">${__P(graphqlGetSimpleProductDetailsByProductUrlKeyPercentage,0)}</stringProp>
  570. <stringProp name="Argument.metadata">=</stringProp>
  571. </elementProp>
  572. <elementProp name="graphqlRemoveConfigurableProductFromCartPercentage" elementType="Argument">
  573. <stringProp name="Argument.name">graphqlRemoveConfigurableProductFromCartPercentage</stringProp>
  574. <stringProp name="Argument.value">${__P(graphqlRemoveConfigurableProductFromCartPercentage,0)}</stringProp>
  575. <stringProp name="Argument.metadata">=</stringProp>
  576. </elementProp>
  577. <elementProp name="graphqlRemoveCouponFromCartPercentage" elementType="Argument">
  578. <stringProp name="Argument.name">graphqlRemoveCouponFromCartPercentage</stringProp>
  579. <stringProp name="Argument.value">${__P(graphqlRemoveCouponFromCartPercentage,0)}</stringProp>
  580. <stringProp name="Argument.metadata">=</stringProp>
  581. </elementProp>
  582. <elementProp name="graphqlRemoveSimpleProductFromCartPercentage" elementType="Argument">
  583. <stringProp name="Argument.name">graphqlRemoveSimpleProductFromCartPercentage</stringProp>
  584. <stringProp name="Argument.value">${__P(graphqlRemoveSimpleProductFromCartPercentage,0)}</stringProp>
  585. <stringProp name="Argument.metadata">=</stringProp>
  586. </elementProp>
  587. <elementProp name="graphqlSetBillingAddressOnCartPercentage" elementType="Argument">
  588. <stringProp name="Argument.name">graphqlSetBillingAddressOnCartPercentage</stringProp>
  589. <stringProp name="Argument.value">${__P(graphqlSetBillingAddressOnCartPercentage,0)}</stringProp>
  590. <stringProp name="Argument.metadata">=</stringProp>
  591. </elementProp>
  592. <elementProp name="graphqlSetShippingAddressOnCartPercentage" elementType="Argument">
  593. <stringProp name="Argument.name">graphqlSetShippingAddressOnCartPercentage</stringProp>
  594. <stringProp name="Argument.value">${__P(graphqlSetShippingAddressOnCartPercentage,0)}</stringProp>
  595. <stringProp name="Argument.metadata">=</stringProp>
  596. </elementProp>
  597. <elementProp name="graphqlUpdateConfigurableProductQtyInCartPercentage" elementType="Argument">
  598. <stringProp name="Argument.name">graphqlUpdateConfigurableProductQtyInCartPercentage</stringProp>
  599. <stringProp name="Argument.value">${__P(graphqlUpdateConfigurableProductQtyInCartPercentage,0)}</stringProp>
  600. <stringProp name="Argument.metadata">=</stringProp>
  601. </elementProp>
  602. <elementProp name="graphqlUpdateConfigurableProductQtyInCartWithPricesPercentage" elementType="Argument">
  603. <stringProp name="Argument.name">graphqlUpdateConfigurableProductQtyInCartWithPricesPercentage</stringProp>
  604. <stringProp name="Argument.value">${__P(graphqlUpdateConfigurableProductQtyInCartWithPricesPercentage,0)}</stringProp>
  605. <stringProp name="Argument.metadata">=</stringProp>
  606. </elementProp>
  607. <elementProp name="graphqlUpdateSimpleProductQtyInCartPercentage" elementType="Argument">
  608. <stringProp name="Argument.name">graphqlUpdateSimpleProductQtyInCartPercentage</stringProp>
  609. <stringProp name="Argument.value">${__P(graphqlUpdateSimpleProductQtyInCartPercentage,0)}</stringProp>
  610. <stringProp name="Argument.metadata">=</stringProp>
  611. </elementProp>
  612. <elementProp name="graphqlUpdateSimpleProductQtyInCartWithPricesPercentage" elementType="Argument">
  613. <stringProp name="Argument.name">graphqlUpdateSimpleProductQtyInCartWithPricesPercentage</stringProp>
  614. <stringProp name="Argument.value">${__P(graphqlUpdateSimpleProductQtyInCartWithPricesPercentage,0)}</stringProp>
  615. <stringProp name="Argument.metadata">=</stringProp>
  616. </elementProp>
  617. <elementProp name="graphqlUrlInfoByUrlKeyPercentage" elementType="Argument">
  618. <stringProp name="Argument.name">graphqlUrlInfoByUrlKeyPercentage</stringProp>
  619. <stringProp name="Argument.value">${__P(graphqlUrlInfoByUrlKeyPercentage,0)}</stringProp>
  620. <stringProp name="Argument.metadata">=</stringProp>
  621. </elementProp>
  622. <elementProp name="guest_checkout_percent" elementType="Argument">
  623. <stringProp name="Argument.name">guest_checkout_percent</stringProp>
  624. <stringProp name="Argument.value">${__P(guest_checkout_percent,100)}</stringProp>
  625. <stringProp name="Argument.metadata">=</stringProp>
  626. </elementProp>
  627. <elementProp name="importCustomersPercentage" elementType="Argument">
  628. <stringProp name="Argument.name">importCustomersPercentage</stringProp>
  629. <stringProp name="Argument.value">${__P(importCustomersPercentage,0)}</stringProp>
  630. <stringProp name="Argument.metadata">=</stringProp>
  631. </elementProp>
  632. <elementProp name="importProductsPercentage" elementType="Argument">
  633. <stringProp name="Argument.name">importProductsPercentage</stringProp>
  634. <stringProp name="Argument.value">${__P(importProductsPercentage,0)}</stringProp>
  635. <stringProp name="Argument.metadata">=</stringProp>
  636. </elementProp>
  637. <elementProp name="numberOfRelatedSimpleProductsInTheCart" elementType="Argument">
  638. <stringProp name="Argument.name">numberOfRelatedSimpleProductsInTheCart</stringProp>
  639. <stringProp name="Argument.value">${__P(numberOfRelatedSimpleProductsInTheCart,100)}</stringProp>
  640. <stringProp name="Argument.metadata">=</stringProp>
  641. </elementProp>
  642. <elementProp name="orders_page_size" elementType="Argument">
  643. <stringProp name="Argument.name">orders_page_size</stringProp>
  644. <stringProp name="Argument.value">${__P(orders_page_size,20)}</stringProp>
  645. <stringProp name="Argument.metadata">=</stringProp>
  646. </elementProp>
  647. <elementProp name="productCompareDelay" elementType="Argument">
  648. <stringProp name="Argument.name">productCompareDelay</stringProp>
  649. <stringProp name="Argument.value">${__P(productCompareDelay,0)}</stringProp>
  650. <stringProp name="Argument.metadata">=</stringProp>
  651. </elementProp>
  652. <elementProp name="productGridMassActionPercentage" elementType="Argument">
  653. <stringProp name="Argument.name">productGridMassActionPercentage</stringProp>
  654. <stringProp name="Argument.value">${__P(productGridMassActionPercentage,0)}</stringProp>
  655. <stringProp name="Argument.metadata">=</stringProp>
  656. </elementProp>
  657. <elementProp name="products_page_size" elementType="Argument">
  658. <stringProp name="Argument.name">products_page_size</stringProp>
  659. <stringProp name="Argument.value">${__P(products_page_size,20)}</stringProp>
  660. <stringProp name="Argument.metadata">=</stringProp>
  661. </elementProp>
  662. <elementProp name="ramp_period" elementType="Argument">
  663. <stringProp name="Argument.name">ramp_period</stringProp>
  664. <stringProp name="Argument.value">${__P(ramp_period,0)}</stringProp>
  665. <stringProp name="Argument.metadata">=</stringProp>
  666. </elementProp>
  667. <elementProp name="redis_host" elementType="Argument">
  668. <stringProp name="Argument.name">redis_host</stringProp>
  669. <stringProp name="Argument.value">${__P(redis_host,)}</stringProp>
  670. <stringProp name="Argument.metadata">=</stringProp>
  671. </elementProp>
  672. <elementProp name="report_save_path" elementType="Argument">
  673. <stringProp name="Argument.name">report_save_path</stringProp>
  674. <stringProp name="Argument.value">${__P(report_save_path,./)}</stringProp>
  675. <stringProp name="Argument.metadata">=</stringProp>
  676. </elementProp>
  677. <elementProp name="response_time_file_name" elementType="Argument">
  678. <stringProp name="Argument.name">response_time_file_name</stringProp>
  679. <stringProp name="Argument.value">${__P(response_time_file_name,production.csv)}</stringProp>
  680. <stringProp name="Argument.metadata">=</stringProp>
  681. </elementProp>
  682. <elementProp name="reviewByCustomerPercentage" elementType="Argument">
  683. <stringProp name="Argument.name">reviewByCustomerPercentage</stringProp>
  684. <stringProp name="Argument.value">${__P(reviewByCustomerPercentage,0)}</stringProp>
  685. <stringProp name="Argument.metadata">=</stringProp>
  686. </elementProp>
  687. <elementProp name="reviewDelay" elementType="Argument">
  688. <stringProp name="Argument.name">reviewDelay</stringProp>
  689. <stringProp name="Argument.value">${__P(reviewDelay,0)}</stringProp>
  690. <stringProp name="Argument.metadata">=</stringProp>
  691. </elementProp>
  692. <elementProp name="scenario" elementType="Argument">
  693. <stringProp name="Argument.name">scenario</stringProp>
  694. <stringProp name="Argument.value">${__P(scenario,)}</stringProp>
  695. <stringProp name="Argument.metadata">=</stringProp>
  696. </elementProp>
  697. <elementProp name="searchAdvancedPercentage" elementType="Argument">
  698. <stringProp name="Argument.name">searchAdvancedPercentage</stringProp>
  699. <stringProp name="Argument.value">${__P(searchAdvancedPercentage,10)}</stringProp>
  700. <stringProp name="Argument.metadata">=</stringProp>
  701. </elementProp>
  702. <elementProp name="searchQuickFilterPercentage" elementType="Argument">
  703. <stringProp name="Argument.name">searchQuickFilterPercentage</stringProp>
  704. <stringProp name="Argument.value">${__P(searchQuickFilterPercentage,30)}</stringProp>
  705. <stringProp name="Argument.metadata">=</stringProp>
  706. </elementProp>
  707. <elementProp name="searchQuickPercentage" elementType="Argument">
  708. <stringProp name="Argument.name">searchQuickPercentage</stringProp>
  709. <stringProp name="Argument.value">${__P(searchQuickPercentage,60)}</stringProp>
  710. <stringProp name="Argument.metadata">=</stringProp>
  711. </elementProp>
  712. <elementProp name="simple_products_count" elementType="Argument">
  713. <stringProp name="Argument.name">simple_products_count</stringProp>
  714. <stringProp name="Argument.value">${__P(simple_products_count,125)}</stringProp>
  715. <stringProp name="Argument.metadata">=</stringProp>
  716. </elementProp>
  717. <elementProp name="siteSearchPercentage" elementType="Argument">
  718. <stringProp name="Argument.name">siteSearchPercentage</stringProp>
  719. <stringProp name="Argument.value">${__P(siteSearchPercentage,0)}</stringProp>
  720. <stringProp name="Argument.metadata">=</stringProp>
  721. </elementProp>
  722. <elementProp name="start_time" elementType="Argument">
  723. <stringProp name="Argument.name">start_time</stringProp>
  724. <stringProp name="Argument.value">${__P(start_time,${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)})}</stringProp>
  725. <stringProp name="Argument.metadata">=</stringProp>
  726. </elementProp>
  727. <elementProp name="starting_index" elementType="Argument">
  728. <stringProp name="Argument.name">starting_index</stringProp>
  729. <stringProp name="Argument.value">${__P(starting_index,0)}</stringProp>
  730. <stringProp name="Argument.metadata">=</stringProp>
  731. </elementProp>
  732. <elementProp name="think_time_delay_offset" elementType="Argument">
  733. <stringProp name="Argument.name">think_time_delay_offset</stringProp>
  734. <stringProp name="Argument.value">${__P(think_time_delay_offset,2000)}</stringProp>
  735. <stringProp name="Argument.metadata">=</stringProp>
  736. </elementProp>
  737. <elementProp name="think_time_deviation" elementType="Argument">
  738. <stringProp name="Argument.name">think_time_deviation</stringProp>
  739. <stringProp name="Argument.value">${__P(think_time_deviation,1000)}</stringProp>
  740. <stringProp name="Argument.metadata">=</stringProp>
  741. </elementProp>
  742. <elementProp name="url_suffix" elementType="Argument">
  743. <stringProp name="Argument.name">url_suffix</stringProp>
  744. <stringProp name="Argument.value">${__P(url_suffix,.html)}</stringProp>
  745. <stringProp name="Argument.metadata">=</stringProp>
  746. </elementProp>
  747. <elementProp name="website_id" elementType="Argument">
  748. <stringProp name="Argument.name">website_id</stringProp>
  749. <stringProp name="Argument.value">${__P(website_id,1)}</stringProp>
  750. <stringProp name="Argument.metadata">=</stringProp>
  751. </elementProp>
  752. <elementProp name="wishlistDelay" elementType="Argument">
  753. <stringProp name="Argument.name">wishlistDelay</stringProp>
  754. <stringProp name="Argument.value">${__P(wishlistDelay,0)}</stringProp>
  755. <stringProp name="Argument.metadata">=</stringProp>
  756. </elementProp>
  757. </collectionProp>
  758. </elementProp>
  759. </TestPlan>
  760. <hashTree>
  761. <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
  762. <boolProp name="ResultCollector.error_logging">false</boolProp>
  763. <objProp>
  764. <value class="SampleSaveConfiguration">
  765. <time>true</time>
  766. <latency>true</latency>
  767. <timestamp>true</timestamp>
  768. <success>true</success>
  769. <label>true</label>
  770. <code>true</code>
  771. <message>true</message>
  772. <threadName>true</threadName>
  773. <dataType>true</dataType>
  774. <encoding>false</encoding>
  775. <assertions>true</assertions>
  776. <subresults>true</subresults>
  777. <responseData>false</responseData>
  778. <samplerData>false</samplerData>
  779. <xml>true</xml>
  780. <fieldNames>false</fieldNames>
  781. <responseHeaders>false</responseHeaders>
  782. <requestHeaders>true</requestHeaders>
  783. <responseDataOnError>false</responseDataOnError>
  784. <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
  785. <assertionsResultsToSave>0</assertionsResultsToSave>
  786. <bytes>true</bytes>
  787. <hostname>true</hostname>
  788. <threadCounts>true</threadCounts>
  789. <sampleCount>true</sampleCount>
  790. </value>
  791. </objProp>
  792. <stringProp name="filename"/>
  793. <stringProp name="TestPlan.comments">tool/fragments/ce/view_results_tree.jmx</stringProp></ResultCollector>
  794. <hashTree/>
  795. <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="false">
  796. <boolProp name="ResultCollector.error_logging">false</boolProp>
  797. <objProp>
  798. <name>saveConfig</name>
  799. <value class="SampleSaveConfiguration">
  800. <time>true</time>
  801. <latency>true</latency>
  802. <timestamp>true</timestamp>
  803. <success>true</success>
  804. <label>true</label>
  805. <code>true</code>
  806. <message>true</message>
  807. <threadName>true</threadName>
  808. <dataType>true</dataType>
  809. <encoding>false</encoding>
  810. <assertions>true</assertions>
  811. <subresults>true</subresults>
  812. <responseData>false</responseData>
  813. <samplerData>false</samplerData>
  814. <xml>false</xml>
  815. <fieldNames>true</fieldNames>
  816. <responseHeaders>false</responseHeaders>
  817. <requestHeaders>false</requestHeaders>
  818. <responseDataOnError>false</responseDataOnError>
  819. <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
  820. <assertionsResultsToSave>0</assertionsResultsToSave>
  821. <bytes>true</bytes>
  822. <threadCounts>true</threadCounts>
  823. <idleTime>true</idleTime>
  824. </value>
  825. </objProp>
  826. <stringProp name="filename">/tmp/aggregate-jmeter-results.jtl</stringProp>
  827. <stringProp name="TestPlan.comments">tool/fragments/ce/aggregate_report.jmx</stringProp></ResultCollector>
  828. <hashTree/>
  829. <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
  830. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  831. <collectionProp name="Arguments.arguments"/>
  832. </elementProp>
  833. <stringProp name="HTTPSampler.domain">${host}</stringProp>
  834. <stringProp name="HTTPSampler.port"/>
  835. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  836. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  837. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  838. <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
  839. <stringProp name="HTTPSampler.path"/>
  840. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  841. <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
  842. <stringProp name="TestPlan.comments">tool/fragments/ce/http_request_default.jmx</stringProp></ConfigTestElement>
  843. <hashTree/>
  844. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  845. <collectionProp name="HeaderManager.headers">
  846. <elementProp name="Accept-Language" elementType="Header">
  847. <stringProp name="Header.name">Accept-Language</stringProp>
  848. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  849. </elementProp>
  850. <elementProp name="Accept" elementType="Header">
  851. <stringProp name="Header.name">Accept</stringProp>
  852. <stringProp name="Header.value">application/json,text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  853. </elementProp>
  854. <elementProp name="User-Agent" elementType="Header">
  855. <stringProp name="Header.name">User-Agent</stringProp>
  856. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  857. </elementProp>
  858. <elementProp name="Accept-Encoding" elementType="Header">
  859. <stringProp name="Header.name">Accept-Encoding</stringProp>
  860. <stringProp name="Header.value">gzip, deflate</stringProp>
  861. </elementProp>
  862. </collectionProp>
  863. <stringProp name="TestPlan.comments">tool/fragments/ce/http_header_manager.jmx</stringProp></HeaderManager>
  864. <hashTree/>
  865. <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
  866. <stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp>
  867. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  868. <boolProp name="LoopController.continue_forever">false</boolProp>
  869. <stringProp name="LoopController.loops">1</stringProp>
  870. </elementProp>
  871. <stringProp name="ThreadGroup.num_threads">1</stringProp>
  872. <stringProp name="ThreadGroup.ramp_time">1</stringProp>
  873. <longProp name="ThreadGroup.start_time">1384333221000</longProp>
  874. <longProp name="ThreadGroup.end_time">1384333221000</longProp>
  875. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  876. <stringProp name="ThreadGroup.duration"/>
  877. <stringProp name="ThreadGroup.delay"/>
  878. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/setup.jmx</stringProp></SetupThreadGroup>
  879. <hashTree>
  880. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  881. <collectionProp name="CookieManager.cookies">
  882. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  883. <stringProp name="Cookie.value">30</stringProp>
  884. <stringProp name="Cookie.domain">${host}</stringProp>
  885. <stringProp name="Cookie.path">/</stringProp>
  886. <boolProp name="Cookie.secure">false</boolProp>
  887. <longProp name="Cookie.expires">0</longProp>
  888. <boolProp name="Cookie.path_specified">true</boolProp>
  889. <boolProp name="Cookie.domain_specified">true</boolProp>
  890. </elementProp>
  891. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  892. <stringProp name="Cookie.value">${form_key}</stringProp>
  893. <stringProp name="Cookie.domain">${host}</stringProp>
  894. <stringProp name="Cookie.path">${base_path}</stringProp>
  895. <boolProp name="Cookie.secure">false</boolProp>
  896. <longProp name="Cookie.expires">0</longProp>
  897. <boolProp name="Cookie.path_specified">true</boolProp>
  898. <boolProp name="Cookie.domain_specified">true</boolProp>
  899. </elementProp>
  900. </collectionProp>
  901. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  902. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  903. <hashTree/>
  904. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Initialize" enabled="true">
  905. <stringProp name="BeanShellSampler.query">
  906. props.remove("category_url_key");
  907. props.remove("category_url_keys_list");
  908. props.remove("category_name");
  909. props.remove("category_names_list");
  910. props.remove("simple_products_list");
  911. props.remove("simple_products_list_for_edit");
  912. props.remove("configurable_products_list");
  913. props.remove("configurable_products_list_for_edit");
  914. props.remove("users");
  915. props.remove("customer_emails_list");
  916. props.remove("categories");
  917. props.remove("cms_pages");
  918. props.remove("cms_blocks");
  919. props.remove("coupon_codes");
  920. /* This is only used when admin is enabled. */
  921. props.put("activeAdminThread", "");
  922. /* Set the environment - at this time '01' or '02' */
  923. String path = "${host}";
  924. String environment = path.substring(4, 6);
  925. props.put("environment", environment);</stringProp>
  926. <stringProp name="BeanShellSampler.filename"/>
  927. <stringProp name="BeanShellSampler.parameters"/>
  928. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  929. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/initialize.jmx</stringProp></BeanShellSampler>
  930. <hashTree/>
  931. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: validate user defined variables" enabled="true">
  932. <stringProp name="BeanShellSampler.query">Boolean stopTestOnError (String error) {
  933. log.error(error);
  934. System.out.println(error);
  935. SampleResult.setStopTest(true);
  936. return false;
  937. }
  938. if ("${host}" == "1") {
  939. return stopTestOnError("\"host\" parameter is not defined. Please define host parameter as: \"-Jhost=example.com\"");
  940. }
  941. String path = "${base_path}";
  942. String slash = "/";
  943. if (!slash.equals(path.substring(path.length() -1)) || !slash.equals(path.substring(0, 1))) {
  944. return stopTestOnError("\"base_path\" parameter is invalid. It must start and end with \"/\"");
  945. }
  946. </stringProp>
  947. <stringProp name="BeanShellSampler.filename"/>
  948. <stringProp name="BeanShellSampler.parameters"/>
  949. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  950. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/validate_user_defined_variables.jmx</stringProp></BeanShellSampler>
  951. <hashTree/>
  952. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Login admin" enabled="true"/>
  953. <hashTree>
  954. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  955. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  956. <collectionProp name="Arguments.arguments"/>
  957. </elementProp>
  958. <stringProp name="HTTPSampler.domain"/>
  959. <stringProp name="HTTPSampler.port"/>
  960. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  961. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  962. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  963. <stringProp name="HTTPSampler.contentEncoding"/>
  964. <stringProp name="HTTPSampler.path">${base_path}${admin_path}</stringProp>
  965. <stringProp name="HTTPSampler.method">GET</stringProp>
  966. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  967. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  968. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  969. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  970. <boolProp name="HTTPSampler.monitor">false</boolProp>
  971. <stringProp name="HTTPSampler.embedded_url_re"/>
  972. </HTTPSamplerProxy>
  973. <hashTree>
  974. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  975. <collectionProp name="Asserion.test_strings">
  976. <stringProp name="-1397214398">Welcome</stringProp>
  977. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  978. </collectionProp>
  979. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  980. <boolProp name="Assertion.assume_success">false</boolProp>
  981. <intProp name="Assertion.test_type">2</intProp>
  982. </ResponseAssertion>
  983. <hashTree/>
  984. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  985. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  986. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  987. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  988. <stringProp name="RegexExtractor.template">$1$</stringProp>
  989. <stringProp name="RegexExtractor.default"/>
  990. <stringProp name="RegexExtractor.match_number">1</stringProp>
  991. </RegexExtractor>
  992. <hashTree/>
  993. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  994. <collectionProp name="Asserion.test_strings">
  995. <stringProp name="2845929">^.+$</stringProp>
  996. </collectionProp>
  997. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  998. <boolProp name="Assertion.assume_success">false</boolProp>
  999. <intProp name="Assertion.test_type">1</intProp>
  1000. <stringProp name="Assertion.scope">variable</stringProp>
  1001. <stringProp name="Scope.variable">admin_form_key</stringProp>
  1002. </ResponseAssertion>
  1003. <hashTree/>
  1004. </hashTree>
  1005. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  1006. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  1007. <collectionProp name="Arguments.arguments">
  1008. <elementProp name="dummy" elementType="HTTPArgument">
  1009. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1010. <stringProp name="Argument.value"/>
  1011. <stringProp name="Argument.metadata">=</stringProp>
  1012. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1013. <stringProp name="Argument.name">dummy</stringProp>
  1014. </elementProp>
  1015. <elementProp name="form_key" elementType="HTTPArgument">
  1016. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1017. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  1018. <stringProp name="Argument.metadata">=</stringProp>
  1019. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1020. <stringProp name="Argument.name">form_key</stringProp>
  1021. </elementProp>
  1022. <elementProp name="login[password]" elementType="HTTPArgument">
  1023. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1024. <stringProp name="Argument.value">${admin_password}</stringProp>
  1025. <stringProp name="Argument.metadata">=</stringProp>
  1026. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1027. <stringProp name="Argument.name">login[password]</stringProp>
  1028. </elementProp>
  1029. <elementProp name="login[username]" elementType="HTTPArgument">
  1030. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1031. <stringProp name="Argument.value">${admin_user}</stringProp>
  1032. <stringProp name="Argument.metadata">=</stringProp>
  1033. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1034. <stringProp name="Argument.name">login[username]</stringProp>
  1035. </elementProp>
  1036. </collectionProp>
  1037. </elementProp>
  1038. <stringProp name="HTTPSampler.domain"/>
  1039. <stringProp name="HTTPSampler.port"/>
  1040. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1041. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1042. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1043. <stringProp name="HTTPSampler.contentEncoding"/>
  1044. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  1045. <stringProp name="HTTPSampler.method">POST</stringProp>
  1046. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1047. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1048. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1049. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1050. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  1051. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1052. <stringProp name="HTTPSampler.embedded_url_re"/>
  1053. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/login.jmx</stringProp>
  1054. </HTTPSamplerProxy>
  1055. <hashTree>
  1056. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert logged-in" enabled="true">
  1057. <collectionProp name="Asserion.test_strings">
  1058. <stringProp name="1847038912">&lt;title&gt;Dashboard / Magento Admin&lt;/title&gt;</stringProp>
  1059. </collectionProp>
  1060. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  1061. <boolProp name="Assertion.assume_success">false</boolProp>
  1062. <intProp name="Assertion.test_type">2</intProp>
  1063. </ResponseAssertion>
  1064. <hashTree/>
  1065. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  1066. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1067. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  1068. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  1069. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1070. <stringProp name="RegexExtractor.default"/>
  1071. <stringProp name="RegexExtractor.match_number">1</stringProp>
  1072. </RegexExtractor>
  1073. <hashTree/>
  1074. </hashTree>
  1075. </hashTree>
  1076. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract admin users" enabled="true">
  1077. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_admin_users.jmx</stringProp>
  1078. </TestFragmentController>
  1079. <hashTree>
  1080. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Extract Admin Users" enabled="true">
  1081. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  1082. <collectionProp name="Arguments.arguments">
  1083. <elementProp name="form_key" elementType="HTTPArgument">
  1084. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  1085. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  1086. <stringProp name="Argument.metadata">=</stringProp>
  1087. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1088. <stringProp name="Argument.name">form_key</stringProp>
  1089. </elementProp>
  1090. </collectionProp>
  1091. </elementProp>
  1092. <stringProp name="HTTPSampler.domain"/>
  1093. <stringProp name="HTTPSampler.port"/>
  1094. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1095. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1096. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1097. <stringProp name="HTTPSampler.contentEncoding"/>
  1098. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/user/roleGrid/limit/200/?ajax=true&amp;isAjax=true</stringProp>
  1099. <stringProp name="HTTPSampler.method">POST</stringProp>
  1100. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1101. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1102. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1103. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1104. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1105. <stringProp name="HTTPSampler.embedded_url_re"/>
  1106. </HTTPSamplerProxy>
  1107. <hashTree>
  1108. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
  1109. <stringProp name="filename"/>
  1110. <stringProp name="parameters"/>
  1111. <boolProp name="resetInterpreter">false</boolProp>
  1112. <stringProp name="script">import java.util.regex.Pattern;
  1113. import java.util.regex.Matcher;
  1114. import java.util.LinkedList;
  1115. LinkedList adminUserList = new LinkedList();
  1116. String response = new String(data);
  1117. Pattern pattern = Pattern.compile("&lt;td\\W*?data-column=.username[^&gt;]*?&gt;\\W*?(\\w+)\\W*?&lt;");
  1118. Matcher matcher = pattern.matcher(response);
  1119. while (matcher.find()) {
  1120. adminUserList.add(matcher.group(1));
  1121. }
  1122. adminUserList.poll();
  1123. props.put("adminUserList", adminUserList);
  1124. props.put("adminUserListIterator", adminUserList.descendingIterator());
  1125. </stringProp>
  1126. </BeanShellPostProcessor>
  1127. <hashTree/>
  1128. </hashTree>
  1129. </hashTree>
  1130. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract customers" enabled="true">
  1131. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_customers.jmx</stringProp>
  1132. </TestFragmentController>
  1133. <hashTree>
  1134. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Customers" enabled="true">
  1135. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  1136. <collectionProp name="Arguments.arguments">
  1137. <elementProp name="namespace" elementType="HTTPArgument">
  1138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1139. <stringProp name="Argument.value">customer_listing</stringProp>
  1140. <stringProp name="Argument.metadata">=</stringProp>
  1141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1142. <stringProp name="Argument.name">namespace</stringProp>
  1143. </elementProp>
  1144. <elementProp name="sorting[field]" elementType="HTTPArgument">
  1145. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1146. <stringProp name="Argument.value">entity_id</stringProp>
  1147. <stringProp name="Argument.metadata">=</stringProp>
  1148. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1149. <stringProp name="Argument.name">sorting[field]</stringProp>
  1150. </elementProp>
  1151. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  1152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1153. <stringProp name="Argument.value">asc</stringProp>
  1154. <stringProp name="Argument.metadata">=</stringProp>
  1155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1156. <stringProp name="Argument.name">sorting[direction]</stringProp>
  1157. </elementProp>
  1158. <elementProp name="isAjax" elementType="HTTPArgument">
  1159. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1160. <stringProp name="Argument.value">true</stringProp>
  1161. <stringProp name="Argument.metadata">=</stringProp>
  1162. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1163. <stringProp name="Argument.name">isAjax</stringProp>
  1164. </elementProp>
  1165. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  1166. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1167. <stringProp name="Argument.value">customer_since[locale]=en_US</stringProp>
  1168. <stringProp name="Argument.metadata">=</stringProp>
  1169. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1170. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  1171. </elementProp>
  1172. <elementProp name="filters[group_id]" elementType="HTTPArgument">
  1173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1174. <stringProp name="Argument.value">1</stringProp>
  1175. <stringProp name="Argument.metadata">=</stringProp>
  1176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1177. <stringProp name="Argument.name">filters[group_id]</stringProp>
  1178. </elementProp>
  1179. <elementProp name="filters[website_id]" elementType="HTTPArgument">
  1180. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1181. <stringProp name="Argument.value">1</stringProp>
  1182. <stringProp name="Argument.metadata">=</stringProp>
  1183. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1184. <stringProp name="Argument.name">filters[website_id]</stringProp>
  1185. </elementProp>
  1186. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  1187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1188. <stringProp name="Argument.value">${customers_page_size}</stringProp>
  1189. <stringProp name="Argument.metadata">=</stringProp>
  1190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1191. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  1192. </elementProp>
  1193. <elementProp name="paging[current]" elementType="HTTPArgument">
  1194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1195. <stringProp name="Argument.value">1</stringProp>
  1196. <stringProp name="Argument.metadata">=</stringProp>
  1197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1198. <stringProp name="Argument.name">paging[current]</stringProp>
  1199. </elementProp>
  1200. <elementProp name="sorting[field]" elementType="HTTPArgument">
  1201. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1202. <stringProp name="Argument.value">entity_id</stringProp>
  1203. <stringProp name="Argument.metadata">=</stringProp>
  1204. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1205. <stringProp name="Argument.name">sorting[field]</stringProp>
  1206. </elementProp>
  1207. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  1208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1209. <stringProp name="Argument.value">asc</stringProp>
  1210. <stringProp name="Argument.metadata">=</stringProp>
  1211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1212. <stringProp name="Argument.name">sorting[direction]</stringProp>
  1213. </elementProp>
  1214. <elementProp name="isAjax" elementType="HTTPArgument">
  1215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1216. <stringProp name="Argument.value">true</stringProp>
  1217. <stringProp name="Argument.metadata">=</stringProp>
  1218. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1219. <stringProp name="Argument.name">isAjax</stringProp>
  1220. </elementProp>
  1221. </collectionProp>
  1222. </elementProp>
  1223. <stringProp name="HTTPSampler.domain"/>
  1224. <stringProp name="HTTPSampler.port"/>
  1225. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1226. <stringProp name="HTTPSampler.contentEncoding"/>
  1227. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  1228. <stringProp name="HTTPSampler.method">GET</stringProp>
  1229. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1230. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1231. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1232. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1233. <stringProp name="HTTPSampler.embedded_url_re"/>
  1234. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1235. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1236. </HTTPSamplerProxy>
  1237. <hashTree>
  1238. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Parse variables" enabled="true">
  1239. <stringProp name="scriptLanguage">groovy</stringProp>
  1240. <stringProp name="parameters"/>
  1241. <stringProp name="filename"/>
  1242. <stringProp name="cacheKey">true</stringProp>
  1243. <stringProp name="script">import groovy.json.JsonSlurper
  1244. import java.util.ArrayList;
  1245. import java.util.LinkedList;
  1246. emailsList = new LinkedList();
  1247. idsList = new ArrayList();
  1248. def jsonSlurper = new JsonSlurper();
  1249. def jsonResponse = jsonSlurper.parseText(prev.getResponseDataAsString());
  1250. jsonResponse.items.each { item -&gt;
  1251. emailsList.add(item.email);
  1252. idsList.add(item.entity_id.toString());
  1253. }
  1254. props.put("customer_emails_list", emailsList);
  1255. props.put("customer_ids_list", idsList);
  1256. //
  1257. log.info("Cust IDs: " + idsList);
  1258. log.info("Emails: " + emailsList);
  1259. </stringProp>
  1260. </JSR223PostProcessor>
  1261. <hashTree/>
  1262. </hashTree>
  1263. </hashTree>
  1264. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract region ids" enabled="true">
  1265. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_region_ids.jmx</stringProp>
  1266. </TestFragmentController>
  1267. <hashTree>
  1268. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Extract Region ids" enabled="true">
  1269. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  1270. <collectionProp name="Arguments.arguments">
  1271. <elementProp name="parent" elementType="HTTPArgument">
  1272. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  1273. <stringProp name="Argument.value">US</stringProp>
  1274. <stringProp name="Argument.metadata">=</stringProp>
  1275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1276. <stringProp name="Argument.name">parent</stringProp>
  1277. </elementProp>
  1278. </collectionProp>
  1279. </elementProp>
  1280. <stringProp name="HTTPSampler.domain"/>
  1281. <stringProp name="HTTPSampler.port"/>
  1282. <stringProp name="HTTPSampler.connect_timeout"/>
  1283. <stringProp name="HTTPSampler.response_timeout"/>
  1284. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1285. <stringProp name="HTTPSampler.contentEncoding"/>
  1286. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/directory/json/countryRegion/</stringProp>
  1287. <stringProp name="HTTPSampler.method">GET</stringProp>
  1288. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1289. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1290. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1291. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1292. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1293. <stringProp name="HTTPSampler.embedded_url_re"/>
  1294. </HTTPSamplerProxy>
  1295. <hashTree>
  1296. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Parse and put region id into variables" enabled="true">
  1297. <stringProp name="scriptLanguage">groovy</stringProp>
  1298. <stringProp name="parameters"/>
  1299. <stringProp name="filename"/>
  1300. <stringProp name="cacheKey"/>
  1301. <stringProp name="script">import groovy.json.JsonSlurper
  1302. def jsonSlurper = new JsonSlurper();
  1303. def regionResponse = jsonSlurper.parseText(prev.getResponseDataAsString());
  1304. regionResponse.each { region -&gt;
  1305. if (region.label.toString() == "Alabama") {
  1306. props.put("alabama_region_id", region.value.toString());
  1307. } else if (region.label.toString() == 'California') {
  1308. props.put("california_region_id", region.value.toString());
  1309. }
  1310. }</stringProp>
  1311. </JSR223PostProcessor>
  1312. <hashTree/>
  1313. </hashTree>
  1314. </hashTree>
  1315. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Api Data Retrieval" enabled="true">
  1316. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  1317. </GenericController>
  1318. <hashTree>
  1319. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  1320. <collectionProp name="HeaderManager.headers">
  1321. <elementProp name="" elementType="Header">
  1322. <stringProp name="Header.name">Content-Type</stringProp>
  1323. <stringProp name="Header.value">application/json</stringProp>
  1324. </elementProp>
  1325. <elementProp name="" elementType="Header">
  1326. <stringProp name="Header.name">Accept</stringProp>
  1327. <stringProp name="Header.value">*/*</stringProp>
  1328. </elementProp>
  1329. </collectionProp>
  1330. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  1331. <hashTree/>
  1332. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  1333. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  1334. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  1335. <collectionProp name="Arguments.arguments">
  1336. <elementProp name="" elementType="HTTPArgument">
  1337. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  1338. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  1339. <stringProp name="Argument.metadata">=</stringProp>
  1340. </elementProp>
  1341. </collectionProp>
  1342. </elementProp>
  1343. <stringProp name="HTTPSampler.domain"/>
  1344. <stringProp name="HTTPSampler.port"/>
  1345. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1346. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1347. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1348. <stringProp name="HTTPSampler.contentEncoding"/>
  1349. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  1350. <stringProp name="HTTPSampler.method">POST</stringProp>
  1351. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1352. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1353. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1354. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1355. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1356. <stringProp name="HTTPSampler.embedded_url_re"/>
  1357. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  1358. <hashTree>
  1359. <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">
  1360. <stringProp name="VAR">admin_token</stringProp>
  1361. <stringProp name="JSONPATH">$</stringProp>
  1362. <stringProp name="DEFAULT"/>
  1363. <stringProp name="VARIABLE"/>
  1364. <stringProp name="SUBJECT">BODY</stringProp>
  1365. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  1366. <hashTree/>
  1367. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  1368. <collectionProp name="Asserion.test_strings">
  1369. <stringProp name="484395188">^.{10,}$</stringProp>
  1370. </collectionProp>
  1371. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  1372. <boolProp name="Assertion.assume_success">false</boolProp>
  1373. <intProp name="Assertion.test_type">1</intProp>
  1374. <stringProp name="Assertion.scope">variable</stringProp>
  1375. <stringProp name="Scope.variable">admin_token</stringProp>
  1376. </ResponseAssertion>
  1377. <hashTree/>
  1378. </hashTree>
  1379. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  1380. <collectionProp name="HeaderManager.headers">
  1381. <elementProp name="" elementType="Header">
  1382. <stringProp name="Header.name">Authorization</stringProp>
  1383. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  1384. </elementProp>
  1385. </collectionProp>
  1386. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  1387. <hashTree/>
  1388. <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="SetUp - Get CMS pages" enabled="true"/>
  1389. <hashTree>
  1390. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get CMS pages" enabled="true">
  1391. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  1392. <collectionProp name="Arguments.arguments">
  1393. <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
  1394. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1395. <stringProp name="Argument.value">1</stringProp>
  1396. <stringProp name="Argument.metadata">=</stringProp>
  1397. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1398. <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
  1399. </elementProp>
  1400. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  1401. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  1402. <stringProp name="Argument.value">20</stringProp>
  1403. <stringProp name="Argument.metadata">=</stringProp>
  1404. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1405. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  1406. </elementProp>
  1407. </collectionProp>
  1408. </elementProp>
  1409. <stringProp name="HTTPSampler.domain"/>
  1410. <stringProp name="HTTPSampler.port"/>
  1411. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1412. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1413. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1414. <stringProp name="HTTPSampler.contentEncoding"/>
  1415. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  1416. <stringProp name="HTTPSampler.method">GET</stringProp>
  1417. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1418. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1419. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1420. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1421. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1422. <stringProp name="HTTPSampler.embedded_url_re"/>
  1423. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/get_cms_pages.jmx</stringProp>
  1424. </HTTPSamplerProxy>
  1425. <hashTree>
  1426. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert results are present" enabled="true">
  1427. <stringProp name="JSON_PATH">$.total_count</stringProp>
  1428. <stringProp name="EXPECTED_VALUE">0</stringProp>
  1429. <boolProp name="JSONVALIDATION">true</boolProp>
  1430. <boolProp name="EXPECT_NULL">false</boolProp>
  1431. <boolProp name="INVERT">true</boolProp>
  1432. <boolProp name="ISREGEX">false</boolProp>
  1433. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  1434. <hashTree/>
  1435. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="PostProcessor" enabled="true">
  1436. <stringProp name="scriptLanguage">javascript</stringProp>
  1437. <stringProp name="parameters"/>
  1438. <stringProp name="filename"/>
  1439. <stringProp name="cacheKey"/>
  1440. <stringProp name="script">var data = JSON.parse(prev.getResponseDataAsString());
  1441. var cmsPages = [];
  1442. for (var i in data.items) {
  1443. cmsPages.push({"id": data.items[i].id, "identifier": data.items[i].identifier});
  1444. }
  1445. props.put("cms_pages", cmsPages);
  1446. </stringProp>
  1447. </JSR223PostProcessor>
  1448. <hashTree/>
  1449. </hashTree>
  1450. </hashTree>
  1451. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract configurable products" enabled="true">
  1452. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_configurable_products.jmx</stringProp>
  1453. </TestFragmentController>
  1454. <hashTree>
  1455. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get configurable products" enabled="true">
  1456. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  1457. <collectionProp name="Arguments.arguments">
  1458. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  1459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1460. <stringProp name="Argument.value">type_id</stringProp>
  1461. <stringProp name="Argument.metadata">=</stringProp>
  1462. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1463. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  1464. </elementProp>
  1465. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  1466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1467. <stringProp name="Argument.value">configurable</stringProp>
  1468. <stringProp name="Argument.metadata">=</stringProp>
  1469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1470. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  1471. </elementProp>
  1472. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  1473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1474. <stringProp name="Argument.value">${configurable_products_count}</stringProp>
  1475. <stringProp name="Argument.metadata">=</stringProp>
  1476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1477. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  1478. </elementProp>
  1479. </collectionProp>
  1480. </elementProp>
  1481. <stringProp name="HTTPSampler.domain"/>
  1482. <stringProp name="HTTPSampler.port"/>
  1483. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1484. <stringProp name="HTTPSampler.contentEncoding"/>
  1485. <stringProp name="HTTPSampler.path">${base_path}rest/V1/products</stringProp>
  1486. <stringProp name="HTTPSampler.method">GET</stringProp>
  1487. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1488. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1489. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1490. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1491. <stringProp name="HTTPSampler.embedded_url_re"/>
  1492. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1493. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1494. </HTTPSamplerProxy>
  1495. <hashTree>
  1496. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Parse variables" enabled="true">
  1497. <stringProp name="scriptLanguage">groovy</stringProp>
  1498. <stringProp name="parameters"/>
  1499. <stringProp name="filename"/>
  1500. <stringProp name="cacheKey">true</stringProp>
  1501. <stringProp name="script">import groovy.json.JsonSlurper
  1502. import java.util.ArrayList;
  1503. import java.util.LinkedList;
  1504. import org.apache.commons.codec.binary.Base64;
  1505. def jsonSlurper = new JsonSlurper();
  1506. def jsonResponse = jsonSlurper.parseText(prev.getResponseDataAsString());
  1507. productList = new ArrayList();
  1508. jsonResponse.items.each { item -&gt;
  1509. Map productMap = new HashMap();
  1510. productMap.put("id", item.id.toString());
  1511. productMap.put("title", item.name);
  1512. productMap.put("sku", item.sku);
  1513. url_key = item.custom_attributes.find({ it.attribute_code == "url_key" }).value
  1514. productMap.put("url_key", url_key);
  1515. productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + url_key + vars.get("url_suffix");
  1516. encodedUrl = new String(Base64.encodeBase64(productUrl.getBytes()));
  1517. productMap.put("uenc", encodedUrl);
  1518. // Collect products map in products list
  1519. productList.add(productMap);
  1520. }
  1521. props.put("configurable_products_list", productList);
  1522. log.info("Products: " + productList);
  1523. </stringProp>
  1524. </JSR223PostProcessor>
  1525. <hashTree/>
  1526. </hashTree>
  1527. </hashTree>
  1528. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract configurable products for edit" enabled="true">
  1529. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_configurable_products_for_edit.jmx</stringProp>
  1530. </TestFragmentController>
  1531. <hashTree>
  1532. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get configurable products for edit" enabled="true">
  1533. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  1534. <collectionProp name="Arguments.arguments">
  1535. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  1536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1537. <stringProp name="Argument.value">type_id</stringProp>
  1538. <stringProp name="Argument.metadata">=</stringProp>
  1539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1540. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  1541. </elementProp>
  1542. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  1543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1544. <stringProp name="Argument.value">configurable</stringProp>
  1545. <stringProp name="Argument.metadata">=</stringProp>
  1546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1547. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  1548. </elementProp>
  1549. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  1550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1551. <stringProp name="Argument.value">${configurable_products_count}</stringProp>
  1552. <stringProp name="Argument.metadata">=</stringProp>
  1553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1554. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  1555. </elementProp>
  1556. <elementProp name="searchCriteria[currentPage]" elementType="HTTPArgument">
  1557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1558. <stringProp name="Argument.value">2</stringProp>
  1559. <stringProp name="Argument.metadata">=</stringProp>
  1560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1561. <stringProp name="Argument.name">searchCriteria[currentPage]</stringProp>
  1562. </elementProp>
  1563. </collectionProp>
  1564. </elementProp>
  1565. <stringProp name="HTTPSampler.domain"/>
  1566. <stringProp name="HTTPSampler.port"/>
  1567. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1568. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1569. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1570. <stringProp name="HTTPSampler.contentEncoding"/>
  1571. <stringProp name="HTTPSampler.path">${base_path}rest/V1/products</stringProp>
  1572. <stringProp name="HTTPSampler.method">GET</stringProp>
  1573. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1574. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1575. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1576. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1577. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1578. <stringProp name="HTTPSampler.embedded_url_re"/>
  1579. </HTTPSamplerProxy>
  1580. <hashTree>
  1581. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  1582. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1583. <stringProp name="RegexExtractor.refname">configurable_products_for_edit_url_keys</stringProp>
  1584. <stringProp name="RegexExtractor.regex">url_key\",\"value\":\"(.*?)\"</stringProp>
  1585. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1586. <stringProp name="RegexExtractor.default"/>
  1587. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1588. </RegexExtractor>
  1589. <hashTree/>
  1590. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
  1591. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1592. <stringProp name="RegexExtractor.refname">configurable_product_for_edit_ids</stringProp>
  1593. <stringProp name="RegexExtractor.regex">\"id\":(\d+),\"sku\"</stringProp>
  1594. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1595. <stringProp name="RegexExtractor.default"/>
  1596. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1597. </RegexExtractor>
  1598. <hashTree/>
  1599. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product titles" enabled="true">
  1600. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1601. <stringProp name="RegexExtractor.refname">configurable_product_for_edit_names</stringProp>
  1602. <stringProp name="RegexExtractor.regex">name\":\"(.*?)\"</stringProp>
  1603. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1604. <stringProp name="RegexExtractor.default"/>
  1605. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1606. </RegexExtractor>
  1607. <hashTree/>
  1608. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product skus" enabled="true">
  1609. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1610. <stringProp name="RegexExtractor.refname">configurable_product_for_edit_skus</stringProp>
  1611. <stringProp name="RegexExtractor.regex">sku\":\"(.*?)\"</stringProp>
  1612. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1613. <stringProp name="RegexExtractor.default"/>
  1614. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1615. </RegexExtractor>
  1616. <hashTree/>
  1617. </hashTree>
  1618. </hashTree>
  1619. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: Prepare configurable products for edit" enabled="true">
  1620. <stringProp name="ForeachController.inputVal">configurable_product_for_edit_ids</stringProp>
  1621. <stringProp name="ForeachController.returnVal">configurable_product_for_edit_id</stringProp>
  1622. <boolProp name="ForeachController.useSeparator">true</boolProp>
  1623. </ForeachController>
  1624. <hashTree>
  1625. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter for edit" enabled="true">
  1626. <stringProp name="CounterConfig.start">1</stringProp>
  1627. <stringProp name="CounterConfig.end"/>
  1628. <stringProp name="CounterConfig.incr">1</stringProp>
  1629. <stringProp name="CounterConfig.name">configurable_products_counter_for_edit</stringProp>
  1630. <stringProp name="CounterConfig.format"/>
  1631. <boolProp name="CounterConfig.per_user">false</boolProp>
  1632. </CounterConfig>
  1633. <hashTree/>
  1634. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect configurable product for edit" enabled="true">
  1635. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  1636. import java.util.HashMap;
  1637. import org.apache.commons.codec.binary.Base64;
  1638. ArrayList editProductList;
  1639. if (1 == Integer.parseInt(vars.get("configurable_products_counter_for_edit"))) {
  1640. editProductList = new ArrayList();
  1641. props.put("configurable_products_list_for_edit", editProductList);
  1642. } else {
  1643. editProductList = props.get("configurable_products_list_for_edit");
  1644. }
  1645. String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("configurable_products_for_edit_url_keys_" + vars.get("configurable_products_counter_for_edit"))+ vars.get("url_suffix");
  1646. encodedUrl = Base64.encodeBase64(productUrl.getBytes());
  1647. // Create product map
  1648. Map editProductMap = new HashMap();
  1649. editProductMap.put("id", vars.get("configurable_product_for_edit_id"));
  1650. editProductMap.put("title", vars.get("configurable_product_for_edit_names_" + vars.get("configurable_products_counter_for_edit")));
  1651. editProductMap.put("sku", vars.get("configurable_product_for_edit_skus_" + vars.get("configurable_products_counter_for_edit")));
  1652. editProductMap.put("url_key", vars.get("configurable_products_for_edit_url_keys_" + vars.get("configurable_products_counter_for_edit")));
  1653. editProductMap.put("uenc", new String(encodedUrl));
  1654. // Collect products map in products list
  1655. editProductList.add(editProductMap);</stringProp>
  1656. <stringProp name="BeanShellSampler.filename"/>
  1657. <stringProp name="BeanShellSampler.parameters"/>
  1658. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  1659. </BeanShellSampler>
  1660. <hashTree/>
  1661. </hashTree>
  1662. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract simple products" enabled="true">
  1663. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_simple_products.jmx</stringProp>
  1664. </TestFragmentController>
  1665. <hashTree>
  1666. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get simple products" enabled="true">
  1667. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  1668. <collectionProp name="Arguments.arguments">
  1669. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  1670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1671. <stringProp name="Argument.value">type_id</stringProp>
  1672. <stringProp name="Argument.metadata">=</stringProp>
  1673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1674. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  1675. </elementProp>
  1676. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  1677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1678. <stringProp name="Argument.value">simple</stringProp>
  1679. <stringProp name="Argument.metadata">=</stringProp>
  1680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1681. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  1682. </elementProp>
  1683. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  1684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1685. <stringProp name="Argument.value">${simple_products_count}</stringProp>
  1686. <stringProp name="Argument.metadata">=</stringProp>
  1687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1688. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  1689. </elementProp>
  1690. <elementProp name="searchCriteria[filterGroups][0][filters][1][field]" elementType="HTTPArgument">
  1691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1692. <stringProp name="Argument.value">attribute_set_id</stringProp>
  1693. <stringProp name="Argument.metadata">!=</stringProp>
  1694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1695. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][field]</stringProp>
  1696. </elementProp>
  1697. <elementProp name="searchCriteria[filterGroups][0][filters][1][value]" elementType="HTTPArgument">
  1698. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1699. <stringProp name="Argument.value">4</stringProp>
  1700. <stringProp name="Argument.metadata">=</stringProp>
  1701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1702. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][value]</stringProp>
  1703. </elementProp>
  1704. </collectionProp>
  1705. </elementProp>
  1706. <stringProp name="HTTPSampler.domain"/>
  1707. <stringProp name="HTTPSampler.port"/>
  1708. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1709. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1710. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1711. <stringProp name="HTTPSampler.contentEncoding"/>
  1712. <stringProp name="HTTPSampler.path">${base_path}rest/V1/products</stringProp>
  1713. <stringProp name="HTTPSampler.method">GET</stringProp>
  1714. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1715. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1716. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1717. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1718. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1719. <stringProp name="HTTPSampler.embedded_url_re"/>
  1720. </HTTPSamplerProxy>
  1721. <hashTree>
  1722. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  1723. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1724. <stringProp name="RegexExtractor.refname">simple_products_url_keys</stringProp>
  1725. <stringProp name="RegexExtractor.regex">url_key\",\"value\":\"(.*?)\"</stringProp>
  1726. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1727. <stringProp name="RegexExtractor.default"/>
  1728. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1729. </RegexExtractor>
  1730. <hashTree/>
  1731. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
  1732. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1733. <stringProp name="RegexExtractor.refname">simple_product_ids</stringProp>
  1734. <stringProp name="RegexExtractor.regex">\"id\":(\d+),\"sku\"</stringProp>
  1735. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1736. <stringProp name="RegexExtractor.default"/>
  1737. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1738. </RegexExtractor>
  1739. <hashTree/>
  1740. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product titles" enabled="true">
  1741. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1742. <stringProp name="RegexExtractor.refname">simple_product_names</stringProp>
  1743. <stringProp name="RegexExtractor.regex">name\":\"(.*?)\"</stringProp>
  1744. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1745. <stringProp name="RegexExtractor.default"/>
  1746. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1747. </RegexExtractor>
  1748. <hashTree/>
  1749. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product skus" enabled="true">
  1750. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1751. <stringProp name="RegexExtractor.refname">simple_product_skus</stringProp>
  1752. <stringProp name="RegexExtractor.regex">sku\":\"(.*?)\"</stringProp>
  1753. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1754. <stringProp name="RegexExtractor.default"/>
  1755. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1756. </RegexExtractor>
  1757. <hashTree/>
  1758. </hashTree>
  1759. </hashTree>
  1760. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: Prepare simple products" enabled="true">
  1761. <stringProp name="ForeachController.inputVal">simple_product_ids</stringProp>
  1762. <stringProp name="ForeachController.returnVal">simple_product_id</stringProp>
  1763. <boolProp name="ForeachController.useSeparator">true</boolProp>
  1764. </ForeachController>
  1765. <hashTree>
  1766. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  1767. <stringProp name="CounterConfig.start">1</stringProp>
  1768. <stringProp name="CounterConfig.end"/>
  1769. <stringProp name="CounterConfig.incr">1</stringProp>
  1770. <stringProp name="CounterConfig.name">simple_products_counter</stringProp>
  1771. <stringProp name="CounterConfig.format"/>
  1772. <boolProp name="CounterConfig.per_user">false</boolProp>
  1773. </CounterConfig>
  1774. <hashTree/>
  1775. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect simple product" enabled="true">
  1776. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  1777. import java.util.HashMap;
  1778. import org.apache.commons.codec.binary.Base64;
  1779. ArrayList productList;
  1780. // If it is first iteration of cycle then recreate productList
  1781. if (1 == Integer.parseInt(vars.get("simple_products_counter"))) {
  1782. productList = new ArrayList();
  1783. props.put("simple_products_list", productList);
  1784. } else {
  1785. productList = props.get("simple_products_list");
  1786. }
  1787. 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");
  1788. encodedUrl = Base64.encodeBase64(productUrl.getBytes());
  1789. // Create product map
  1790. Map productMap = new HashMap();
  1791. productMap.put("id", vars.get("simple_product_id"));
  1792. productMap.put("title", vars.get("simple_product_names_" + vars.get("simple_products_counter")));
  1793. productMap.put("sku", vars.get("simple_product_skus_" + vars.get("simple_products_counter")));
  1794. productMap.put("url_key", vars.get("simple_products_url_keys_" + vars.get("simple_products_counter")));
  1795. productMap.put("uenc", new String(encodedUrl));
  1796. // Collect products map in products list
  1797. productList.add(productMap);</stringProp>
  1798. <stringProp name="BeanShellSampler.filename"/>
  1799. <stringProp name="BeanShellSampler.parameters"/>
  1800. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  1801. </BeanShellSampler>
  1802. <hashTree/>
  1803. </hashTree>
  1804. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract simple products for edit" enabled="true">
  1805. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_simple_products_for_edit.jmx</stringProp>
  1806. </TestFragmentController>
  1807. <hashTree>
  1808. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get simple products for edit" enabled="true">
  1809. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  1810. <collectionProp name="Arguments.arguments">
  1811. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  1812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1813. <stringProp name="Argument.value">type_id</stringProp>
  1814. <stringProp name="Argument.metadata">=</stringProp>
  1815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1816. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  1817. </elementProp>
  1818. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  1819. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1820. <stringProp name="Argument.value">simple</stringProp>
  1821. <stringProp name="Argument.metadata">=</stringProp>
  1822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1823. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  1824. </elementProp>
  1825. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  1826. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1827. <stringProp name="Argument.value">${simple_products_count}</stringProp>
  1828. <stringProp name="Argument.metadata">=</stringProp>
  1829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1830. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  1831. </elementProp>
  1832. <elementProp name="searchCriteria[currentPage]" elementType="HTTPArgument">
  1833. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1834. <stringProp name="Argument.value">1</stringProp>
  1835. <stringProp name="Argument.metadata">=</stringProp>
  1836. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1837. <stringProp name="Argument.name">searchCriteria[currentPage]</stringProp>
  1838. </elementProp>
  1839. <elementProp name="searchCriteria[filterGroups][1][filters][1][field]" elementType="HTTPArgument">
  1840. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1841. <stringProp name="Argument.value">attribute_set_id</stringProp>
  1842. <stringProp name="Argument.metadata">=</stringProp>
  1843. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1844. <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][1][field]</stringProp>
  1845. </elementProp>
  1846. <elementProp name="searchCriteria[filterGroups][1][filters][1][value]" elementType="HTTPArgument">
  1847. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1848. <stringProp name="Argument.value">4</stringProp>
  1849. <stringProp name="Argument.metadata">=</stringProp>
  1850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1851. <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][1][value]</stringProp>
  1852. </elementProp>
  1853. </collectionProp>
  1854. </elementProp>
  1855. <stringProp name="HTTPSampler.domain"/>
  1856. <stringProp name="HTTPSampler.port"/>
  1857. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  1858. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  1859. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  1860. <stringProp name="HTTPSampler.contentEncoding"/>
  1861. <stringProp name="HTTPSampler.path">${base_path}rest/V1/products</stringProp>
  1862. <stringProp name="HTTPSampler.method">GET</stringProp>
  1863. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  1864. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  1865. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  1866. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  1867. <boolProp name="HTTPSampler.monitor">false</boolProp>
  1868. <stringProp name="HTTPSampler.embedded_url_re"/>
  1869. </HTTPSamplerProxy>
  1870. <hashTree>
  1871. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  1872. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1873. <stringProp name="RegexExtractor.refname">simple_products_for_edit_url_keys</stringProp>
  1874. <stringProp name="RegexExtractor.regex">url_key\",\"value\":\"(.*?)\"</stringProp>
  1875. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1876. <stringProp name="RegexExtractor.default"/>
  1877. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1878. </RegexExtractor>
  1879. <hashTree/>
  1880. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
  1881. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1882. <stringProp name="RegexExtractor.refname">simple_product_for_edit_ids</stringProp>
  1883. <stringProp name="RegexExtractor.regex">\"id\":(\d+),\"sku\"</stringProp>
  1884. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1885. <stringProp name="RegexExtractor.default"/>
  1886. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1887. </RegexExtractor>
  1888. <hashTree/>
  1889. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product titles" enabled="true">
  1890. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1891. <stringProp name="RegexExtractor.refname">simple_product_for_edit_names</stringProp>
  1892. <stringProp name="RegexExtractor.regex">name\":\"(.*?)\"</stringProp>
  1893. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1894. <stringProp name="RegexExtractor.default"/>
  1895. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1896. </RegexExtractor>
  1897. <hashTree/>
  1898. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product skus" enabled="true">
  1899. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  1900. <stringProp name="RegexExtractor.refname">simple_product_for_edit_skus</stringProp>
  1901. <stringProp name="RegexExtractor.regex">sku\":\"(.*?)\"</stringProp>
  1902. <stringProp name="RegexExtractor.template">$1$</stringProp>
  1903. <stringProp name="RegexExtractor.default"/>
  1904. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  1905. </RegexExtractor>
  1906. <hashTree/>
  1907. </hashTree>
  1908. </hashTree>
  1909. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: Prepare simple products for edit" enabled="true">
  1910. <stringProp name="ForeachController.inputVal">simple_product_for_edit_ids</stringProp>
  1911. <stringProp name="ForeachController.returnVal">simple_product_for_edit_id</stringProp>
  1912. <boolProp name="ForeachController.useSeparator">true</boolProp>
  1913. </ForeachController>
  1914. <hashTree>
  1915. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter for edit" enabled="true">
  1916. <stringProp name="CounterConfig.start">1</stringProp>
  1917. <stringProp name="CounterConfig.end"/>
  1918. <stringProp name="CounterConfig.incr">1</stringProp>
  1919. <stringProp name="CounterConfig.name">simple_products_counter_for_edit</stringProp>
  1920. <stringProp name="CounterConfig.format"/>
  1921. <boolProp name="CounterConfig.per_user">false</boolProp>
  1922. </CounterConfig>
  1923. <hashTree/>
  1924. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Collect simple product for edit" enabled="true">
  1925. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  1926. import java.util.HashMap;
  1927. import org.apache.commons.codec.binary.Base64;
  1928. ArrayList editProductList;
  1929. if (1 == Integer.parseInt(vars.get("simple_products_counter_for_edit"))) {
  1930. editProductList = new ArrayList();
  1931. props.put("simple_products_list_for_edit", editProductList);
  1932. } else {
  1933. editProductList = props.get("simple_products_list_for_edit");
  1934. }
  1935. String productUrl = vars.get("request_protocol") + "://" + vars.get("host") + vars.get("base_path") + vars.get("simple_products_for_edit_url_keys_" + vars.get("simple_products_counter_for_edit"))+ vars.get("url_suffix");
  1936. encodedUrl = Base64.encodeBase64(productUrl.getBytes());
  1937. // Create product map
  1938. Map editProductMap = new HashMap();
  1939. editProductMap.put("id", vars.get("simple_product_for_edit_id"));
  1940. editProductMap.put("title", vars.get("simple_product_for_edit_names_" + vars.get("simple_products_counter_for_edit")));
  1941. editProductMap.put("sku", vars.get("simple_product_for_edit_skus_" + vars.get("simple_products_counter_for_edit")));
  1942. editProductMap.put("url_key", vars.get("simple_products_for_edit_url_keys_" + vars.get("simple_products_counter_for_edit")));
  1943. editProductMap.put("uenc", new String(encodedUrl));
  1944. // Collect products map in products list
  1945. editProductList.add(editProductMap);</stringProp>
  1946. <stringProp name="BeanShellSampler.filename"/>
  1947. <stringProp name="BeanShellSampler.parameters"/>
  1948. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  1949. </BeanShellSampler>
  1950. <hashTree/>
  1951. </hashTree>
  1952. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract categories (First Level)" enabled="true">
  1953. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_categories.jmx</stringProp>
  1954. </TestFragmentController>
  1955. <hashTree>
  1956. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Categories Names and skus" enabled="true">
  1957. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  1958. <collectionProp name="Arguments.arguments">
  1959. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  1960. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1961. <stringProp name="Argument.value">path</stringProp>
  1962. <stringProp name="Argument.metadata">=</stringProp>
  1963. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1964. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  1965. </elementProp>
  1966. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  1967. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1968. <stringProp name="Argument.value">1/2/%</stringProp>
  1969. <stringProp name="Argument.metadata">=</stringProp>
  1970. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1971. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  1972. </elementProp>
  1973. <elementProp name="searchCriteria[filterGroups][0][filters][0][conditionType]" elementType="HTTPArgument">
  1974. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1975. <stringProp name="Argument.value">like</stringProp>
  1976. <stringProp name="Argument.metadata">=</stringProp>
  1977. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1978. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][conditionType]</stringProp>
  1979. </elementProp>
  1980. <elementProp name="searchCriteria[filterGroups][1][filters][0][field]" elementType="HTTPArgument">
  1981. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1982. <stringProp name="Argument.value">level</stringProp>
  1983. <stringProp name="Argument.metadata">=</stringProp>
  1984. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1985. <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][field]</stringProp>
  1986. </elementProp>
  1987. <elementProp name="searchCriteria[filterGroups][1][filters][0][value]" elementType="HTTPArgument">
  1988. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1989. <stringProp name="Argument.value">2</stringProp>
  1990. <stringProp name="Argument.metadata">=</stringProp>
  1991. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1992. <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][value]</stringProp>
  1993. </elementProp>
  1994. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  1995. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  1996. <stringProp name="Argument.value">${categories_count}</stringProp>
  1997. <stringProp name="Argument.metadata">=</stringProp>
  1998. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  1999. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  2000. </elementProp>
  2001. </collectionProp>
  2002. </elementProp>
  2003. <stringProp name="HTTPSampler.domain"/>
  2004. <stringProp name="HTTPSampler.port"/>
  2005. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2006. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2007. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2008. <stringProp name="HTTPSampler.contentEncoding"/>
  2009. <stringProp name="HTTPSampler.path">${base_path}rest/V1/categories/list</stringProp>
  2010. <stringProp name="HTTPSampler.method">GET</stringProp>
  2011. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2012. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2013. <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
  2014. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2015. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2016. <stringProp name="HTTPSampler.embedded_url_re"/>
  2017. </HTTPSamplerProxy>
  2018. <hashTree>
  2019. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="PostProcessor" enabled="true">
  2020. <stringProp name="scriptLanguage">javascript</stringProp>
  2021. <stringProp name="parameters"/>
  2022. <stringProp name="filename"/>
  2023. <stringProp name="cacheKey"/>
  2024. <stringProp name="script">var data = JSON.parse(prev.getResponseDataAsString());
  2025. var categoryData = [], categoryNames = [], categoryUrls = [];
  2026. for (var i in data.items) {
  2027. var cat = data.items[i], urlKey = getUrlKey(cat);
  2028. categoryData.push({"id": cat.id, "name": cat.name, "url_key": urlKey, "children": cat.children.split(",")});
  2029. categoryNames.push(cat.name);
  2030. categoryUrls.push(urlKey);
  2031. }
  2032. function getUrlKey(cat) {
  2033. for (var i in cat.custom_attributes) {
  2034. if (cat.custom_attributes[i].attribute_code == "url_key") {
  2035. return cat.custom_attributes[i].value;
  2036. }
  2037. }
  2038. return "";
  2039. }
  2040. props.put("categories", categoryData);
  2041. props.put("category_url_keys_list", categoryUrls);
  2042. props.put("category_names_list",categoryNames);</stringProp>
  2043. </JSR223PostProcessor>
  2044. <hashTree/>
  2045. </hashTree>
  2046. </hashTree>
  2047. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract categories id of last level" enabled="true">
  2048. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_categories_id_of_last_level.jmx</stringProp>
  2049. </TestFragmentController>
  2050. <hashTree>
  2051. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Clear Admin Category Management properties" enabled="true">
  2052. <stringProp name="BeanShellSampler.query">props.remove("admin_category_ids_list");</stringProp>
  2053. <stringProp name="BeanShellSampler.filename"/>
  2054. <stringProp name="BeanShellSampler.parameters"/>
  2055. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  2056. </BeanShellSampler>
  2057. <hashTree/>
  2058. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get categories" enabled="true">
  2059. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2060. <collectionProp name="Arguments.arguments">
  2061. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  2062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2063. <stringProp name="Argument.value">children_count</stringProp>
  2064. <stringProp name="Argument.metadata">=</stringProp>
  2065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2066. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  2067. </elementProp>
  2068. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  2069. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2070. <stringProp name="Argument.value">0</stringProp>
  2071. <stringProp name="Argument.metadata">=</stringProp>
  2072. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2073. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  2074. </elementProp>
  2075. <elementProp name="searchCriteria[filterGroups][1][filters][0][field]" elementType="HTTPArgument">
  2076. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2077. <stringProp name="Argument.value">level</stringProp>
  2078. <stringProp name="Argument.metadata">=</stringProp>
  2079. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2080. <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][field]</stringProp>
  2081. </elementProp>
  2082. <elementProp name="searchCriteria[filterGroups][1][filters][0][value]" elementType="HTTPArgument">
  2083. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2084. <stringProp name="Argument.value">2</stringProp>
  2085. <stringProp name="Argument.metadata">=</stringProp>
  2086. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2087. <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][value]</stringProp>
  2088. </elementProp>
  2089. <elementProp name="searchCriteria[filterGroups][1][filters][0][conditionType]" elementType="HTTPArgument">
  2090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2091. <stringProp name="Argument.value">gt</stringProp>
  2092. <stringProp name="Argument.metadata">=</stringProp>
  2093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2094. <stringProp name="Argument.name">searchCriteria[filterGroups][1][filters][0][conditionType]</stringProp>
  2095. </elementProp>
  2096. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  2097. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2098. <stringProp name="Argument.value">${adminCategoryCount}</stringProp>
  2099. <stringProp name="Argument.metadata">=</stringProp>
  2100. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2101. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  2102. </elementProp>
  2103. </collectionProp>
  2104. </elementProp>
  2105. <stringProp name="HTTPSampler.domain"/>
  2106. <stringProp name="HTTPSampler.port"/>
  2107. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2108. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2109. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2110. <stringProp name="HTTPSampler.contentEncoding"/>
  2111. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories/list</stringProp>
  2112. <stringProp name="HTTPSampler.method">GET</stringProp>
  2113. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2114. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2115. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2116. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2117. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2118. <stringProp name="HTTPSampler.embedded_url_re"/>
  2119. </HTTPSamplerProxy>
  2120. <hashTree>
  2121. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  2122. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  2123. <stringProp name="RegexExtractor.refname">category_list_id</stringProp>
  2124. <stringProp name="RegexExtractor.regex">\{\"id\":(\d+),</stringProp>
  2125. <stringProp name="RegexExtractor.template">$1$</stringProp>
  2126. <stringProp name="RegexExtractor.default"/>
  2127. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  2128. </RegexExtractor>
  2129. <hashTree/>
  2130. </hashTree>
  2131. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Category Id" enabled="true">
  2132. <stringProp name="ForeachController.inputVal">category_list_id</stringProp>
  2133. <stringProp name="ForeachController.returnVal">category_id</stringProp>
  2134. <boolProp name="ForeachController.useSeparator">true</boolProp>
  2135. </ForeachController>
  2136. <hashTree>
  2137. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process categories ids" enabled="true">
  2138. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  2139. adminCategoryIdsList = props.get("admin_category_ids_list");
  2140. // If it is first iteration of cycle then recreate categories ids list
  2141. if (adminCategoryIdsList == null) {
  2142. adminCategoryIdsList = new ArrayList();
  2143. props.put("admin_category_ids_list", adminCategoryIdsList);
  2144. }
  2145. adminCategoryIdsList.add(vars.get("category_id"));</stringProp>
  2146. <stringProp name="BeanShellSampler.filename"/>
  2147. <stringProp name="BeanShellSampler.parameters"/>
  2148. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  2149. </BeanShellSampler>
  2150. <hashTree/>
  2151. </hashTree>
  2152. </hashTree>
  2153. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Extract coupon codes" enabled="true">
  2154. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/extract_coupon_codes.jmx</stringProp>
  2155. </TestFragmentController>
  2156. <hashTree>
  2157. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get coupon codes" enabled="true">
  2158. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2159. <collectionProp name="Arguments.arguments">
  2160. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  2161. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  2162. <stringProp name="Argument.value">10</stringProp>
  2163. <stringProp name="Argument.metadata">=</stringProp>
  2164. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2165. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  2166. </elementProp>
  2167. </collectionProp>
  2168. </elementProp>
  2169. <stringProp name="HTTPSampler.domain"/>
  2170. <stringProp name="HTTPSampler.port"/>
  2171. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2172. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2173. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2174. <stringProp name="HTTPSampler.contentEncoding"/>
  2175. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/coupons/search</stringProp>
  2176. <stringProp name="HTTPSampler.method">GET</stringProp>
  2177. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2178. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2179. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2180. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2181. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2182. <stringProp name="HTTPSampler.embedded_url_re"/>
  2183. </HTTPSamplerProxy>
  2184. <hashTree>
  2185. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="PostProcessor" enabled="true">
  2186. <stringProp name="scriptLanguage">javascript</stringProp>
  2187. <stringProp name="parameters"/>
  2188. <stringProp name="filename"/>
  2189. <stringProp name="cacheKey"/>
  2190. <stringProp name="script">var data = JSON.parse(prev.getResponseDataAsString());
  2191. var couponCodes = [];
  2192. for (var i in data.items) {
  2193. var coupon = data.items[i];
  2194. couponCodes.push({"coupon_id":coupon.coupon_id, "rule_id":coupon.rule_id, "code": coupon.code});
  2195. }
  2196. props.put("coupon_codes", couponCodes);
  2197. </stringProp>
  2198. </JSR223PostProcessor>
  2199. <hashTree/>
  2200. </hashTree>
  2201. </hashTree>
  2202. </hashTree>
  2203. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - BeanShell Sampler: Validate properties and count users" enabled="true">
  2204. <stringProp name="BeanShellSampler.query">Boolean stopTestOnError (String error) {
  2205. log.error(error);
  2206. System.out.println(error);
  2207. SampleResult.setStopTest(true);
  2208. return false;
  2209. }
  2210. if (props.get("simple_products_list") == null) {
  2211. return stopTestOnError("Cannot find simple products. Test stopped.");
  2212. }
  2213. if (props.get("simple_products_list_for_edit") == null) {
  2214. return stopTestOnError("Cannot find simple products for edit. Test stopped.");
  2215. }
  2216. if (props.get("configurable_products_list") == null) {
  2217. return stopTestOnError("Cannot find configurable products. Test stopped.");
  2218. }
  2219. if (props.get("configurable_products_list_for_edit") == null) {
  2220. return stopTestOnError("Cannot find configurable products for edit. Test stopped.");
  2221. }
  2222. if (props.get("customer_emails_list") == null) {
  2223. return stopTestOnError("Cannot find customer emails. Test stopped.");
  2224. }
  2225. if (props.get("category_url_keys_list") == null) {
  2226. return stopTestOnError("Cannot find category url keys. Test stopped.");
  2227. }
  2228. if (props.get("category_names_list") == null) {
  2229. return stopTestOnError("Cannot find category names. Test stopped.");
  2230. }
  2231. if (props.get("cms_pages") == null) {
  2232. return stopTestOnError("Cannot find cms pages. Test stopped.");
  2233. }
  2234. </stringProp>
  2235. <stringProp name="BeanShellSampler.filename"/>
  2236. <stringProp name="BeanShellSampler.parameters"/>
  2237. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  2238. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/validate_properties.jmx</stringProp></BeanShellSampler>
  2239. <hashTree/>
  2240. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - WarmUp Add To Cart" enabled="true">
  2241. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2242. <collectionProp name="Arguments.arguments">
  2243. <elementProp name="product" elementType="HTTPArgument">
  2244. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2245. <stringProp name="Argument.value">1</stringProp>
  2246. <stringProp name="Argument.metadata">=</stringProp>
  2247. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2248. <stringProp name="Argument.name">product</stringProp>
  2249. </elementProp>
  2250. <elementProp name="related_product" elementType="HTTPArgument">
  2251. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2252. <stringProp name="Argument.value"/>
  2253. <stringProp name="Argument.metadata">=</stringProp>
  2254. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2255. <stringProp name="Argument.name">related_product</stringProp>
  2256. </elementProp>
  2257. <elementProp name="qty" elementType="HTTPArgument">
  2258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2259. <stringProp name="Argument.value">1</stringProp>
  2260. <stringProp name="Argument.metadata">=</stringProp>
  2261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2262. <stringProp name="Argument.name">qty</stringProp>
  2263. </elementProp>
  2264. <elementProp name="form_key" elementType="HTTPArgument">
  2265. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2266. <stringProp name="Argument.value">${form_key}</stringProp>
  2267. <stringProp name="Argument.metadata">=</stringProp>
  2268. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2269. <stringProp name="Argument.name">form_key</stringProp>
  2270. </elementProp>
  2271. </collectionProp>
  2272. </elementProp>
  2273. <stringProp name="HTTPSampler.domain"/>
  2274. <stringProp name="HTTPSampler.port"/>
  2275. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2276. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2277. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2278. <stringProp name="HTTPSampler.contentEncoding"/>
  2279. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add</stringProp>
  2280. <stringProp name="HTTPSampler.method">POST</stringProp>
  2281. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2282. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2283. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2284. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2285. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2286. <stringProp name="HTTPSampler.embedded_url_re"/>
  2287. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/warmup_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  2288. <hashTree/>
  2289. </hashTree>
  2290. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Frontend Pool" enabled="true">
  2291. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  2292. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  2293. <boolProp name="LoopController.continue_forever">false</boolProp>
  2294. <stringProp name="LoopController.loops">${loops}</stringProp>
  2295. </elementProp>
  2296. <stringProp name="ThreadGroup.num_threads">${frontendPoolUsers}</stringProp>
  2297. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  2298. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  2299. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  2300. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  2301. <stringProp name="ThreadGroup.duration"/>
  2302. <stringProp name="ThreadGroup.delay"/>
  2303. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  2304. <hashTree>
  2305. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Cache hit miss" enabled="true">
  2306. <stringProp name="scriptLanguage">javascript</stringProp>
  2307. <stringProp name="parameters"/>
  2308. <stringProp name="filename"/>
  2309. <stringProp name="cacheKey"/>
  2310. <stringProp name="script">var cacheHitPercent = vars.get("cache_hits_percentage");
  2311. if (
  2312. cacheHitPercent &lt; 100 &amp;&amp;
  2313. sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  2314. ) {
  2315. doCache();
  2316. }
  2317. function doCache(){
  2318. var random = Math.random() * 100;
  2319. if (cacheHitPercent &lt; random) {
  2320. sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13));
  2321. }
  2322. }
  2323. </stringProp>
  2324. <stringProp name="TestPlan.comments">tool/fragments/ce/common/cache_hit_miss.jmx</stringProp></JSR223PreProcessor>
  2325. <hashTree/>
  2326. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Catalog Browsing By Customer" enabled="true">
  2327. <intProp name="ThroughputController.style">1</intProp>
  2328. <boolProp name="ThroughputController.perThread">false</boolProp>
  2329. <intProp name="ThroughputController.maxThroughput">1</intProp>
  2330. <stringProp name="ThroughputController.percentThroughput">${browseCatalogByCustomerPercentage}</stringProp>
  2331. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  2332. <hashTree>
  2333. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  2334. <stringProp name="script">
  2335. var tmpLabel = vars.get("testLabel")
  2336. if (tmpLabel) {
  2337. var testLabel = " (" + tmpLabel + ")"
  2338. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  2339. if (sampler.getName().indexOf(testLabel) == -1) {
  2340. sampler.setName(sampler.getName() + testLabel);
  2341. }
  2342. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  2343. sampler.setName("SetUp - " + sampler.getName());
  2344. }
  2345. } else {
  2346. testLabel = ""
  2347. }
  2348. </stringProp>
  2349. <stringProp name="scriptLanguage">javascript</stringProp>
  2350. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  2351. <hashTree/>
  2352. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  2353. <stringProp name="BeanShellSampler.query">
  2354. vars.put("testLabel", "Catalog Browsing By Customer");
  2355. </stringProp>
  2356. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  2357. </BeanShellSampler>
  2358. <hashTree/>
  2359. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  2360. <collectionProp name="CookieManager.cookies">
  2361. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  2362. <stringProp name="Cookie.value">30</stringProp>
  2363. <stringProp name="Cookie.domain">${host}</stringProp>
  2364. <stringProp name="Cookie.path">/</stringProp>
  2365. <boolProp name="Cookie.secure">false</boolProp>
  2366. <longProp name="Cookie.expires">0</longProp>
  2367. <boolProp name="Cookie.path_specified">true</boolProp>
  2368. <boolProp name="Cookie.domain_specified">true</boolProp>
  2369. </elementProp>
  2370. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  2371. <stringProp name="Cookie.value">${form_key}</stringProp>
  2372. <stringProp name="Cookie.domain">${host}</stringProp>
  2373. <stringProp name="Cookie.path">${base_path}</stringProp>
  2374. <boolProp name="Cookie.secure">false</boolProp>
  2375. <longProp name="Cookie.expires">0</longProp>
  2376. <boolProp name="Cookie.path_specified">true</boolProp>
  2377. <boolProp name="Cookie.domain_specified">true</boolProp>
  2378. </elementProp>
  2379. </collectionProp>
  2380. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  2381. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  2382. <hashTree/>
  2383. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  2384. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  2385. <stringProp name="BeanShellSampler.query">
  2386. import java.util.Random;
  2387. Random random = new Random();
  2388. if (${seedForRandom} &gt; 0) {
  2389. random.setSeed(${seedForRandom} + ${__threadNum});
  2390. }
  2391. vars.putObject("randomIntGenerator", random);
  2392. </stringProp>
  2393. <stringProp name="BeanShellSampler.filename"/>
  2394. <stringProp name="BeanShellSampler.parameters"/>
  2395. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  2396. </BeanShellSampler>
  2397. <hashTree/>
  2398. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  2399. <stringProp name="scriptLanguage">javascript</stringProp>
  2400. <stringProp name="parameters"/>
  2401. <stringProp name="filename"/>
  2402. <stringProp name="cacheKey"/>
  2403. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  2404. var categories = props.get("categories");
  2405. number = random.nextInt(categories.length);
  2406. vars.put("category_url_key", categories[number].url_key);
  2407. vars.put("category_name", categories[number].name);
  2408. vars.put("category_id", categories[number].id);
  2409. vars.putObject("category", categories[number]);
  2410. </stringProp>
  2411. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  2412. <hashTree/>
  2413. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  2414. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  2415. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  2416. <hashTree>
  2417. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  2418. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  2419. <stringProp name="BeanShellSampler.query">
  2420. customerUserList = props.get("customer_emails_list");
  2421. customerUser = customerUserList.poll();
  2422. if (customerUser == null) {
  2423. SampleResult.setResponseMessage("customerUser list is empty");
  2424. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  2425. IsSuccess=false;
  2426. SampleResult.setSuccessful(false);
  2427. SampleResult.setStopThread(true);
  2428. }
  2429. vars.put("customer_email", customerUser);
  2430. </stringProp>
  2431. <stringProp name="BeanShellSampler.filename"/>
  2432. <stringProp name="BeanShellSampler.parameters"/>
  2433. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  2434. </BeanShellSampler>
  2435. <hashTree/>
  2436. </hashTree>
  2437. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  2438. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2439. <collectionProp name="Arguments.arguments"/>
  2440. </elementProp>
  2441. <stringProp name="HTTPSampler.domain"/>
  2442. <stringProp name="HTTPSampler.port"/>
  2443. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2444. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2445. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2446. <stringProp name="HTTPSampler.contentEncoding"/>
  2447. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  2448. <stringProp name="HTTPSampler.method">GET</stringProp>
  2449. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2450. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2451. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2452. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2453. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2454. <stringProp name="HTTPSampler.embedded_url_re"/>
  2455. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  2456. <hashTree>
  2457. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2458. <collectionProp name="Asserion.test_strings">
  2459. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  2460. </collectionProp>
  2461. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2462. <boolProp name="Assertion.assume_success">false</boolProp>
  2463. <intProp name="Assertion.test_type">2</intProp>
  2464. </ResponseAssertion>
  2465. <hashTree/>
  2466. </hashTree>
  2467. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  2468. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2469. <collectionProp name="Arguments.arguments">
  2470. <elementProp name="form_key" elementType="HTTPArgument">
  2471. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2472. <stringProp name="Argument.value">${form_key}</stringProp>
  2473. <stringProp name="Argument.metadata">=</stringProp>
  2474. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2475. <stringProp name="Argument.name">form_key</stringProp>
  2476. </elementProp>
  2477. <elementProp name="login[username]" elementType="HTTPArgument">
  2478. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2479. <stringProp name="Argument.value">${customer_email}</stringProp>
  2480. <stringProp name="Argument.metadata">=</stringProp>
  2481. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2482. <stringProp name="Argument.name">login[username]</stringProp>
  2483. </elementProp>
  2484. <elementProp name="login[password]" elementType="HTTPArgument">
  2485. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2486. <stringProp name="Argument.value">${customer_password}</stringProp>
  2487. <stringProp name="Argument.metadata">=</stringProp>
  2488. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2489. <stringProp name="Argument.name">login[password]</stringProp>
  2490. </elementProp>
  2491. <elementProp name="send" elementType="HTTPArgument">
  2492. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2493. <stringProp name="Argument.value"/>
  2494. <stringProp name="Argument.metadata">=</stringProp>
  2495. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2496. <stringProp name="Argument.name">send</stringProp>
  2497. </elementProp>
  2498. </collectionProp>
  2499. </elementProp>
  2500. <stringProp name="HTTPSampler.domain"/>
  2501. <stringProp name="HTTPSampler.port"/>
  2502. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2503. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2504. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2505. <stringProp name="HTTPSampler.contentEncoding"/>
  2506. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  2507. <stringProp name="HTTPSampler.method">POST</stringProp>
  2508. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2509. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2510. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2511. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2512. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2513. <stringProp name="HTTPSampler.embedded_url_re"/>
  2514. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  2515. <hashTree>
  2516. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2517. <collectionProp name="Asserion.test_strings">
  2518. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  2519. </collectionProp>
  2520. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2521. <boolProp name="Assertion.assume_success">false</boolProp>
  2522. <intProp name="Assertion.test_type">2</intProp>
  2523. </ResponseAssertion>
  2524. <hashTree/>
  2525. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  2526. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  2527. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  2528. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  2529. <stringProp name="RegexExtractor.template">$1$</stringProp>
  2530. <stringProp name="RegexExtractor.default"/>
  2531. <stringProp name="RegexExtractor.match_number">1</stringProp>
  2532. </RegexExtractor>
  2533. <hashTree/>
  2534. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  2535. <collectionProp name="Asserion.test_strings">
  2536. <stringProp name="2845929">^.+$</stringProp>
  2537. </collectionProp>
  2538. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2539. <boolProp name="Assertion.assume_success">false</boolProp>
  2540. <intProp name="Assertion.test_type">1</intProp>
  2541. <stringProp name="Assertion.scope">variable</stringProp>
  2542. <stringProp name="Scope.variable">addressId</stringProp>
  2543. </ResponseAssertion>
  2544. <hashTree/>
  2545. </hashTree>
  2546. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  2547. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2548. <collectionProp name="Arguments.arguments">
  2549. <elementProp name="sections" elementType="HTTPArgument">
  2550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2551. <stringProp name="Argument.value"/>
  2552. <stringProp name="Argument.metadata">=</stringProp>
  2553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2554. <stringProp name="Argument.name">sections</stringProp>
  2555. </elementProp>
  2556. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  2557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2558. <stringProp name="Argument.value">false</stringProp>
  2559. <stringProp name="Argument.metadata">=</stringProp>
  2560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2561. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  2562. </elementProp>
  2563. <elementProp name="_" elementType="HTTPArgument">
  2564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  2565. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  2566. <stringProp name="Argument.metadata">=</stringProp>
  2567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  2568. <stringProp name="Argument.name">_</stringProp>
  2569. </elementProp>
  2570. </collectionProp>
  2571. </elementProp>
  2572. <stringProp name="HTTPSampler.domain"/>
  2573. <stringProp name="HTTPSampler.port"/>
  2574. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2575. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2576. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2577. <stringProp name="HTTPSampler.contentEncoding"/>
  2578. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  2579. <stringProp name="HTTPSampler.method">GET</stringProp>
  2580. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2581. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2582. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2583. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2584. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2585. <stringProp name="HTTPSampler.embedded_url_re"/>
  2586. </HTTPSamplerProxy>
  2587. <hashTree/>
  2588. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  2589. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2590. <collectionProp name="Arguments.arguments"/>
  2591. </elementProp>
  2592. <stringProp name="HTTPSampler.domain"/>
  2593. <stringProp name="HTTPSampler.port"/>
  2594. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2595. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2596. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2597. <stringProp name="HTTPSampler.contentEncoding"/>
  2598. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  2599. <stringProp name="HTTPSampler.method">GET</stringProp>
  2600. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2601. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2602. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2603. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2604. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2605. <stringProp name="HTTPSampler.embedded_url_re"/>
  2606. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  2607. <hashTree>
  2608. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2609. <collectionProp name="Asserion.test_strings">
  2610. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  2611. </collectionProp>
  2612. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2613. <boolProp name="Assertion.assume_success">false</boolProp>
  2614. <intProp name="Assertion.test_type">2</intProp>
  2615. </ResponseAssertion>
  2616. <hashTree/>
  2617. </hashTree>
  2618. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  2619. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2620. <collectionProp name="Arguments.arguments"/>
  2621. </elementProp>
  2622. <stringProp name="HTTPSampler.domain"/>
  2623. <stringProp name="HTTPSampler.port"/>
  2624. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2625. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2626. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2627. <stringProp name="HTTPSampler.contentEncoding"/>
  2628. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  2629. <stringProp name="HTTPSampler.method">GET</stringProp>
  2630. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2631. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2632. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2633. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2634. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2635. <stringProp name="HTTPSampler.embedded_url_re"/>
  2636. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  2637. <hashTree>
  2638. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2639. <collectionProp name="Asserion.test_strings">
  2640. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  2641. </collectionProp>
  2642. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2643. <boolProp name="Assertion.assume_success">false</boolProp>
  2644. <intProp name="Assertion.test_type">6</intProp>
  2645. </ResponseAssertion>
  2646. <hashTree/>
  2647. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  2648. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  2649. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  2650. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  2651. <stringProp name="RegexExtractor.template">$1$</stringProp>
  2652. <stringProp name="RegexExtractor.default"/>
  2653. <stringProp name="RegexExtractor.match_number">1</stringProp>
  2654. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  2655. </RegexExtractor>
  2656. <hashTree/>
  2657. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  2658. <collectionProp name="Asserion.test_strings">
  2659. <stringProp name="1191417111">^[0-9]+$</stringProp>
  2660. </collectionProp>
  2661. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2662. <boolProp name="Assertion.assume_success">false</boolProp>
  2663. <intProp name="Assertion.test_type">1</intProp>
  2664. <stringProp name="Assertion.scope">variable</stringProp>
  2665. <stringProp name="Scope.variable">category_id</stringProp>
  2666. </ResponseAssertion>
  2667. <hashTree/>
  2668. </hashTree>
  2669. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  2670. <boolProp name="LoopController.continue_forever">true</boolProp>
  2671. <stringProp name="LoopController.loops">2</stringProp>
  2672. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  2673. <hashTree>
  2674. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  2675. <stringProp name="CounterConfig.start">1</stringProp>
  2676. <stringProp name="CounterConfig.end"/>
  2677. <stringProp name="CounterConfig.incr">1</stringProp>
  2678. <stringProp name="CounterConfig.name">_counter</stringProp>
  2679. <stringProp name="CounterConfig.format"/>
  2680. <boolProp name="CounterConfig.per_user">true</boolProp>
  2681. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  2682. </CounterConfig>
  2683. <hashTree/>
  2684. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  2685. <stringProp name="BeanShellSampler.query">
  2686. import java.util.Random;
  2687. Random random = vars.getObject("randomIntGenerator");
  2688. number = random.nextInt(props.get("simple_products_list").size());
  2689. product = props.get("simple_products_list").get(number);
  2690. vars.put("product_url_key", product.get("url_key"));
  2691. vars.put("product_id", product.get("id"));
  2692. vars.put("product_name", product.get("title"));
  2693. vars.put("product_uenc", product.get("uenc"));
  2694. vars.put("product_sku", product.get("sku"));
  2695. </stringProp>
  2696. <stringProp name="BeanShellSampler.filename"/>
  2697. <stringProp name="BeanShellSampler.parameters"/>
  2698. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  2699. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  2700. <hashTree/>
  2701. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  2702. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2703. <collectionProp name="Arguments.arguments"/>
  2704. </elementProp>
  2705. <stringProp name="HTTPSampler.domain"/>
  2706. <stringProp name="HTTPSampler.port"/>
  2707. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2708. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2709. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2710. <stringProp name="HTTPSampler.contentEncoding"/>
  2711. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  2712. <stringProp name="HTTPSampler.method">GET</stringProp>
  2713. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2714. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2715. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2716. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2717. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2718. <stringProp name="HTTPSampler.embedded_url_re"/>
  2719. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  2720. <hashTree>
  2721. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2722. <collectionProp name="Asserion.test_strings">
  2723. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  2724. </collectionProp>
  2725. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2726. <boolProp name="Assertion.assume_success">false</boolProp>
  2727. <intProp name="Assertion.test_type">2</intProp>
  2728. </ResponseAssertion>
  2729. <hashTree/>
  2730. </hashTree>
  2731. </hashTree>
  2732. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  2733. <boolProp name="LoopController.continue_forever">true</boolProp>
  2734. <stringProp name="LoopController.loops">1</stringProp>
  2735. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  2736. <hashTree>
  2737. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  2738. <stringProp name="CounterConfig.start">1</stringProp>
  2739. <stringProp name="CounterConfig.end"/>
  2740. <stringProp name="CounterConfig.incr">1</stringProp>
  2741. <stringProp name="CounterConfig.name">_counter</stringProp>
  2742. <stringProp name="CounterConfig.format"/>
  2743. <boolProp name="CounterConfig.per_user">true</boolProp>
  2744. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  2745. </CounterConfig>
  2746. <hashTree/>
  2747. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  2748. <stringProp name="BeanShellSampler.query">
  2749. import java.util.Random;
  2750. Random random = vars.getObject("randomIntGenerator");
  2751. number = random.nextInt(props.get("configurable_products_list").size());
  2752. product = props.get("configurable_products_list").get(number);
  2753. vars.put("product_url_key", product.get("url_key"));
  2754. vars.put("product_id", product.get("id"));
  2755. vars.put("product_name", product.get("title"));
  2756. vars.put("product_uenc", product.get("uenc"));
  2757. vars.put("product_sku", product.get("sku"));
  2758. </stringProp>
  2759. <stringProp name="BeanShellSampler.filename"/>
  2760. <stringProp name="BeanShellSampler.parameters"/>
  2761. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  2762. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  2763. <hashTree/>
  2764. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  2765. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2766. <collectionProp name="Arguments.arguments"/>
  2767. </elementProp>
  2768. <stringProp name="HTTPSampler.domain"/>
  2769. <stringProp name="HTTPSampler.port"/>
  2770. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2771. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2772. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2773. <stringProp name="HTTPSampler.contentEncoding"/>
  2774. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  2775. <stringProp name="HTTPSampler.method">GET</stringProp>
  2776. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2777. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2778. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2779. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2780. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2781. <stringProp name="HTTPSampler.embedded_url_re"/>
  2782. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  2783. <hashTree>
  2784. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2785. <collectionProp name="Asserion.test_strings">
  2786. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  2787. </collectionProp>
  2788. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2789. <boolProp name="Assertion.assume_success">false</boolProp>
  2790. <intProp name="Assertion.test_type">2</intProp>
  2791. </ResponseAssertion>
  2792. <hashTree/>
  2793. </hashTree>
  2794. </hashTree>
  2795. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  2796. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2797. <collectionProp name="Arguments.arguments"/>
  2798. </elementProp>
  2799. <stringProp name="HTTPSampler.domain"/>
  2800. <stringProp name="HTTPSampler.port"/>
  2801. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2802. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2803. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2804. <stringProp name="HTTPSampler.contentEncoding"/>
  2805. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  2806. <stringProp name="HTTPSampler.method">GET</stringProp>
  2807. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2808. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2809. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2810. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2811. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2812. <stringProp name="HTTPSampler.embedded_url_re"/>
  2813. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  2814. <hashTree>
  2815. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  2816. <collectionProp name="Asserion.test_strings">
  2817. <stringProp name="1723813687">You are signed out.</stringProp>
  2818. </collectionProp>
  2819. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2820. <boolProp name="Assertion.assume_success">false</boolProp>
  2821. <intProp name="Assertion.test_type">2</intProp>
  2822. </ResponseAssertion>
  2823. <hashTree/>
  2824. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  2825. <boolProp name="resetInterpreter">false</boolProp>
  2826. <stringProp name="parameters"/>
  2827. <stringProp name="filename"/>
  2828. <stringProp name="script">
  2829. customerUserList = props.get("customer_emails_list");
  2830. customerUserList.add(vars.get("customer_email"));
  2831. </stringProp>
  2832. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  2833. <hashTree/>
  2834. </hashTree>
  2835. </hashTree>
  2836. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Catalog Browsing By Guest" enabled="true">
  2837. <intProp name="ThroughputController.style">1</intProp>
  2838. <boolProp name="ThroughputController.perThread">false</boolProp>
  2839. <intProp name="ThroughputController.maxThroughput">1</intProp>
  2840. <stringProp name="ThroughputController.percentThroughput">${browseCatalogByGuestPercentage}</stringProp>
  2841. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  2842. <hashTree>
  2843. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  2844. <stringProp name="script">
  2845. var tmpLabel = vars.get("testLabel")
  2846. if (tmpLabel) {
  2847. var testLabel = " (" + tmpLabel + ")"
  2848. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  2849. if (sampler.getName().indexOf(testLabel) == -1) {
  2850. sampler.setName(sampler.getName() + testLabel);
  2851. }
  2852. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  2853. sampler.setName("SetUp - " + sampler.getName());
  2854. }
  2855. } else {
  2856. testLabel = ""
  2857. }
  2858. </stringProp>
  2859. <stringProp name="scriptLanguage">javascript</stringProp>
  2860. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  2861. <hashTree/>
  2862. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  2863. <stringProp name="BeanShellSampler.query">
  2864. vars.put("testLabel", "Catalog Browsing By Guest");
  2865. </stringProp>
  2866. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  2867. </BeanShellSampler>
  2868. <hashTree/>
  2869. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  2870. <collectionProp name="CookieManager.cookies">
  2871. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  2872. <stringProp name="Cookie.value">30</stringProp>
  2873. <stringProp name="Cookie.domain">${host}</stringProp>
  2874. <stringProp name="Cookie.path">/</stringProp>
  2875. <boolProp name="Cookie.secure">false</boolProp>
  2876. <longProp name="Cookie.expires">0</longProp>
  2877. <boolProp name="Cookie.path_specified">true</boolProp>
  2878. <boolProp name="Cookie.domain_specified">true</boolProp>
  2879. </elementProp>
  2880. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  2881. <stringProp name="Cookie.value">${form_key}</stringProp>
  2882. <stringProp name="Cookie.domain">${host}</stringProp>
  2883. <stringProp name="Cookie.path">${base_path}</stringProp>
  2884. <boolProp name="Cookie.secure">false</boolProp>
  2885. <longProp name="Cookie.expires">0</longProp>
  2886. <boolProp name="Cookie.path_specified">true</boolProp>
  2887. <boolProp name="Cookie.domain_specified">true</boolProp>
  2888. </elementProp>
  2889. </collectionProp>
  2890. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  2891. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  2892. <hashTree/>
  2893. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  2894. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  2895. <stringProp name="BeanShellSampler.query">
  2896. import java.util.Random;
  2897. Random random = new Random();
  2898. if (${seedForRandom} &gt; 0) {
  2899. random.setSeed(${seedForRandom} + ${__threadNum});
  2900. }
  2901. vars.putObject("randomIntGenerator", random);
  2902. </stringProp>
  2903. <stringProp name="BeanShellSampler.filename"/>
  2904. <stringProp name="BeanShellSampler.parameters"/>
  2905. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  2906. </BeanShellSampler>
  2907. <hashTree/>
  2908. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  2909. <stringProp name="scriptLanguage">javascript</stringProp>
  2910. <stringProp name="parameters"/>
  2911. <stringProp name="filename"/>
  2912. <stringProp name="cacheKey"/>
  2913. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  2914. var categories = props.get("categories");
  2915. number = random.nextInt(categories.length);
  2916. vars.put("category_url_key", categories[number].url_key);
  2917. vars.put("category_name", categories[number].name);
  2918. vars.put("category_id", categories[number].id);
  2919. vars.putObject("category", categories[number]);
  2920. </stringProp>
  2921. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  2922. <hashTree/>
  2923. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  2924. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2925. <collectionProp name="Arguments.arguments"/>
  2926. </elementProp>
  2927. <stringProp name="HTTPSampler.domain"/>
  2928. <stringProp name="HTTPSampler.port"/>
  2929. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2930. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2931. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2932. <stringProp name="HTTPSampler.contentEncoding"/>
  2933. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  2934. <stringProp name="HTTPSampler.method">GET</stringProp>
  2935. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2936. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2937. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2938. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2939. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2940. <stringProp name="HTTPSampler.embedded_url_re"/>
  2941. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  2942. <hashTree>
  2943. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2944. <collectionProp name="Asserion.test_strings">
  2945. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  2946. </collectionProp>
  2947. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2948. <boolProp name="Assertion.assume_success">false</boolProp>
  2949. <intProp name="Assertion.test_type">2</intProp>
  2950. </ResponseAssertion>
  2951. <hashTree/>
  2952. </hashTree>
  2953. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  2954. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  2955. <collectionProp name="Arguments.arguments"/>
  2956. </elementProp>
  2957. <stringProp name="HTTPSampler.domain"/>
  2958. <stringProp name="HTTPSampler.port"/>
  2959. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  2960. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  2961. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  2962. <stringProp name="HTTPSampler.contentEncoding"/>
  2963. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  2964. <stringProp name="HTTPSampler.method">GET</stringProp>
  2965. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  2966. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  2967. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  2968. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  2969. <boolProp name="HTTPSampler.monitor">false</boolProp>
  2970. <stringProp name="HTTPSampler.embedded_url_re"/>
  2971. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  2972. <hashTree>
  2973. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  2974. <collectionProp name="Asserion.test_strings">
  2975. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  2976. </collectionProp>
  2977. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2978. <boolProp name="Assertion.assume_success">false</boolProp>
  2979. <intProp name="Assertion.test_type">6</intProp>
  2980. </ResponseAssertion>
  2981. <hashTree/>
  2982. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  2983. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  2984. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  2985. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  2986. <stringProp name="RegexExtractor.template">$1$</stringProp>
  2987. <stringProp name="RegexExtractor.default"/>
  2988. <stringProp name="RegexExtractor.match_number">1</stringProp>
  2989. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  2990. </RegexExtractor>
  2991. <hashTree/>
  2992. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  2993. <collectionProp name="Asserion.test_strings">
  2994. <stringProp name="1191417111">^[0-9]+$</stringProp>
  2995. </collectionProp>
  2996. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  2997. <boolProp name="Assertion.assume_success">false</boolProp>
  2998. <intProp name="Assertion.test_type">1</intProp>
  2999. <stringProp name="Assertion.scope">variable</stringProp>
  3000. <stringProp name="Scope.variable">category_id</stringProp>
  3001. </ResponseAssertion>
  3002. <hashTree/>
  3003. </hashTree>
  3004. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  3005. <boolProp name="LoopController.continue_forever">true</boolProp>
  3006. <stringProp name="LoopController.loops">2</stringProp>
  3007. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  3008. <hashTree>
  3009. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  3010. <stringProp name="CounterConfig.start">1</stringProp>
  3011. <stringProp name="CounterConfig.end"/>
  3012. <stringProp name="CounterConfig.incr">1</stringProp>
  3013. <stringProp name="CounterConfig.name">_counter</stringProp>
  3014. <stringProp name="CounterConfig.format"/>
  3015. <boolProp name="CounterConfig.per_user">true</boolProp>
  3016. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  3017. </CounterConfig>
  3018. <hashTree/>
  3019. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  3020. <stringProp name="BeanShellSampler.query">
  3021. import java.util.Random;
  3022. Random random = vars.getObject("randomIntGenerator");
  3023. number = random.nextInt(props.get("simple_products_list").size());
  3024. product = props.get("simple_products_list").get(number);
  3025. vars.put("product_url_key", product.get("url_key"));
  3026. vars.put("product_id", product.get("id"));
  3027. vars.put("product_name", product.get("title"));
  3028. vars.put("product_uenc", product.get("uenc"));
  3029. vars.put("product_sku", product.get("sku"));
  3030. </stringProp>
  3031. <stringProp name="BeanShellSampler.filename"/>
  3032. <stringProp name="BeanShellSampler.parameters"/>
  3033. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3034. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  3035. <hashTree/>
  3036. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  3037. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3038. <collectionProp name="Arguments.arguments"/>
  3039. </elementProp>
  3040. <stringProp name="HTTPSampler.domain"/>
  3041. <stringProp name="HTTPSampler.port"/>
  3042. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3043. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3044. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3045. <stringProp name="HTTPSampler.contentEncoding"/>
  3046. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  3047. <stringProp name="HTTPSampler.method">GET</stringProp>
  3048. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3049. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3050. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3051. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3052. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3053. <stringProp name="HTTPSampler.embedded_url_re"/>
  3054. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  3055. <hashTree>
  3056. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3057. <collectionProp name="Asserion.test_strings">
  3058. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  3059. </collectionProp>
  3060. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3061. <boolProp name="Assertion.assume_success">false</boolProp>
  3062. <intProp name="Assertion.test_type">2</intProp>
  3063. </ResponseAssertion>
  3064. <hashTree/>
  3065. </hashTree>
  3066. </hashTree>
  3067. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  3068. <boolProp name="LoopController.continue_forever">true</boolProp>
  3069. <stringProp name="LoopController.loops">1</stringProp>
  3070. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  3071. <hashTree>
  3072. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  3073. <stringProp name="CounterConfig.start">1</stringProp>
  3074. <stringProp name="CounterConfig.end"/>
  3075. <stringProp name="CounterConfig.incr">1</stringProp>
  3076. <stringProp name="CounterConfig.name">_counter</stringProp>
  3077. <stringProp name="CounterConfig.format"/>
  3078. <boolProp name="CounterConfig.per_user">true</boolProp>
  3079. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  3080. </CounterConfig>
  3081. <hashTree/>
  3082. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  3083. <stringProp name="BeanShellSampler.query">
  3084. import java.util.Random;
  3085. Random random = vars.getObject("randomIntGenerator");
  3086. number = random.nextInt(props.get("configurable_products_list").size());
  3087. product = props.get("configurable_products_list").get(number);
  3088. vars.put("product_url_key", product.get("url_key"));
  3089. vars.put("product_id", product.get("id"));
  3090. vars.put("product_name", product.get("title"));
  3091. vars.put("product_uenc", product.get("uenc"));
  3092. vars.put("product_sku", product.get("sku"));
  3093. </stringProp>
  3094. <stringProp name="BeanShellSampler.filename"/>
  3095. <stringProp name="BeanShellSampler.parameters"/>
  3096. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3097. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  3098. <hashTree/>
  3099. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  3100. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3101. <collectionProp name="Arguments.arguments"/>
  3102. </elementProp>
  3103. <stringProp name="HTTPSampler.domain"/>
  3104. <stringProp name="HTTPSampler.port"/>
  3105. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3106. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3107. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3108. <stringProp name="HTTPSampler.contentEncoding"/>
  3109. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  3110. <stringProp name="HTTPSampler.method">GET</stringProp>
  3111. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3112. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3113. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3114. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3115. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3116. <stringProp name="HTTPSampler.embedded_url_re"/>
  3117. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  3118. <hashTree>
  3119. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3120. <collectionProp name="Asserion.test_strings">
  3121. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  3122. </collectionProp>
  3123. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3124. <boolProp name="Assertion.assume_success">false</boolProp>
  3125. <intProp name="Assertion.test_type">2</intProp>
  3126. </ResponseAssertion>
  3127. <hashTree/>
  3128. </hashTree>
  3129. </hashTree>
  3130. </hashTree>
  3131. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Site Search" enabled="true">
  3132. <intProp name="ThroughputController.style">1</intProp>
  3133. <boolProp name="ThroughputController.perThread">false</boolProp>
  3134. <intProp name="ThroughputController.maxThroughput">1</intProp>
  3135. <stringProp name="ThroughputController.percentThroughput">${siteSearchPercentage}</stringProp>
  3136. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  3137. <hashTree>
  3138. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  3139. <stringProp name="script">
  3140. var tmpLabel = vars.get("testLabel")
  3141. if (tmpLabel) {
  3142. var testLabel = " (" + tmpLabel + ")"
  3143. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  3144. if (sampler.getName().indexOf(testLabel) == -1) {
  3145. sampler.setName(sampler.getName() + testLabel);
  3146. }
  3147. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  3148. sampler.setName("SetUp - " + sampler.getName());
  3149. }
  3150. } else {
  3151. testLabel = ""
  3152. }
  3153. </stringProp>
  3154. <stringProp name="scriptLanguage">javascript</stringProp>
  3155. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  3156. <hashTree/>
  3157. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  3158. <stringProp name="BeanShellSampler.query">
  3159. vars.put("testLabel", "Site Search");
  3160. </stringProp>
  3161. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3162. </BeanShellSampler>
  3163. <hashTree/>
  3164. <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Search Terms" enabled="true">
  3165. <stringProp name="filename">${files_folder}search_terms.csv</stringProp>
  3166. <stringProp name="fileEncoding">UTF-8</stringProp>
  3167. <stringProp name="variableNames"/>
  3168. <stringProp name="delimiter">,</stringProp>
  3169. <boolProp name="quotedData">false</boolProp>
  3170. <boolProp name="recycle">true</boolProp>
  3171. <boolProp name="stopThread">false</boolProp>
  3172. <stringProp name="shareMode">shareMode.thread</stringProp>
  3173. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms.jmx</stringProp></CSVDataSet>
  3174. <hashTree/>
  3175. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Cache hit miss" enabled="true">
  3176. <stringProp name="scriptLanguage">javascript</stringProp>
  3177. <stringProp name="parameters"/>
  3178. <stringProp name="filename"/>
  3179. <stringProp name="cacheKey"/>
  3180. <stringProp name="script">var cacheHitPercent = vars.get("cache_hits_percentage");
  3181. if (
  3182. cacheHitPercent &lt; 100 &amp;&amp;
  3183. sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  3184. ) {
  3185. doCache();
  3186. }
  3187. function doCache(){
  3188. var random = Math.random() * 100;
  3189. if (cacheHitPercent &lt; random) {
  3190. sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13));
  3191. }
  3192. }
  3193. </stringProp>
  3194. <stringProp name="TestPlan.comments">tool/fragments/ce/common/cache_hit_miss.jmx</stringProp></JSR223PreProcessor>
  3195. <hashTree/>
  3196. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search" enabled="true">
  3197. <intProp name="ThroughputController.style">1</intProp>
  3198. <boolProp name="ThroughputController.perThread">false</boolProp>
  3199. <intProp name="ThroughputController.maxThroughput">1</intProp>
  3200. <stringProp name="ThroughputController.percentThroughput">${searchQuickPercentage}</stringProp>
  3201. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  3202. <hashTree>
  3203. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  3204. <stringProp name="script">
  3205. var tmpLabel = vars.get("testLabel")
  3206. if (tmpLabel) {
  3207. var testLabel = " (" + tmpLabel + ")"
  3208. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  3209. if (sampler.getName().indexOf(testLabel) == -1) {
  3210. sampler.setName(sampler.getName() + testLabel);
  3211. }
  3212. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  3213. sampler.setName("SetUp - " + sampler.getName());
  3214. }
  3215. } else {
  3216. testLabel = ""
  3217. }
  3218. </stringProp>
  3219. <stringProp name="scriptLanguage">javascript</stringProp>
  3220. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  3221. <hashTree/>
  3222. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  3223. <stringProp name="BeanShellSampler.query">
  3224. vars.put("testLabel", "Quick Search");
  3225. </stringProp>
  3226. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3227. </BeanShellSampler>
  3228. <hashTree/>
  3229. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  3230. <collectionProp name="CookieManager.cookies">
  3231. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  3232. <stringProp name="Cookie.value">30</stringProp>
  3233. <stringProp name="Cookie.domain">${host}</stringProp>
  3234. <stringProp name="Cookie.path">/</stringProp>
  3235. <boolProp name="Cookie.secure">false</boolProp>
  3236. <longProp name="Cookie.expires">0</longProp>
  3237. <boolProp name="Cookie.path_specified">true</boolProp>
  3238. <boolProp name="Cookie.domain_specified">true</boolProp>
  3239. </elementProp>
  3240. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  3241. <stringProp name="Cookie.value">${form_key}</stringProp>
  3242. <stringProp name="Cookie.domain">${host}</stringProp>
  3243. <stringProp name="Cookie.path">${base_path}</stringProp>
  3244. <boolProp name="Cookie.secure">false</boolProp>
  3245. <longProp name="Cookie.expires">0</longProp>
  3246. <boolProp name="Cookie.path_specified">true</boolProp>
  3247. <boolProp name="Cookie.domain_specified">true</boolProp>
  3248. </elementProp>
  3249. </collectionProp>
  3250. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  3251. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  3252. <hashTree/>
  3253. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  3254. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3255. <collectionProp name="Arguments.arguments"/>
  3256. </elementProp>
  3257. <stringProp name="HTTPSampler.domain"/>
  3258. <stringProp name="HTTPSampler.port"/>
  3259. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3260. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3261. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3262. <stringProp name="HTTPSampler.contentEncoding"/>
  3263. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  3264. <stringProp name="HTTPSampler.method">GET</stringProp>
  3265. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3266. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3267. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3268. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3269. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3270. <stringProp name="HTTPSampler.embedded_url_re"/>
  3271. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  3272. <hashTree>
  3273. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3274. <collectionProp name="Asserion.test_strings">
  3275. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  3276. </collectionProp>
  3277. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3278. <boolProp name="Assertion.assume_success">false</boolProp>
  3279. <intProp name="Assertion.test_type">2</intProp>
  3280. </ResponseAssertion>
  3281. <hashTree/>
  3282. </hashTree>
  3283. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  3284. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3285. <collectionProp name="Arguments.arguments">
  3286. <elementProp name="q" elementType="HTTPArgument">
  3287. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  3288. <stringProp name="Argument.name">q</stringProp>
  3289. <stringProp name="Argument.value">${searchTerm}</stringProp>
  3290. <stringProp name="Argument.metadata">=</stringProp>
  3291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  3292. </elementProp>
  3293. </collectionProp>
  3294. </elementProp>
  3295. <stringProp name="HTTPSampler.domain"/>
  3296. <stringProp name="HTTPSampler.port"/>
  3297. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3298. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3299. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3300. <stringProp name="HTTPSampler.contentEncoding"/>
  3301. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/result/</stringProp>
  3302. <stringProp name="HTTPSampler.method">GET</stringProp>
  3303. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3304. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3305. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3306. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3307. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3308. <stringProp name="HTTPSampler.embedded_url_re"/>
  3309. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick.jmx</stringProp></HTTPSamplerProxy>
  3310. <hashTree>
  3311. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  3312. <collectionProp name="Asserion.test_strings">
  3313. <stringProp name="56511661">Search results for: </stringProp>
  3314. <stringProp name="1533671447">&lt;span class="toolbar-number"&gt;\d&lt;\/span&gt; Items|Items &lt;span class="toolbar-number"&gt;1</stringProp>
  3315. </collectionProp>
  3316. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3317. <boolProp name="Assertion.assume_success">false</boolProp>
  3318. <intProp name="Assertion.test_type">2</intProp>
  3319. </ResponseAssertion>
  3320. <hashTree/>
  3321. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  3322. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  3323. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  3324. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  3325. <stringProp name="RegexExtractor.template">$2$</stringProp>
  3326. <stringProp name="RegexExtractor.default"/>
  3327. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  3328. </RegexExtractor>
  3329. <hashTree/>
  3330. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: isPageCacheable" enabled="true">
  3331. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  3332. <stringProp name="RegexExtractor.refname">isPageCacheable</stringProp>
  3333. <stringProp name="RegexExtractor.regex">catalogsearch/searchTermsLog/save</stringProp>
  3334. <stringProp name="RegexExtractor.template">$0$</stringProp>
  3335. <stringProp name="RegexExtractor.default">0</stringProp>
  3336. <stringProp name="RegexExtractor.match_number">1</stringProp>
  3337. </RegexExtractor>
  3338. <hashTree/>
  3339. </hashTree>
  3340. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  3341. <stringProp name="IfController.condition">"${isPageCacheable}" != "0"</stringProp>
  3342. <boolProp name="IfController.evaluateAll">false</boolProp>
  3343. <stringProp name="TestPlan.comments">tool/fragments/ce/search/if_page_cacheable_controller.jmx</stringProp></IfController>
  3344. <hashTree>
  3345. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Terms Log" enabled="true">
  3346. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3347. <collectionProp name="Arguments.arguments">
  3348. <elementProp name="q" elementType="HTTPArgument">
  3349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  3350. <stringProp name="Argument.name">q</stringProp>
  3351. <stringProp name="Argument.value">${searchTerm}</stringProp>
  3352. <stringProp name="Argument.metadata">=</stringProp>
  3353. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  3354. </elementProp>
  3355. </collectionProp>
  3356. </elementProp>
  3357. <stringProp name="HTTPSampler.domain"/>
  3358. <stringProp name="HTTPSampler.port"/>
  3359. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3360. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3361. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3362. <stringProp name="HTTPSampler.contentEncoding"/>
  3363. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/searchTermsLog/save/</stringProp>
  3364. <stringProp name="HTTPSampler.method">GET</stringProp>
  3365. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3366. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3367. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3368. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3369. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3370. <stringProp name="HTTPSampler.embedded_url_re"/>
  3371. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms_log_save.jmx</stringProp>
  3372. </HTTPSamplerProxy>
  3373. <hashTree>
  3374. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  3375. <collectionProp name="Asserion.test_strings">
  3376. <stringProp name="-547797305">"success":true</stringProp>
  3377. </collectionProp>
  3378. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3379. <boolProp name="Assertion.assume_success">false</boolProp>
  3380. <intProp name="Assertion.test_type">2</intProp>
  3381. </ResponseAssertion>
  3382. <hashTree/>
  3383. </hashTree>
  3384. </hashTree>
  3385. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  3386. <stringProp name="BeanShellSampler.query">
  3387. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  3388. if (foundProducts &gt; 3) {
  3389. foundProducts = 3;
  3390. }
  3391. vars.put("foundProducts", String.valueOf(foundProducts));
  3392. </stringProp>
  3393. <stringProp name="BeanShellSampler.filename"/>
  3394. <stringProp name="BeanShellSampler.parameters"/>
  3395. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3396. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  3397. <hashTree/>
  3398. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  3399. <boolProp name="LoopController.continue_forever">true</boolProp>
  3400. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  3401. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  3402. <hashTree>
  3403. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  3404. <stringProp name="CounterConfig.start">1</stringProp>
  3405. <stringProp name="CounterConfig.end"/>
  3406. <stringProp name="CounterConfig.incr">1</stringProp>
  3407. <stringProp name="CounterConfig.name">_counter</stringProp>
  3408. <stringProp name="CounterConfig.format"/>
  3409. <boolProp name="CounterConfig.per_user">true</boolProp>
  3410. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  3411. </CounterConfig>
  3412. <hashTree/>
  3413. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  3414. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  3415. <stringProp name="BeanShellSampler.query">
  3416. number = vars.get("_counter");
  3417. product = vars.get("product_url_keys_"+number);
  3418. vars.put("product_url_key", product);
  3419. </stringProp>
  3420. <stringProp name="BeanShellSampler.filename"/>
  3421. <stringProp name="BeanShellSampler.parameters"/>
  3422. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3423. </BeanShellSampler>
  3424. <hashTree/>
  3425. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  3426. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3427. <collectionProp name="Arguments.arguments"/>
  3428. </elementProp>
  3429. <stringProp name="HTTPSampler.domain"/>
  3430. <stringProp name="HTTPSampler.port"/>
  3431. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3432. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3433. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3434. <stringProp name="HTTPSampler.contentEncoding"/>
  3435. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  3436. <stringProp name="HTTPSampler.method">GET</stringProp>
  3437. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3438. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3439. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3440. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3441. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3442. <stringProp name="HTTPSampler.embedded_url_re"/>
  3443. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  3444. <hashTree>
  3445. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3446. <collectionProp name="Asserion.test_strings">
  3447. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  3448. </collectionProp>
  3449. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3450. <boolProp name="Assertion.assume_success">false</boolProp>
  3451. <intProp name="Assertion.test_type">2</intProp>
  3452. </ResponseAssertion>
  3453. <hashTree/>
  3454. </hashTree>
  3455. </hashTree>
  3456. </hashTree>
  3457. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search With Filtration" enabled="true">
  3458. <intProp name="ThroughputController.style">1</intProp>
  3459. <boolProp name="ThroughputController.perThread">false</boolProp>
  3460. <intProp name="ThroughputController.maxThroughput">1</intProp>
  3461. <stringProp name="ThroughputController.percentThroughput">${searchQuickFilterPercentage}</stringProp>
  3462. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  3463. <hashTree>
  3464. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  3465. <stringProp name="script">
  3466. var tmpLabel = vars.get("testLabel")
  3467. if (tmpLabel) {
  3468. var testLabel = " (" + tmpLabel + ")"
  3469. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  3470. if (sampler.getName().indexOf(testLabel) == -1) {
  3471. sampler.setName(sampler.getName() + testLabel);
  3472. }
  3473. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  3474. sampler.setName("SetUp - " + sampler.getName());
  3475. }
  3476. } else {
  3477. testLabel = ""
  3478. }
  3479. </stringProp>
  3480. <stringProp name="scriptLanguage">javascript</stringProp>
  3481. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  3482. <hashTree/>
  3483. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  3484. <stringProp name="BeanShellSampler.query">
  3485. vars.put("testLabel", "Quick Search With Filtration");
  3486. </stringProp>
  3487. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3488. </BeanShellSampler>
  3489. <hashTree/>
  3490. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  3491. <collectionProp name="CookieManager.cookies">
  3492. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  3493. <stringProp name="Cookie.value">30</stringProp>
  3494. <stringProp name="Cookie.domain">${host}</stringProp>
  3495. <stringProp name="Cookie.path">/</stringProp>
  3496. <boolProp name="Cookie.secure">false</boolProp>
  3497. <longProp name="Cookie.expires">0</longProp>
  3498. <boolProp name="Cookie.path_specified">true</boolProp>
  3499. <boolProp name="Cookie.domain_specified">true</boolProp>
  3500. </elementProp>
  3501. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  3502. <stringProp name="Cookie.value">${form_key}</stringProp>
  3503. <stringProp name="Cookie.domain">${host}</stringProp>
  3504. <stringProp name="Cookie.path">${base_path}</stringProp>
  3505. <boolProp name="Cookie.secure">false</boolProp>
  3506. <longProp name="Cookie.expires">0</longProp>
  3507. <boolProp name="Cookie.path_specified">true</boolProp>
  3508. <boolProp name="Cookie.domain_specified">true</boolProp>
  3509. </elementProp>
  3510. </collectionProp>
  3511. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  3512. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  3513. <hashTree/>
  3514. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  3515. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3516. <collectionProp name="Arguments.arguments"/>
  3517. </elementProp>
  3518. <stringProp name="HTTPSampler.domain"/>
  3519. <stringProp name="HTTPSampler.port"/>
  3520. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3521. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3522. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3523. <stringProp name="HTTPSampler.contentEncoding"/>
  3524. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  3525. <stringProp name="HTTPSampler.method">GET</stringProp>
  3526. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3527. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3528. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3529. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3530. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3531. <stringProp name="HTTPSampler.embedded_url_re"/>
  3532. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  3533. <hashTree>
  3534. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3535. <collectionProp name="Asserion.test_strings">
  3536. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  3537. </collectionProp>
  3538. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3539. <boolProp name="Assertion.assume_success">false</boolProp>
  3540. <intProp name="Assertion.test_type">2</intProp>
  3541. </ResponseAssertion>
  3542. <hashTree/>
  3543. </hashTree>
  3544. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  3545. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3546. <collectionProp name="Arguments.arguments">
  3547. <elementProp name="q" elementType="HTTPArgument">
  3548. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  3549. <stringProp name="Argument.name">q</stringProp>
  3550. <stringProp name="Argument.value">${searchTerm}</stringProp>
  3551. <stringProp name="Argument.metadata">=</stringProp>
  3552. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  3553. </elementProp>
  3554. </collectionProp>
  3555. </elementProp>
  3556. <stringProp name="HTTPSampler.domain"/>
  3557. <stringProp name="HTTPSampler.port"/>
  3558. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3559. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3560. <stringProp name="HTTPSampler.protocol"/>
  3561. <stringProp name="HTTPSampler.contentEncoding"/>
  3562. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/result/</stringProp>
  3563. <stringProp name="HTTPSampler.method">GET</stringProp>
  3564. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3565. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3566. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3567. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3568. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3569. <stringProp name="HTTPSampler.embedded_url_re"/>
  3570. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick_filter.jmx</stringProp></HTTPSamplerProxy>
  3571. <hashTree>
  3572. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  3573. <collectionProp name="Asserion.test_strings">
  3574. <stringProp name="56511661">Search results for: </stringProp>
  3575. <stringProp name="1533671447">Items &lt;span class="toolbar-number"&gt;1</stringProp>
  3576. </collectionProp>
  3577. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3578. <boolProp name="Assertion.assume_success">false</boolProp>
  3579. <intProp name="Assertion.test_type">2</intProp>
  3580. </ResponseAssertion>
  3581. <hashTree/>
  3582. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract number of attribute 1 options" enabled="true">
  3583. <stringProp name="XPathExtractor.default">0</stringProp>
  3584. <stringProp name="XPathExtractor.refname">attribute_1_options_count</stringProp>
  3585. <stringProp name="XPathExtractor.xpathQuery">count((//div[@class="filter-options-content"])[1]//li[@class="item"])</stringProp>
  3586. <boolProp name="XPathExtractor.validate">false</boolProp>
  3587. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  3588. <boolProp name="XPathExtractor.namespace">false</boolProp>
  3589. </XPathExtractor>
  3590. <hashTree/>
  3591. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract number of attribute 2 options" enabled="true">
  3592. <stringProp name="XPathExtractor.default">0</stringProp>
  3593. <stringProp name="XPathExtractor.refname">attribute_2_options_count</stringProp>
  3594. <stringProp name="XPathExtractor.xpathQuery">count((//div[@class="filter-options-content"])[2]//li[@class="item"])</stringProp>
  3595. <boolProp name="XPathExtractor.validate">false</boolProp>
  3596. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  3597. <boolProp name="XPathExtractor.namespace">false</boolProp>
  3598. </XPathExtractor>
  3599. <hashTree/>
  3600. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract filter link from layered navigation" enabled="true">
  3601. <stringProp name="XPathExtractor.default"/>
  3602. <stringProp name="XPathExtractor.refname">attribute_1_filter_url</stringProp>
  3603. <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[1]//li[@class="item"]//a)[1]/@href</stringProp>
  3604. <boolProp name="XPathExtractor.validate">false</boolProp>
  3605. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  3606. <boolProp name="XPathExtractor.namespace">false</boolProp>
  3607. </XPathExtractor>
  3608. <hashTree/>
  3609. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product url keys" enabled="true">
  3610. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  3611. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  3612. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  3613. <stringProp name="RegexExtractor.template">$2$</stringProp>
  3614. <stringProp name="RegexExtractor.default"/>
  3615. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  3616. </RegexExtractor>
  3617. <hashTree/>
  3618. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: isPageCacheable" enabled="true">
  3619. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  3620. <stringProp name="RegexExtractor.refname">isPageCacheable</stringProp>
  3621. <stringProp name="RegexExtractor.regex">catalogsearch/searchTermsLog/save</stringProp>
  3622. <stringProp name="RegexExtractor.template">$0$</stringProp>
  3623. <stringProp name="RegexExtractor.default">0</stringProp>
  3624. <stringProp name="RegexExtractor.match_number">1</stringProp>
  3625. </RegexExtractor>
  3626. <hashTree/>
  3627. </hashTree>
  3628. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  3629. <stringProp name="IfController.condition">"${isPageCacheable}" != "0"</stringProp>
  3630. <boolProp name="IfController.evaluateAll">false</boolProp>
  3631. <stringProp name="TestPlan.comments">tool/fragments/ce/search/if_page_cacheable_controller.jmx</stringProp></IfController>
  3632. <hashTree>
  3633. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Terms Log" enabled="true">
  3634. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3635. <collectionProp name="Arguments.arguments">
  3636. <elementProp name="q" elementType="HTTPArgument">
  3637. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  3638. <stringProp name="Argument.name">q</stringProp>
  3639. <stringProp name="Argument.value">${searchTerm}</stringProp>
  3640. <stringProp name="Argument.metadata">=</stringProp>
  3641. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  3642. </elementProp>
  3643. </collectionProp>
  3644. </elementProp>
  3645. <stringProp name="HTTPSampler.domain"/>
  3646. <stringProp name="HTTPSampler.port"/>
  3647. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3648. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3649. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3650. <stringProp name="HTTPSampler.contentEncoding"/>
  3651. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/searchTermsLog/save/</stringProp>
  3652. <stringProp name="HTTPSampler.method">GET</stringProp>
  3653. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3654. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3655. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3656. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3657. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3658. <stringProp name="HTTPSampler.embedded_url_re"/>
  3659. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms_log_save.jmx</stringProp>
  3660. </HTTPSamplerProxy>
  3661. <hashTree>
  3662. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  3663. <collectionProp name="Asserion.test_strings">
  3664. <stringProp name="-547797305">"success":true</stringProp>
  3665. </collectionProp>
  3666. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3667. <boolProp name="Assertion.assume_success">false</boolProp>
  3668. <intProp name="Assertion.test_type">2</intProp>
  3669. </ResponseAssertion>
  3670. <hashTree/>
  3671. </hashTree>
  3672. </hashTree>
  3673. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Attribute 1 present in layered navigation" enabled="true">
  3674. <stringProp name="IfController.condition">${attribute_1_options_count} &gt; 0</stringProp>
  3675. <boolProp name="IfController.evaluateAll">false</boolProp>
  3676. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick_filter-first-attribute.jmx</stringProp></IfController>
  3677. <hashTree>
  3678. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Search Url 2" enabled="true">
  3679. <stringProp name="BeanShellSampler.query">vars.put("search_url", vars.get("attribute_1_filter_url"));</stringProp>
  3680. <stringProp name="BeanShellSampler.filename"/>
  3681. <stringProp name="BeanShellSampler.parameters"/>
  3682. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  3683. </BeanShellSampler>
  3684. <hashTree/>
  3685. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filter by Attribute 1" enabled="true">
  3686. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3687. <collectionProp name="Arguments.arguments"/>
  3688. </elementProp>
  3689. <stringProp name="HTTPSampler.domain"/>
  3690. <stringProp name="HTTPSampler.port"/>
  3691. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3692. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3693. <stringProp name="HTTPSampler.protocol"/>
  3694. <stringProp name="HTTPSampler.contentEncoding"/>
  3695. <stringProp name="HTTPSampler.path">${attribute_1_filter_url}</stringProp>
  3696. <stringProp name="HTTPSampler.method">GET</stringProp>
  3697. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3698. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3699. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3700. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3701. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3702. <stringProp name="HTTPSampler.embedded_url_re"/>
  3703. </HTTPSamplerProxy>
  3704. <hashTree>
  3705. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  3706. <collectionProp name="Asserion.test_strings">
  3707. <stringProp name="56511661">Search results for: </stringProp>
  3708. <stringProp name="1420634794">&lt;span class="toolbar-number"&gt;[1-9]+</stringProp>
  3709. </collectionProp>
  3710. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3711. <boolProp name="Assertion.assume_success">false</boolProp>
  3712. <intProp name="Assertion.test_type">2</intProp>
  3713. </ResponseAssertion>
  3714. <hashTree/>
  3715. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract number of attribute 2 options" enabled="true">
  3716. <stringProp name="XPathExtractor.default">0</stringProp>
  3717. <stringProp name="XPathExtractor.refname">attribute_2_options_count</stringProp>
  3718. <stringProp name="XPathExtractor.xpathQuery">count((//div[@class="filter-options-content"])[2]//li[@class="item"])</stringProp>
  3719. <boolProp name="XPathExtractor.validate">false</boolProp>
  3720. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  3721. <boolProp name="XPathExtractor.namespace">false</boolProp>
  3722. </XPathExtractor>
  3723. <hashTree/>
  3724. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract filter link from layered navigation" enabled="true">
  3725. <stringProp name="XPathExtractor.default"/>
  3726. <stringProp name="XPathExtractor.refname">attribute_2_filter_url</stringProp>
  3727. <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[2]//li[@class="item"]//a)[1]/@href</stringProp>
  3728. <boolProp name="XPathExtractor.validate">false</boolProp>
  3729. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  3730. <boolProp name="XPathExtractor.namespace">false</boolProp>
  3731. </XPathExtractor>
  3732. <hashTree/>
  3733. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product url keys" enabled="true">
  3734. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  3735. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  3736. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  3737. <stringProp name="RegexExtractor.template">$2$</stringProp>
  3738. <stringProp name="RegexExtractor.default"/>
  3739. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  3740. </RegexExtractor>
  3741. <hashTree/>
  3742. </hashTree>
  3743. </hashTree>
  3744. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Attribute 2 present in layered navigation" enabled="true">
  3745. <stringProp name="IfController.condition">${attribute_2_options_count} &gt; 0</stringProp>
  3746. <boolProp name="IfController.evaluateAll">false</boolProp>
  3747. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick_filter-second-attribute.jmx</stringProp></IfController>
  3748. <hashTree>
  3749. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Search Ul 3" enabled="true">
  3750. <stringProp name="BeanShellSampler.query">vars.put("search_url", vars.get("attribute_2_filter_url"));</stringProp>
  3751. <stringProp name="BeanShellSampler.filename"/>
  3752. <stringProp name="BeanShellSampler.parameters"/>
  3753. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  3754. </BeanShellSampler>
  3755. <hashTree/>
  3756. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filter by Attribute 2" enabled="true">
  3757. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3758. <collectionProp name="Arguments.arguments"/>
  3759. </elementProp>
  3760. <stringProp name="HTTPSampler.domain"/>
  3761. <stringProp name="HTTPSampler.port"/>
  3762. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3763. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3764. <stringProp name="HTTPSampler.protocol"/>
  3765. <stringProp name="HTTPSampler.contentEncoding"/>
  3766. <stringProp name="HTTPSampler.path">${attribute_2_filter_url}</stringProp>
  3767. <stringProp name="HTTPSampler.method">GET</stringProp>
  3768. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3769. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3770. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3771. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3772. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3773. <stringProp name="HTTPSampler.embedded_url_re"/>
  3774. </HTTPSamplerProxy>
  3775. <hashTree>
  3776. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  3777. <collectionProp name="Asserion.test_strings">
  3778. <stringProp name="56511661">Search results for: </stringProp>
  3779. <stringProp name="1420634794">&lt;span class="toolbar-number"&gt;[1-9]+</stringProp>
  3780. </collectionProp>
  3781. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3782. <boolProp name="Assertion.assume_success">false</boolProp>
  3783. <intProp name="Assertion.test_type">2</intProp>
  3784. </ResponseAssertion>
  3785. <hashTree/>
  3786. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product url keys" enabled="true">
  3787. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  3788. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  3789. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  3790. <stringProp name="RegexExtractor.template">$2$</stringProp>
  3791. <stringProp name="RegexExtractor.default"/>
  3792. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  3793. </RegexExtractor>
  3794. <hashTree/>
  3795. </hashTree>
  3796. </hashTree>
  3797. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  3798. <stringProp name="BeanShellSampler.query">
  3799. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  3800. if (foundProducts &gt; 3) {
  3801. foundProducts = 3;
  3802. }
  3803. vars.put("foundProducts", String.valueOf(foundProducts));
  3804. </stringProp>
  3805. <stringProp name="BeanShellSampler.filename"/>
  3806. <stringProp name="BeanShellSampler.parameters"/>
  3807. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3808. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  3809. <hashTree/>
  3810. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  3811. <boolProp name="LoopController.continue_forever">true</boolProp>
  3812. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  3813. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  3814. <hashTree>
  3815. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  3816. <stringProp name="CounterConfig.start">1</stringProp>
  3817. <stringProp name="CounterConfig.end"/>
  3818. <stringProp name="CounterConfig.incr">1</stringProp>
  3819. <stringProp name="CounterConfig.name">_counter</stringProp>
  3820. <stringProp name="CounterConfig.format"/>
  3821. <boolProp name="CounterConfig.per_user">true</boolProp>
  3822. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  3823. </CounterConfig>
  3824. <hashTree/>
  3825. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  3826. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  3827. <stringProp name="BeanShellSampler.query">
  3828. number = vars.get("_counter");
  3829. product = vars.get("product_url_keys_"+number);
  3830. vars.put("product_url_key", product);
  3831. </stringProp>
  3832. <stringProp name="BeanShellSampler.filename"/>
  3833. <stringProp name="BeanShellSampler.parameters"/>
  3834. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3835. </BeanShellSampler>
  3836. <hashTree/>
  3837. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  3838. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3839. <collectionProp name="Arguments.arguments"/>
  3840. </elementProp>
  3841. <stringProp name="HTTPSampler.domain"/>
  3842. <stringProp name="HTTPSampler.port"/>
  3843. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3844. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3845. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3846. <stringProp name="HTTPSampler.contentEncoding"/>
  3847. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  3848. <stringProp name="HTTPSampler.method">GET</stringProp>
  3849. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3850. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3851. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3852. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3853. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3854. <stringProp name="HTTPSampler.embedded_url_re"/>
  3855. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  3856. <hashTree>
  3857. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3858. <collectionProp name="Asserion.test_strings">
  3859. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  3860. </collectionProp>
  3861. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3862. <boolProp name="Assertion.assume_success">false</boolProp>
  3863. <intProp name="Assertion.test_type">2</intProp>
  3864. </ResponseAssertion>
  3865. <hashTree/>
  3866. </hashTree>
  3867. </hashTree>
  3868. </hashTree>
  3869. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Advanced Search" enabled="true">
  3870. <intProp name="ThroughputController.style">1</intProp>
  3871. <boolProp name="ThroughputController.perThread">false</boolProp>
  3872. <intProp name="ThroughputController.maxThroughput">1</intProp>
  3873. <stringProp name="ThroughputController.percentThroughput">${searchAdvancedPercentage}</stringProp>
  3874. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  3875. <hashTree>
  3876. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  3877. <stringProp name="script">
  3878. var tmpLabel = vars.get("testLabel")
  3879. if (tmpLabel) {
  3880. var testLabel = " (" + tmpLabel + ")"
  3881. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  3882. if (sampler.getName().indexOf(testLabel) == -1) {
  3883. sampler.setName(sampler.getName() + testLabel);
  3884. }
  3885. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  3886. sampler.setName("SetUp - " + sampler.getName());
  3887. }
  3888. } else {
  3889. testLabel = ""
  3890. }
  3891. </stringProp>
  3892. <stringProp name="scriptLanguage">javascript</stringProp>
  3893. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  3894. <hashTree/>
  3895. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  3896. <stringProp name="BeanShellSampler.query">
  3897. vars.put("testLabel", "Advanced Search");
  3898. </stringProp>
  3899. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  3900. </BeanShellSampler>
  3901. <hashTree/>
  3902. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  3903. <collectionProp name="CookieManager.cookies">
  3904. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  3905. <stringProp name="Cookie.value">30</stringProp>
  3906. <stringProp name="Cookie.domain">${host}</stringProp>
  3907. <stringProp name="Cookie.path">/</stringProp>
  3908. <boolProp name="Cookie.secure">false</boolProp>
  3909. <longProp name="Cookie.expires">0</longProp>
  3910. <boolProp name="Cookie.path_specified">true</boolProp>
  3911. <boolProp name="Cookie.domain_specified">true</boolProp>
  3912. </elementProp>
  3913. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  3914. <stringProp name="Cookie.value">${form_key}</stringProp>
  3915. <stringProp name="Cookie.domain">${host}</stringProp>
  3916. <stringProp name="Cookie.path">${base_path}</stringProp>
  3917. <boolProp name="Cookie.secure">false</boolProp>
  3918. <longProp name="Cookie.expires">0</longProp>
  3919. <boolProp name="Cookie.path_specified">true</boolProp>
  3920. <boolProp name="Cookie.domain_specified">true</boolProp>
  3921. </elementProp>
  3922. </collectionProp>
  3923. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  3924. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  3925. <hashTree/>
  3926. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  3927. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3928. <collectionProp name="Arguments.arguments"/>
  3929. </elementProp>
  3930. <stringProp name="HTTPSampler.domain"/>
  3931. <stringProp name="HTTPSampler.port"/>
  3932. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3933. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3934. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  3935. <stringProp name="HTTPSampler.contentEncoding"/>
  3936. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  3937. <stringProp name="HTTPSampler.method">GET</stringProp>
  3938. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3939. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3940. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3941. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3942. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3943. <stringProp name="HTTPSampler.embedded_url_re"/>
  3944. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  3945. <hashTree>
  3946. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3947. <collectionProp name="Asserion.test_strings">
  3948. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  3949. </collectionProp>
  3950. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3951. <boolProp name="Assertion.assume_success">false</boolProp>
  3952. <intProp name="Assertion.test_type">2</intProp>
  3953. </ResponseAssertion>
  3954. <hashTree/>
  3955. </hashTree>
  3956. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Advanced Search" enabled="true">
  3957. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  3958. <collectionProp name="Arguments.arguments"/>
  3959. </elementProp>
  3960. <stringProp name="HTTPSampler.domain"/>
  3961. <stringProp name="HTTPSampler.port"/>
  3962. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  3963. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  3964. <stringProp name="HTTPSampler.protocol"/>
  3965. <stringProp name="HTTPSampler.contentEncoding"/>
  3966. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/advanced/</stringProp>
  3967. <stringProp name="HTTPSampler.method">GET</stringProp>
  3968. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  3969. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  3970. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  3971. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  3972. <boolProp name="HTTPSampler.monitor">false</boolProp>
  3973. <stringProp name="HTTPSampler.embedded_url_re"/>
  3974. <stringProp name="TestPlan.comments">tool/fragments/ce/search/open_advanced_search_page.jmx</stringProp></HTTPSamplerProxy>
  3975. <hashTree>
  3976. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  3977. <collectionProp name="Asserion.test_strings">
  3978. <stringProp name="921122077">&lt;title&gt;Advanced Search&lt;/title&gt;</stringProp>
  3979. </collectionProp>
  3980. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  3981. <boolProp name="Assertion.assume_success">false</boolProp>
  3982. <intProp name="Assertion.test_type">2</intProp>
  3983. </ResponseAssertion>
  3984. <hashTree/>
  3985. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract attribute name" enabled="true">
  3986. <stringProp name="XPathExtractor.default"/>
  3987. <stringProp name="XPathExtractor.refname">attribute_name</stringProp>
  3988. <stringProp name="XPathExtractor.xpathQuery">(//select[@class="multiselect"])[last()]/@name</stringProp>
  3989. <boolProp name="XPathExtractor.validate">false</boolProp>
  3990. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  3991. <boolProp name="XPathExtractor.namespace">false</boolProp>
  3992. </XPathExtractor>
  3993. <hashTree/>
  3994. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract attribute options count" enabled="true">
  3995. <stringProp name="XPathExtractor.default">0</stringProp>
  3996. <stringProp name="XPathExtractor.refname">attribute_options_count</stringProp>
  3997. <stringProp name="XPathExtractor.xpathQuery">count((//select[@class="multiselect"])[last()]/option)</stringProp>
  3998. <boolProp name="XPathExtractor.validate">false</boolProp>
  3999. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  4000. <boolProp name="XPathExtractor.namespace">false</boolProp>
  4001. </XPathExtractor>
  4002. <hashTree/>
  4003. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract attribute value" enabled="true">
  4004. <stringProp name="XPathExtractor.default"/>
  4005. <stringProp name="XPathExtractor.refname">attribute_value</stringProp>
  4006. <stringProp name="XPathExtractor.xpathQuery">((//select[@class="multiselect"])[last()]/option)[1]/@value</stringProp>
  4007. <boolProp name="XPathExtractor.validate">false</boolProp>
  4008. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  4009. <boolProp name="XPathExtractor.namespace">false</boolProp>
  4010. </XPathExtractor>
  4011. <hashTree/>
  4012. </hashTree>
  4013. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  4014. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4015. <collectionProp name="Arguments.arguments">
  4016. <elementProp name="name" elementType="HTTPArgument">
  4017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4018. <stringProp name="Argument.name">name</stringProp>
  4019. <stringProp name="Argument.value"/>
  4020. <stringProp name="Argument.metadata">=</stringProp>
  4021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4022. </elementProp>
  4023. <elementProp name="sku" elementType="HTTPArgument">
  4024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4025. <stringProp name="Argument.name">sku</stringProp>
  4026. <stringProp name="Argument.value"/>
  4027. <stringProp name="Argument.metadata">=</stringProp>
  4028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4029. </elementProp>
  4030. <elementProp name="description" elementType="HTTPArgument">
  4031. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4032. <stringProp name="Argument.name">description</stringProp>
  4033. <stringProp name="Argument.value">${searchTerm}</stringProp>
  4034. <stringProp name="Argument.metadata">=</stringProp>
  4035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4036. </elementProp>
  4037. <elementProp name="short_description" elementType="HTTPArgument">
  4038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4039. <stringProp name="Argument.name">short_description</stringProp>
  4040. <stringProp name="Argument.value"/>
  4041. <stringProp name="Argument.metadata">=</stringProp>
  4042. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4043. </elementProp>
  4044. <elementProp name="price%5Bfrom%5D" elementType="HTTPArgument">
  4045. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4046. <stringProp name="Argument.name">price%5Bfrom%5D</stringProp>
  4047. <stringProp name="Argument.value"/>
  4048. <stringProp name="Argument.metadata">=</stringProp>
  4049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4050. </elementProp>
  4051. <elementProp name="price%5Bto%5D" elementType="HTTPArgument">
  4052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4053. <stringProp name="Argument.name">price%5Bto%5D</stringProp>
  4054. <stringProp name="Argument.value">${priceTo}</stringProp>
  4055. <stringProp name="Argument.metadata">=</stringProp>
  4056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4057. </elementProp>
  4058. <!-- Should be fixed in MAGETWO-80420 -->
  4059. <!--<elementProp name="${attribute_name}" elementType="HTTPArgument">-->
  4060. <!--<boolProp name="HTTPArgument.always_encode">true</boolProp>-->
  4061. <!--<stringProp name="Argument.value">${attribute_value}</stringProp>-->
  4062. <!--<stringProp name="Argument.metadata">=</stringProp>-->
  4063. <!--<boolProp name="HTTPArgument.use_equals">true</boolProp>-->
  4064. <!--<stringProp name="Argument.name">${attribute_name}</stringProp>-->
  4065. <!--</elementProp>-->
  4066. </collectionProp>
  4067. </elementProp>
  4068. <stringProp name="HTTPSampler.domain"/>
  4069. <stringProp name="HTTPSampler.port"/>
  4070. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4071. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4072. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4073. <stringProp name="HTTPSampler.contentEncoding"/>
  4074. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/advanced/result/</stringProp>
  4075. <stringProp name="HTTPSampler.method">GET</stringProp>
  4076. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4077. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4078. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4079. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4080. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4081. <stringProp name="HTTPSampler.embedded_url_re"/>
  4082. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_advanced.jmx</stringProp></HTTPSamplerProxy>
  4083. <hashTree>
  4084. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  4085. <collectionProp name="Asserion.test_strings">
  4086. <stringProp name="-1851531284">items&lt;/strong&gt; were found using the following search criteria</stringProp>
  4087. </collectionProp>
  4088. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4089. <boolProp name="Assertion.assume_success">false</boolProp>
  4090. <intProp name="Assertion.test_type">2</intProp>
  4091. </ResponseAssertion>
  4092. <hashTree/>
  4093. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  4094. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  4095. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  4096. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  4097. <stringProp name="RegexExtractor.template">$2$</stringProp>
  4098. <stringProp name="RegexExtractor.default"/>
  4099. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  4100. </RegexExtractor>
  4101. <hashTree/>
  4102. </hashTree>
  4103. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  4104. <stringProp name="BeanShellSampler.query">
  4105. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  4106. if (foundProducts &gt; 3) {
  4107. foundProducts = 3;
  4108. }
  4109. vars.put("foundProducts", String.valueOf(foundProducts));
  4110. </stringProp>
  4111. <stringProp name="BeanShellSampler.filename"/>
  4112. <stringProp name="BeanShellSampler.parameters"/>
  4113. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4114. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  4115. <hashTree/>
  4116. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  4117. <boolProp name="LoopController.continue_forever">true</boolProp>
  4118. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  4119. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  4120. <hashTree>
  4121. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  4122. <stringProp name="CounterConfig.start">1</stringProp>
  4123. <stringProp name="CounterConfig.end"/>
  4124. <stringProp name="CounterConfig.incr">1</stringProp>
  4125. <stringProp name="CounterConfig.name">_counter</stringProp>
  4126. <stringProp name="CounterConfig.format"/>
  4127. <boolProp name="CounterConfig.per_user">true</boolProp>
  4128. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  4129. </CounterConfig>
  4130. <hashTree/>
  4131. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  4132. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  4133. <stringProp name="BeanShellSampler.query">
  4134. number = vars.get("_counter");
  4135. product = vars.get("product_url_keys_"+number);
  4136. vars.put("product_url_key", product);
  4137. </stringProp>
  4138. <stringProp name="BeanShellSampler.filename"/>
  4139. <stringProp name="BeanShellSampler.parameters"/>
  4140. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4141. </BeanShellSampler>
  4142. <hashTree/>
  4143. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  4144. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4145. <collectionProp name="Arguments.arguments"/>
  4146. </elementProp>
  4147. <stringProp name="HTTPSampler.domain"/>
  4148. <stringProp name="HTTPSampler.port"/>
  4149. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4150. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4151. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4152. <stringProp name="HTTPSampler.contentEncoding"/>
  4153. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  4154. <stringProp name="HTTPSampler.method">GET</stringProp>
  4155. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4156. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4157. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4158. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4159. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4160. <stringProp name="HTTPSampler.embedded_url_re"/>
  4161. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  4162. <hashTree>
  4163. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4164. <collectionProp name="Asserion.test_strings">
  4165. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  4166. </collectionProp>
  4167. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4168. <boolProp name="Assertion.assume_success">false</boolProp>
  4169. <intProp name="Assertion.test_type">2</intProp>
  4170. </ResponseAssertion>
  4171. <hashTree/>
  4172. </hashTree>
  4173. </hashTree>
  4174. </hashTree>
  4175. </hashTree>
  4176. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Add To Cart By Guest" enabled="true">
  4177. <intProp name="ThroughputController.style">1</intProp>
  4178. <boolProp name="ThroughputController.perThread">false</boolProp>
  4179. <intProp name="ThroughputController.maxThroughput">1</intProp>
  4180. <stringProp name="ThroughputController.percentThroughput">${addToCartByGuestPercentage}</stringProp>
  4181. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  4182. <hashTree>
  4183. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  4184. <stringProp name="script">
  4185. var tmpLabel = vars.get("testLabel")
  4186. if (tmpLabel) {
  4187. var testLabel = " (" + tmpLabel + ")"
  4188. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  4189. if (sampler.getName().indexOf(testLabel) == -1) {
  4190. sampler.setName(sampler.getName() + testLabel);
  4191. }
  4192. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  4193. sampler.setName("SetUp - " + sampler.getName());
  4194. }
  4195. } else {
  4196. testLabel = ""
  4197. }
  4198. </stringProp>
  4199. <stringProp name="scriptLanguage">javascript</stringProp>
  4200. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  4201. <hashTree/>
  4202. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  4203. <stringProp name="BeanShellSampler.query">
  4204. vars.put("testLabel", "Add To Cart By Guest");
  4205. </stringProp>
  4206. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4207. </BeanShellSampler>
  4208. <hashTree/>
  4209. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  4210. <collectionProp name="CookieManager.cookies">
  4211. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  4212. <stringProp name="Cookie.value">30</stringProp>
  4213. <stringProp name="Cookie.domain">${host}</stringProp>
  4214. <stringProp name="Cookie.path">/</stringProp>
  4215. <boolProp name="Cookie.secure">false</boolProp>
  4216. <longProp name="Cookie.expires">0</longProp>
  4217. <boolProp name="Cookie.path_specified">true</boolProp>
  4218. <boolProp name="Cookie.domain_specified">true</boolProp>
  4219. </elementProp>
  4220. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  4221. <stringProp name="Cookie.value">${form_key}</stringProp>
  4222. <stringProp name="Cookie.domain">${host}</stringProp>
  4223. <stringProp name="Cookie.path">${base_path}</stringProp>
  4224. <boolProp name="Cookie.secure">false</boolProp>
  4225. <longProp name="Cookie.expires">0</longProp>
  4226. <boolProp name="Cookie.path_specified">true</boolProp>
  4227. <boolProp name="Cookie.domain_specified">true</boolProp>
  4228. </elementProp>
  4229. </collectionProp>
  4230. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  4231. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  4232. <hashTree/>
  4233. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  4234. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  4235. <stringProp name="BeanShellSampler.query">
  4236. import java.util.Random;
  4237. Random random = new Random();
  4238. if (${seedForRandom} &gt; 0) {
  4239. random.setSeed(${seedForRandom} + ${__threadNum});
  4240. }
  4241. vars.putObject("randomIntGenerator", random);
  4242. </stringProp>
  4243. <stringProp name="BeanShellSampler.filename"/>
  4244. <stringProp name="BeanShellSampler.parameters"/>
  4245. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4246. </BeanShellSampler>
  4247. <hashTree/>
  4248. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  4249. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  4250. <stringProp name="BeanShellSampler.query">
  4251. vars.put("totalProductsAdded", "0");
  4252. </stringProp>
  4253. <stringProp name="BeanShellSampler.filename"/>
  4254. <stringProp name="BeanShellSampler.parameters"/>
  4255. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4256. </BeanShellSampler>
  4257. <hashTree/>
  4258. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  4259. <stringProp name="scriptLanguage">javascript</stringProp>
  4260. <stringProp name="parameters"/>
  4261. <stringProp name="filename"/>
  4262. <stringProp name="cacheKey"/>
  4263. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  4264. var categories = props.get("categories");
  4265. number = random.nextInt(categories.length);
  4266. vars.put("category_url_key", categories[number].url_key);
  4267. vars.put("category_name", categories[number].name);
  4268. vars.put("category_id", categories[number].id);
  4269. vars.putObject("category", categories[number]);
  4270. </stringProp>
  4271. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  4272. <hashTree/>
  4273. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  4274. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4275. <collectionProp name="Arguments.arguments"/>
  4276. </elementProp>
  4277. <stringProp name="HTTPSampler.domain"/>
  4278. <stringProp name="HTTPSampler.port"/>
  4279. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4280. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4281. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4282. <stringProp name="HTTPSampler.contentEncoding"/>
  4283. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  4284. <stringProp name="HTTPSampler.method">GET</stringProp>
  4285. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4286. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4287. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4288. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4289. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4290. <stringProp name="HTTPSampler.embedded_url_re"/>
  4291. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  4292. <hashTree>
  4293. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4294. <collectionProp name="Asserion.test_strings">
  4295. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  4296. </collectionProp>
  4297. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4298. <boolProp name="Assertion.assume_success">false</boolProp>
  4299. <intProp name="Assertion.test_type">2</intProp>
  4300. </ResponseAssertion>
  4301. <hashTree/>
  4302. </hashTree>
  4303. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  4304. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4305. <collectionProp name="Arguments.arguments"/>
  4306. </elementProp>
  4307. <stringProp name="HTTPSampler.domain"/>
  4308. <stringProp name="HTTPSampler.port"/>
  4309. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4310. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4311. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4312. <stringProp name="HTTPSampler.contentEncoding"/>
  4313. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  4314. <stringProp name="HTTPSampler.method">GET</stringProp>
  4315. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4316. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4317. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4318. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4319. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4320. <stringProp name="HTTPSampler.embedded_url_re"/>
  4321. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  4322. <hashTree>
  4323. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4324. <collectionProp name="Asserion.test_strings">
  4325. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  4326. </collectionProp>
  4327. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4328. <boolProp name="Assertion.assume_success">false</boolProp>
  4329. <intProp name="Assertion.test_type">6</intProp>
  4330. </ResponseAssertion>
  4331. <hashTree/>
  4332. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  4333. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  4334. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  4335. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  4336. <stringProp name="RegexExtractor.template">$1$</stringProp>
  4337. <stringProp name="RegexExtractor.default"/>
  4338. <stringProp name="RegexExtractor.match_number">1</stringProp>
  4339. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  4340. </RegexExtractor>
  4341. <hashTree/>
  4342. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  4343. <collectionProp name="Asserion.test_strings">
  4344. <stringProp name="1191417111">^[0-9]+$</stringProp>
  4345. </collectionProp>
  4346. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4347. <boolProp name="Assertion.assume_success">false</boolProp>
  4348. <intProp name="Assertion.test_type">1</intProp>
  4349. <stringProp name="Assertion.scope">variable</stringProp>
  4350. <stringProp name="Scope.variable">category_id</stringProp>
  4351. </ResponseAssertion>
  4352. <hashTree/>
  4353. </hashTree>
  4354. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
  4355. <boolProp name="LoopController.continue_forever">true</boolProp>
  4356. <stringProp name="LoopController.loops">2</stringProp>
  4357. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  4358. <hashTree>
  4359. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  4360. <stringProp name="CounterConfig.start">1</stringProp>
  4361. <stringProp name="CounterConfig.end"/>
  4362. <stringProp name="CounterConfig.incr">1</stringProp>
  4363. <stringProp name="CounterConfig.name">_counter</stringProp>
  4364. <stringProp name="CounterConfig.format"/>
  4365. <boolProp name="CounterConfig.per_user">true</boolProp>
  4366. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  4367. </CounterConfig>
  4368. <hashTree/>
  4369. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  4370. <stringProp name="BeanShellSampler.query">
  4371. import java.util.Random;
  4372. Random random = vars.getObject("randomIntGenerator");
  4373. number = random.nextInt(props.get("simple_products_list").size());
  4374. product = props.get("simple_products_list").get(number);
  4375. vars.put("product_url_key", product.get("url_key"));
  4376. vars.put("product_id", product.get("id"));
  4377. vars.put("product_name", product.get("title"));
  4378. vars.put("product_uenc", product.get("uenc"));
  4379. vars.put("product_sku", product.get("sku"));
  4380. </stringProp>
  4381. <stringProp name="BeanShellSampler.filename"/>
  4382. <stringProp name="BeanShellSampler.parameters"/>
  4383. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4384. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  4385. <hashTree/>
  4386. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  4387. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  4388. <stringProp name="BeanShellSampler.query">
  4389. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  4390. productsAdded = productsAdded + 1;
  4391. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  4392. </stringProp>
  4393. <stringProp name="BeanShellSampler.filename"/>
  4394. <stringProp name="BeanShellSampler.parameters"/>
  4395. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4396. </BeanShellSampler>
  4397. <hashTree/>
  4398. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  4399. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4400. <collectionProp name="Arguments.arguments"/>
  4401. </elementProp>
  4402. <stringProp name="HTTPSampler.domain"/>
  4403. <stringProp name="HTTPSampler.port"/>
  4404. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4405. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4406. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4407. <stringProp name="HTTPSampler.contentEncoding"/>
  4408. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  4409. <stringProp name="HTTPSampler.method">GET</stringProp>
  4410. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4411. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4412. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4413. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4414. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4415. <stringProp name="HTTPSampler.embedded_url_re"/>
  4416. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  4417. <hashTree>
  4418. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4419. <collectionProp name="Asserion.test_strings">
  4420. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  4421. </collectionProp>
  4422. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4423. <boolProp name="Assertion.assume_success">false</boolProp>
  4424. <intProp name="Assertion.test_type">2</intProp>
  4425. </ResponseAssertion>
  4426. <hashTree/>
  4427. </hashTree>
  4428. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  4429. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4430. <collectionProp name="Arguments.arguments">
  4431. <elementProp name="product" elementType="HTTPArgument">
  4432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4433. <stringProp name="Argument.value">${product_id}</stringProp>
  4434. <stringProp name="Argument.metadata">=</stringProp>
  4435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4436. <stringProp name="Argument.name">product</stringProp>
  4437. </elementProp>
  4438. <elementProp name="related_product" elementType="HTTPArgument">
  4439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4440. <stringProp name="Argument.value"/>
  4441. <stringProp name="Argument.metadata">=</stringProp>
  4442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4443. <stringProp name="Argument.name">related_product</stringProp>
  4444. </elementProp>
  4445. <elementProp name="qty" elementType="HTTPArgument">
  4446. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4447. <stringProp name="Argument.value">1</stringProp>
  4448. <stringProp name="Argument.metadata">=</stringProp>
  4449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4450. <stringProp name="Argument.name">qty</stringProp>
  4451. </elementProp>
  4452. <elementProp name="form_key" elementType="HTTPArgument">
  4453. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4454. <stringProp name="Argument.value">${form_key}</stringProp>
  4455. <stringProp name="Argument.metadata">=</stringProp>
  4456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4457. <stringProp name="Argument.name">form_key</stringProp>
  4458. </elementProp>
  4459. </collectionProp>
  4460. </elementProp>
  4461. <stringProp name="HTTPSampler.domain"/>
  4462. <stringProp name="HTTPSampler.port"/>
  4463. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4464. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4465. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4466. <stringProp name="HTTPSampler.contentEncoding"/>
  4467. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  4468. <stringProp name="HTTPSampler.method">POST</stringProp>
  4469. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4470. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4471. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4472. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4473. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4474. <stringProp name="HTTPSampler.embedded_url_re"/>
  4475. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  4476. <hashTree>
  4477. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  4478. <collectionProp name="HeaderManager.headers">
  4479. <elementProp name="" elementType="Header">
  4480. <stringProp name="Header.name">X-Requested-With</stringProp>
  4481. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  4482. </elementProp>
  4483. </collectionProp>
  4484. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  4485. <hashTree/>
  4486. </hashTree>
  4487. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  4488. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4489. <collectionProp name="Arguments.arguments">
  4490. <elementProp name="sections" elementType="HTTPArgument">
  4491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4492. <stringProp name="Argument.value">cart,messages</stringProp>
  4493. <stringProp name="Argument.metadata">=</stringProp>
  4494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4495. <stringProp name="Argument.name">sections</stringProp>
  4496. </elementProp>
  4497. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  4498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4499. <stringProp name="Argument.value">true</stringProp>
  4500. <stringProp name="Argument.metadata">=</stringProp>
  4501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4502. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  4503. </elementProp>
  4504. <elementProp name="_" elementType="HTTPArgument">
  4505. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4506. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  4507. <stringProp name="Argument.metadata">=</stringProp>
  4508. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4509. <stringProp name="Argument.name">_</stringProp>
  4510. </elementProp>
  4511. </collectionProp>
  4512. </elementProp>
  4513. <stringProp name="HTTPSampler.domain"/>
  4514. <stringProp name="HTTPSampler.port"/>
  4515. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4516. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4517. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4518. <stringProp name="HTTPSampler.contentEncoding"/>
  4519. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  4520. <stringProp name="HTTPSampler.method">GET</stringProp>
  4521. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4522. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4523. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4524. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4525. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4526. <stringProp name="HTTPSampler.embedded_url_re"/>
  4527. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  4528. <hashTree>
  4529. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4530. <collectionProp name="Asserion.test_strings">
  4531. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  4532. </collectionProp>
  4533. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4534. <boolProp name="Assertion.assume_success">false</boolProp>
  4535. <intProp name="Assertion.test_type">2</intProp>
  4536. </ResponseAssertion>
  4537. <hashTree/>
  4538. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4539. <collectionProp name="Asserion.test_strings">
  4540. <stringProp name="2057973164">This product is out of stock.</stringProp>
  4541. </collectionProp>
  4542. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4543. <boolProp name="Assertion.assume_success">false</boolProp>
  4544. <intProp name="Assertion.test_type">6</intProp>
  4545. </ResponseAssertion>
  4546. <hashTree/>
  4547. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4548. <collectionProp name="Asserion.test_strings">
  4549. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  4550. </collectionProp>
  4551. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4552. <boolProp name="Assertion.assume_success">false</boolProp>
  4553. <intProp name="Assertion.test_type">2</intProp>
  4554. </ResponseAssertion>
  4555. <hashTree/>
  4556. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  4557. <collectionProp name="HeaderManager.headers">
  4558. <elementProp name="" elementType="Header">
  4559. <stringProp name="Header.name">X-Requested-With</stringProp>
  4560. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  4561. </elementProp>
  4562. </collectionProp>
  4563. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  4564. <hashTree/>
  4565. </hashTree>
  4566. </hashTree>
  4567. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
  4568. <boolProp name="LoopController.continue_forever">true</boolProp>
  4569. <stringProp name="LoopController.loops">1</stringProp>
  4570. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  4571. <hashTree>
  4572. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  4573. <stringProp name="CounterConfig.start">1</stringProp>
  4574. <stringProp name="CounterConfig.end"/>
  4575. <stringProp name="CounterConfig.incr">1</stringProp>
  4576. <stringProp name="CounterConfig.name">_counter</stringProp>
  4577. <stringProp name="CounterConfig.format"/>
  4578. <boolProp name="CounterConfig.per_user">true</boolProp>
  4579. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  4580. </CounterConfig>
  4581. <hashTree/>
  4582. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  4583. <stringProp name="BeanShellSampler.query">
  4584. import java.util.Random;
  4585. Random random = vars.getObject("randomIntGenerator");
  4586. number = random.nextInt(props.get("configurable_products_list").size());
  4587. product = props.get("configurable_products_list").get(number);
  4588. vars.put("product_url_key", product.get("url_key"));
  4589. vars.put("product_id", product.get("id"));
  4590. vars.put("product_name", product.get("title"));
  4591. vars.put("product_uenc", product.get("uenc"));
  4592. vars.put("product_sku", product.get("sku"));
  4593. </stringProp>
  4594. <stringProp name="BeanShellSampler.filename"/>
  4595. <stringProp name="BeanShellSampler.parameters"/>
  4596. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4597. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  4598. <hashTree/>
  4599. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  4600. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  4601. <stringProp name="BeanShellSampler.query">
  4602. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  4603. productsAdded = productsAdded + 1;
  4604. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  4605. </stringProp>
  4606. <stringProp name="BeanShellSampler.filename"/>
  4607. <stringProp name="BeanShellSampler.parameters"/>
  4608. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4609. </BeanShellSampler>
  4610. <hashTree/>
  4611. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  4612. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4613. <collectionProp name="Arguments.arguments"/>
  4614. </elementProp>
  4615. <stringProp name="HTTPSampler.domain"/>
  4616. <stringProp name="HTTPSampler.port"/>
  4617. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4618. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4619. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4620. <stringProp name="HTTPSampler.contentEncoding"/>
  4621. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  4622. <stringProp name="HTTPSampler.method">GET</stringProp>
  4623. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4624. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4625. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4626. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4627. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4628. <stringProp name="HTTPSampler.embedded_url_re"/>
  4629. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  4630. <hashTree>
  4631. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4632. <collectionProp name="Asserion.test_strings">
  4633. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  4634. </collectionProp>
  4635. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4636. <boolProp name="Assertion.assume_success">false</boolProp>
  4637. <intProp name="Assertion.test_type">2</intProp>
  4638. </ResponseAssertion>
  4639. <hashTree/>
  4640. </hashTree>
  4641. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  4642. <boolProp name="LoopController.continue_forever">true</boolProp>
  4643. <stringProp name="LoopController.loops">1</stringProp>
  4644. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  4645. <hashTree>
  4646. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  4647. <collectionProp name="HeaderManager.headers">
  4648. <elementProp name="" elementType="Header">
  4649. <stringProp name="Header.name">Content-Type</stringProp>
  4650. <stringProp name="Header.value">application/json</stringProp>
  4651. </elementProp>
  4652. <elementProp name="" elementType="Header">
  4653. <stringProp name="Header.name">Accept</stringProp>
  4654. <stringProp name="Header.value">*/*</stringProp>
  4655. </elementProp>
  4656. </collectionProp>
  4657. </HeaderManager>
  4658. <hashTree/>
  4659. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  4660. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  4661. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  4662. <collectionProp name="Arguments.arguments">
  4663. <elementProp name="" elementType="HTTPArgument">
  4664. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  4665. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  4666. <stringProp name="Argument.metadata">=</stringProp>
  4667. </elementProp>
  4668. </collectionProp>
  4669. </elementProp>
  4670. <stringProp name="HTTPSampler.domain"/>
  4671. <stringProp name="HTTPSampler.port"/>
  4672. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4673. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4674. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4675. <stringProp name="HTTPSampler.contentEncoding"/>
  4676. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  4677. <stringProp name="HTTPSampler.method">POST</stringProp>
  4678. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4679. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4680. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4681. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4682. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4683. <stringProp name="HTTPSampler.embedded_url_re"/>
  4684. </HTTPSamplerProxy>
  4685. <hashTree>
  4686. <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">
  4687. <stringProp name="VAR">admin_token</stringProp>
  4688. <stringProp name="JSONPATH">$</stringProp>
  4689. <stringProp name="DEFAULT"/>
  4690. <stringProp name="VARIABLE"/>
  4691. <stringProp name="SUBJECT">BODY</stringProp>
  4692. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  4693. <hashTree/>
  4694. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  4695. <collectionProp name="Asserion.test_strings">
  4696. <stringProp name="484395188">^.{10,}$</stringProp>
  4697. </collectionProp>
  4698. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4699. <boolProp name="Assertion.assume_success">false</boolProp>
  4700. <intProp name="Assertion.test_type">1</intProp>
  4701. <stringProp name="Assertion.scope">variable</stringProp>
  4702. <stringProp name="Scope.variable">admin_token</stringProp>
  4703. </ResponseAssertion>
  4704. <hashTree/>
  4705. </hashTree>
  4706. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  4707. <collectionProp name="HeaderManager.headers">
  4708. <elementProp name="" elementType="Header">
  4709. <stringProp name="Header.name">Authorization</stringProp>
  4710. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  4711. </elementProp>
  4712. </collectionProp>
  4713. </HeaderManager>
  4714. <hashTree/>
  4715. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  4716. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4717. <collectionProp name="Arguments.arguments"/>
  4718. </elementProp>
  4719. <stringProp name="HTTPSampler.domain"/>
  4720. <stringProp name="HTTPSampler.port"/>
  4721. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4722. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4723. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4724. <stringProp name="HTTPSampler.contentEncoding"/>
  4725. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  4726. <stringProp name="HTTPSampler.method">GET</stringProp>
  4727. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4728. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4729. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4730. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4731. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4732. <stringProp name="HTTPSampler.embedded_url_re"/>
  4733. </HTTPSamplerProxy>
  4734. <hashTree>
  4735. <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">
  4736. <stringProp name="VAR">attribute_ids</stringProp>
  4737. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  4738. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  4739. <stringProp name="VARIABLE"/>
  4740. <stringProp name="SUBJECT">BODY</stringProp>
  4741. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  4742. <hashTree/>
  4743. <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">
  4744. <stringProp name="VAR">option_values</stringProp>
  4745. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  4746. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  4747. <stringProp name="VARIABLE"/>
  4748. <stringProp name="SUBJECT">BODY</stringProp>
  4749. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  4750. <hashTree/>
  4751. </hashTree>
  4752. </hashTree>
  4753. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  4754. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4755. <collectionProp name="Arguments.arguments">
  4756. <elementProp name="product" elementType="HTTPArgument">
  4757. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4758. <stringProp name="Argument.value">${product_id}</stringProp>
  4759. <stringProp name="Argument.metadata">=</stringProp>
  4760. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4761. <stringProp name="Argument.name">product</stringProp>
  4762. </elementProp>
  4763. <elementProp name="related_product" elementType="HTTPArgument">
  4764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4765. <stringProp name="Argument.value"/>
  4766. <stringProp name="Argument.metadata">=</stringProp>
  4767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4768. <stringProp name="Argument.name">related_product</stringProp>
  4769. </elementProp>
  4770. <elementProp name="qty" elementType="HTTPArgument">
  4771. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4772. <stringProp name="Argument.value">1</stringProp>
  4773. <stringProp name="Argument.metadata">=</stringProp>
  4774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4775. <stringProp name="Argument.name">qty</stringProp>
  4776. </elementProp>
  4777. <elementProp name="form_key" elementType="HTTPArgument">
  4778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4779. <stringProp name="Argument.value">${form_key}</stringProp>
  4780. <stringProp name="Argument.metadata">=</stringProp>
  4781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4782. <stringProp name="Argument.name">form_key</stringProp>
  4783. </elementProp>
  4784. </collectionProp>
  4785. </elementProp>
  4786. <stringProp name="HTTPSampler.domain"/>
  4787. <stringProp name="HTTPSampler.port"/>
  4788. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4789. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4790. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4791. <stringProp name="HTTPSampler.contentEncoding"/>
  4792. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  4793. <stringProp name="HTTPSampler.method">POST</stringProp>
  4794. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4795. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4796. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4797. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4798. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4799. <stringProp name="HTTPSampler.embedded_url_re"/>
  4800. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  4801. <hashTree>
  4802. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  4803. <boolProp name="resetInterpreter">false</boolProp>
  4804. <stringProp name="parameters"/>
  4805. <stringProp name="filename"/>
  4806. <stringProp name="script">
  4807. try {
  4808. attribute_ids = vars.get("attribute_ids");
  4809. option_values = vars.get("option_values");
  4810. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  4811. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  4812. attribute_ids_array = attribute_ids.split(",");
  4813. option_values_array = option_values.split(",");
  4814. args = ctx.getCurrentSampler().getArguments();
  4815. it = args.iterator();
  4816. while (it.hasNext()) {
  4817. argument = it.next();
  4818. if (argument.getStringValue().contains("${")) {
  4819. args.removeArgument(argument.getName());
  4820. }
  4821. }
  4822. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  4823. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  4824. }
  4825. } catch (Exception e) {
  4826. log.error("eror&#x2026;", e);
  4827. }
  4828. </stringProp>
  4829. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  4830. <hashTree/>
  4831. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  4832. <collectionProp name="HeaderManager.headers">
  4833. <elementProp name="" elementType="Header">
  4834. <stringProp name="Header.name">X-Requested-With</stringProp>
  4835. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  4836. </elementProp>
  4837. </collectionProp>
  4838. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  4839. <hashTree/>
  4840. </hashTree>
  4841. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  4842. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  4843. <collectionProp name="Arguments.arguments">
  4844. <elementProp name="sections" elementType="HTTPArgument">
  4845. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4846. <stringProp name="Argument.value">cart,messages</stringProp>
  4847. <stringProp name="Argument.metadata">=</stringProp>
  4848. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4849. <stringProp name="Argument.name">sections</stringProp>
  4850. </elementProp>
  4851. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  4852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4853. <stringProp name="Argument.value">true</stringProp>
  4854. <stringProp name="Argument.metadata">=</stringProp>
  4855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4856. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  4857. </elementProp>
  4858. <elementProp name="_" elementType="HTTPArgument">
  4859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  4860. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  4861. <stringProp name="Argument.metadata">=</stringProp>
  4862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  4863. <stringProp name="Argument.name">_</stringProp>
  4864. </elementProp>
  4865. </collectionProp>
  4866. </elementProp>
  4867. <stringProp name="HTTPSampler.domain"/>
  4868. <stringProp name="HTTPSampler.port"/>
  4869. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  4870. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  4871. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  4872. <stringProp name="HTTPSampler.contentEncoding"/>
  4873. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  4874. <stringProp name="HTTPSampler.method">GET</stringProp>
  4875. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  4876. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  4877. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  4878. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  4879. <boolProp name="HTTPSampler.monitor">false</boolProp>
  4880. <stringProp name="HTTPSampler.embedded_url_re"/>
  4881. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  4882. <hashTree>
  4883. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4884. <collectionProp name="Asserion.test_strings">
  4885. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  4886. </collectionProp>
  4887. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4888. <boolProp name="Assertion.assume_success">false</boolProp>
  4889. <intProp name="Assertion.test_type">2</intProp>
  4890. </ResponseAssertion>
  4891. <hashTree/>
  4892. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4893. <collectionProp name="Asserion.test_strings">
  4894. <stringProp name="2057973164">This product is out of stock.</stringProp>
  4895. </collectionProp>
  4896. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4897. <boolProp name="Assertion.assume_success">false</boolProp>
  4898. <intProp name="Assertion.test_type">6</intProp>
  4899. </ResponseAssertion>
  4900. <hashTree/>
  4901. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  4902. <collectionProp name="Asserion.test_strings">
  4903. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  4904. </collectionProp>
  4905. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  4906. <boolProp name="Assertion.assume_success">false</boolProp>
  4907. <intProp name="Assertion.test_type">2</intProp>
  4908. </ResponseAssertion>
  4909. <hashTree/>
  4910. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  4911. <collectionProp name="HeaderManager.headers">
  4912. <elementProp name="" elementType="Header">
  4913. <stringProp name="Header.name">X-Requested-With</stringProp>
  4914. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  4915. </elementProp>
  4916. </collectionProp>
  4917. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  4918. <hashTree/>
  4919. </hashTree>
  4920. </hashTree>
  4921. </hashTree>
  4922. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Add to Wishlist" enabled="true">
  4923. <intProp name="ThroughputController.style">1</intProp>
  4924. <boolProp name="ThroughputController.perThread">false</boolProp>
  4925. <intProp name="ThroughputController.maxThroughput">1</intProp>
  4926. <stringProp name="ThroughputController.percentThroughput">${addToWishlistPercentage}</stringProp>
  4927. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  4928. <hashTree>
  4929. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  4930. <stringProp name="script">
  4931. var tmpLabel = vars.get("testLabel")
  4932. if (tmpLabel) {
  4933. var testLabel = " (" + tmpLabel + ")"
  4934. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  4935. if (sampler.getName().indexOf(testLabel) == -1) {
  4936. sampler.setName(sampler.getName() + testLabel);
  4937. }
  4938. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  4939. sampler.setName("SetUp - " + sampler.getName());
  4940. }
  4941. } else {
  4942. testLabel = ""
  4943. }
  4944. </stringProp>
  4945. <stringProp name="scriptLanguage">javascript</stringProp>
  4946. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  4947. <hashTree/>
  4948. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  4949. <stringProp name="BeanShellSampler.query">
  4950. vars.put("testLabel", "Add to Wishlist");
  4951. </stringProp>
  4952. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4953. </BeanShellSampler>
  4954. <hashTree/>
  4955. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  4956. <collectionProp name="CookieManager.cookies">
  4957. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  4958. <stringProp name="Cookie.value">30</stringProp>
  4959. <stringProp name="Cookie.domain">${host}</stringProp>
  4960. <stringProp name="Cookie.path">/</stringProp>
  4961. <boolProp name="Cookie.secure">false</boolProp>
  4962. <longProp name="Cookie.expires">0</longProp>
  4963. <boolProp name="Cookie.path_specified">true</boolProp>
  4964. <boolProp name="Cookie.domain_specified">true</boolProp>
  4965. </elementProp>
  4966. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  4967. <stringProp name="Cookie.value">${form_key}</stringProp>
  4968. <stringProp name="Cookie.domain">${host}</stringProp>
  4969. <stringProp name="Cookie.path">${base_path}</stringProp>
  4970. <boolProp name="Cookie.secure">false</boolProp>
  4971. <longProp name="Cookie.expires">0</longProp>
  4972. <boolProp name="Cookie.path_specified">true</boolProp>
  4973. <boolProp name="Cookie.domain_specified">true</boolProp>
  4974. </elementProp>
  4975. </collectionProp>
  4976. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  4977. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  4978. <hashTree/>
  4979. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  4980. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  4981. <stringProp name="BeanShellSampler.query">
  4982. import java.util.Random;
  4983. Random random = new Random();
  4984. if (${seedForRandom} &gt; 0) {
  4985. random.setSeed(${seedForRandom} + ${__threadNum});
  4986. }
  4987. vars.putObject("randomIntGenerator", random);
  4988. </stringProp>
  4989. <stringProp name="BeanShellSampler.filename"/>
  4990. <stringProp name="BeanShellSampler.parameters"/>
  4991. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  4992. </BeanShellSampler>
  4993. <hashTree/>
  4994. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  4995. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  4996. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  4997. <hashTree>
  4998. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  4999. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  5000. <stringProp name="BeanShellSampler.query">
  5001. customerUserList = props.get("customer_emails_list");
  5002. customerUser = customerUserList.poll();
  5003. if (customerUser == null) {
  5004. SampleResult.setResponseMessage("customerUser list is empty");
  5005. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  5006. IsSuccess=false;
  5007. SampleResult.setSuccessful(false);
  5008. SampleResult.setStopThread(true);
  5009. }
  5010. vars.put("customer_email", customerUser);
  5011. </stringProp>
  5012. <stringProp name="BeanShellSampler.filename"/>
  5013. <stringProp name="BeanShellSampler.parameters"/>
  5014. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5015. </BeanShellSampler>
  5016. <hashTree/>
  5017. </hashTree>
  5018. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  5019. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5020. <collectionProp name="Arguments.arguments"/>
  5021. </elementProp>
  5022. <stringProp name="HTTPSampler.domain"/>
  5023. <stringProp name="HTTPSampler.port"/>
  5024. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5025. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5026. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5027. <stringProp name="HTTPSampler.contentEncoding"/>
  5028. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  5029. <stringProp name="HTTPSampler.method">GET</stringProp>
  5030. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5031. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5032. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5033. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5034. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5035. <stringProp name="HTTPSampler.embedded_url_re"/>
  5036. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  5037. <hashTree>
  5038. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5039. <collectionProp name="Asserion.test_strings">
  5040. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  5041. </collectionProp>
  5042. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5043. <boolProp name="Assertion.assume_success">false</boolProp>
  5044. <intProp name="Assertion.test_type">2</intProp>
  5045. </ResponseAssertion>
  5046. <hashTree/>
  5047. </hashTree>
  5048. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  5049. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5050. <collectionProp name="Arguments.arguments">
  5051. <elementProp name="form_key" elementType="HTTPArgument">
  5052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5053. <stringProp name="Argument.value">${form_key}</stringProp>
  5054. <stringProp name="Argument.metadata">=</stringProp>
  5055. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5056. <stringProp name="Argument.name">form_key</stringProp>
  5057. </elementProp>
  5058. <elementProp name="login[username]" elementType="HTTPArgument">
  5059. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5060. <stringProp name="Argument.value">${customer_email}</stringProp>
  5061. <stringProp name="Argument.metadata">=</stringProp>
  5062. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5063. <stringProp name="Argument.name">login[username]</stringProp>
  5064. </elementProp>
  5065. <elementProp name="login[password]" elementType="HTTPArgument">
  5066. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5067. <stringProp name="Argument.value">${customer_password}</stringProp>
  5068. <stringProp name="Argument.metadata">=</stringProp>
  5069. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5070. <stringProp name="Argument.name">login[password]</stringProp>
  5071. </elementProp>
  5072. <elementProp name="send" elementType="HTTPArgument">
  5073. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5074. <stringProp name="Argument.value"/>
  5075. <stringProp name="Argument.metadata">=</stringProp>
  5076. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5077. <stringProp name="Argument.name">send</stringProp>
  5078. </elementProp>
  5079. </collectionProp>
  5080. </elementProp>
  5081. <stringProp name="HTTPSampler.domain"/>
  5082. <stringProp name="HTTPSampler.port"/>
  5083. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5084. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5085. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5086. <stringProp name="HTTPSampler.contentEncoding"/>
  5087. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  5088. <stringProp name="HTTPSampler.method">POST</stringProp>
  5089. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5090. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5091. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5092. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5093. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5094. <stringProp name="HTTPSampler.embedded_url_re"/>
  5095. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  5096. <hashTree>
  5097. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5098. <collectionProp name="Asserion.test_strings">
  5099. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  5100. </collectionProp>
  5101. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5102. <boolProp name="Assertion.assume_success">false</boolProp>
  5103. <intProp name="Assertion.test_type">2</intProp>
  5104. </ResponseAssertion>
  5105. <hashTree/>
  5106. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  5107. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  5108. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  5109. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  5110. <stringProp name="RegexExtractor.template">$1$</stringProp>
  5111. <stringProp name="RegexExtractor.default"/>
  5112. <stringProp name="RegexExtractor.match_number">1</stringProp>
  5113. </RegexExtractor>
  5114. <hashTree/>
  5115. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  5116. <collectionProp name="Asserion.test_strings">
  5117. <stringProp name="2845929">^.+$</stringProp>
  5118. </collectionProp>
  5119. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5120. <boolProp name="Assertion.assume_success">false</boolProp>
  5121. <intProp name="Assertion.test_type">1</intProp>
  5122. <stringProp name="Assertion.scope">variable</stringProp>
  5123. <stringProp name="Scope.variable">addressId</stringProp>
  5124. </ResponseAssertion>
  5125. <hashTree/>
  5126. </hashTree>
  5127. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  5128. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5129. <collectionProp name="Arguments.arguments">
  5130. <elementProp name="sections" elementType="HTTPArgument">
  5131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5132. <stringProp name="Argument.value"/>
  5133. <stringProp name="Argument.metadata">=</stringProp>
  5134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5135. <stringProp name="Argument.name">sections</stringProp>
  5136. </elementProp>
  5137. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  5138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5139. <stringProp name="Argument.value">false</stringProp>
  5140. <stringProp name="Argument.metadata">=</stringProp>
  5141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5142. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  5143. </elementProp>
  5144. <elementProp name="_" elementType="HTTPArgument">
  5145. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5146. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  5147. <stringProp name="Argument.metadata">=</stringProp>
  5148. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5149. <stringProp name="Argument.name">_</stringProp>
  5150. </elementProp>
  5151. </collectionProp>
  5152. </elementProp>
  5153. <stringProp name="HTTPSampler.domain"/>
  5154. <stringProp name="HTTPSampler.port"/>
  5155. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5156. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5157. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5158. <stringProp name="HTTPSampler.contentEncoding"/>
  5159. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  5160. <stringProp name="HTTPSampler.method">GET</stringProp>
  5161. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5162. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5163. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5164. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5165. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5166. <stringProp name="HTTPSampler.embedded_url_re"/>
  5167. </HTTPSamplerProxy>
  5168. <hashTree/>
  5169. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Produts to Wishlist" enabled="true">
  5170. <boolProp name="LoopController.continue_forever">true</boolProp>
  5171. <stringProp name="LoopController.loops">5</stringProp>
  5172. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  5173. <hashTree>
  5174. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  5175. <stringProp name="CounterConfig.start">1</stringProp>
  5176. <stringProp name="CounterConfig.end"/>
  5177. <stringProp name="CounterConfig.incr">1</stringProp>
  5178. <stringProp name="CounterConfig.name">_counter</stringProp>
  5179. <stringProp name="CounterConfig.format"/>
  5180. <boolProp name="CounterConfig.per_user">true</boolProp>
  5181. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  5182. </CounterConfig>
  5183. <hashTree/>
  5184. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  5185. <stringProp name="BeanShellSampler.query">
  5186. import java.util.Random;
  5187. Random random = vars.getObject("randomIntGenerator");
  5188. number = random.nextInt(props.get("simple_products_list").size());
  5189. product = props.get("simple_products_list").get(number);
  5190. vars.put("product_url_key", product.get("url_key"));
  5191. vars.put("product_id", product.get("id"));
  5192. vars.put("product_name", product.get("title"));
  5193. vars.put("product_uenc", product.get("uenc"));
  5194. vars.put("product_sku", product.get("sku"));
  5195. </stringProp>
  5196. <stringProp name="BeanShellSampler.filename"/>
  5197. <stringProp name="BeanShellSampler.parameters"/>
  5198. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5199. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  5200. <hashTree/>
  5201. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  5202. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5203. <collectionProp name="Arguments.arguments"/>
  5204. </elementProp>
  5205. <stringProp name="HTTPSampler.domain"/>
  5206. <stringProp name="HTTPSampler.port"/>
  5207. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5208. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5209. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5210. <stringProp name="HTTPSampler.contentEncoding"/>
  5211. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  5212. <stringProp name="HTTPSampler.method">GET</stringProp>
  5213. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5214. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5215. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5216. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5217. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5218. <stringProp name="HTTPSampler.embedded_url_re"/>
  5219. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  5220. <hashTree>
  5221. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5222. <collectionProp name="Asserion.test_strings">
  5223. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  5224. </collectionProp>
  5225. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5226. <boolProp name="Assertion.assume_success">false</boolProp>
  5227. <intProp name="Assertion.test_type">2</intProp>
  5228. </ResponseAssertion>
  5229. <hashTree/>
  5230. </hashTree>
  5231. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Wishlist" enabled="true">
  5232. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5233. <collectionProp name="Arguments.arguments">
  5234. <elementProp name="form_key" elementType="HTTPArgument">
  5235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5236. <stringProp name="Argument.value">${form_key}</stringProp>
  5237. <stringProp name="Argument.metadata">=</stringProp>
  5238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5239. <stringProp name="Argument.name">form_key</stringProp>
  5240. <stringProp name="Argument.desc">false</stringProp>
  5241. </elementProp>
  5242. <elementProp name="uenc" elementType="HTTPArgument">
  5243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5244. <stringProp name="Argument.value">${product_uenc}</stringProp>
  5245. <stringProp name="Argument.metadata">=</stringProp>
  5246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5247. <stringProp name="Argument.name">uenc</stringProp>
  5248. </elementProp>
  5249. <elementProp name="product" elementType="HTTPArgument">
  5250. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5251. <stringProp name="Argument.value">${product_id}</stringProp>
  5252. <stringProp name="Argument.metadata">=</stringProp>
  5253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5254. <stringProp name="Argument.name">product</stringProp>
  5255. </elementProp>
  5256. </collectionProp>
  5257. </elementProp>
  5258. <stringProp name="HTTPSampler.domain"/>
  5259. <stringProp name="HTTPSampler.port"/>
  5260. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5261. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5262. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5263. <stringProp name="HTTPSampler.contentEncoding"/>
  5264. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/add/</stringProp>
  5265. <stringProp name="HTTPSampler.method">POST</stringProp>
  5266. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5267. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5268. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5269. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5270. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5271. <stringProp name="HTTPSampler.embedded_url_re"/>
  5272. <stringProp name="TestPlan.comments">tool/fragments/ce/wishlist/add_to_wishlist.jmx</stringProp></HTTPSamplerProxy>
  5273. <hashTree>
  5274. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5275. <collectionProp name="Asserion.test_strings">
  5276. <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
  5277. </collectionProp>
  5278. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5279. <boolProp name="Assertion.assume_success">false</boolProp>
  5280. <intProp name="Assertion.test_type">16</intProp>
  5281. </ResponseAssertion>
  5282. <hashTree/>
  5283. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  5284. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  5285. <stringProp name="RegexExtractor.refname">wishListItems</stringProp>
  5286. <stringProp name="RegexExtractor.regex">data-post-remove='\{"action":"(.+)\/wishlist\\/index\\/remove\\/","data":\{"item":"([^"]+)"</stringProp>
  5287. <stringProp name="RegexExtractor.template">$2$</stringProp>
  5288. <stringProp name="RegexExtractor.default"/>
  5289. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  5290. </RegexExtractor>
  5291. <hashTree/>
  5292. </hashTree>
  5293. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Wishlist Section ${_counter}" enabled="true">
  5294. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5295. <collectionProp name="Arguments.arguments">
  5296. <elementProp name="sections" elementType="HTTPArgument">
  5297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5298. <stringProp name="Argument.value">wishlist,messages</stringProp>
  5299. <stringProp name="Argument.metadata">=</stringProp>
  5300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5301. <stringProp name="Argument.name">sections</stringProp>
  5302. </elementProp>
  5303. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  5304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5305. <stringProp name="Argument.value">false</stringProp>
  5306. <stringProp name="Argument.metadata">=</stringProp>
  5307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5308. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  5309. </elementProp>
  5310. <elementProp name="_" elementType="HTTPArgument">
  5311. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5312. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  5313. <stringProp name="Argument.metadata">=</stringProp>
  5314. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5315. <stringProp name="Argument.name">_</stringProp>
  5316. </elementProp>
  5317. </collectionProp>
  5318. </elementProp>
  5319. <stringProp name="HTTPSampler.domain"/>
  5320. <stringProp name="HTTPSampler.port"/>
  5321. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5322. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5323. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5324. <stringProp name="HTTPSampler.contentEncoding"/>
  5325. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  5326. <stringProp name="HTTPSampler.method">GET</stringProp>
  5327. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5328. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5329. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5330. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5331. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5332. <stringProp name="HTTPSampler.embedded_url_re"/>
  5333. <stringProp name="TestPlan.comments">tool/fragments/ce/wishlist/load_wishlist_section.jmx</stringProp></HTTPSamplerProxy>
  5334. <hashTree>
  5335. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5336. <collectionProp name="Asserion.test_strings">
  5337. <stringProp name="-1865430343">{"wishlist":{"counter":"</stringProp>
  5338. </collectionProp>
  5339. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5340. <boolProp name="Assertion.assume_success">false</boolProp>
  5341. <intProp name="Assertion.test_type">16</intProp>
  5342. </ResponseAssertion>
  5343. <hashTree/>
  5344. <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
  5345. <stringProp name="ConstantTimer.delay">${wishlistDelay}*1000</stringProp>
  5346. </ConstantTimer>
  5347. <hashTree/>
  5348. </hashTree>
  5349. </hashTree>
  5350. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: Clear Wishlist" enabled="true">
  5351. <stringProp name="ForeachController.inputVal">wishListItems</stringProp>
  5352. <stringProp name="ForeachController.returnVal">wishListItem</stringProp>
  5353. <boolProp name="ForeachController.useSeparator">true</boolProp>
  5354. <stringProp name="TestPlan.comments">tool/fragments/ce/wishlist/clear_wishlist.jmx</stringProp></ForeachController>
  5355. <hashTree>
  5356. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  5357. <stringProp name="CounterConfig.start">1</stringProp>
  5358. <stringProp name="CounterConfig.end">5</stringProp>
  5359. <stringProp name="CounterConfig.incr">1</stringProp>
  5360. <stringProp name="CounterConfig.name">counter</stringProp>
  5361. <stringProp name="CounterConfig.format"/>
  5362. <boolProp name="CounterConfig.per_user">true</boolProp>
  5363. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  5364. </CounterConfig>
  5365. <hashTree/>
  5366. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Clear Wishlist ${counter}" enabled="true">
  5367. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5368. <collectionProp name="Arguments.arguments">
  5369. <elementProp name="form_key" elementType="HTTPArgument">
  5370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5371. <stringProp name="Argument.value">${form_key}</stringProp>
  5372. <stringProp name="Argument.metadata">=</stringProp>
  5373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5374. <stringProp name="Argument.name">form_key</stringProp>
  5375. <stringProp name="Argument.desc">true</stringProp>
  5376. </elementProp>
  5377. <elementProp name="item" elementType="HTTPArgument">
  5378. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5379. <stringProp name="Argument.value">${wishListItem}</stringProp>
  5380. <stringProp name="Argument.metadata">=</stringProp>
  5381. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5382. <stringProp name="Argument.name">item</stringProp>
  5383. <stringProp name="Argument.desc">true</stringProp>
  5384. </elementProp>
  5385. </collectionProp>
  5386. </elementProp>
  5387. <stringProp name="HTTPSampler.domain"/>
  5388. <stringProp name="HTTPSampler.port"/>
  5389. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5390. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5391. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5392. <stringProp name="HTTPSampler.contentEncoding"/>
  5393. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/remove/</stringProp>
  5394. <stringProp name="HTTPSampler.method">POST</stringProp>
  5395. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5396. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5397. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5398. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5399. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5400. <stringProp name="HTTPSampler.embedded_url_re"/>
  5401. </HTTPSamplerProxy>
  5402. </hashTree>
  5403. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  5404. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5405. <collectionProp name="Arguments.arguments"/>
  5406. </elementProp>
  5407. <stringProp name="HTTPSampler.domain"/>
  5408. <stringProp name="HTTPSampler.port"/>
  5409. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5410. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5411. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5412. <stringProp name="HTTPSampler.contentEncoding"/>
  5413. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  5414. <stringProp name="HTTPSampler.method">GET</stringProp>
  5415. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5416. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5417. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5418. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5419. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5420. <stringProp name="HTTPSampler.embedded_url_re"/>
  5421. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  5422. <hashTree>
  5423. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  5424. <collectionProp name="Asserion.test_strings">
  5425. <stringProp name="1723813687">You are signed out.</stringProp>
  5426. </collectionProp>
  5427. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5428. <boolProp name="Assertion.assume_success">false</boolProp>
  5429. <intProp name="Assertion.test_type">2</intProp>
  5430. </ResponseAssertion>
  5431. <hashTree/>
  5432. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  5433. <boolProp name="resetInterpreter">false</boolProp>
  5434. <stringProp name="parameters"/>
  5435. <stringProp name="filename"/>
  5436. <stringProp name="script">
  5437. customerUserList = props.get("customer_emails_list");
  5438. customerUserList.add(vars.get("customer_email"));
  5439. </stringProp>
  5440. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  5441. <hashTree/>
  5442. </hashTree>
  5443. </hashTree>
  5444. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Compare Products" enabled="true">
  5445. <intProp name="ThroughputController.style">1</intProp>
  5446. <boolProp name="ThroughputController.perThread">false</boolProp>
  5447. <intProp name="ThroughputController.maxThroughput">1</intProp>
  5448. <stringProp name="ThroughputController.percentThroughput">${compareProductsPercentage}</stringProp>
  5449. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  5450. <hashTree>
  5451. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  5452. <stringProp name="script">
  5453. var tmpLabel = vars.get("testLabel")
  5454. if (tmpLabel) {
  5455. var testLabel = " (" + tmpLabel + ")"
  5456. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  5457. if (sampler.getName().indexOf(testLabel) == -1) {
  5458. sampler.setName(sampler.getName() + testLabel);
  5459. }
  5460. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  5461. sampler.setName("SetUp - " + sampler.getName());
  5462. }
  5463. } else {
  5464. testLabel = ""
  5465. }
  5466. </stringProp>
  5467. <stringProp name="scriptLanguage">javascript</stringProp>
  5468. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  5469. <hashTree/>
  5470. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  5471. <stringProp name="BeanShellSampler.query">
  5472. vars.put("testLabel", "Compare Products");
  5473. </stringProp>
  5474. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5475. </BeanShellSampler>
  5476. <hashTree/>
  5477. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  5478. <collectionProp name="CookieManager.cookies">
  5479. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  5480. <stringProp name="Cookie.value">30</stringProp>
  5481. <stringProp name="Cookie.domain">${host}</stringProp>
  5482. <stringProp name="Cookie.path">/</stringProp>
  5483. <boolProp name="Cookie.secure">false</boolProp>
  5484. <longProp name="Cookie.expires">0</longProp>
  5485. <boolProp name="Cookie.path_specified">true</boolProp>
  5486. <boolProp name="Cookie.domain_specified">true</boolProp>
  5487. </elementProp>
  5488. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  5489. <stringProp name="Cookie.value">${form_key}</stringProp>
  5490. <stringProp name="Cookie.domain">${host}</stringProp>
  5491. <stringProp name="Cookie.path">${base_path}</stringProp>
  5492. <boolProp name="Cookie.secure">false</boolProp>
  5493. <longProp name="Cookie.expires">0</longProp>
  5494. <boolProp name="Cookie.path_specified">true</boolProp>
  5495. <boolProp name="Cookie.domain_specified">true</boolProp>
  5496. </elementProp>
  5497. </collectionProp>
  5498. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  5499. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  5500. <hashTree/>
  5501. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  5502. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  5503. <stringProp name="BeanShellSampler.query">
  5504. import java.util.Random;
  5505. Random random = new Random();
  5506. if (${seedForRandom} &gt; 0) {
  5507. random.setSeed(${seedForRandom} + ${__threadNum});
  5508. }
  5509. vars.putObject("randomIntGenerator", random);
  5510. </stringProp>
  5511. <stringProp name="BeanShellSampler.filename"/>
  5512. <stringProp name="BeanShellSampler.parameters"/>
  5513. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5514. </BeanShellSampler>
  5515. <hashTree/>
  5516. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  5517. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  5518. <stringProp name="BeanShellSampler.query">
  5519. vars.put("totalProductsAdded", "0");
  5520. </stringProp>
  5521. <stringProp name="BeanShellSampler.filename"/>
  5522. <stringProp name="BeanShellSampler.parameters"/>
  5523. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5524. </BeanShellSampler>
  5525. <hashTree/>
  5526. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  5527. <stringProp name="scriptLanguage">javascript</stringProp>
  5528. <stringProp name="parameters"/>
  5529. <stringProp name="filename"/>
  5530. <stringProp name="cacheKey"/>
  5531. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  5532. var categories = props.get("categories");
  5533. number = random.nextInt(categories.length);
  5534. vars.put("category_url_key", categories[number].url_key);
  5535. vars.put("category_name", categories[number].name);
  5536. vars.put("category_id", categories[number].id);
  5537. vars.putObject("category", categories[number]);
  5538. </stringProp>
  5539. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  5540. <hashTree/>
  5541. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  5542. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5543. <collectionProp name="Arguments.arguments"/>
  5544. </elementProp>
  5545. <stringProp name="HTTPSampler.domain"/>
  5546. <stringProp name="HTTPSampler.port"/>
  5547. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5548. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5549. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5550. <stringProp name="HTTPSampler.contentEncoding"/>
  5551. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  5552. <stringProp name="HTTPSampler.method">GET</stringProp>
  5553. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5554. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5555. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5556. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5557. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5558. <stringProp name="HTTPSampler.embedded_url_re"/>
  5559. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/open_category.jmx</stringProp></HTTPSamplerProxy>
  5560. <hashTree>
  5561. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5562. <collectionProp name="Asserion.test_strings">
  5563. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  5564. </collectionProp>
  5565. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5566. <boolProp name="Assertion.assume_success">false</boolProp>
  5567. <intProp name="Assertion.test_type">6</intProp>
  5568. </ResponseAssertion>
  5569. <hashTree/>
  5570. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Random Product Id" enabled="true">
  5571. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  5572. <stringProp name="RegexExtractor.refname">random_product_compare_id</stringProp>
  5573. <stringProp name="RegexExtractor.regex">catalog\\/product_compare\\/add\\/\",\"data\":\{\"product\":\"([0-9]+)\"</stringProp>
  5574. <stringProp name="RegexExtractor.template">$1$</stringProp>
  5575. <stringProp name="RegexExtractor.default"/>
  5576. <stringProp name="RegexExtractor.match_number">1</stringProp>
  5577. </RegexExtractor>
  5578. <hashTree/>
  5579. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Random Product Id" enabled="true">
  5580. <collectionProp name="Asserion.test_strings">
  5581. <stringProp name="1191417111">^[0-9]+$</stringProp>
  5582. </collectionProp>
  5583. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5584. <boolProp name="Assertion.assume_success">false</boolProp>
  5585. <intProp name="Assertion.test_type">1</intProp>
  5586. <stringProp name="Assertion.scope">variable</stringProp>
  5587. <stringProp name="Scope.variable">random_product_compare_id</stringProp>
  5588. </ResponseAssertion>
  5589. <hashTree/>
  5590. </hashTree>
  5591. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Compare" enabled="true">
  5592. <boolProp name="LoopController.continue_forever">true</boolProp>
  5593. <stringProp name="LoopController.loops">2</stringProp>
  5594. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  5595. <hashTree>
  5596. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  5597. <stringProp name="CounterConfig.start">1</stringProp>
  5598. <stringProp name="CounterConfig.end"/>
  5599. <stringProp name="CounterConfig.incr">1</stringProp>
  5600. <stringProp name="CounterConfig.name">_counter</stringProp>
  5601. <stringProp name="CounterConfig.format"/>
  5602. <boolProp name="CounterConfig.per_user">true</boolProp>
  5603. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  5604. </CounterConfig>
  5605. <hashTree/>
  5606. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  5607. <stringProp name="BeanShellSampler.query">
  5608. import java.util.Random;
  5609. Random random = vars.getObject("randomIntGenerator");
  5610. number = random.nextInt(props.get("simple_products_list").size());
  5611. product = props.get("simple_products_list").get(number);
  5612. vars.put("product_url_key", product.get("url_key"));
  5613. vars.put("product_id", product.get("id"));
  5614. vars.put("product_name", product.get("title"));
  5615. vars.put("product_uenc", product.get("uenc"));
  5616. vars.put("product_sku", product.get("sku"));
  5617. </stringProp>
  5618. <stringProp name="BeanShellSampler.filename"/>
  5619. <stringProp name="BeanShellSampler.parameters"/>
  5620. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5621. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  5622. <hashTree/>
  5623. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  5624. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  5625. <stringProp name="BeanShellSampler.query">
  5626. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  5627. productsAdded = productsAdded + 1;
  5628. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  5629. </stringProp>
  5630. <stringProp name="BeanShellSampler.filename"/>
  5631. <stringProp name="BeanShellSampler.parameters"/>
  5632. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5633. </BeanShellSampler>
  5634. <hashTree/>
  5635. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  5636. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5637. <collectionProp name="Arguments.arguments"/>
  5638. </elementProp>
  5639. <stringProp name="HTTPSampler.domain"/>
  5640. <stringProp name="HTTPSampler.port"/>
  5641. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5642. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5643. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5644. <stringProp name="HTTPSampler.contentEncoding"/>
  5645. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  5646. <stringProp name="HTTPSampler.method">GET</stringProp>
  5647. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5648. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5649. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5650. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5651. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5652. <stringProp name="HTTPSampler.embedded_url_re"/>
  5653. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  5654. <hashTree>
  5655. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5656. <collectionProp name="Asserion.test_strings">
  5657. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  5658. </collectionProp>
  5659. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5660. <boolProp name="Assertion.assume_success">false</boolProp>
  5661. <intProp name="Assertion.test_type">2</intProp>
  5662. </ResponseAssertion>
  5663. <hashTree/>
  5664. </hashTree>
  5665. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Comparison Add" enabled="true">
  5666. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5667. <collectionProp name="Arguments.arguments">
  5668. <elementProp name="product" elementType="HTTPArgument">
  5669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5670. <stringProp name="Argument.value">${product_id}</stringProp>
  5671. <stringProp name="Argument.metadata">=</stringProp>
  5672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5673. <stringProp name="Argument.name">product</stringProp>
  5674. </elementProp>
  5675. <elementProp name="form_key" elementType="HTTPArgument">
  5676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5677. <stringProp name="Argument.value">${form_key}</stringProp>
  5678. <stringProp name="Argument.metadata">=</stringProp>
  5679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5680. <stringProp name="Argument.name">form_key</stringProp>
  5681. </elementProp>
  5682. <elementProp name="uenc" elementType="HTTPArgument">
  5683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5684. <stringProp name="Argument.value">${product_uenc}</stringProp>
  5685. <stringProp name="Argument.metadata">=</stringProp>
  5686. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5687. <stringProp name="Argument.name">uenc</stringProp>
  5688. </elementProp>
  5689. </collectionProp>
  5690. </elementProp>
  5691. <stringProp name="HTTPSampler.domain"/>
  5692. <stringProp name="HTTPSampler.port"/>
  5693. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5694. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5695. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5696. <stringProp name="HTTPSampler.contentEncoding"/>
  5697. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/add/</stringProp>
  5698. <stringProp name="HTTPSampler.method">POST</stringProp>
  5699. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5700. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5701. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5702. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5703. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5704. <stringProp name="HTTPSampler.embedded_url_re"/>
  5705. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  5706. <hashTree/>
  5707. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Compare Product Section" enabled="true">
  5708. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5709. <collectionProp name="Arguments.arguments">
  5710. <elementProp name="sections" elementType="HTTPArgument">
  5711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5712. <stringProp name="Argument.value">compare-products,messages</stringProp>
  5713. <stringProp name="Argument.metadata">=</stringProp>
  5714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5715. <stringProp name="Argument.name">sections</stringProp>
  5716. </elementProp>
  5717. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  5718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5719. <stringProp name="Argument.value">false</stringProp>
  5720. <stringProp name="Argument.metadata">=</stringProp>
  5721. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5722. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  5723. </elementProp>
  5724. <elementProp name="_" elementType="HTTPArgument">
  5725. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5726. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  5727. <stringProp name="Argument.metadata">=</stringProp>
  5728. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5729. <stringProp name="Argument.name">_</stringProp>
  5730. </elementProp>
  5731. </collectionProp>
  5732. </elementProp>
  5733. <stringProp name="HTTPSampler.domain"/>
  5734. <stringProp name="HTTPSampler.port"/>
  5735. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5736. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5737. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5738. <stringProp name="HTTPSampler.contentEncoding"/>
  5739. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  5740. <stringProp name="HTTPSampler.method">GET</stringProp>
  5741. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5742. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5743. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5744. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5745. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5746. <stringProp name="HTTPSampler.embedded_url_re"/>
  5747. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  5748. <hashTree>
  5749. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5750. <collectionProp name="Asserion.test_strings">
  5751. <stringProp name="-350323027">\"compare-products\":{\"count\":${totalProductsAdded}</stringProp>
  5752. </collectionProp>
  5753. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5754. <boolProp name="Assertion.assume_success">false</boolProp>
  5755. <intProp name="Assertion.test_type">2</intProp>
  5756. </ResponseAssertion>
  5757. <hashTree/>
  5758. </hashTree>
  5759. </hashTree>
  5760. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Compare" enabled="true">
  5761. <boolProp name="LoopController.continue_forever">true</boolProp>
  5762. <stringProp name="LoopController.loops">1</stringProp>
  5763. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  5764. <hashTree>
  5765. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  5766. <stringProp name="CounterConfig.start">1</stringProp>
  5767. <stringProp name="CounterConfig.end"/>
  5768. <stringProp name="CounterConfig.incr">1</stringProp>
  5769. <stringProp name="CounterConfig.name">_counter</stringProp>
  5770. <stringProp name="CounterConfig.format"/>
  5771. <boolProp name="CounterConfig.per_user">true</boolProp>
  5772. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  5773. </CounterConfig>
  5774. <hashTree/>
  5775. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  5776. <stringProp name="BeanShellSampler.query">
  5777. import java.util.Random;
  5778. Random random = vars.getObject("randomIntGenerator");
  5779. number = random.nextInt(props.get("configurable_products_list").size());
  5780. product = props.get("configurable_products_list").get(number);
  5781. vars.put("product_url_key", product.get("url_key"));
  5782. vars.put("product_id", product.get("id"));
  5783. vars.put("product_name", product.get("title"));
  5784. vars.put("product_uenc", product.get("uenc"));
  5785. vars.put("product_sku", product.get("sku"));
  5786. </stringProp>
  5787. <stringProp name="BeanShellSampler.filename"/>
  5788. <stringProp name="BeanShellSampler.parameters"/>
  5789. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5790. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  5791. <hashTree/>
  5792. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  5793. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  5794. <stringProp name="BeanShellSampler.query">
  5795. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  5796. productsAdded = productsAdded + 1;
  5797. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  5798. </stringProp>
  5799. <stringProp name="BeanShellSampler.filename"/>
  5800. <stringProp name="BeanShellSampler.parameters"/>
  5801. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  5802. </BeanShellSampler>
  5803. <hashTree/>
  5804. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  5805. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5806. <collectionProp name="Arguments.arguments"/>
  5807. </elementProp>
  5808. <stringProp name="HTTPSampler.domain"/>
  5809. <stringProp name="HTTPSampler.port"/>
  5810. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5811. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5812. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5813. <stringProp name="HTTPSampler.contentEncoding"/>
  5814. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  5815. <stringProp name="HTTPSampler.method">GET</stringProp>
  5816. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5817. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5818. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5819. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5820. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5821. <stringProp name="HTTPSampler.embedded_url_re"/>
  5822. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  5823. <hashTree>
  5824. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5825. <collectionProp name="Asserion.test_strings">
  5826. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  5827. </collectionProp>
  5828. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5829. <boolProp name="Assertion.assume_success">false</boolProp>
  5830. <intProp name="Assertion.test_type">2</intProp>
  5831. </ResponseAssertion>
  5832. <hashTree/>
  5833. </hashTree>
  5834. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Comparison Add" enabled="true">
  5835. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5836. <collectionProp name="Arguments.arguments">
  5837. <elementProp name="product" elementType="HTTPArgument">
  5838. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5839. <stringProp name="Argument.value">${product_id}</stringProp>
  5840. <stringProp name="Argument.metadata">=</stringProp>
  5841. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5842. <stringProp name="Argument.name">product</stringProp>
  5843. </elementProp>
  5844. <elementProp name="form_key" elementType="HTTPArgument">
  5845. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5846. <stringProp name="Argument.value">${form_key}</stringProp>
  5847. <stringProp name="Argument.metadata">=</stringProp>
  5848. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5849. <stringProp name="Argument.name">form_key</stringProp>
  5850. </elementProp>
  5851. <elementProp name="uenc" elementType="HTTPArgument">
  5852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5853. <stringProp name="Argument.value">${product_uenc}</stringProp>
  5854. <stringProp name="Argument.metadata">=</stringProp>
  5855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5856. <stringProp name="Argument.name">uenc</stringProp>
  5857. </elementProp>
  5858. </collectionProp>
  5859. </elementProp>
  5860. <stringProp name="HTTPSampler.domain"/>
  5861. <stringProp name="HTTPSampler.port"/>
  5862. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5863. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5864. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5865. <stringProp name="HTTPSampler.contentEncoding"/>
  5866. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/add/</stringProp>
  5867. <stringProp name="HTTPSampler.method">POST</stringProp>
  5868. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5869. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5870. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5871. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5872. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5873. <stringProp name="HTTPSampler.embedded_url_re"/>
  5874. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  5875. <hashTree/>
  5876. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Compare Product Section" enabled="true">
  5877. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5878. <collectionProp name="Arguments.arguments">
  5879. <elementProp name="sections" elementType="HTTPArgument">
  5880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5881. <stringProp name="Argument.value">compare-products,messages</stringProp>
  5882. <stringProp name="Argument.metadata">=</stringProp>
  5883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5884. <stringProp name="Argument.name">sections</stringProp>
  5885. </elementProp>
  5886. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  5887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5888. <stringProp name="Argument.value">false</stringProp>
  5889. <stringProp name="Argument.metadata">=</stringProp>
  5890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5891. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  5892. </elementProp>
  5893. <elementProp name="_" elementType="HTTPArgument">
  5894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5895. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  5896. <stringProp name="Argument.metadata">=</stringProp>
  5897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5898. <stringProp name="Argument.name">_</stringProp>
  5899. </elementProp>
  5900. </collectionProp>
  5901. </elementProp>
  5902. <stringProp name="HTTPSampler.domain"/>
  5903. <stringProp name="HTTPSampler.port"/>
  5904. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5905. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5906. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5907. <stringProp name="HTTPSampler.contentEncoding"/>
  5908. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  5909. <stringProp name="HTTPSampler.method">GET</stringProp>
  5910. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5911. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5912. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5913. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5914. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5915. <stringProp name="HTTPSampler.embedded_url_re"/>
  5916. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  5917. <hashTree>
  5918. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  5919. <collectionProp name="Asserion.test_strings">
  5920. <stringProp name="-350323027">\"compare-products\":{\"count\":${totalProductsAdded}</stringProp>
  5921. </collectionProp>
  5922. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  5923. <boolProp name="Assertion.assume_success">false</boolProp>
  5924. <intProp name="Assertion.test_type">2</intProp>
  5925. </ResponseAssertion>
  5926. <hashTree/>
  5927. </hashTree>
  5928. </hashTree>
  5929. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Compare Products" enabled="true">
  5930. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5931. <collectionProp name="Arguments.arguments"/>
  5932. </elementProp>
  5933. <stringProp name="HTTPSampler.domain"/>
  5934. <stringProp name="HTTPSampler.port"/>
  5935. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5936. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5937. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5938. <stringProp name="HTTPSampler.contentEncoding"/>
  5939. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/index/</stringProp>
  5940. <stringProp name="HTTPSampler.method">GET</stringProp>
  5941. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5942. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5943. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5944. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5945. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5946. <stringProp name="HTTPSampler.embedded_url_re"/>
  5947. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/compare_products.jmx</stringProp></HTTPSamplerProxy>
  5948. <hashTree/>
  5949. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Product Compare - Pause" enabled="true">
  5950. <intProp name="ActionProcessor.action">1</intProp>
  5951. <intProp name="ActionProcessor.target">0</intProp>
  5952. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${productCompareDelay}*1000))}</stringProp>
  5953. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/compare_products_pause.jmx</stringProp></TestAction>
  5954. <hashTree/>
  5955. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Compare Products Clear" enabled="true">
  5956. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  5957. <collectionProp name="Arguments.arguments">
  5958. <elementProp name="form_key" elementType="HTTPArgument">
  5959. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  5960. <stringProp name="Argument.value">${form_key}</stringProp>
  5961. <stringProp name="Argument.metadata">=</stringProp>
  5962. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  5963. <stringProp name="Argument.name">form_key</stringProp>
  5964. </elementProp>
  5965. </collectionProp>
  5966. </elementProp>
  5967. <stringProp name="HTTPSampler.domain"/>
  5968. <stringProp name="HTTPSampler.port"/>
  5969. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  5970. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  5971. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  5972. <stringProp name="HTTPSampler.contentEncoding"/>
  5973. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/clear</stringProp>
  5974. <stringProp name="HTTPSampler.method">POST</stringProp>
  5975. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  5976. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  5977. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  5978. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  5979. <boolProp name="HTTPSampler.monitor">false</boolProp>
  5980. <stringProp name="HTTPSampler.embedded_url_re"/>
  5981. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/compare_products_clear.jmx</stringProp></HTTPSamplerProxy>
  5982. <hashTree/>
  5983. </hashTree>
  5984. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Checkout By Guest" enabled="true">
  5985. <intProp name="ThroughputController.style">1</intProp>
  5986. <boolProp name="ThroughputController.perThread">false</boolProp>
  5987. <intProp name="ThroughputController.maxThroughput">1</intProp>
  5988. <stringProp name="ThroughputController.percentThroughput">${checkoutByGuestPercentage}</stringProp>
  5989. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  5990. <hashTree>
  5991. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  5992. <stringProp name="script">
  5993. var tmpLabel = vars.get("testLabel")
  5994. if (tmpLabel) {
  5995. var testLabel = " (" + tmpLabel + ")"
  5996. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  5997. if (sampler.getName().indexOf(testLabel) == -1) {
  5998. sampler.setName(sampler.getName() + testLabel);
  5999. }
  6000. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  6001. sampler.setName("SetUp - " + sampler.getName());
  6002. }
  6003. } else {
  6004. testLabel = ""
  6005. }
  6006. </stringProp>
  6007. <stringProp name="scriptLanguage">javascript</stringProp>
  6008. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  6009. <hashTree/>
  6010. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  6011. <stringProp name="BeanShellSampler.query">
  6012. vars.put("testLabel", "Checkout By Guest");
  6013. </stringProp>
  6014. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  6015. </BeanShellSampler>
  6016. <hashTree/>
  6017. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  6018. <collectionProp name="CookieManager.cookies">
  6019. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  6020. <stringProp name="Cookie.value">30</stringProp>
  6021. <stringProp name="Cookie.domain">${host}</stringProp>
  6022. <stringProp name="Cookie.path">/</stringProp>
  6023. <boolProp name="Cookie.secure">false</boolProp>
  6024. <longProp name="Cookie.expires">0</longProp>
  6025. <boolProp name="Cookie.path_specified">true</boolProp>
  6026. <boolProp name="Cookie.domain_specified">true</boolProp>
  6027. </elementProp>
  6028. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  6029. <stringProp name="Cookie.value">${form_key}</stringProp>
  6030. <stringProp name="Cookie.domain">${host}</stringProp>
  6031. <stringProp name="Cookie.path">${base_path}</stringProp>
  6032. <boolProp name="Cookie.secure">false</boolProp>
  6033. <longProp name="Cookie.expires">0</longProp>
  6034. <boolProp name="Cookie.path_specified">true</boolProp>
  6035. <boolProp name="Cookie.domain_specified">true</boolProp>
  6036. </elementProp>
  6037. </collectionProp>
  6038. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  6039. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  6040. <hashTree/>
  6041. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  6042. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  6043. <stringProp name="BeanShellSampler.query">
  6044. import java.util.Random;
  6045. Random random = new Random();
  6046. if (${seedForRandom} &gt; 0) {
  6047. random.setSeed(${seedForRandom} + ${__threadNum});
  6048. }
  6049. vars.putObject("randomIntGenerator", random);
  6050. </stringProp>
  6051. <stringProp name="BeanShellSampler.filename"/>
  6052. <stringProp name="BeanShellSampler.parameters"/>
  6053. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  6054. </BeanShellSampler>
  6055. <hashTree/>
  6056. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  6057. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  6058. <stringProp name="BeanShellSampler.query">
  6059. vars.put("totalProductsAdded", "0");
  6060. </stringProp>
  6061. <stringProp name="BeanShellSampler.filename"/>
  6062. <stringProp name="BeanShellSampler.parameters"/>
  6063. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  6064. </BeanShellSampler>
  6065. <hashTree/>
  6066. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  6067. <stringProp name="scriptLanguage">javascript</stringProp>
  6068. <stringProp name="parameters"/>
  6069. <stringProp name="filename"/>
  6070. <stringProp name="cacheKey"/>
  6071. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  6072. var categories = props.get("categories");
  6073. number = random.nextInt(categories.length);
  6074. vars.put("category_url_key", categories[number].url_key);
  6075. vars.put("category_name", categories[number].name);
  6076. vars.put("category_id", categories[number].id);
  6077. vars.putObject("category", categories[number]);
  6078. </stringProp>
  6079. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  6080. <hashTree/>
  6081. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  6082. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6083. <collectionProp name="Arguments.arguments"/>
  6084. </elementProp>
  6085. <stringProp name="HTTPSampler.domain"/>
  6086. <stringProp name="HTTPSampler.port"/>
  6087. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6088. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6089. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6090. <stringProp name="HTTPSampler.contentEncoding"/>
  6091. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  6092. <stringProp name="HTTPSampler.method">GET</stringProp>
  6093. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6094. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6095. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6096. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6097. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6098. <stringProp name="HTTPSampler.embedded_url_re"/>
  6099. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  6100. <hashTree>
  6101. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6102. <collectionProp name="Asserion.test_strings">
  6103. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  6104. </collectionProp>
  6105. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6106. <boolProp name="Assertion.assume_success">false</boolProp>
  6107. <intProp name="Assertion.test_type">2</intProp>
  6108. </ResponseAssertion>
  6109. <hashTree/>
  6110. </hashTree>
  6111. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  6112. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6113. <collectionProp name="Arguments.arguments"/>
  6114. </elementProp>
  6115. <stringProp name="HTTPSampler.domain"/>
  6116. <stringProp name="HTTPSampler.port"/>
  6117. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6118. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6119. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6120. <stringProp name="HTTPSampler.contentEncoding"/>
  6121. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  6122. <stringProp name="HTTPSampler.method">GET</stringProp>
  6123. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6124. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6125. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6126. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6127. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6128. <stringProp name="HTTPSampler.embedded_url_re"/>
  6129. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  6130. <hashTree>
  6131. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6132. <collectionProp name="Asserion.test_strings">
  6133. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  6134. </collectionProp>
  6135. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6136. <boolProp name="Assertion.assume_success">false</boolProp>
  6137. <intProp name="Assertion.test_type">6</intProp>
  6138. </ResponseAssertion>
  6139. <hashTree/>
  6140. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  6141. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  6142. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  6143. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  6144. <stringProp name="RegexExtractor.template">$1$</stringProp>
  6145. <stringProp name="RegexExtractor.default"/>
  6146. <stringProp name="RegexExtractor.match_number">1</stringProp>
  6147. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  6148. </RegexExtractor>
  6149. <hashTree/>
  6150. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  6151. <collectionProp name="Asserion.test_strings">
  6152. <stringProp name="1191417111">^[0-9]+$</stringProp>
  6153. </collectionProp>
  6154. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6155. <boolProp name="Assertion.assume_success">false</boolProp>
  6156. <intProp name="Assertion.test_type">1</intProp>
  6157. <stringProp name="Assertion.scope">variable</stringProp>
  6158. <stringProp name="Scope.variable">category_id</stringProp>
  6159. </ResponseAssertion>
  6160. <hashTree/>
  6161. </hashTree>
  6162. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
  6163. <boolProp name="LoopController.continue_forever">true</boolProp>
  6164. <stringProp name="LoopController.loops">2</stringProp>
  6165. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  6166. <hashTree>
  6167. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  6168. <stringProp name="CounterConfig.start">1</stringProp>
  6169. <stringProp name="CounterConfig.end"/>
  6170. <stringProp name="CounterConfig.incr">1</stringProp>
  6171. <stringProp name="CounterConfig.name">_counter</stringProp>
  6172. <stringProp name="CounterConfig.format"/>
  6173. <boolProp name="CounterConfig.per_user">true</boolProp>
  6174. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  6175. </CounterConfig>
  6176. <hashTree/>
  6177. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  6178. <stringProp name="BeanShellSampler.query">
  6179. import java.util.Random;
  6180. Random random = vars.getObject("randomIntGenerator");
  6181. number = random.nextInt(props.get("simple_products_list").size());
  6182. product = props.get("simple_products_list").get(number);
  6183. vars.put("product_url_key", product.get("url_key"));
  6184. vars.put("product_id", product.get("id"));
  6185. vars.put("product_name", product.get("title"));
  6186. vars.put("product_uenc", product.get("uenc"));
  6187. vars.put("product_sku", product.get("sku"));
  6188. </stringProp>
  6189. <stringProp name="BeanShellSampler.filename"/>
  6190. <stringProp name="BeanShellSampler.parameters"/>
  6191. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  6192. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  6193. <hashTree/>
  6194. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  6195. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  6196. <stringProp name="BeanShellSampler.query">
  6197. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  6198. productsAdded = productsAdded + 1;
  6199. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  6200. </stringProp>
  6201. <stringProp name="BeanShellSampler.filename"/>
  6202. <stringProp name="BeanShellSampler.parameters"/>
  6203. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  6204. </BeanShellSampler>
  6205. <hashTree/>
  6206. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  6207. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6208. <collectionProp name="Arguments.arguments"/>
  6209. </elementProp>
  6210. <stringProp name="HTTPSampler.domain"/>
  6211. <stringProp name="HTTPSampler.port"/>
  6212. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6213. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6214. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6215. <stringProp name="HTTPSampler.contentEncoding"/>
  6216. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  6217. <stringProp name="HTTPSampler.method">GET</stringProp>
  6218. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6219. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6220. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6221. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6222. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6223. <stringProp name="HTTPSampler.embedded_url_re"/>
  6224. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  6225. <hashTree>
  6226. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6227. <collectionProp name="Asserion.test_strings">
  6228. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  6229. </collectionProp>
  6230. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6231. <boolProp name="Assertion.assume_success">false</boolProp>
  6232. <intProp name="Assertion.test_type">2</intProp>
  6233. </ResponseAssertion>
  6234. <hashTree/>
  6235. </hashTree>
  6236. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  6237. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6238. <collectionProp name="Arguments.arguments">
  6239. <elementProp name="product" elementType="HTTPArgument">
  6240. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6241. <stringProp name="Argument.value">${product_id}</stringProp>
  6242. <stringProp name="Argument.metadata">=</stringProp>
  6243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6244. <stringProp name="Argument.name">product</stringProp>
  6245. </elementProp>
  6246. <elementProp name="related_product" elementType="HTTPArgument">
  6247. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6248. <stringProp name="Argument.value"/>
  6249. <stringProp name="Argument.metadata">=</stringProp>
  6250. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6251. <stringProp name="Argument.name">related_product</stringProp>
  6252. </elementProp>
  6253. <elementProp name="qty" elementType="HTTPArgument">
  6254. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6255. <stringProp name="Argument.value">1</stringProp>
  6256. <stringProp name="Argument.metadata">=</stringProp>
  6257. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6258. <stringProp name="Argument.name">qty</stringProp>
  6259. </elementProp>
  6260. <elementProp name="form_key" elementType="HTTPArgument">
  6261. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6262. <stringProp name="Argument.value">${form_key}</stringProp>
  6263. <stringProp name="Argument.metadata">=</stringProp>
  6264. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6265. <stringProp name="Argument.name">form_key</stringProp>
  6266. </elementProp>
  6267. </collectionProp>
  6268. </elementProp>
  6269. <stringProp name="HTTPSampler.domain"/>
  6270. <stringProp name="HTTPSampler.port"/>
  6271. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6272. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6273. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6274. <stringProp name="HTTPSampler.contentEncoding"/>
  6275. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  6276. <stringProp name="HTTPSampler.method">POST</stringProp>
  6277. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6278. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6279. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6280. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6281. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6282. <stringProp name="HTTPSampler.embedded_url_re"/>
  6283. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  6284. <hashTree>
  6285. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6286. <collectionProp name="HeaderManager.headers">
  6287. <elementProp name="" elementType="Header">
  6288. <stringProp name="Header.name">X-Requested-With</stringProp>
  6289. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  6290. </elementProp>
  6291. </collectionProp>
  6292. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  6293. <hashTree/>
  6294. </hashTree>
  6295. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  6296. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6297. <collectionProp name="Arguments.arguments">
  6298. <elementProp name="sections" elementType="HTTPArgument">
  6299. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6300. <stringProp name="Argument.value">cart,messages</stringProp>
  6301. <stringProp name="Argument.metadata">=</stringProp>
  6302. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6303. <stringProp name="Argument.name">sections</stringProp>
  6304. </elementProp>
  6305. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  6306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6307. <stringProp name="Argument.value">true</stringProp>
  6308. <stringProp name="Argument.metadata">=</stringProp>
  6309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6310. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  6311. </elementProp>
  6312. <elementProp name="_" elementType="HTTPArgument">
  6313. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6314. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  6315. <stringProp name="Argument.metadata">=</stringProp>
  6316. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6317. <stringProp name="Argument.name">_</stringProp>
  6318. </elementProp>
  6319. </collectionProp>
  6320. </elementProp>
  6321. <stringProp name="HTTPSampler.domain"/>
  6322. <stringProp name="HTTPSampler.port"/>
  6323. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6324. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6325. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6326. <stringProp name="HTTPSampler.contentEncoding"/>
  6327. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  6328. <stringProp name="HTTPSampler.method">GET</stringProp>
  6329. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6330. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6331. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6332. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6333. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6334. <stringProp name="HTTPSampler.embedded_url_re"/>
  6335. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  6336. <hashTree>
  6337. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6338. <collectionProp name="Asserion.test_strings">
  6339. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  6340. </collectionProp>
  6341. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6342. <boolProp name="Assertion.assume_success">false</boolProp>
  6343. <intProp name="Assertion.test_type">2</intProp>
  6344. </ResponseAssertion>
  6345. <hashTree/>
  6346. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6347. <collectionProp name="Asserion.test_strings">
  6348. <stringProp name="2057973164">This product is out of stock.</stringProp>
  6349. </collectionProp>
  6350. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6351. <boolProp name="Assertion.assume_success">false</boolProp>
  6352. <intProp name="Assertion.test_type">6</intProp>
  6353. </ResponseAssertion>
  6354. <hashTree/>
  6355. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6356. <collectionProp name="Asserion.test_strings">
  6357. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  6358. </collectionProp>
  6359. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6360. <boolProp name="Assertion.assume_success">false</boolProp>
  6361. <intProp name="Assertion.test_type">2</intProp>
  6362. </ResponseAssertion>
  6363. <hashTree/>
  6364. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6365. <collectionProp name="HeaderManager.headers">
  6366. <elementProp name="" elementType="Header">
  6367. <stringProp name="Header.name">X-Requested-With</stringProp>
  6368. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  6369. </elementProp>
  6370. </collectionProp>
  6371. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  6372. <hashTree/>
  6373. </hashTree>
  6374. </hashTree>
  6375. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
  6376. <boolProp name="LoopController.continue_forever">true</boolProp>
  6377. <stringProp name="LoopController.loops">1</stringProp>
  6378. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  6379. <hashTree>
  6380. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  6381. <stringProp name="CounterConfig.start">1</stringProp>
  6382. <stringProp name="CounterConfig.end"/>
  6383. <stringProp name="CounterConfig.incr">1</stringProp>
  6384. <stringProp name="CounterConfig.name">_counter</stringProp>
  6385. <stringProp name="CounterConfig.format"/>
  6386. <boolProp name="CounterConfig.per_user">true</boolProp>
  6387. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  6388. </CounterConfig>
  6389. <hashTree/>
  6390. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  6391. <stringProp name="BeanShellSampler.query">
  6392. import java.util.Random;
  6393. Random random = vars.getObject("randomIntGenerator");
  6394. number = random.nextInt(props.get("configurable_products_list").size());
  6395. product = props.get("configurable_products_list").get(number);
  6396. vars.put("product_url_key", product.get("url_key"));
  6397. vars.put("product_id", product.get("id"));
  6398. vars.put("product_name", product.get("title"));
  6399. vars.put("product_uenc", product.get("uenc"));
  6400. vars.put("product_sku", product.get("sku"));
  6401. </stringProp>
  6402. <stringProp name="BeanShellSampler.filename"/>
  6403. <stringProp name="BeanShellSampler.parameters"/>
  6404. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  6405. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  6406. <hashTree/>
  6407. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  6408. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  6409. <stringProp name="BeanShellSampler.query">
  6410. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  6411. productsAdded = productsAdded + 1;
  6412. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  6413. </stringProp>
  6414. <stringProp name="BeanShellSampler.filename"/>
  6415. <stringProp name="BeanShellSampler.parameters"/>
  6416. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  6417. </BeanShellSampler>
  6418. <hashTree/>
  6419. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  6420. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6421. <collectionProp name="Arguments.arguments"/>
  6422. </elementProp>
  6423. <stringProp name="HTTPSampler.domain"/>
  6424. <stringProp name="HTTPSampler.port"/>
  6425. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6426. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6427. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6428. <stringProp name="HTTPSampler.contentEncoding"/>
  6429. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  6430. <stringProp name="HTTPSampler.method">GET</stringProp>
  6431. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6432. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6433. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6434. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6435. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6436. <stringProp name="HTTPSampler.embedded_url_re"/>
  6437. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  6438. <hashTree>
  6439. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6440. <collectionProp name="Asserion.test_strings">
  6441. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  6442. </collectionProp>
  6443. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6444. <boolProp name="Assertion.assume_success">false</boolProp>
  6445. <intProp name="Assertion.test_type">2</intProp>
  6446. </ResponseAssertion>
  6447. <hashTree/>
  6448. </hashTree>
  6449. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  6450. <boolProp name="LoopController.continue_forever">true</boolProp>
  6451. <stringProp name="LoopController.loops">1</stringProp>
  6452. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  6453. <hashTree>
  6454. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6455. <collectionProp name="HeaderManager.headers">
  6456. <elementProp name="" elementType="Header">
  6457. <stringProp name="Header.name">Content-Type</stringProp>
  6458. <stringProp name="Header.value">application/json</stringProp>
  6459. </elementProp>
  6460. <elementProp name="" elementType="Header">
  6461. <stringProp name="Header.name">Accept</stringProp>
  6462. <stringProp name="Header.value">*/*</stringProp>
  6463. </elementProp>
  6464. </collectionProp>
  6465. </HeaderManager>
  6466. <hashTree/>
  6467. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  6468. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  6469. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  6470. <collectionProp name="Arguments.arguments">
  6471. <elementProp name="" elementType="HTTPArgument">
  6472. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  6473. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  6474. <stringProp name="Argument.metadata">=</stringProp>
  6475. </elementProp>
  6476. </collectionProp>
  6477. </elementProp>
  6478. <stringProp name="HTTPSampler.domain"/>
  6479. <stringProp name="HTTPSampler.port"/>
  6480. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6481. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6482. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6483. <stringProp name="HTTPSampler.contentEncoding"/>
  6484. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  6485. <stringProp name="HTTPSampler.method">POST</stringProp>
  6486. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6487. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6488. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6489. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6490. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6491. <stringProp name="HTTPSampler.embedded_url_re"/>
  6492. </HTTPSamplerProxy>
  6493. <hashTree>
  6494. <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">
  6495. <stringProp name="VAR">admin_token</stringProp>
  6496. <stringProp name="JSONPATH">$</stringProp>
  6497. <stringProp name="DEFAULT"/>
  6498. <stringProp name="VARIABLE"/>
  6499. <stringProp name="SUBJECT">BODY</stringProp>
  6500. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  6501. <hashTree/>
  6502. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  6503. <collectionProp name="Asserion.test_strings">
  6504. <stringProp name="484395188">^.{10,}$</stringProp>
  6505. </collectionProp>
  6506. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6507. <boolProp name="Assertion.assume_success">false</boolProp>
  6508. <intProp name="Assertion.test_type">1</intProp>
  6509. <stringProp name="Assertion.scope">variable</stringProp>
  6510. <stringProp name="Scope.variable">admin_token</stringProp>
  6511. </ResponseAssertion>
  6512. <hashTree/>
  6513. </hashTree>
  6514. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6515. <collectionProp name="HeaderManager.headers">
  6516. <elementProp name="" elementType="Header">
  6517. <stringProp name="Header.name">Authorization</stringProp>
  6518. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  6519. </elementProp>
  6520. </collectionProp>
  6521. </HeaderManager>
  6522. <hashTree/>
  6523. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  6524. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6525. <collectionProp name="Arguments.arguments"/>
  6526. </elementProp>
  6527. <stringProp name="HTTPSampler.domain"/>
  6528. <stringProp name="HTTPSampler.port"/>
  6529. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6530. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6531. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6532. <stringProp name="HTTPSampler.contentEncoding"/>
  6533. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  6534. <stringProp name="HTTPSampler.method">GET</stringProp>
  6535. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6536. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6537. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6538. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6539. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6540. <stringProp name="HTTPSampler.embedded_url_re"/>
  6541. </HTTPSamplerProxy>
  6542. <hashTree>
  6543. <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">
  6544. <stringProp name="VAR">attribute_ids</stringProp>
  6545. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  6546. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  6547. <stringProp name="VARIABLE"/>
  6548. <stringProp name="SUBJECT">BODY</stringProp>
  6549. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  6550. <hashTree/>
  6551. <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">
  6552. <stringProp name="VAR">option_values</stringProp>
  6553. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  6554. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  6555. <stringProp name="VARIABLE"/>
  6556. <stringProp name="SUBJECT">BODY</stringProp>
  6557. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  6558. <hashTree/>
  6559. </hashTree>
  6560. </hashTree>
  6561. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  6562. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6563. <collectionProp name="Arguments.arguments">
  6564. <elementProp name="product" elementType="HTTPArgument">
  6565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6566. <stringProp name="Argument.value">${product_id}</stringProp>
  6567. <stringProp name="Argument.metadata">=</stringProp>
  6568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6569. <stringProp name="Argument.name">product</stringProp>
  6570. </elementProp>
  6571. <elementProp name="related_product" elementType="HTTPArgument">
  6572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6573. <stringProp name="Argument.value"/>
  6574. <stringProp name="Argument.metadata">=</stringProp>
  6575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6576. <stringProp name="Argument.name">related_product</stringProp>
  6577. </elementProp>
  6578. <elementProp name="qty" elementType="HTTPArgument">
  6579. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6580. <stringProp name="Argument.value">1</stringProp>
  6581. <stringProp name="Argument.metadata">=</stringProp>
  6582. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6583. <stringProp name="Argument.name">qty</stringProp>
  6584. </elementProp>
  6585. <elementProp name="form_key" elementType="HTTPArgument">
  6586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6587. <stringProp name="Argument.value">${form_key}</stringProp>
  6588. <stringProp name="Argument.metadata">=</stringProp>
  6589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6590. <stringProp name="Argument.name">form_key</stringProp>
  6591. </elementProp>
  6592. </collectionProp>
  6593. </elementProp>
  6594. <stringProp name="HTTPSampler.domain"/>
  6595. <stringProp name="HTTPSampler.port"/>
  6596. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6597. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6598. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6599. <stringProp name="HTTPSampler.contentEncoding"/>
  6600. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  6601. <stringProp name="HTTPSampler.method">POST</stringProp>
  6602. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6603. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6604. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6605. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6606. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6607. <stringProp name="HTTPSampler.embedded_url_re"/>
  6608. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  6609. <hashTree>
  6610. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  6611. <boolProp name="resetInterpreter">false</boolProp>
  6612. <stringProp name="parameters"/>
  6613. <stringProp name="filename"/>
  6614. <stringProp name="script">
  6615. try {
  6616. attribute_ids = vars.get("attribute_ids");
  6617. option_values = vars.get("option_values");
  6618. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  6619. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  6620. attribute_ids_array = attribute_ids.split(",");
  6621. option_values_array = option_values.split(",");
  6622. args = ctx.getCurrentSampler().getArguments();
  6623. it = args.iterator();
  6624. while (it.hasNext()) {
  6625. argument = it.next();
  6626. if (argument.getStringValue().contains("${")) {
  6627. args.removeArgument(argument.getName());
  6628. }
  6629. }
  6630. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  6631. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  6632. }
  6633. } catch (Exception e) {
  6634. log.error("eror&#x2026;", e);
  6635. }
  6636. </stringProp>
  6637. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  6638. <hashTree/>
  6639. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6640. <collectionProp name="HeaderManager.headers">
  6641. <elementProp name="" elementType="Header">
  6642. <stringProp name="Header.name">X-Requested-With</stringProp>
  6643. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  6644. </elementProp>
  6645. </collectionProp>
  6646. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  6647. <hashTree/>
  6648. </hashTree>
  6649. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  6650. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6651. <collectionProp name="Arguments.arguments">
  6652. <elementProp name="sections" elementType="HTTPArgument">
  6653. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6654. <stringProp name="Argument.value">cart,messages</stringProp>
  6655. <stringProp name="Argument.metadata">=</stringProp>
  6656. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6657. <stringProp name="Argument.name">sections</stringProp>
  6658. </elementProp>
  6659. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  6660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6661. <stringProp name="Argument.value">true</stringProp>
  6662. <stringProp name="Argument.metadata">=</stringProp>
  6663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6664. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  6665. </elementProp>
  6666. <elementProp name="_" elementType="HTTPArgument">
  6667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  6668. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  6669. <stringProp name="Argument.metadata">=</stringProp>
  6670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  6671. <stringProp name="Argument.name">_</stringProp>
  6672. </elementProp>
  6673. </collectionProp>
  6674. </elementProp>
  6675. <stringProp name="HTTPSampler.domain"/>
  6676. <stringProp name="HTTPSampler.port"/>
  6677. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6678. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6679. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6680. <stringProp name="HTTPSampler.contentEncoding"/>
  6681. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  6682. <stringProp name="HTTPSampler.method">GET</stringProp>
  6683. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6684. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6685. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6686. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6687. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6688. <stringProp name="HTTPSampler.embedded_url_re"/>
  6689. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  6690. <hashTree>
  6691. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6692. <collectionProp name="Asserion.test_strings">
  6693. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  6694. </collectionProp>
  6695. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6696. <boolProp name="Assertion.assume_success">false</boolProp>
  6697. <intProp name="Assertion.test_type">2</intProp>
  6698. </ResponseAssertion>
  6699. <hashTree/>
  6700. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6701. <collectionProp name="Asserion.test_strings">
  6702. <stringProp name="2057973164">This product is out of stock.</stringProp>
  6703. </collectionProp>
  6704. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6705. <boolProp name="Assertion.assume_success">false</boolProp>
  6706. <intProp name="Assertion.test_type">6</intProp>
  6707. </ResponseAssertion>
  6708. <hashTree/>
  6709. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6710. <collectionProp name="Asserion.test_strings">
  6711. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  6712. </collectionProp>
  6713. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6714. <boolProp name="Assertion.assume_success">false</boolProp>
  6715. <intProp name="Assertion.test_type">2</intProp>
  6716. </ResponseAssertion>
  6717. <hashTree/>
  6718. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6719. <collectionProp name="HeaderManager.headers">
  6720. <elementProp name="" elementType="Header">
  6721. <stringProp name="Header.name">X-Requested-With</stringProp>
  6722. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  6723. </elementProp>
  6724. </collectionProp>
  6725. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  6726. <hashTree/>
  6727. </hashTree>
  6728. </hashTree>
  6729. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Checkout" enabled="true">
  6730. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  6731. </GenericController>
  6732. <hashTree>
  6733. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  6734. <stringProp name="scriptLanguage">javascript</stringProp>
  6735. <stringProp name="parameters"/>
  6736. <stringProp name="filename"/>
  6737. <stringProp name="cacheKey"/>
  6738. <stringProp name="script">
  6739. vars.put("alabama_region_id", props.get("alabama_region_id"));
  6740. vars.put("california_region_id", props.get("california_region_id"));
  6741. </stringProp>
  6742. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  6743. <hashTree/>
  6744. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout start" enabled="true">
  6745. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  6746. <collectionProp name="Arguments.arguments"/>
  6747. </elementProp>
  6748. <stringProp name="HTTPSampler.domain"/>
  6749. <stringProp name="HTTPSampler.port"/>
  6750. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6751. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6752. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6753. <stringProp name="HTTPSampler.contentEncoding"/>
  6754. <stringProp name="HTTPSampler.path">${base_path}checkout/</stringProp>
  6755. <stringProp name="HTTPSampler.method">GET</stringProp>
  6756. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6757. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6758. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6759. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6760. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6761. <stringProp name="HTTPSampler.embedded_url_re"/>
  6762. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_start.jmx</stringProp></HTTPSamplerProxy>
  6763. <hashTree>
  6764. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6765. <collectionProp name="Asserion.test_strings">
  6766. <stringProp name="-1403911775">&lt;title&gt;Checkout&lt;/title&gt;</stringProp>
  6767. </collectionProp>
  6768. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6769. <boolProp name="Assertion.assume_success">false</boolProp>
  6770. <intProp name="Assertion.test_type">2</intProp>
  6771. </ResponseAssertion>
  6772. <hashTree/>
  6773. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6774. <collectionProp name="Asserion.test_strings">
  6775. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  6776. </collectionProp>
  6777. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6778. <boolProp name="Assertion.assume_success">false</boolProp>
  6779. <intProp name="Assertion.test_type">6</intProp>
  6780. </ResponseAssertion>
  6781. <hashTree/>
  6782. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Cart Id" enabled="true">
  6783. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  6784. <stringProp name="RegexExtractor.refname">cart_id</stringProp>
  6785. <stringProp name="RegexExtractor.regex">"quoteData":{"entity_id":"([^'"]+)",</stringProp>
  6786. <stringProp name="RegexExtractor.template">$1$</stringProp>
  6787. <stringProp name="RegexExtractor.default"/>
  6788. <stringProp name="RegexExtractor.match_number">1</stringProp>
  6789. </RegexExtractor>
  6790. <hashTree/>
  6791. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Id extracted" enabled="true">
  6792. <collectionProp name="Asserion.test_strings">
  6793. <stringProp name="2845929">^.+$</stringProp>
  6794. </collectionProp>
  6795. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6796. <boolProp name="Assertion.assume_success">false</boolProp>
  6797. <intProp name="Assertion.test_type">1</intProp>
  6798. <stringProp name="Assertion.scope">variable</stringProp>
  6799. <stringProp name="Scope.variable">cart_id</stringProp>
  6800. </ResponseAssertion>
  6801. <hashTree/>
  6802. </hashTree>
  6803. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Email Available" enabled="true">
  6804. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  6805. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  6806. <collectionProp name="Arguments.arguments">
  6807. <elementProp name="" elementType="HTTPArgument">
  6808. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  6809. <stringProp name="Argument.value">{"customerEmail":"test@example.com"}</stringProp>
  6810. <stringProp name="Argument.metadata">=</stringProp>
  6811. </elementProp>
  6812. </collectionProp>
  6813. </elementProp>
  6814. <stringProp name="HTTPSampler.domain"/>
  6815. <stringProp name="HTTPSampler.port"/>
  6816. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6817. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6818. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6819. <stringProp name="HTTPSampler.contentEncoding"/>
  6820. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/isEmailAvailable</stringProp>
  6821. <stringProp name="HTTPSampler.method">POST</stringProp>
  6822. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6823. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6824. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6825. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6826. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6827. <stringProp name="HTTPSampler.embedded_url_re"/>
  6828. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_email_available.jmx</stringProp></HTTPSamplerProxy>
  6829. <hashTree>
  6830. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6831. <collectionProp name="HeaderManager.headers">
  6832. <elementProp name="" elementType="Header">
  6833. <stringProp name="Header.name">Referer</stringProp>
  6834. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  6835. </elementProp>
  6836. <elementProp name="Content-Type" elementType="Header">
  6837. <stringProp name="Header.name">Content-Type</stringProp>
  6838. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  6839. </elementProp>
  6840. <elementProp name="X-Requested-With" elementType="Header">
  6841. <stringProp name="Header.name">X-Requested-With</stringProp>
  6842. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  6843. </elementProp>
  6844. <elementProp name="Accept" elementType="Header">
  6845. <stringProp name="Header.name">Accept</stringProp>
  6846. <stringProp name="Header.value">application/json</stringProp>
  6847. </elementProp>
  6848. </collectionProp>
  6849. </HeaderManager>
  6850. <hashTree/>
  6851. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  6852. <collectionProp name="Asserion.test_strings">
  6853. <stringProp name="3569038">true</stringProp>
  6854. </collectionProp>
  6855. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6856. <boolProp name="Assertion.assume_success">false</boolProp>
  6857. <intProp name="Assertion.test_type">8</intProp>
  6858. </ResponseAssertion>
  6859. <hashTree/>
  6860. </hashTree>
  6861. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  6862. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  6863. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  6864. <collectionProp name="Arguments.arguments">
  6865. <elementProp name="" elementType="HTTPArgument">
  6866. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  6867. <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
  6868. <stringProp name="Argument.metadata">=</stringProp>
  6869. </elementProp>
  6870. </collectionProp>
  6871. </elementProp>
  6872. <stringProp name="HTTPSampler.domain"/>
  6873. <stringProp name="HTTPSampler.port"/>
  6874. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6875. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6876. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6877. <stringProp name="HTTPSampler.contentEncoding"/>
  6878. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</stringProp>
  6879. <stringProp name="HTTPSampler.method">POST</stringProp>
  6880. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6881. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6882. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6883. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6884. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6885. <stringProp name="HTTPSampler.embedded_url_re"/>
  6886. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp></HTTPSamplerProxy>
  6887. <hashTree>
  6888. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6889. <collectionProp name="HeaderManager.headers">
  6890. <elementProp name="" elementType="Header">
  6891. <stringProp name="Header.name">Referer</stringProp>
  6892. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  6893. </elementProp>
  6894. <elementProp name="Content-Type" elementType="Header">
  6895. <stringProp name="Header.name">Content-Type</stringProp>
  6896. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  6897. </elementProp>
  6898. <elementProp name="X-Requested-With" elementType="Header">
  6899. <stringProp name="Header.name">X-Requested-With</stringProp>
  6900. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  6901. </elementProp>
  6902. <elementProp name="Accept" elementType="Header">
  6903. <stringProp name="Header.name">Accept</stringProp>
  6904. <stringProp name="Header.value">application/json</stringProp>
  6905. </elementProp>
  6906. </collectionProp>
  6907. </HeaderManager>
  6908. <hashTree/>
  6909. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  6910. <collectionProp name="Asserion.test_strings">
  6911. <stringProp name="-1224567411">"available":true</stringProp>
  6912. </collectionProp>
  6913. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6914. <boolProp name="Assertion.assume_success">false</boolProp>
  6915. <intProp name="Assertion.test_type">2</intProp>
  6916. </ResponseAssertion>
  6917. <hashTree/>
  6918. </hashTree>
  6919. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  6920. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  6921. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  6922. <collectionProp name="Arguments.arguments">
  6923. <elementProp name="" elementType="HTTPArgument">
  6924. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  6925. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","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>
  6926. <stringProp name="Argument.metadata">=</stringProp>
  6927. </elementProp>
  6928. </collectionProp>
  6929. </elementProp>
  6930. <stringProp name="HTTPSampler.domain"/>
  6931. <stringProp name="HTTPSampler.port"/>
  6932. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6933. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6934. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6935. <stringProp name="HTTPSampler.contentEncoding"/>
  6936. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</stringProp>
  6937. <stringProp name="HTTPSampler.method">POST</stringProp>
  6938. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6939. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6940. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6941. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  6942. <boolProp name="HTTPSampler.monitor">false</boolProp>
  6943. <stringProp name="HTTPSampler.embedded_url_re"/>
  6944. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
  6945. <hashTree>
  6946. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  6947. <collectionProp name="HeaderManager.headers">
  6948. <elementProp name="" elementType="Header">
  6949. <stringProp name="Header.name">Referer</stringProp>
  6950. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  6951. </elementProp>
  6952. <elementProp name="Content-Type" elementType="Header">
  6953. <stringProp name="Header.name">Content-Type</stringProp>
  6954. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  6955. </elementProp>
  6956. <elementProp name="X-Requested-With" elementType="Header">
  6957. <stringProp name="Header.name">X-Requested-With</stringProp>
  6958. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  6959. </elementProp>
  6960. <elementProp name="Accept" elementType="Header">
  6961. <stringProp name="Header.name">Accept</stringProp>
  6962. <stringProp name="Header.value">application/json</stringProp>
  6963. </elementProp>
  6964. </collectionProp>
  6965. </HeaderManager>
  6966. <hashTree/>
  6967. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  6968. <collectionProp name="Asserion.test_strings">
  6969. <stringProp name="-1494218646">{"payment_methods":</stringProp>
  6970. </collectionProp>
  6971. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  6972. <boolProp name="Assertion.assume_success">false</boolProp>
  6973. <intProp name="Assertion.test_type">2</intProp>
  6974. </ResponseAssertion>
  6975. <hashTree/>
  6976. </hashTree>
  6977. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  6978. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  6979. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  6980. <collectionProp name="Arguments.arguments">
  6981. <elementProp name="" elementType="HTTPArgument">
  6982. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  6983. <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"}}</stringProp>
  6984. <stringProp name="Argument.metadata">=</stringProp>
  6985. </elementProp>
  6986. </collectionProp>
  6987. </elementProp>
  6988. <stringProp name="HTTPSampler.domain"/>
  6989. <stringProp name="HTTPSampler.port"/>
  6990. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  6991. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  6992. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  6993. <stringProp name="HTTPSampler.contentEncoding"/>
  6994. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</stringProp>
  6995. <stringProp name="HTTPSampler.method">POST</stringProp>
  6996. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  6997. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  6998. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  6999. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7000. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7001. <stringProp name="HTTPSampler.embedded_url_re"/>
  7002. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
  7003. <hashTree>
  7004. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7005. <collectionProp name="HeaderManager.headers">
  7006. <elementProp name="" elementType="Header">
  7007. <stringProp name="Header.name">Referer</stringProp>
  7008. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  7009. </elementProp>
  7010. <elementProp name="Content-Type" elementType="Header">
  7011. <stringProp name="Header.name">Content-Type</stringProp>
  7012. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  7013. </elementProp>
  7014. <elementProp name="X-Requested-With" elementType="Header">
  7015. <stringProp name="Header.name">X-Requested-With</stringProp>
  7016. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  7017. </elementProp>
  7018. <elementProp name="Accept" elementType="Header">
  7019. <stringProp name="Header.name">Accept</stringProp>
  7020. <stringProp name="Header.value">application/json</stringProp>
  7021. </elementProp>
  7022. </collectionProp>
  7023. </HeaderManager>
  7024. <hashTree/>
  7025. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  7026. <collectionProp name="Asserion.test_strings">
  7027. <stringProp name="-297987887">"[0-9]+"</stringProp>
  7028. </collectionProp>
  7029. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7030. <boolProp name="Assertion.assume_success">false</boolProp>
  7031. <intProp name="Assertion.test_type">2</intProp>
  7032. </ResponseAssertion>
  7033. <hashTree/>
  7034. <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">
  7035. <stringProp name="VAR">order_id</stringProp>
  7036. <stringProp name="JSONPATH">$</stringProp>
  7037. <stringProp name="DEFAULT"/>
  7038. <stringProp name="VARIABLE"/>
  7039. <stringProp name="SUBJECT">BODY</stringProp>
  7040. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  7041. <hashTree/>
  7042. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7043. <collectionProp name="Asserion.test_strings">
  7044. <stringProp name="89649215">^\d+$</stringProp>
  7045. </collectionProp>
  7046. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7047. <boolProp name="Assertion.assume_success">false</boolProp>
  7048. <intProp name="Assertion.test_type">1</intProp>
  7049. <stringProp name="Assertion.scope">variable</stringProp>
  7050. <stringProp name="Scope.variable">order_id</stringProp>
  7051. </ResponseAssertion>
  7052. <hashTree/>
  7053. </hashTree>
  7054. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout success" enabled="true">
  7055. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7056. <collectionProp name="Arguments.arguments"/>
  7057. </elementProp>
  7058. <stringProp name="HTTPSampler.domain"/>
  7059. <stringProp name="HTTPSampler.port"/>
  7060. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7061. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7062. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7063. <stringProp name="HTTPSampler.contentEncoding"/>
  7064. <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</stringProp>
  7065. <stringProp name="HTTPSampler.method">GET</stringProp>
  7066. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7067. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7068. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7069. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7070. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7071. <stringProp name="HTTPSampler.embedded_url_re"/>
  7072. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_success.jmx</stringProp></HTTPSamplerProxy>
  7073. <hashTree>
  7074. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  7075. <collectionProp name="Asserion.test_strings">
  7076. <stringProp name="494863233">Thank you for your purchase!</stringProp>
  7077. <stringProp name="1635682758">Your order # is</stringProp>
  7078. </collectionProp>
  7079. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7080. <boolProp name="Assertion.assume_success">false</boolProp>
  7081. <intProp name="Assertion.test_type">2</intProp>
  7082. </ResponseAssertion>
  7083. <hashTree/>
  7084. </hashTree>
  7085. </hashTree>
  7086. </hashTree>
  7087. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Checkout A Large Bulk Of Products By Guest" enabled="true">
  7088. <intProp name="ThroughputController.style">1</intProp>
  7089. <boolProp name="ThroughputController.perThread">false</boolProp>
  7090. <intProp name="ThroughputController.maxThroughput">1</intProp>
  7091. <stringProp name="ThroughputController.percentThroughput">${checkoutALargeBulkOfProductsByGuestPercentage}</stringProp>
  7092. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  7093. <hashTree>
  7094. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  7095. <stringProp name="script">
  7096. var tmpLabel = vars.get("testLabel")
  7097. if (tmpLabel) {
  7098. var testLabel = " (" + tmpLabel + ")"
  7099. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  7100. if (sampler.getName().indexOf(testLabel) == -1) {
  7101. sampler.setName(sampler.getName() + testLabel);
  7102. }
  7103. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  7104. sampler.setName("SetUp - " + sampler.getName());
  7105. }
  7106. } else {
  7107. testLabel = ""
  7108. }
  7109. </stringProp>
  7110. <stringProp name="scriptLanguage">javascript</stringProp>
  7111. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  7112. <hashTree/>
  7113. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  7114. <stringProp name="BeanShellSampler.query">
  7115. vars.put("testLabel", "Checkout A Large Bulk Of Products By Guest");
  7116. </stringProp>
  7117. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  7118. </BeanShellSampler>
  7119. <hashTree/>
  7120. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  7121. <collectionProp name="CookieManager.cookies">
  7122. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  7123. <stringProp name="Cookie.value">30</stringProp>
  7124. <stringProp name="Cookie.domain">${host}</stringProp>
  7125. <stringProp name="Cookie.path">/</stringProp>
  7126. <boolProp name="Cookie.secure">false</boolProp>
  7127. <longProp name="Cookie.expires">0</longProp>
  7128. <boolProp name="Cookie.path_specified">true</boolProp>
  7129. <boolProp name="Cookie.domain_specified">true</boolProp>
  7130. </elementProp>
  7131. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  7132. <stringProp name="Cookie.value">${form_key}</stringProp>
  7133. <stringProp name="Cookie.domain">${host}</stringProp>
  7134. <stringProp name="Cookie.path">${base_path}</stringProp>
  7135. <boolProp name="Cookie.secure">false</boolProp>
  7136. <longProp name="Cookie.expires">0</longProp>
  7137. <boolProp name="Cookie.path_specified">true</boolProp>
  7138. <boolProp name="Cookie.domain_specified">true</boolProp>
  7139. </elementProp>
  7140. </collectionProp>
  7141. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  7142. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  7143. <hashTree/>
  7144. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  7145. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  7146. <stringProp name="BeanShellSampler.query">
  7147. vars.put("totalProductsAdded", "0");
  7148. </stringProp>
  7149. <stringProp name="BeanShellSampler.filename"/>
  7150. <stringProp name="BeanShellSampler.parameters"/>
  7151. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  7152. </BeanShellSampler>
  7153. <hashTree/>
  7154. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Of Simple And Configurable Products In Cart" enabled="true">
  7155. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_simple_and_configurable_products_in_cart_setup.jmx</stringProp>
  7156. <stringProp name="BeanShellSampler.query">
  7157. vars.put("totalSimpleProductsAdded", "0");
  7158. vars.put("totalConfigurableProductsAdded", "0");
  7159. </stringProp>
  7160. <stringProp name="BeanShellSampler.filename"/>
  7161. <stringProp name="BeanShellSampler.parameters"/>
  7162. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  7163. </BeanShellSampler>
  7164. <hashTree/>
  7165. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Bulk Of Simple Products to Cart" enabled="true">
  7166. <boolProp name="LoopController.continue_forever">true</boolProp>
  7167. <stringProp name="LoopController.loops">1</stringProp>
  7168. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  7169. <hashTree>
  7170. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  7171. <stringProp name="CounterConfig.start">1</stringProp>
  7172. <stringProp name="CounterConfig.end"/>
  7173. <stringProp name="CounterConfig.incr">1</stringProp>
  7174. <stringProp name="CounterConfig.name">_counter</stringProp>
  7175. <stringProp name="CounterConfig.format"/>
  7176. <boolProp name="CounterConfig.per_user">true</boolProp>
  7177. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  7178. </CounterConfig>
  7179. <hashTree/>
  7180. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  7181. <stringProp name="BeanShellSampler.query">
  7182. simpleProductsAdded = Integer.parseInt(vars.get("totalSimpleProductsAdded"));
  7183. lastSimpleProduct = Integer.parseInt(vars.get("numberOfRelatedSimpleProductsInTheCart")) - 1;
  7184. product = props.get("simple_products_list").get(lastSimpleProduct);
  7185. vars.put("product_url_key", product.get("url_key"));
  7186. vars.put("product_id", product.get("id"));
  7187. vars.put("product_name", product.get("title"));
  7188. vars.put("product_uenc", product.get("uenc"));
  7189. vars.put("product_sku", product.get("sku"));
  7190. simpleProductsAdded = simpleProductsAdded + 1;
  7191. vars.put("totalSimpleProductsAdded", String.valueOf(simpleProductsAdded));
  7192. </stringProp>
  7193. <stringProp name="BeanShellSampler.filename"/>
  7194. <stringProp name="BeanShellSampler.parameters"/>
  7195. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  7196. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup_large_bulk_of_products.jmx</stringProp></BeanShellSampler>
  7197. <hashTree/>
  7198. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  7199. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  7200. <stringProp name="BeanShellSampler.query">
  7201. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  7202. productsAdded = productsAdded + 1;
  7203. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  7204. </stringProp>
  7205. <stringProp name="BeanShellSampler.filename"/>
  7206. <stringProp name="BeanShellSampler.parameters"/>
  7207. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  7208. </BeanShellSampler>
  7209. <hashTree/>
  7210. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Bulk Of Simple Products to Cart" enabled="true">
  7211. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7212. <collectionProp name="Arguments.arguments">
  7213. <elementProp name="product" elementType="HTTPArgument">
  7214. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7215. <stringProp name="Argument.value">${product_id}</stringProp>
  7216. <stringProp name="Argument.metadata">=</stringProp>
  7217. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7218. <stringProp name="Argument.name">product</stringProp>
  7219. </elementProp>
  7220. <elementProp name="related_product" elementType="HTTPArgument">
  7221. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7222. <stringProp name="Argument.value"/>
  7223. <stringProp name="Argument.metadata">=</stringProp>
  7224. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7225. <stringProp name="Argument.name">related_product</stringProp>
  7226. </elementProp>
  7227. <elementProp name="qty" elementType="HTTPArgument">
  7228. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7229. <stringProp name="Argument.value">1</stringProp>
  7230. <stringProp name="Argument.metadata">=</stringProp>
  7231. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7232. <stringProp name="Argument.name">qty</stringProp>
  7233. </elementProp>
  7234. <elementProp name="form_key" elementType="HTTPArgument">
  7235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7236. <stringProp name="Argument.value">${form_key}</stringProp>
  7237. <stringProp name="Argument.metadata">=</stringProp>
  7238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7239. <stringProp name="Argument.name">form_key</stringProp>
  7240. </elementProp>
  7241. </collectionProp>
  7242. </elementProp>
  7243. <stringProp name="HTTPSampler.domain"/>
  7244. <stringProp name="HTTPSampler.port"/>
  7245. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7246. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7247. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7248. <stringProp name="HTTPSampler.contentEncoding"/>
  7249. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  7250. <stringProp name="HTTPSampler.method">POST</stringProp>
  7251. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7252. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7253. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7254. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7255. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7256. <stringProp name="HTTPSampler.embedded_url_re"/>
  7257. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  7258. <hashTree>
  7259. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Add Related Product Argument" enabled="true">
  7260. <stringProp name="scriptLanguage">groovy</stringProp>
  7261. <stringProp name="parameters"/>
  7262. <stringProp name="filename"/>
  7263. <stringProp name="cacheKey">true</stringProp>
  7264. <stringProp name="script">
  7265. numberOfSimpleProducts = Integer.parseInt(vars.get("numberOfRelatedSimpleProductsInTheCart")) - 1;
  7266. def relatedProductIds = props.get('simple_products_list').take(numberOfSimpleProducts).inject('') {acc, prod -&gt; acc + prod.get("id") + ',' };
  7267. sampler.addArgument('related_product', relatedProductIds);
  7268. simpleProductsAdded = Integer.parseInt(vars.get("totalSimpleProductsAdded"));
  7269. simpleProductsAdded = simpleProductsAdded + numberOfSimpleProducts;
  7270. vars.put("totalSimpleProductsAdded", String.valueOf(simpleProductsAdded));
  7271. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  7272. productsAdded = productsAdded + numberOfSimpleProducts;
  7273. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  7274. </stringProp>
  7275. <stringProp name="TestPlan.comments">tool/fragments/ce/common/related_products_add_to_cart_preprocessor.jmx</stringProp></JSR223PreProcessor>
  7276. <hashTree/>
  7277. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7278. <collectionProp name="HeaderManager.headers">
  7279. <elementProp name="" elementType="Header">
  7280. <stringProp name="Header.name">X-Requested-With</stringProp>
  7281. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  7282. </elementProp>
  7283. </collectionProp>
  7284. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  7285. <hashTree/>
  7286. </hashTree>
  7287. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section - Total: ${totalProductsAdded}" enabled="true">
  7288. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7289. <collectionProp name="Arguments.arguments">
  7290. <elementProp name="sections" elementType="HTTPArgument">
  7291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7292. <stringProp name="Argument.value">cart,messages</stringProp>
  7293. <stringProp name="Argument.metadata">=</stringProp>
  7294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7295. <stringProp name="Argument.name">sections</stringProp>
  7296. </elementProp>
  7297. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  7298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7299. <stringProp name="Argument.value">true</stringProp>
  7300. <stringProp name="Argument.metadata">=</stringProp>
  7301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7302. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  7303. </elementProp>
  7304. <elementProp name="_" elementType="HTTPArgument">
  7305. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7306. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  7307. <stringProp name="Argument.metadata">=</stringProp>
  7308. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7309. <stringProp name="Argument.name">_</stringProp>
  7310. </elementProp>
  7311. </collectionProp>
  7312. </elementProp>
  7313. <stringProp name="HTTPSampler.domain"/>
  7314. <stringProp name="HTTPSampler.port"/>
  7315. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7316. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7317. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7318. <stringProp name="HTTPSampler.contentEncoding"/>
  7319. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  7320. <stringProp name="HTTPSampler.method">GET</stringProp>
  7321. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7322. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7323. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7324. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7325. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7326. <stringProp name="HTTPSampler.embedded_url_re"/>
  7327. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section_with_total_count.jmx</stringProp></HTTPSamplerProxy>
  7328. <hashTree>
  7329. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7330. <collectionProp name="Asserion.test_strings">
  7331. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  7332. </collectionProp>
  7333. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7334. <boolProp name="Assertion.assume_success">false</boolProp>
  7335. <intProp name="Assertion.test_type">2</intProp>
  7336. </ResponseAssertion>
  7337. <hashTree/>
  7338. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7339. <collectionProp name="Asserion.test_strings">
  7340. <stringProp name="2057973164">This product is out of stock.</stringProp>
  7341. </collectionProp>
  7342. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7343. <boolProp name="Assertion.assume_success">false</boolProp>
  7344. <intProp name="Assertion.test_type">6</intProp>
  7345. </ResponseAssertion>
  7346. <hashTree/>
  7347. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7348. <collectionProp name="Asserion.test_strings">
  7349. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  7350. </collectionProp>
  7351. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7352. <boolProp name="Assertion.assume_success">false</boolProp>
  7353. <intProp name="Assertion.test_type">2</intProp>
  7354. </ResponseAssertion>
  7355. <hashTree/>
  7356. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7357. <collectionProp name="HeaderManager.headers">
  7358. <elementProp name="" elementType="Header">
  7359. <stringProp name="Header.name">X-Requested-With</stringProp>
  7360. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  7361. </elementProp>
  7362. </collectionProp>
  7363. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  7364. <hashTree/>
  7365. </hashTree>
  7366. </hashTree>
  7367. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Additional Configurable Products to Cart" enabled="true">
  7368. <boolProp name="LoopController.continue_forever">true</boolProp>
  7369. <stringProp name="LoopController.loops">2</stringProp>
  7370. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  7371. <hashTree>
  7372. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  7373. <stringProp name="CounterConfig.start">1</stringProp>
  7374. <stringProp name="CounterConfig.end"/>
  7375. <stringProp name="CounterConfig.incr">1</stringProp>
  7376. <stringProp name="CounterConfig.name">_counter</stringProp>
  7377. <stringProp name="CounterConfig.format"/>
  7378. <boolProp name="CounterConfig.per_user">true</boolProp>
  7379. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  7380. </CounterConfig>
  7381. <hashTree/>
  7382. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  7383. <stringProp name="BeanShellSampler.query">
  7384. configurableProductsAdded = Integer.parseInt(vars.get("totalConfigurableProductsAdded"));
  7385. product = props.get("configurable_products_list").get(configurableProductsAdded);
  7386. vars.put("product_number", configurableProductsAdded.toString());
  7387. vars.put("product_url_key", product.get("url_key"));
  7388. vars.put("product_id", product.get("id"));
  7389. vars.put("product_name", product.get("title"));
  7390. vars.put("product_uenc", product.get("uenc"));
  7391. vars.put("product_sku", product.get("sku"));
  7392. configurableProductsAdded = configurableProductsAdded + 1;
  7393. vars.put("totalConfigurableProductsAdded", String.valueOf(configurableProductsAdded));
  7394. </stringProp>
  7395. <stringProp name="BeanShellSampler.filename"/>
  7396. <stringProp name="BeanShellSampler.parameters"/>
  7397. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  7398. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup_large_number_of_products.jmx</stringProp></BeanShellSampler>
  7399. <hashTree/>
  7400. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  7401. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  7402. <stringProp name="BeanShellSampler.query">
  7403. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  7404. productsAdded = productsAdded + 1;
  7405. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  7406. </stringProp>
  7407. <stringProp name="BeanShellSampler.filename"/>
  7408. <stringProp name="BeanShellSampler.parameters"/>
  7409. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  7410. </BeanShellSampler>
  7411. <hashTree/>
  7412. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  7413. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7414. <collectionProp name="Arguments.arguments"/>
  7415. </elementProp>
  7416. <stringProp name="HTTPSampler.domain"/>
  7417. <stringProp name="HTTPSampler.port"/>
  7418. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7419. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7420. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7421. <stringProp name="HTTPSampler.contentEncoding"/>
  7422. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  7423. <stringProp name="HTTPSampler.method">GET</stringProp>
  7424. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7425. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7426. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7427. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7428. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7429. <stringProp name="HTTPSampler.embedded_url_re"/>
  7430. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  7431. <hashTree>
  7432. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7433. <collectionProp name="Asserion.test_strings">
  7434. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  7435. </collectionProp>
  7436. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7437. <boolProp name="Assertion.assume_success">false</boolProp>
  7438. <intProp name="Assertion.test_type">2</intProp>
  7439. </ResponseAssertion>
  7440. <hashTree/>
  7441. </hashTree>
  7442. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  7443. <boolProp name="LoopController.continue_forever">true</boolProp>
  7444. <stringProp name="LoopController.loops">1</stringProp>
  7445. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  7446. <hashTree>
  7447. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7448. <collectionProp name="HeaderManager.headers">
  7449. <elementProp name="" elementType="Header">
  7450. <stringProp name="Header.name">Content-Type</stringProp>
  7451. <stringProp name="Header.value">application/json</stringProp>
  7452. </elementProp>
  7453. <elementProp name="" elementType="Header">
  7454. <stringProp name="Header.name">Accept</stringProp>
  7455. <stringProp name="Header.value">*/*</stringProp>
  7456. </elementProp>
  7457. </collectionProp>
  7458. </HeaderManager>
  7459. <hashTree/>
  7460. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  7461. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  7462. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  7463. <collectionProp name="Arguments.arguments">
  7464. <elementProp name="" elementType="HTTPArgument">
  7465. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  7466. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  7467. <stringProp name="Argument.metadata">=</stringProp>
  7468. </elementProp>
  7469. </collectionProp>
  7470. </elementProp>
  7471. <stringProp name="HTTPSampler.domain"/>
  7472. <stringProp name="HTTPSampler.port"/>
  7473. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7474. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7475. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7476. <stringProp name="HTTPSampler.contentEncoding"/>
  7477. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  7478. <stringProp name="HTTPSampler.method">POST</stringProp>
  7479. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7480. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7481. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7482. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7483. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7484. <stringProp name="HTTPSampler.embedded_url_re"/>
  7485. </HTTPSamplerProxy>
  7486. <hashTree>
  7487. <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">
  7488. <stringProp name="VAR">admin_token</stringProp>
  7489. <stringProp name="JSONPATH">$</stringProp>
  7490. <stringProp name="DEFAULT"/>
  7491. <stringProp name="VARIABLE"/>
  7492. <stringProp name="SUBJECT">BODY</stringProp>
  7493. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  7494. <hashTree/>
  7495. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  7496. <collectionProp name="Asserion.test_strings">
  7497. <stringProp name="484395188">^.{10,}$</stringProp>
  7498. </collectionProp>
  7499. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7500. <boolProp name="Assertion.assume_success">false</boolProp>
  7501. <intProp name="Assertion.test_type">1</intProp>
  7502. <stringProp name="Assertion.scope">variable</stringProp>
  7503. <stringProp name="Scope.variable">admin_token</stringProp>
  7504. </ResponseAssertion>
  7505. <hashTree/>
  7506. </hashTree>
  7507. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7508. <collectionProp name="HeaderManager.headers">
  7509. <elementProp name="" elementType="Header">
  7510. <stringProp name="Header.name">Authorization</stringProp>
  7511. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  7512. </elementProp>
  7513. </collectionProp>
  7514. </HeaderManager>
  7515. <hashTree/>
  7516. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  7517. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7518. <collectionProp name="Arguments.arguments"/>
  7519. </elementProp>
  7520. <stringProp name="HTTPSampler.domain"/>
  7521. <stringProp name="HTTPSampler.port"/>
  7522. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7523. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7524. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7525. <stringProp name="HTTPSampler.contentEncoding"/>
  7526. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  7527. <stringProp name="HTTPSampler.method">GET</stringProp>
  7528. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7529. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7530. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7531. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7532. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7533. <stringProp name="HTTPSampler.embedded_url_re"/>
  7534. </HTTPSamplerProxy>
  7535. <hashTree>
  7536. <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">
  7537. <stringProp name="VAR">attribute_ids</stringProp>
  7538. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  7539. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  7540. <stringProp name="VARIABLE"/>
  7541. <stringProp name="SUBJECT">BODY</stringProp>
  7542. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  7543. <hashTree/>
  7544. <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">
  7545. <stringProp name="VAR">option_values</stringProp>
  7546. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  7547. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  7548. <stringProp name="VARIABLE"/>
  7549. <stringProp name="SUBJECT">BODY</stringProp>
  7550. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  7551. <hashTree/>
  7552. </hashTree>
  7553. </hashTree>
  7554. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart - Total: ${totalProductsAdded}" enabled="true">
  7555. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7556. <collectionProp name="Arguments.arguments">
  7557. <elementProp name="product" elementType="HTTPArgument">
  7558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7559. <stringProp name="Argument.value">${product_id}</stringProp>
  7560. <stringProp name="Argument.metadata">=</stringProp>
  7561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7562. <stringProp name="Argument.name">product</stringProp>
  7563. </elementProp>
  7564. <elementProp name="related_product" elementType="HTTPArgument">
  7565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7566. <stringProp name="Argument.value"/>
  7567. <stringProp name="Argument.metadata">=</stringProp>
  7568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7569. <stringProp name="Argument.name">related_product</stringProp>
  7570. </elementProp>
  7571. <elementProp name="qty" elementType="HTTPArgument">
  7572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7573. <stringProp name="Argument.value">1</stringProp>
  7574. <stringProp name="Argument.metadata">=</stringProp>
  7575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7576. <stringProp name="Argument.name">qty</stringProp>
  7577. </elementProp>
  7578. <elementProp name="form_key" elementType="HTTPArgument">
  7579. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7580. <stringProp name="Argument.value">${form_key}</stringProp>
  7581. <stringProp name="Argument.metadata">=</stringProp>
  7582. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7583. <stringProp name="Argument.name">form_key</stringProp>
  7584. </elementProp>
  7585. </collectionProp>
  7586. </elementProp>
  7587. <stringProp name="HTTPSampler.domain"/>
  7588. <stringProp name="HTTPSampler.port"/>
  7589. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7590. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7591. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7592. <stringProp name="HTTPSampler.contentEncoding"/>
  7593. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  7594. <stringProp name="HTTPSampler.method">POST</stringProp>
  7595. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7596. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7597. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7598. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7599. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7600. <stringProp name="HTTPSampler.embedded_url_re"/>
  7601. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  7602. <hashTree>
  7603. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  7604. <boolProp name="resetInterpreter">false</boolProp>
  7605. <stringProp name="parameters"/>
  7606. <stringProp name="filename"/>
  7607. <stringProp name="script">
  7608. try {
  7609. attribute_ids = vars.get("attribute_ids");
  7610. option_values = vars.get("option_values");
  7611. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  7612. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  7613. attribute_ids_array = attribute_ids.split(",");
  7614. option_values_array = option_values.split(",");
  7615. args = ctx.getCurrentSampler().getArguments();
  7616. it = args.iterator();
  7617. while (it.hasNext()) {
  7618. argument = it.next();
  7619. if (argument.getStringValue().contains("${")) {
  7620. args.removeArgument(argument.getName());
  7621. }
  7622. }
  7623. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  7624. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  7625. }
  7626. } catch (Exception e) {
  7627. log.error("eror&#x2026;", e);
  7628. }
  7629. </stringProp>
  7630. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  7631. <hashTree/>
  7632. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7633. <collectionProp name="HeaderManager.headers">
  7634. <elementProp name="" elementType="Header">
  7635. <stringProp name="Header.name">X-Requested-With</stringProp>
  7636. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  7637. </elementProp>
  7638. </collectionProp>
  7639. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  7640. <hashTree/>
  7641. </hashTree>
  7642. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section - Total: ${totalProductsAdded}" enabled="true">
  7643. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7644. <collectionProp name="Arguments.arguments">
  7645. <elementProp name="sections" elementType="HTTPArgument">
  7646. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7647. <stringProp name="Argument.value">cart,messages</stringProp>
  7648. <stringProp name="Argument.metadata">=</stringProp>
  7649. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7650. <stringProp name="Argument.name">sections</stringProp>
  7651. </elementProp>
  7652. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  7653. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7654. <stringProp name="Argument.value">true</stringProp>
  7655. <stringProp name="Argument.metadata">=</stringProp>
  7656. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7657. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  7658. </elementProp>
  7659. <elementProp name="_" elementType="HTTPArgument">
  7660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  7661. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  7662. <stringProp name="Argument.metadata">=</stringProp>
  7663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  7664. <stringProp name="Argument.name">_</stringProp>
  7665. </elementProp>
  7666. </collectionProp>
  7667. </elementProp>
  7668. <stringProp name="HTTPSampler.domain"/>
  7669. <stringProp name="HTTPSampler.port"/>
  7670. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7671. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7672. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7673. <stringProp name="HTTPSampler.contentEncoding"/>
  7674. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  7675. <stringProp name="HTTPSampler.method">GET</stringProp>
  7676. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7677. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7678. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7679. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7680. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7681. <stringProp name="HTTPSampler.embedded_url_re"/>
  7682. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section_with_total_count.jmx</stringProp></HTTPSamplerProxy>
  7683. <hashTree>
  7684. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7685. <collectionProp name="Asserion.test_strings">
  7686. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  7687. </collectionProp>
  7688. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7689. <boolProp name="Assertion.assume_success">false</boolProp>
  7690. <intProp name="Assertion.test_type">2</intProp>
  7691. </ResponseAssertion>
  7692. <hashTree/>
  7693. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7694. <collectionProp name="Asserion.test_strings">
  7695. <stringProp name="2057973164">This product is out of stock.</stringProp>
  7696. </collectionProp>
  7697. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7698. <boolProp name="Assertion.assume_success">false</boolProp>
  7699. <intProp name="Assertion.test_type">6</intProp>
  7700. </ResponseAssertion>
  7701. <hashTree/>
  7702. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7703. <collectionProp name="Asserion.test_strings">
  7704. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  7705. </collectionProp>
  7706. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7707. <boolProp name="Assertion.assume_success">false</boolProp>
  7708. <intProp name="Assertion.test_type">2</intProp>
  7709. </ResponseAssertion>
  7710. <hashTree/>
  7711. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7712. <collectionProp name="HeaderManager.headers">
  7713. <elementProp name="" elementType="Header">
  7714. <stringProp name="Header.name">X-Requested-With</stringProp>
  7715. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  7716. </elementProp>
  7717. </collectionProp>
  7718. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  7719. <hashTree/>
  7720. </hashTree>
  7721. </hashTree>
  7722. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Open Cart" enabled="true">
  7723. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  7724. </GenericController>
  7725. <hashTree>
  7726. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Cart" enabled="true">
  7727. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7728. <collectionProp name="Arguments.arguments"/>
  7729. </elementProp>
  7730. <stringProp name="HTTPSampler.domain"/>
  7731. <stringProp name="HTTPSampler.port"/>
  7732. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7733. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7734. <stringProp name="HTTPSampler.protocol"/>
  7735. <stringProp name="HTTPSampler.contentEncoding"/>
  7736. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/</stringProp>
  7737. <stringProp name="HTTPSampler.method">GET</stringProp>
  7738. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7739. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7740. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7741. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7742. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7743. <stringProp name="HTTPSampler.embedded_url_re"/>
  7744. <stringProp name="TestPlan.comments">tool/fragments/ce/open_cart.jmx</stringProp></HTTPSamplerProxy>
  7745. <hashTree>
  7746. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Opened" enabled="true">
  7747. <collectionProp name="Asserion.test_strings">
  7748. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  7749. </collectionProp>
  7750. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7751. <boolProp name="Assertion.assume_success">false</boolProp>
  7752. <intProp name="Assertion.test_type">2</intProp>
  7753. </ResponseAssertion>
  7754. <hashTree/>
  7755. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7756. <collectionProp name="Asserion.test_strings">
  7757. <stringProp name="-350323027">\"items_count\":\"${totalProductsAdded}\"</stringProp>
  7758. </collectionProp>
  7759. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7760. <boolProp name="Assertion.assume_success">false</boolProp>
  7761. <intProp name="Assertion.test_type">2</intProp>
  7762. </ResponseAssertion>
  7763. <hashTree/>
  7764. </hashTree>
  7765. </hashTree>
  7766. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Open Cart 2" enabled="true">
  7767. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  7768. </GenericController>
  7769. <hashTree>
  7770. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Cart 2" enabled="true">
  7771. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7772. <collectionProp name="Arguments.arguments"/>
  7773. </elementProp>
  7774. <stringProp name="HTTPSampler.domain"/>
  7775. <stringProp name="HTTPSampler.port"/>
  7776. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7777. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7778. <stringProp name="HTTPSampler.protocol"/>
  7779. <stringProp name="HTTPSampler.contentEncoding"/>
  7780. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/</stringProp>
  7781. <stringProp name="HTTPSampler.method">GET</stringProp>
  7782. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7783. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7784. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7785. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7786. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7787. <stringProp name="HTTPSampler.embedded_url_re"/>
  7788. <stringProp name="TestPlan.comments">tool/fragments/ce/open_cart.jmx</stringProp></HTTPSamplerProxy>
  7789. <hashTree>
  7790. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Opened" enabled="true">
  7791. <collectionProp name="Asserion.test_strings">
  7792. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  7793. </collectionProp>
  7794. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7795. <boolProp name="Assertion.assume_success">false</boolProp>
  7796. <intProp name="Assertion.test_type">2</intProp>
  7797. </ResponseAssertion>
  7798. <hashTree/>
  7799. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7800. <collectionProp name="Asserion.test_strings">
  7801. <stringProp name="-350323027">\"items_count\":\"${totalProductsAdded}\"</stringProp>
  7802. </collectionProp>
  7803. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7804. <boolProp name="Assertion.assume_success">false</boolProp>
  7805. <intProp name="Assertion.test_type">2</intProp>
  7806. </ResponseAssertion>
  7807. <hashTree/>
  7808. </hashTree>
  7809. </hashTree>
  7810. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Checkout" enabled="true">
  7811. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  7812. </GenericController>
  7813. <hashTree>
  7814. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  7815. <stringProp name="scriptLanguage">javascript</stringProp>
  7816. <stringProp name="parameters"/>
  7817. <stringProp name="filename"/>
  7818. <stringProp name="cacheKey"/>
  7819. <stringProp name="script">
  7820. vars.put("alabama_region_id", props.get("alabama_region_id"));
  7821. vars.put("california_region_id", props.get("california_region_id"));
  7822. </stringProp>
  7823. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  7824. <hashTree/>
  7825. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout start" enabled="true">
  7826. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  7827. <collectionProp name="Arguments.arguments"/>
  7828. </elementProp>
  7829. <stringProp name="HTTPSampler.domain"/>
  7830. <stringProp name="HTTPSampler.port"/>
  7831. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7832. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7833. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7834. <stringProp name="HTTPSampler.contentEncoding"/>
  7835. <stringProp name="HTTPSampler.path">${base_path}checkout/</stringProp>
  7836. <stringProp name="HTTPSampler.method">GET</stringProp>
  7837. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7838. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7839. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7840. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7841. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7842. <stringProp name="HTTPSampler.embedded_url_re"/>
  7843. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_start.jmx</stringProp></HTTPSamplerProxy>
  7844. <hashTree>
  7845. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7846. <collectionProp name="Asserion.test_strings">
  7847. <stringProp name="-1403911775">&lt;title&gt;Checkout&lt;/title&gt;</stringProp>
  7848. </collectionProp>
  7849. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7850. <boolProp name="Assertion.assume_success">false</boolProp>
  7851. <intProp name="Assertion.test_type">2</intProp>
  7852. </ResponseAssertion>
  7853. <hashTree/>
  7854. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7855. <collectionProp name="Asserion.test_strings">
  7856. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  7857. </collectionProp>
  7858. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7859. <boolProp name="Assertion.assume_success">false</boolProp>
  7860. <intProp name="Assertion.test_type">6</intProp>
  7861. </ResponseAssertion>
  7862. <hashTree/>
  7863. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Cart Id" enabled="true">
  7864. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  7865. <stringProp name="RegexExtractor.refname">cart_id</stringProp>
  7866. <stringProp name="RegexExtractor.regex">"quoteData":{"entity_id":"([^'"]+)",</stringProp>
  7867. <stringProp name="RegexExtractor.template">$1$</stringProp>
  7868. <stringProp name="RegexExtractor.default"/>
  7869. <stringProp name="RegexExtractor.match_number">1</stringProp>
  7870. </RegexExtractor>
  7871. <hashTree/>
  7872. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Id extracted" enabled="true">
  7873. <collectionProp name="Asserion.test_strings">
  7874. <stringProp name="2845929">^.+$</stringProp>
  7875. </collectionProp>
  7876. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7877. <boolProp name="Assertion.assume_success">false</boolProp>
  7878. <intProp name="Assertion.test_type">1</intProp>
  7879. <stringProp name="Assertion.scope">variable</stringProp>
  7880. <stringProp name="Scope.variable">cart_id</stringProp>
  7881. </ResponseAssertion>
  7882. <hashTree/>
  7883. </hashTree>
  7884. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Email Available" enabled="true">
  7885. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  7886. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  7887. <collectionProp name="Arguments.arguments">
  7888. <elementProp name="" elementType="HTTPArgument">
  7889. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  7890. <stringProp name="Argument.value">{"customerEmail":"test@example.com"}</stringProp>
  7891. <stringProp name="Argument.metadata">=</stringProp>
  7892. </elementProp>
  7893. </collectionProp>
  7894. </elementProp>
  7895. <stringProp name="HTTPSampler.domain"/>
  7896. <stringProp name="HTTPSampler.port"/>
  7897. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7898. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7899. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7900. <stringProp name="HTTPSampler.contentEncoding"/>
  7901. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/isEmailAvailable</stringProp>
  7902. <stringProp name="HTTPSampler.method">POST</stringProp>
  7903. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7904. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7905. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7906. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7907. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7908. <stringProp name="HTTPSampler.embedded_url_re"/>
  7909. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_email_available.jmx</stringProp></HTTPSamplerProxy>
  7910. <hashTree>
  7911. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7912. <collectionProp name="HeaderManager.headers">
  7913. <elementProp name="" elementType="Header">
  7914. <stringProp name="Header.name">Referer</stringProp>
  7915. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  7916. </elementProp>
  7917. <elementProp name="Content-Type" elementType="Header">
  7918. <stringProp name="Header.name">Content-Type</stringProp>
  7919. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  7920. </elementProp>
  7921. <elementProp name="X-Requested-With" elementType="Header">
  7922. <stringProp name="Header.name">X-Requested-With</stringProp>
  7923. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  7924. </elementProp>
  7925. <elementProp name="Accept" elementType="Header">
  7926. <stringProp name="Header.name">Accept</stringProp>
  7927. <stringProp name="Header.value">application/json</stringProp>
  7928. </elementProp>
  7929. </collectionProp>
  7930. </HeaderManager>
  7931. <hashTree/>
  7932. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  7933. <collectionProp name="Asserion.test_strings">
  7934. <stringProp name="3569038">true</stringProp>
  7935. </collectionProp>
  7936. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7937. <boolProp name="Assertion.assume_success">false</boolProp>
  7938. <intProp name="Assertion.test_type">8</intProp>
  7939. </ResponseAssertion>
  7940. <hashTree/>
  7941. </hashTree>
  7942. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  7943. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  7944. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  7945. <collectionProp name="Arguments.arguments">
  7946. <elementProp name="" elementType="HTTPArgument">
  7947. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  7948. <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
  7949. <stringProp name="Argument.metadata">=</stringProp>
  7950. </elementProp>
  7951. </collectionProp>
  7952. </elementProp>
  7953. <stringProp name="HTTPSampler.domain"/>
  7954. <stringProp name="HTTPSampler.port"/>
  7955. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  7956. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  7957. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  7958. <stringProp name="HTTPSampler.contentEncoding"/>
  7959. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</stringProp>
  7960. <stringProp name="HTTPSampler.method">POST</stringProp>
  7961. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  7962. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  7963. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  7964. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  7965. <boolProp name="HTTPSampler.monitor">false</boolProp>
  7966. <stringProp name="HTTPSampler.embedded_url_re"/>
  7967. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp></HTTPSamplerProxy>
  7968. <hashTree>
  7969. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  7970. <collectionProp name="HeaderManager.headers">
  7971. <elementProp name="" elementType="Header">
  7972. <stringProp name="Header.name">Referer</stringProp>
  7973. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  7974. </elementProp>
  7975. <elementProp name="Content-Type" elementType="Header">
  7976. <stringProp name="Header.name">Content-Type</stringProp>
  7977. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  7978. </elementProp>
  7979. <elementProp name="X-Requested-With" elementType="Header">
  7980. <stringProp name="Header.name">X-Requested-With</stringProp>
  7981. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  7982. </elementProp>
  7983. <elementProp name="Accept" elementType="Header">
  7984. <stringProp name="Header.name">Accept</stringProp>
  7985. <stringProp name="Header.value">application/json</stringProp>
  7986. </elementProp>
  7987. </collectionProp>
  7988. </HeaderManager>
  7989. <hashTree/>
  7990. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  7991. <collectionProp name="Asserion.test_strings">
  7992. <stringProp name="-1224567411">"available":true</stringProp>
  7993. </collectionProp>
  7994. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  7995. <boolProp name="Assertion.assume_success">false</boolProp>
  7996. <intProp name="Assertion.test_type">2</intProp>
  7997. </ResponseAssertion>
  7998. <hashTree/>
  7999. </hashTree>
  8000. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  8001. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  8002. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  8003. <collectionProp name="Arguments.arguments">
  8004. <elementProp name="" elementType="HTTPArgument">
  8005. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  8006. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","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>
  8007. <stringProp name="Argument.metadata">=</stringProp>
  8008. </elementProp>
  8009. </collectionProp>
  8010. </elementProp>
  8011. <stringProp name="HTTPSampler.domain"/>
  8012. <stringProp name="HTTPSampler.port"/>
  8013. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8014. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8015. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8016. <stringProp name="HTTPSampler.contentEncoding"/>
  8017. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</stringProp>
  8018. <stringProp name="HTTPSampler.method">POST</stringProp>
  8019. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8020. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8021. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8022. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8023. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8024. <stringProp name="HTTPSampler.embedded_url_re"/>
  8025. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
  8026. <hashTree>
  8027. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  8028. <collectionProp name="HeaderManager.headers">
  8029. <elementProp name="" elementType="Header">
  8030. <stringProp name="Header.name">Referer</stringProp>
  8031. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  8032. </elementProp>
  8033. <elementProp name="Content-Type" elementType="Header">
  8034. <stringProp name="Header.name">Content-Type</stringProp>
  8035. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  8036. </elementProp>
  8037. <elementProp name="X-Requested-With" elementType="Header">
  8038. <stringProp name="Header.name">X-Requested-With</stringProp>
  8039. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  8040. </elementProp>
  8041. <elementProp name="Accept" elementType="Header">
  8042. <stringProp name="Header.name">Accept</stringProp>
  8043. <stringProp name="Header.value">application/json</stringProp>
  8044. </elementProp>
  8045. </collectionProp>
  8046. </HeaderManager>
  8047. <hashTree/>
  8048. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  8049. <collectionProp name="Asserion.test_strings">
  8050. <stringProp name="-1494218646">{"payment_methods":</stringProp>
  8051. </collectionProp>
  8052. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8053. <boolProp name="Assertion.assume_success">false</boolProp>
  8054. <intProp name="Assertion.test_type">2</intProp>
  8055. </ResponseAssertion>
  8056. <hashTree/>
  8057. </hashTree>
  8058. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  8059. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  8060. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  8061. <collectionProp name="Arguments.arguments">
  8062. <elementProp name="" elementType="HTTPArgument">
  8063. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  8064. <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"}}</stringProp>
  8065. <stringProp name="Argument.metadata">=</stringProp>
  8066. </elementProp>
  8067. </collectionProp>
  8068. </elementProp>
  8069. <stringProp name="HTTPSampler.domain"/>
  8070. <stringProp name="HTTPSampler.port"/>
  8071. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8072. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8073. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8074. <stringProp name="HTTPSampler.contentEncoding"/>
  8075. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</stringProp>
  8076. <stringProp name="HTTPSampler.method">POST</stringProp>
  8077. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8078. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8079. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8080. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8081. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8082. <stringProp name="HTTPSampler.embedded_url_re"/>
  8083. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
  8084. <hashTree>
  8085. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  8086. <collectionProp name="HeaderManager.headers">
  8087. <elementProp name="" elementType="Header">
  8088. <stringProp name="Header.name">Referer</stringProp>
  8089. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  8090. </elementProp>
  8091. <elementProp name="Content-Type" elementType="Header">
  8092. <stringProp name="Header.name">Content-Type</stringProp>
  8093. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  8094. </elementProp>
  8095. <elementProp name="X-Requested-With" elementType="Header">
  8096. <stringProp name="Header.name">X-Requested-With</stringProp>
  8097. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  8098. </elementProp>
  8099. <elementProp name="Accept" elementType="Header">
  8100. <stringProp name="Header.name">Accept</stringProp>
  8101. <stringProp name="Header.value">application/json</stringProp>
  8102. </elementProp>
  8103. </collectionProp>
  8104. </HeaderManager>
  8105. <hashTree/>
  8106. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  8107. <collectionProp name="Asserion.test_strings">
  8108. <stringProp name="-297987887">"[0-9]+"</stringProp>
  8109. </collectionProp>
  8110. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8111. <boolProp name="Assertion.assume_success">false</boolProp>
  8112. <intProp name="Assertion.test_type">2</intProp>
  8113. </ResponseAssertion>
  8114. <hashTree/>
  8115. <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">
  8116. <stringProp name="VAR">order_id</stringProp>
  8117. <stringProp name="JSONPATH">$</stringProp>
  8118. <stringProp name="DEFAULT"/>
  8119. <stringProp name="VARIABLE"/>
  8120. <stringProp name="SUBJECT">BODY</stringProp>
  8121. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  8122. <hashTree/>
  8123. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8124. <collectionProp name="Asserion.test_strings">
  8125. <stringProp name="89649215">^\d+$</stringProp>
  8126. </collectionProp>
  8127. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8128. <boolProp name="Assertion.assume_success">false</boolProp>
  8129. <intProp name="Assertion.test_type">1</intProp>
  8130. <stringProp name="Assertion.scope">variable</stringProp>
  8131. <stringProp name="Scope.variable">order_id</stringProp>
  8132. </ResponseAssertion>
  8133. <hashTree/>
  8134. </hashTree>
  8135. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout success" enabled="true">
  8136. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8137. <collectionProp name="Arguments.arguments"/>
  8138. </elementProp>
  8139. <stringProp name="HTTPSampler.domain"/>
  8140. <stringProp name="HTTPSampler.port"/>
  8141. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8142. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8143. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8144. <stringProp name="HTTPSampler.contentEncoding"/>
  8145. <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</stringProp>
  8146. <stringProp name="HTTPSampler.method">GET</stringProp>
  8147. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8148. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8149. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8150. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8151. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8152. <stringProp name="HTTPSampler.embedded_url_re"/>
  8153. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_success.jmx</stringProp></HTTPSamplerProxy>
  8154. <hashTree>
  8155. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  8156. <collectionProp name="Asserion.test_strings">
  8157. <stringProp name="494863233">Thank you for your purchase!</stringProp>
  8158. <stringProp name="1635682758">Your order # is</stringProp>
  8159. </collectionProp>
  8160. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8161. <boolProp name="Assertion.assume_success">false</boolProp>
  8162. <intProp name="Assertion.test_type">2</intProp>
  8163. </ResponseAssertion>
  8164. <hashTree/>
  8165. </hashTree>
  8166. </hashTree>
  8167. </hashTree>
  8168. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Checkout By Customer" enabled="true">
  8169. <intProp name="ThroughputController.style">1</intProp>
  8170. <boolProp name="ThroughputController.perThread">false</boolProp>
  8171. <intProp name="ThroughputController.maxThroughput">1</intProp>
  8172. <stringProp name="ThroughputController.percentThroughput">${checkoutByCustomerPercentage}</stringProp>
  8173. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  8174. <hashTree>
  8175. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  8176. <stringProp name="script">
  8177. var tmpLabel = vars.get("testLabel")
  8178. if (tmpLabel) {
  8179. var testLabel = " (" + tmpLabel + ")"
  8180. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  8181. if (sampler.getName().indexOf(testLabel) == -1) {
  8182. sampler.setName(sampler.getName() + testLabel);
  8183. }
  8184. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  8185. sampler.setName("SetUp - " + sampler.getName());
  8186. }
  8187. } else {
  8188. testLabel = ""
  8189. }
  8190. </stringProp>
  8191. <stringProp name="scriptLanguage">javascript</stringProp>
  8192. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  8193. <hashTree/>
  8194. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  8195. <stringProp name="BeanShellSampler.query">
  8196. vars.put("testLabel", "Checkout By Customer");
  8197. </stringProp>
  8198. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8199. </BeanShellSampler>
  8200. <hashTree/>
  8201. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  8202. <collectionProp name="CookieManager.cookies">
  8203. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  8204. <stringProp name="Cookie.value">30</stringProp>
  8205. <stringProp name="Cookie.domain">${host}</stringProp>
  8206. <stringProp name="Cookie.path">/</stringProp>
  8207. <boolProp name="Cookie.secure">false</boolProp>
  8208. <longProp name="Cookie.expires">0</longProp>
  8209. <boolProp name="Cookie.path_specified">true</boolProp>
  8210. <boolProp name="Cookie.domain_specified">true</boolProp>
  8211. </elementProp>
  8212. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  8213. <stringProp name="Cookie.value">${form_key}</stringProp>
  8214. <stringProp name="Cookie.domain">${host}</stringProp>
  8215. <stringProp name="Cookie.path">${base_path}</stringProp>
  8216. <boolProp name="Cookie.secure">false</boolProp>
  8217. <longProp name="Cookie.expires">0</longProp>
  8218. <boolProp name="Cookie.path_specified">true</boolProp>
  8219. <boolProp name="Cookie.domain_specified">true</boolProp>
  8220. </elementProp>
  8221. </collectionProp>
  8222. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  8223. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  8224. <hashTree/>
  8225. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  8226. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  8227. <stringProp name="BeanShellSampler.query">
  8228. import java.util.Random;
  8229. Random random = new Random();
  8230. if (${seedForRandom} &gt; 0) {
  8231. random.setSeed(${seedForRandom} + ${__threadNum});
  8232. }
  8233. vars.putObject("randomIntGenerator", random);
  8234. </stringProp>
  8235. <stringProp name="BeanShellSampler.filename"/>
  8236. <stringProp name="BeanShellSampler.parameters"/>
  8237. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8238. </BeanShellSampler>
  8239. <hashTree/>
  8240. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  8241. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  8242. <stringProp name="BeanShellSampler.query">
  8243. vars.put("totalProductsAdded", "0");
  8244. </stringProp>
  8245. <stringProp name="BeanShellSampler.filename"/>
  8246. <stringProp name="BeanShellSampler.parameters"/>
  8247. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8248. </BeanShellSampler>
  8249. <hashTree/>
  8250. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  8251. <stringProp name="scriptLanguage">javascript</stringProp>
  8252. <stringProp name="parameters"/>
  8253. <stringProp name="filename"/>
  8254. <stringProp name="cacheKey"/>
  8255. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  8256. var categories = props.get("categories");
  8257. number = random.nextInt(categories.length);
  8258. vars.put("category_url_key", categories[number].url_key);
  8259. vars.put("category_name", categories[number].name);
  8260. vars.put("category_id", categories[number].id);
  8261. vars.putObject("category", categories[number]);
  8262. </stringProp>
  8263. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  8264. <hashTree/>
  8265. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  8266. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  8267. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  8268. <hashTree>
  8269. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  8270. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  8271. <stringProp name="BeanShellSampler.query">
  8272. customerUserList = props.get("customer_emails_list");
  8273. customerUser = customerUserList.poll();
  8274. if (customerUser == null) {
  8275. SampleResult.setResponseMessage("customerUser list is empty");
  8276. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  8277. IsSuccess=false;
  8278. SampleResult.setSuccessful(false);
  8279. SampleResult.setStopThread(true);
  8280. }
  8281. vars.put("customer_email", customerUser);
  8282. </stringProp>
  8283. <stringProp name="BeanShellSampler.filename"/>
  8284. <stringProp name="BeanShellSampler.parameters"/>
  8285. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8286. </BeanShellSampler>
  8287. <hashTree/>
  8288. </hashTree>
  8289. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  8290. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8291. <collectionProp name="Arguments.arguments"/>
  8292. </elementProp>
  8293. <stringProp name="HTTPSampler.domain"/>
  8294. <stringProp name="HTTPSampler.port"/>
  8295. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8296. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8297. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8298. <stringProp name="HTTPSampler.contentEncoding"/>
  8299. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  8300. <stringProp name="HTTPSampler.method">GET</stringProp>
  8301. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8302. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8303. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8304. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8305. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8306. <stringProp name="HTTPSampler.embedded_url_re"/>
  8307. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  8308. <hashTree>
  8309. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8310. <collectionProp name="Asserion.test_strings">
  8311. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  8312. </collectionProp>
  8313. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8314. <boolProp name="Assertion.assume_success">false</boolProp>
  8315. <intProp name="Assertion.test_type">2</intProp>
  8316. </ResponseAssertion>
  8317. <hashTree/>
  8318. </hashTree>
  8319. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  8320. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8321. <collectionProp name="Arguments.arguments"/>
  8322. </elementProp>
  8323. <stringProp name="HTTPSampler.domain"/>
  8324. <stringProp name="HTTPSampler.port"/>
  8325. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8326. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8327. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8328. <stringProp name="HTTPSampler.contentEncoding"/>
  8329. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  8330. <stringProp name="HTTPSampler.method">GET</stringProp>
  8331. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8332. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8333. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8334. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8335. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8336. <stringProp name="HTTPSampler.embedded_url_re"/>
  8337. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  8338. <hashTree>
  8339. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8340. <collectionProp name="Asserion.test_strings">
  8341. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  8342. </collectionProp>
  8343. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8344. <boolProp name="Assertion.assume_success">false</boolProp>
  8345. <intProp name="Assertion.test_type">2</intProp>
  8346. </ResponseAssertion>
  8347. <hashTree/>
  8348. </hashTree>
  8349. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  8350. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8351. <collectionProp name="Arguments.arguments">
  8352. <elementProp name="form_key" elementType="HTTPArgument">
  8353. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8354. <stringProp name="Argument.value">${form_key}</stringProp>
  8355. <stringProp name="Argument.metadata">=</stringProp>
  8356. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8357. <stringProp name="Argument.name">form_key</stringProp>
  8358. </elementProp>
  8359. <elementProp name="login[username]" elementType="HTTPArgument">
  8360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8361. <stringProp name="Argument.value">${customer_email}</stringProp>
  8362. <stringProp name="Argument.metadata">=</stringProp>
  8363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8364. <stringProp name="Argument.name">login[username]</stringProp>
  8365. </elementProp>
  8366. <elementProp name="login[password]" elementType="HTTPArgument">
  8367. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8368. <stringProp name="Argument.value">${customer_password}</stringProp>
  8369. <stringProp name="Argument.metadata">=</stringProp>
  8370. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8371. <stringProp name="Argument.name">login[password]</stringProp>
  8372. </elementProp>
  8373. <elementProp name="send" elementType="HTTPArgument">
  8374. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8375. <stringProp name="Argument.value"/>
  8376. <stringProp name="Argument.metadata">=</stringProp>
  8377. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8378. <stringProp name="Argument.name">send</stringProp>
  8379. </elementProp>
  8380. </collectionProp>
  8381. </elementProp>
  8382. <stringProp name="HTTPSampler.domain"/>
  8383. <stringProp name="HTTPSampler.port"/>
  8384. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8385. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8386. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8387. <stringProp name="HTTPSampler.contentEncoding"/>
  8388. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  8389. <stringProp name="HTTPSampler.method">POST</stringProp>
  8390. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8391. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8392. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8393. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8394. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8395. <stringProp name="HTTPSampler.embedded_url_re"/>
  8396. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  8397. <hashTree>
  8398. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8399. <collectionProp name="Asserion.test_strings">
  8400. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  8401. </collectionProp>
  8402. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8403. <boolProp name="Assertion.assume_success">false</boolProp>
  8404. <intProp name="Assertion.test_type">2</intProp>
  8405. </ResponseAssertion>
  8406. <hashTree/>
  8407. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  8408. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  8409. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  8410. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  8411. <stringProp name="RegexExtractor.template">$1$</stringProp>
  8412. <stringProp name="RegexExtractor.default"/>
  8413. <stringProp name="RegexExtractor.match_number">1</stringProp>
  8414. </RegexExtractor>
  8415. <hashTree/>
  8416. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  8417. <collectionProp name="Asserion.test_strings">
  8418. <stringProp name="2845929">^.+$</stringProp>
  8419. </collectionProp>
  8420. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8421. <boolProp name="Assertion.assume_success">false</boolProp>
  8422. <intProp name="Assertion.test_type">1</intProp>
  8423. <stringProp name="Assertion.scope">variable</stringProp>
  8424. <stringProp name="Scope.variable">addressId</stringProp>
  8425. </ResponseAssertion>
  8426. <hashTree/>
  8427. </hashTree>
  8428. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  8429. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8430. <collectionProp name="Arguments.arguments">
  8431. <elementProp name="sections" elementType="HTTPArgument">
  8432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8433. <stringProp name="Argument.value"/>
  8434. <stringProp name="Argument.metadata">=</stringProp>
  8435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8436. <stringProp name="Argument.name">sections</stringProp>
  8437. </elementProp>
  8438. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  8439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8440. <stringProp name="Argument.value">false</stringProp>
  8441. <stringProp name="Argument.metadata">=</stringProp>
  8442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8443. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  8444. </elementProp>
  8445. <elementProp name="_" elementType="HTTPArgument">
  8446. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8447. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  8448. <stringProp name="Argument.metadata">=</stringProp>
  8449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8450. <stringProp name="Argument.name">_</stringProp>
  8451. </elementProp>
  8452. </collectionProp>
  8453. </elementProp>
  8454. <stringProp name="HTTPSampler.domain"/>
  8455. <stringProp name="HTTPSampler.port"/>
  8456. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8457. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8458. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8459. <stringProp name="HTTPSampler.contentEncoding"/>
  8460. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  8461. <stringProp name="HTTPSampler.method">GET</stringProp>
  8462. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8463. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8464. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8465. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8466. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8467. <stringProp name="HTTPSampler.embedded_url_re"/>
  8468. </HTTPSamplerProxy>
  8469. <hashTree/>
  8470. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  8471. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8472. <collectionProp name="Arguments.arguments"/>
  8473. </elementProp>
  8474. <stringProp name="HTTPSampler.domain"/>
  8475. <stringProp name="HTTPSampler.port"/>
  8476. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8477. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8478. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8479. <stringProp name="HTTPSampler.contentEncoding"/>
  8480. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  8481. <stringProp name="HTTPSampler.method">GET</stringProp>
  8482. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8483. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8484. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8485. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8486. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8487. <stringProp name="HTTPSampler.embedded_url_re"/>
  8488. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  8489. <hashTree>
  8490. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8491. <collectionProp name="Asserion.test_strings">
  8492. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  8493. </collectionProp>
  8494. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8495. <boolProp name="Assertion.assume_success">false</boolProp>
  8496. <intProp name="Assertion.test_type">6</intProp>
  8497. </ResponseAssertion>
  8498. <hashTree/>
  8499. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  8500. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  8501. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  8502. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  8503. <stringProp name="RegexExtractor.template">$1$</stringProp>
  8504. <stringProp name="RegexExtractor.default"/>
  8505. <stringProp name="RegexExtractor.match_number">1</stringProp>
  8506. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  8507. </RegexExtractor>
  8508. <hashTree/>
  8509. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  8510. <collectionProp name="Asserion.test_strings">
  8511. <stringProp name="1191417111">^[0-9]+$</stringProp>
  8512. </collectionProp>
  8513. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8514. <boolProp name="Assertion.assume_success">false</boolProp>
  8515. <intProp name="Assertion.test_type">1</intProp>
  8516. <stringProp name="Assertion.scope">variable</stringProp>
  8517. <stringProp name="Scope.variable">category_id</stringProp>
  8518. </ResponseAssertion>
  8519. <hashTree/>
  8520. </hashTree>
  8521. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
  8522. <boolProp name="LoopController.continue_forever">true</boolProp>
  8523. <stringProp name="LoopController.loops">2</stringProp>
  8524. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  8525. <hashTree>
  8526. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  8527. <stringProp name="CounterConfig.start">1</stringProp>
  8528. <stringProp name="CounterConfig.end"/>
  8529. <stringProp name="CounterConfig.incr">1</stringProp>
  8530. <stringProp name="CounterConfig.name">_counter</stringProp>
  8531. <stringProp name="CounterConfig.format"/>
  8532. <boolProp name="CounterConfig.per_user">true</boolProp>
  8533. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  8534. </CounterConfig>
  8535. <hashTree/>
  8536. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  8537. <stringProp name="BeanShellSampler.query">
  8538. import java.util.Random;
  8539. Random random = vars.getObject("randomIntGenerator");
  8540. number = random.nextInt(props.get("simple_products_list").size());
  8541. product = props.get("simple_products_list").get(number);
  8542. vars.put("product_url_key", product.get("url_key"));
  8543. vars.put("product_id", product.get("id"));
  8544. vars.put("product_name", product.get("title"));
  8545. vars.put("product_uenc", product.get("uenc"));
  8546. vars.put("product_sku", product.get("sku"));
  8547. </stringProp>
  8548. <stringProp name="BeanShellSampler.filename"/>
  8549. <stringProp name="BeanShellSampler.parameters"/>
  8550. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8551. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  8552. <hashTree/>
  8553. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  8554. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  8555. <stringProp name="BeanShellSampler.query">
  8556. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  8557. productsAdded = productsAdded + 1;
  8558. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  8559. </stringProp>
  8560. <stringProp name="BeanShellSampler.filename"/>
  8561. <stringProp name="BeanShellSampler.parameters"/>
  8562. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8563. </BeanShellSampler>
  8564. <hashTree/>
  8565. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  8566. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8567. <collectionProp name="Arguments.arguments"/>
  8568. </elementProp>
  8569. <stringProp name="HTTPSampler.domain"/>
  8570. <stringProp name="HTTPSampler.port"/>
  8571. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8572. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8573. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8574. <stringProp name="HTTPSampler.contentEncoding"/>
  8575. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  8576. <stringProp name="HTTPSampler.method">GET</stringProp>
  8577. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8578. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8579. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8580. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8581. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8582. <stringProp name="HTTPSampler.embedded_url_re"/>
  8583. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  8584. <hashTree>
  8585. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8586. <collectionProp name="Asserion.test_strings">
  8587. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  8588. </collectionProp>
  8589. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8590. <boolProp name="Assertion.assume_success">false</boolProp>
  8591. <intProp name="Assertion.test_type">2</intProp>
  8592. </ResponseAssertion>
  8593. <hashTree/>
  8594. </hashTree>
  8595. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  8596. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8597. <collectionProp name="Arguments.arguments">
  8598. <elementProp name="product" elementType="HTTPArgument">
  8599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8600. <stringProp name="Argument.value">${product_id}</stringProp>
  8601. <stringProp name="Argument.metadata">=</stringProp>
  8602. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8603. <stringProp name="Argument.name">product</stringProp>
  8604. </elementProp>
  8605. <elementProp name="related_product" elementType="HTTPArgument">
  8606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8607. <stringProp name="Argument.value"/>
  8608. <stringProp name="Argument.metadata">=</stringProp>
  8609. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8610. <stringProp name="Argument.name">related_product</stringProp>
  8611. </elementProp>
  8612. <elementProp name="qty" elementType="HTTPArgument">
  8613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8614. <stringProp name="Argument.value">1</stringProp>
  8615. <stringProp name="Argument.metadata">=</stringProp>
  8616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8617. <stringProp name="Argument.name">qty</stringProp>
  8618. </elementProp>
  8619. <elementProp name="form_key" elementType="HTTPArgument">
  8620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8621. <stringProp name="Argument.value">${form_key}</stringProp>
  8622. <stringProp name="Argument.metadata">=</stringProp>
  8623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8624. <stringProp name="Argument.name">form_key</stringProp>
  8625. </elementProp>
  8626. </collectionProp>
  8627. </elementProp>
  8628. <stringProp name="HTTPSampler.domain"/>
  8629. <stringProp name="HTTPSampler.port"/>
  8630. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8631. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8632. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8633. <stringProp name="HTTPSampler.contentEncoding"/>
  8634. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  8635. <stringProp name="HTTPSampler.method">POST</stringProp>
  8636. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8637. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8638. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8639. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8640. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8641. <stringProp name="HTTPSampler.embedded_url_re"/>
  8642. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  8643. <hashTree>
  8644. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  8645. <collectionProp name="HeaderManager.headers">
  8646. <elementProp name="" elementType="Header">
  8647. <stringProp name="Header.name">X-Requested-With</stringProp>
  8648. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  8649. </elementProp>
  8650. </collectionProp>
  8651. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  8652. <hashTree/>
  8653. </hashTree>
  8654. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  8655. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8656. <collectionProp name="Arguments.arguments">
  8657. <elementProp name="sections" elementType="HTTPArgument">
  8658. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8659. <stringProp name="Argument.value">cart,messages</stringProp>
  8660. <stringProp name="Argument.metadata">=</stringProp>
  8661. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8662. <stringProp name="Argument.name">sections</stringProp>
  8663. </elementProp>
  8664. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  8665. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8666. <stringProp name="Argument.value">true</stringProp>
  8667. <stringProp name="Argument.metadata">=</stringProp>
  8668. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8669. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  8670. </elementProp>
  8671. <elementProp name="_" elementType="HTTPArgument">
  8672. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8673. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  8674. <stringProp name="Argument.metadata">=</stringProp>
  8675. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8676. <stringProp name="Argument.name">_</stringProp>
  8677. </elementProp>
  8678. </collectionProp>
  8679. </elementProp>
  8680. <stringProp name="HTTPSampler.domain"/>
  8681. <stringProp name="HTTPSampler.port"/>
  8682. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8683. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8684. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8685. <stringProp name="HTTPSampler.contentEncoding"/>
  8686. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  8687. <stringProp name="HTTPSampler.method">GET</stringProp>
  8688. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8689. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8690. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8691. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8692. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8693. <stringProp name="HTTPSampler.embedded_url_re"/>
  8694. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  8695. <hashTree>
  8696. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8697. <collectionProp name="Asserion.test_strings">
  8698. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  8699. </collectionProp>
  8700. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8701. <boolProp name="Assertion.assume_success">false</boolProp>
  8702. <intProp name="Assertion.test_type">2</intProp>
  8703. </ResponseAssertion>
  8704. <hashTree/>
  8705. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8706. <collectionProp name="Asserion.test_strings">
  8707. <stringProp name="2057973164">This product is out of stock.</stringProp>
  8708. </collectionProp>
  8709. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8710. <boolProp name="Assertion.assume_success">false</boolProp>
  8711. <intProp name="Assertion.test_type">6</intProp>
  8712. </ResponseAssertion>
  8713. <hashTree/>
  8714. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8715. <collectionProp name="Asserion.test_strings">
  8716. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  8717. </collectionProp>
  8718. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8719. <boolProp name="Assertion.assume_success">false</boolProp>
  8720. <intProp name="Assertion.test_type">2</intProp>
  8721. </ResponseAssertion>
  8722. <hashTree/>
  8723. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  8724. <collectionProp name="HeaderManager.headers">
  8725. <elementProp name="" elementType="Header">
  8726. <stringProp name="Header.name">X-Requested-With</stringProp>
  8727. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  8728. </elementProp>
  8729. </collectionProp>
  8730. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  8731. <hashTree/>
  8732. </hashTree>
  8733. </hashTree>
  8734. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
  8735. <boolProp name="LoopController.continue_forever">true</boolProp>
  8736. <stringProp name="LoopController.loops">1</stringProp>
  8737. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  8738. <hashTree>
  8739. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  8740. <stringProp name="CounterConfig.start">1</stringProp>
  8741. <stringProp name="CounterConfig.end"/>
  8742. <stringProp name="CounterConfig.incr">1</stringProp>
  8743. <stringProp name="CounterConfig.name">_counter</stringProp>
  8744. <stringProp name="CounterConfig.format"/>
  8745. <boolProp name="CounterConfig.per_user">true</boolProp>
  8746. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  8747. </CounterConfig>
  8748. <hashTree/>
  8749. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  8750. <stringProp name="BeanShellSampler.query">
  8751. import java.util.Random;
  8752. Random random = vars.getObject("randomIntGenerator");
  8753. number = random.nextInt(props.get("configurable_products_list").size());
  8754. product = props.get("configurable_products_list").get(number);
  8755. vars.put("product_url_key", product.get("url_key"));
  8756. vars.put("product_id", product.get("id"));
  8757. vars.put("product_name", product.get("title"));
  8758. vars.put("product_uenc", product.get("uenc"));
  8759. vars.put("product_sku", product.get("sku"));
  8760. </stringProp>
  8761. <stringProp name="BeanShellSampler.filename"/>
  8762. <stringProp name="BeanShellSampler.parameters"/>
  8763. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8764. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  8765. <hashTree/>
  8766. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  8767. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  8768. <stringProp name="BeanShellSampler.query">
  8769. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  8770. productsAdded = productsAdded + 1;
  8771. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  8772. </stringProp>
  8773. <stringProp name="BeanShellSampler.filename"/>
  8774. <stringProp name="BeanShellSampler.parameters"/>
  8775. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  8776. </BeanShellSampler>
  8777. <hashTree/>
  8778. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  8779. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8780. <collectionProp name="Arguments.arguments"/>
  8781. </elementProp>
  8782. <stringProp name="HTTPSampler.domain"/>
  8783. <stringProp name="HTTPSampler.port"/>
  8784. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8785. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8786. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8787. <stringProp name="HTTPSampler.contentEncoding"/>
  8788. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  8789. <stringProp name="HTTPSampler.method">GET</stringProp>
  8790. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8791. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8792. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8793. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8794. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8795. <stringProp name="HTTPSampler.embedded_url_re"/>
  8796. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  8797. <hashTree>
  8798. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  8799. <collectionProp name="Asserion.test_strings">
  8800. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  8801. </collectionProp>
  8802. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8803. <boolProp name="Assertion.assume_success">false</boolProp>
  8804. <intProp name="Assertion.test_type">2</intProp>
  8805. </ResponseAssertion>
  8806. <hashTree/>
  8807. </hashTree>
  8808. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  8809. <boolProp name="LoopController.continue_forever">true</boolProp>
  8810. <stringProp name="LoopController.loops">1</stringProp>
  8811. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  8812. <hashTree>
  8813. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  8814. <collectionProp name="HeaderManager.headers">
  8815. <elementProp name="" elementType="Header">
  8816. <stringProp name="Header.name">Content-Type</stringProp>
  8817. <stringProp name="Header.value">application/json</stringProp>
  8818. </elementProp>
  8819. <elementProp name="" elementType="Header">
  8820. <stringProp name="Header.name">Accept</stringProp>
  8821. <stringProp name="Header.value">*/*</stringProp>
  8822. </elementProp>
  8823. </collectionProp>
  8824. </HeaderManager>
  8825. <hashTree/>
  8826. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  8827. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  8828. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  8829. <collectionProp name="Arguments.arguments">
  8830. <elementProp name="" elementType="HTTPArgument">
  8831. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  8832. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  8833. <stringProp name="Argument.metadata">=</stringProp>
  8834. </elementProp>
  8835. </collectionProp>
  8836. </elementProp>
  8837. <stringProp name="HTTPSampler.domain"/>
  8838. <stringProp name="HTTPSampler.port"/>
  8839. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8840. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8841. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8842. <stringProp name="HTTPSampler.contentEncoding"/>
  8843. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  8844. <stringProp name="HTTPSampler.method">POST</stringProp>
  8845. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8846. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8847. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8848. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8849. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8850. <stringProp name="HTTPSampler.embedded_url_re"/>
  8851. </HTTPSamplerProxy>
  8852. <hashTree>
  8853. <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">
  8854. <stringProp name="VAR">admin_token</stringProp>
  8855. <stringProp name="JSONPATH">$</stringProp>
  8856. <stringProp name="DEFAULT"/>
  8857. <stringProp name="VARIABLE"/>
  8858. <stringProp name="SUBJECT">BODY</stringProp>
  8859. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  8860. <hashTree/>
  8861. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  8862. <collectionProp name="Asserion.test_strings">
  8863. <stringProp name="484395188">^.{10,}$</stringProp>
  8864. </collectionProp>
  8865. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  8866. <boolProp name="Assertion.assume_success">false</boolProp>
  8867. <intProp name="Assertion.test_type">1</intProp>
  8868. <stringProp name="Assertion.scope">variable</stringProp>
  8869. <stringProp name="Scope.variable">admin_token</stringProp>
  8870. </ResponseAssertion>
  8871. <hashTree/>
  8872. </hashTree>
  8873. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  8874. <collectionProp name="HeaderManager.headers">
  8875. <elementProp name="" elementType="Header">
  8876. <stringProp name="Header.name">Authorization</stringProp>
  8877. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  8878. </elementProp>
  8879. </collectionProp>
  8880. </HeaderManager>
  8881. <hashTree/>
  8882. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  8883. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8884. <collectionProp name="Arguments.arguments"/>
  8885. </elementProp>
  8886. <stringProp name="HTTPSampler.domain"/>
  8887. <stringProp name="HTTPSampler.port"/>
  8888. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8889. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8890. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8891. <stringProp name="HTTPSampler.contentEncoding"/>
  8892. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  8893. <stringProp name="HTTPSampler.method">GET</stringProp>
  8894. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8895. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8896. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8897. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8898. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8899. <stringProp name="HTTPSampler.embedded_url_re"/>
  8900. </HTTPSamplerProxy>
  8901. <hashTree>
  8902. <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">
  8903. <stringProp name="VAR">attribute_ids</stringProp>
  8904. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  8905. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  8906. <stringProp name="VARIABLE"/>
  8907. <stringProp name="SUBJECT">BODY</stringProp>
  8908. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  8909. <hashTree/>
  8910. <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">
  8911. <stringProp name="VAR">option_values</stringProp>
  8912. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  8913. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  8914. <stringProp name="VARIABLE"/>
  8915. <stringProp name="SUBJECT">BODY</stringProp>
  8916. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  8917. <hashTree/>
  8918. </hashTree>
  8919. </hashTree>
  8920. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  8921. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  8922. <collectionProp name="Arguments.arguments">
  8923. <elementProp name="product" elementType="HTTPArgument">
  8924. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8925. <stringProp name="Argument.value">${product_id}</stringProp>
  8926. <stringProp name="Argument.metadata">=</stringProp>
  8927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8928. <stringProp name="Argument.name">product</stringProp>
  8929. </elementProp>
  8930. <elementProp name="related_product" elementType="HTTPArgument">
  8931. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8932. <stringProp name="Argument.value"/>
  8933. <stringProp name="Argument.metadata">=</stringProp>
  8934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8935. <stringProp name="Argument.name">related_product</stringProp>
  8936. </elementProp>
  8937. <elementProp name="qty" elementType="HTTPArgument">
  8938. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8939. <stringProp name="Argument.value">1</stringProp>
  8940. <stringProp name="Argument.metadata">=</stringProp>
  8941. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8942. <stringProp name="Argument.name">qty</stringProp>
  8943. </elementProp>
  8944. <elementProp name="form_key" elementType="HTTPArgument">
  8945. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  8946. <stringProp name="Argument.value">${form_key}</stringProp>
  8947. <stringProp name="Argument.metadata">=</stringProp>
  8948. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  8949. <stringProp name="Argument.name">form_key</stringProp>
  8950. </elementProp>
  8951. </collectionProp>
  8952. </elementProp>
  8953. <stringProp name="HTTPSampler.domain"/>
  8954. <stringProp name="HTTPSampler.port"/>
  8955. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  8956. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  8957. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  8958. <stringProp name="HTTPSampler.contentEncoding"/>
  8959. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  8960. <stringProp name="HTTPSampler.method">POST</stringProp>
  8961. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  8962. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  8963. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  8964. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  8965. <boolProp name="HTTPSampler.monitor">false</boolProp>
  8966. <stringProp name="HTTPSampler.embedded_url_re"/>
  8967. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  8968. <hashTree>
  8969. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  8970. <boolProp name="resetInterpreter">false</boolProp>
  8971. <stringProp name="parameters"/>
  8972. <stringProp name="filename"/>
  8973. <stringProp name="script">
  8974. try {
  8975. attribute_ids = vars.get("attribute_ids");
  8976. option_values = vars.get("option_values");
  8977. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  8978. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  8979. attribute_ids_array = attribute_ids.split(",");
  8980. option_values_array = option_values.split(",");
  8981. args = ctx.getCurrentSampler().getArguments();
  8982. it = args.iterator();
  8983. while (it.hasNext()) {
  8984. argument = it.next();
  8985. if (argument.getStringValue().contains("${")) {
  8986. args.removeArgument(argument.getName());
  8987. }
  8988. }
  8989. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  8990. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  8991. }
  8992. } catch (Exception e) {
  8993. log.error("eror&#x2026;", e);
  8994. }
  8995. </stringProp>
  8996. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  8997. <hashTree/>
  8998. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  8999. <collectionProp name="HeaderManager.headers">
  9000. <elementProp name="" elementType="Header">
  9001. <stringProp name="Header.name">X-Requested-With</stringProp>
  9002. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  9003. </elementProp>
  9004. </collectionProp>
  9005. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  9006. <hashTree/>
  9007. </hashTree>
  9008. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  9009. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9010. <collectionProp name="Arguments.arguments">
  9011. <elementProp name="sections" elementType="HTTPArgument">
  9012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9013. <stringProp name="Argument.value">cart,messages</stringProp>
  9014. <stringProp name="Argument.metadata">=</stringProp>
  9015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9016. <stringProp name="Argument.name">sections</stringProp>
  9017. </elementProp>
  9018. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  9019. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9020. <stringProp name="Argument.value">true</stringProp>
  9021. <stringProp name="Argument.metadata">=</stringProp>
  9022. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9023. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  9024. </elementProp>
  9025. <elementProp name="_" elementType="HTTPArgument">
  9026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9027. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  9028. <stringProp name="Argument.metadata">=</stringProp>
  9029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9030. <stringProp name="Argument.name">_</stringProp>
  9031. </elementProp>
  9032. </collectionProp>
  9033. </elementProp>
  9034. <stringProp name="HTTPSampler.domain"/>
  9035. <stringProp name="HTTPSampler.port"/>
  9036. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9037. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9038. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9039. <stringProp name="HTTPSampler.contentEncoding"/>
  9040. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  9041. <stringProp name="HTTPSampler.method">GET</stringProp>
  9042. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9043. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9044. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9045. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9046. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9047. <stringProp name="HTTPSampler.embedded_url_re"/>
  9048. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  9049. <hashTree>
  9050. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9051. <collectionProp name="Asserion.test_strings">
  9052. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  9053. </collectionProp>
  9054. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9055. <boolProp name="Assertion.assume_success">false</boolProp>
  9056. <intProp name="Assertion.test_type">2</intProp>
  9057. </ResponseAssertion>
  9058. <hashTree/>
  9059. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9060. <collectionProp name="Asserion.test_strings">
  9061. <stringProp name="2057973164">This product is out of stock.</stringProp>
  9062. </collectionProp>
  9063. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9064. <boolProp name="Assertion.assume_success">false</boolProp>
  9065. <intProp name="Assertion.test_type">6</intProp>
  9066. </ResponseAssertion>
  9067. <hashTree/>
  9068. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9069. <collectionProp name="Asserion.test_strings">
  9070. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  9071. </collectionProp>
  9072. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9073. <boolProp name="Assertion.assume_success">false</boolProp>
  9074. <intProp name="Assertion.test_type">2</intProp>
  9075. </ResponseAssertion>
  9076. <hashTree/>
  9077. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  9078. <collectionProp name="HeaderManager.headers">
  9079. <elementProp name="" elementType="Header">
  9080. <stringProp name="Header.name">X-Requested-With</stringProp>
  9081. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  9082. </elementProp>
  9083. </collectionProp>
  9084. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  9085. <hashTree/>
  9086. </hashTree>
  9087. </hashTree>
  9088. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Checkout" enabled="true">
  9089. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  9090. </GenericController>
  9091. <hashTree>
  9092. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  9093. <stringProp name="scriptLanguage">javascript</stringProp>
  9094. <stringProp name="parameters"/>
  9095. <stringProp name="filename"/>
  9096. <stringProp name="cacheKey"/>
  9097. <stringProp name="script">
  9098. vars.put("alabama_region_id", props.get("alabama_region_id"));
  9099. vars.put("california_region_id", props.get("california_region_id"));
  9100. </stringProp>
  9101. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  9102. <hashTree/>
  9103. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout start" enabled="true">
  9104. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9105. <collectionProp name="Arguments.arguments"/>
  9106. </elementProp>
  9107. <stringProp name="HTTPSampler.domain"/>
  9108. <stringProp name="HTTPSampler.port"/>
  9109. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9110. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9111. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9112. <stringProp name="HTTPSampler.contentEncoding"/>
  9113. <stringProp name="HTTPSampler.path">${base_path}checkout/</stringProp>
  9114. <stringProp name="HTTPSampler.method">GET</stringProp>
  9115. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9116. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9117. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9118. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9119. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9120. <stringProp name="HTTPSampler.embedded_url_re"/>
  9121. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_start.jmx</stringProp></HTTPSamplerProxy>
  9122. <hashTree>
  9123. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9124. <collectionProp name="Asserion.test_strings">
  9125. <stringProp name="-1403911775">&lt;title&gt;Checkout&lt;/title&gt;</stringProp>
  9126. </collectionProp>
  9127. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9128. <boolProp name="Assertion.assume_success">false</boolProp>
  9129. <intProp name="Assertion.test_type">2</intProp>
  9130. </ResponseAssertion>
  9131. <hashTree/>
  9132. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9133. <collectionProp name="Asserion.test_strings">
  9134. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  9135. </collectionProp>
  9136. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9137. <boolProp name="Assertion.assume_success">false</boolProp>
  9138. <intProp name="Assertion.test_type">6</intProp>
  9139. </ResponseAssertion>
  9140. <hashTree/>
  9141. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Cart Id" enabled="true">
  9142. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  9143. <stringProp name="RegexExtractor.refname">cart_id</stringProp>
  9144. <stringProp name="RegexExtractor.regex">"quoteData":{"entity_id":"([^'"]+)",</stringProp>
  9145. <stringProp name="RegexExtractor.template">$1$</stringProp>
  9146. <stringProp name="RegexExtractor.default"/>
  9147. <stringProp name="RegexExtractor.match_number">1</stringProp>
  9148. </RegexExtractor>
  9149. <hashTree/>
  9150. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address Id" enabled="true">
  9151. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  9152. <stringProp name="RegexExtractor.refname">address_id</stringProp>
  9153. <stringProp name="RegexExtractor.regex">"default_billing":"([^'"]+)",</stringProp>
  9154. <stringProp name="RegexExtractor.template">$1$</stringProp>
  9155. <stringProp name="RegexExtractor.default"/>
  9156. <stringProp name="RegexExtractor.match_number">1</stringProp>
  9157. </RegexExtractor>
  9158. <hashTree/>
  9159. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Customer Id" enabled="true">
  9160. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  9161. <stringProp name="RegexExtractor.refname">customer_id</stringProp>
  9162. <stringProp name="RegexExtractor.regex">"customer_id":([^'",]+),</stringProp>
  9163. <stringProp name="RegexExtractor.template">$1$</stringProp>
  9164. <stringProp name="RegexExtractor.default"/>
  9165. <stringProp name="RegexExtractor.match_number">1</stringProp>
  9166. </RegexExtractor>
  9167. <hashTree/>
  9168. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Id extracted" enabled="true">
  9169. <collectionProp name="Asserion.test_strings">
  9170. <stringProp name="2845929">^.+$</stringProp>
  9171. </collectionProp>
  9172. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9173. <boolProp name="Assertion.assume_success">false</boolProp>
  9174. <intProp name="Assertion.test_type">1</intProp>
  9175. <stringProp name="Assertion.scope">variable</stringProp>
  9176. <stringProp name="Scope.variable">cart_id</stringProp>
  9177. </ResponseAssertion>
  9178. <hashTree/>
  9179. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Address Id extracted" enabled="true">
  9180. <collectionProp name="Asserion.test_strings">
  9181. <stringProp name="576002869">[0-9]+$</stringProp>
  9182. </collectionProp>
  9183. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9184. <boolProp name="Assertion.assume_success">false</boolProp>
  9185. <intProp name="Assertion.test_type">1</intProp>
  9186. <stringProp name="Assertion.scope">variable</stringProp>
  9187. <stringProp name="Scope.variable">address_id</stringProp>
  9188. </ResponseAssertion>
  9189. <hashTree/>
  9190. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Customer Id extracted" enabled="true">
  9191. <collectionProp name="Asserion.test_strings">
  9192. <stringProp name="576002869">[0-9]+$</stringProp>
  9193. </collectionProp>
  9194. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9195. <boolProp name="Assertion.assume_success">false</boolProp>
  9196. <intProp name="Assertion.test_type">1</intProp>
  9197. <stringProp name="Assertion.scope">variable</stringProp>
  9198. <stringProp name="Scope.variable">customer_id</stringProp>
  9199. </ResponseAssertion>
  9200. <hashTree/>
  9201. </hashTree>
  9202. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  9203. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  9204. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  9205. <collectionProp name="Arguments.arguments">
  9206. <elementProp name="" elementType="HTTPArgument">
  9207. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  9208. <stringProp name="Argument.value">{"addressId":"${addressId}"}</stringProp>
  9209. <stringProp name="Argument.metadata">=</stringProp>
  9210. </elementProp>
  9211. </collectionProp>
  9212. </elementProp>
  9213. <stringProp name="HTTPSampler.domain"/>
  9214. <stringProp name="HTTPSampler.port"/>
  9215. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9216. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9217. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9218. <stringProp name="HTTPSampler.contentEncoding"/>
  9219. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/estimate-shipping-methods-by-address-id</stringProp>
  9220. <stringProp name="HTTPSampler.method">POST</stringProp>
  9221. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9222. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9223. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9224. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9225. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9226. <stringProp name="HTTPSampler.embedded_url_re"/>
  9227. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_estimate_shipping_methods.jmx</stringProp></HTTPSamplerProxy>
  9228. <hashTree>
  9229. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  9230. <collectionProp name="HeaderManager.headers">
  9231. <elementProp name="" elementType="Header">
  9232. <stringProp name="Header.name">Referer</stringProp>
  9233. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  9234. </elementProp>
  9235. <elementProp name="Content-Type" elementType="Header">
  9236. <stringProp name="Header.name">Content-Type</stringProp>
  9237. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  9238. </elementProp>
  9239. <elementProp name="X-Requested-With" elementType="Header">
  9240. <stringProp name="Header.name">X-Requested-With</stringProp>
  9241. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  9242. </elementProp>
  9243. <elementProp name="Accept" elementType="Header">
  9244. <stringProp name="Header.name">Accept</stringProp>
  9245. <stringProp name="Header.value">application/json</stringProp>
  9246. </elementProp>
  9247. </collectionProp>
  9248. </HeaderManager>
  9249. <hashTree/>
  9250. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  9251. <collectionProp name="Asserion.test_strings">
  9252. <stringProp name="-1224567411">"available":true</stringProp>
  9253. </collectionProp>
  9254. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9255. <boolProp name="Assertion.assume_success">false</boolProp>
  9256. <intProp name="Assertion.test_type">2</intProp>
  9257. </ResponseAssertion>
  9258. <hashTree/>
  9259. </hashTree>
  9260. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  9261. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  9262. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  9263. <collectionProp name="Arguments.arguments">
  9264. <elementProp name="" elementType="HTTPArgument">
  9265. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  9266. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","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>
  9267. <stringProp name="Argument.metadata">=</stringProp>
  9268. </elementProp>
  9269. </collectionProp>
  9270. </elementProp>
  9271. <stringProp name="HTTPSampler.domain"/>
  9272. <stringProp name="HTTPSampler.port"/>
  9273. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9274. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9275. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9276. <stringProp name="HTTPSampler.contentEncoding"/>
  9277. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/shipping-information</stringProp>
  9278. <stringProp name="HTTPSampler.method">POST</stringProp>
  9279. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9280. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9281. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9282. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9283. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9284. <stringProp name="HTTPSampler.embedded_url_re"/>
  9285. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
  9286. <hashTree>
  9287. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  9288. <collectionProp name="HeaderManager.headers">
  9289. <elementProp name="" elementType="Header">
  9290. <stringProp name="Header.name">Referer</stringProp>
  9291. <stringProp name="Header.value">${host}${base_path}checkout/onepage</stringProp>
  9292. </elementProp>
  9293. <elementProp name="Content-Type" elementType="Header">
  9294. <stringProp name="Header.name">Content-Type</stringProp>
  9295. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  9296. </elementProp>
  9297. <elementProp name="X-Requested-With" elementType="Header">
  9298. <stringProp name="Header.name">X-Requested-With</stringProp>
  9299. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  9300. </elementProp>
  9301. <elementProp name="Accept" elementType="Header">
  9302. <stringProp name="Header.name">Accept</stringProp>
  9303. <stringProp name="Header.value">application/json</stringProp>
  9304. </elementProp>
  9305. </collectionProp>
  9306. </HeaderManager>
  9307. <hashTree/>
  9308. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  9309. <collectionProp name="Asserion.test_strings">
  9310. <stringProp name="-740937264">{"payment_methods"</stringProp>
  9311. </collectionProp>
  9312. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9313. <boolProp name="Assertion.assume_success">false</boolProp>
  9314. <intProp name="Assertion.test_type">2</intProp>
  9315. </ResponseAssertion>
  9316. <hashTree/>
  9317. </hashTree>
  9318. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  9319. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  9320. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  9321. <collectionProp name="Arguments.arguments">
  9322. <elementProp name="" elementType="HTTPArgument">
  9323. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  9324. <stringProp name="Argument.value">{"cartId":"${cart_id}","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"}}</stringProp>
  9325. <stringProp name="Argument.metadata">=</stringProp>
  9326. </elementProp>
  9327. </collectionProp>
  9328. </elementProp>
  9329. <stringProp name="HTTPSampler.domain"/>
  9330. <stringProp name="HTTPSampler.port"/>
  9331. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9332. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9333. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9334. <stringProp name="HTTPSampler.contentEncoding"/>
  9335. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/payment-information</stringProp>
  9336. <stringProp name="HTTPSampler.method">POST</stringProp>
  9337. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9338. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9339. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9340. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9341. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9342. <stringProp name="HTTPSampler.embedded_url_re"/>
  9343. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
  9344. <hashTree>
  9345. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  9346. <collectionProp name="HeaderManager.headers">
  9347. <elementProp name="" elementType="Header">
  9348. <stringProp name="Header.name">Referer</stringProp>
  9349. <stringProp name="Header.value">${host}${base_path}checkout/onepage</stringProp>
  9350. </elementProp>
  9351. <elementProp name="" elementType="Header">
  9352. <stringProp name="Header.name">Content-Type</stringProp>
  9353. <stringProp name="Header.value">application/json; charset=UTF-8 </stringProp>
  9354. </elementProp>
  9355. <elementProp name="" elementType="Header">
  9356. <stringProp name="Header.name">Accept</stringProp>
  9357. <stringProp name="Header.value">application/json</stringProp>
  9358. </elementProp>
  9359. <elementProp name="" elementType="Header">
  9360. <stringProp name="Header.name">X-Requested-With</stringProp>
  9361. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  9362. </elementProp>
  9363. </collectionProp>
  9364. </HeaderManager>
  9365. <hashTree/>
  9366. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert order number" enabled="true">
  9367. <collectionProp name="Asserion.test_strings">
  9368. <stringProp name="-297987887">"[0-9]+"</stringProp>
  9369. </collectionProp>
  9370. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9371. <boolProp name="Assertion.assume_success">false</boolProp>
  9372. <intProp name="Assertion.test_type">2</intProp>
  9373. </ResponseAssertion>
  9374. <hashTree/>
  9375. </hashTree>
  9376. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout success" enabled="true">
  9377. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9378. <collectionProp name="Arguments.arguments"/>
  9379. </elementProp>
  9380. <stringProp name="HTTPSampler.domain"/>
  9381. <stringProp name="HTTPSampler.port"/>
  9382. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9383. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9384. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9385. <stringProp name="HTTPSampler.contentEncoding"/>
  9386. <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</stringProp>
  9387. <stringProp name="HTTPSampler.method">GET</stringProp>
  9388. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9389. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9390. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9391. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9392. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9393. <stringProp name="HTTPSampler.embedded_url_re"/>
  9394. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_success.jmx</stringProp></HTTPSamplerProxy>
  9395. <hashTree>
  9396. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  9397. <collectionProp name="Asserion.test_strings">
  9398. <stringProp name="494863233">Thank you for your purchase!</stringProp>
  9399. <stringProp name="-1590086334">Your order number is</stringProp>
  9400. </collectionProp>
  9401. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9402. <boolProp name="Assertion.assume_success">false</boolProp>
  9403. <intProp name="Assertion.test_type">2</intProp>
  9404. </ResponseAssertion>
  9405. <hashTree/>
  9406. </hashTree>
  9407. </hashTree>
  9408. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  9409. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9410. <collectionProp name="Arguments.arguments"/>
  9411. </elementProp>
  9412. <stringProp name="HTTPSampler.domain"/>
  9413. <stringProp name="HTTPSampler.port"/>
  9414. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9415. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9416. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9417. <stringProp name="HTTPSampler.contentEncoding"/>
  9418. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  9419. <stringProp name="HTTPSampler.method">GET</stringProp>
  9420. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9421. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9422. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9423. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9424. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9425. <stringProp name="HTTPSampler.embedded_url_re"/>
  9426. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  9427. <hashTree>
  9428. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  9429. <collectionProp name="Asserion.test_strings">
  9430. <stringProp name="1723813687">You are signed out.</stringProp>
  9431. </collectionProp>
  9432. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9433. <boolProp name="Assertion.assume_success">false</boolProp>
  9434. <intProp name="Assertion.test_type">2</intProp>
  9435. </ResponseAssertion>
  9436. <hashTree/>
  9437. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Clear Cookie" enabled="true">
  9438. <boolProp name="resetInterpreter">false</boolProp>
  9439. <stringProp name="parameters"/>
  9440. <stringProp name="filename"/>
  9441. <stringProp name="script">curSampler = ctx.getCurrentSampler();
  9442. if(curSampler.getName().contains("Checkout success")) {
  9443. manager = curSampler.getCookieManager();
  9444. manager.clear();
  9445. }
  9446. </stringProp>
  9447. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_clear_cookie.jmx</stringProp></BeanShellPostProcessor>
  9448. <hashTree/>
  9449. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  9450. <boolProp name="resetInterpreter">false</boolProp>
  9451. <stringProp name="parameters"/>
  9452. <stringProp name="filename"/>
  9453. <stringProp name="script">
  9454. customerUserList = props.get("customer_emails_list");
  9455. customerUserList.add(vars.get("customer_email"));
  9456. </stringProp>
  9457. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  9458. <hashTree/>
  9459. </hashTree>
  9460. </hashTree>
  9461. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Product Review By Customer" enabled="true">
  9462. <intProp name="ThroughputController.style">1</intProp>
  9463. <boolProp name="ThroughputController.perThread">false</boolProp>
  9464. <intProp name="ThroughputController.maxThroughput">1</intProp>
  9465. <stringProp name="ThroughputController.percentThroughput">${reviewByCustomerPercentage}</stringProp>
  9466. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  9467. <hashTree>
  9468. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  9469. <stringProp name="script">
  9470. var tmpLabel = vars.get("testLabel")
  9471. if (tmpLabel) {
  9472. var testLabel = " (" + tmpLabel + ")"
  9473. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  9474. if (sampler.getName().indexOf(testLabel) == -1) {
  9475. sampler.setName(sampler.getName() + testLabel);
  9476. }
  9477. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  9478. sampler.setName("SetUp - " + sampler.getName());
  9479. }
  9480. } else {
  9481. testLabel = ""
  9482. }
  9483. </stringProp>
  9484. <stringProp name="scriptLanguage">javascript</stringProp>
  9485. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  9486. <hashTree/>
  9487. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  9488. <stringProp name="BeanShellSampler.query">
  9489. vars.put("testLabel", "Product Review By Customer");
  9490. </stringProp>
  9491. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  9492. </BeanShellSampler>
  9493. <hashTree/>
  9494. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  9495. <collectionProp name="CookieManager.cookies">
  9496. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  9497. <stringProp name="Cookie.value">30</stringProp>
  9498. <stringProp name="Cookie.domain">${host}</stringProp>
  9499. <stringProp name="Cookie.path">/</stringProp>
  9500. <boolProp name="Cookie.secure">false</boolProp>
  9501. <longProp name="Cookie.expires">0</longProp>
  9502. <boolProp name="Cookie.path_specified">true</boolProp>
  9503. <boolProp name="Cookie.domain_specified">true</boolProp>
  9504. </elementProp>
  9505. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  9506. <stringProp name="Cookie.value">${form_key}</stringProp>
  9507. <stringProp name="Cookie.domain">${host}</stringProp>
  9508. <stringProp name="Cookie.path">${base_path}</stringProp>
  9509. <boolProp name="Cookie.secure">false</boolProp>
  9510. <longProp name="Cookie.expires">0</longProp>
  9511. <boolProp name="Cookie.path_specified">true</boolProp>
  9512. <boolProp name="Cookie.domain_specified">true</boolProp>
  9513. </elementProp>
  9514. </collectionProp>
  9515. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  9516. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  9517. <hashTree/>
  9518. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  9519. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  9520. <stringProp name="BeanShellSampler.query">
  9521. import java.util.Random;
  9522. Random random = new Random();
  9523. if (${seedForRandom} &gt; 0) {
  9524. random.setSeed(${seedForRandom} + ${__threadNum});
  9525. }
  9526. vars.putObject("randomIntGenerator", random);
  9527. </stringProp>
  9528. <stringProp name="BeanShellSampler.filename"/>
  9529. <stringProp name="BeanShellSampler.parameters"/>
  9530. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  9531. </BeanShellSampler>
  9532. <hashTree/>
  9533. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  9534. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  9535. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  9536. <hashTree>
  9537. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  9538. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  9539. <stringProp name="BeanShellSampler.query">
  9540. customerUserList = props.get("customer_emails_list");
  9541. customerUser = customerUserList.poll();
  9542. if (customerUser == null) {
  9543. SampleResult.setResponseMessage("customerUser list is empty");
  9544. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  9545. IsSuccess=false;
  9546. SampleResult.setSuccessful(false);
  9547. SampleResult.setStopThread(true);
  9548. }
  9549. vars.put("customer_email", customerUser);
  9550. </stringProp>
  9551. <stringProp name="BeanShellSampler.filename"/>
  9552. <stringProp name="BeanShellSampler.parameters"/>
  9553. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  9554. </BeanShellSampler>
  9555. <hashTree/>
  9556. </hashTree>
  9557. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  9558. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9559. <collectionProp name="Arguments.arguments"/>
  9560. </elementProp>
  9561. <stringProp name="HTTPSampler.domain"/>
  9562. <stringProp name="HTTPSampler.port"/>
  9563. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9564. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9565. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9566. <stringProp name="HTTPSampler.contentEncoding"/>
  9567. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  9568. <stringProp name="HTTPSampler.method">GET</stringProp>
  9569. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9570. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9571. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9572. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9573. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9574. <stringProp name="HTTPSampler.embedded_url_re"/>
  9575. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  9576. <hashTree>
  9577. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9578. <collectionProp name="Asserion.test_strings">
  9579. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  9580. </collectionProp>
  9581. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9582. <boolProp name="Assertion.assume_success">false</boolProp>
  9583. <intProp name="Assertion.test_type">2</intProp>
  9584. </ResponseAssertion>
  9585. <hashTree/>
  9586. </hashTree>
  9587. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  9588. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9589. <collectionProp name="Arguments.arguments">
  9590. <elementProp name="form_key" elementType="HTTPArgument">
  9591. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9592. <stringProp name="Argument.value">${form_key}</stringProp>
  9593. <stringProp name="Argument.metadata">=</stringProp>
  9594. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9595. <stringProp name="Argument.name">form_key</stringProp>
  9596. </elementProp>
  9597. <elementProp name="login[username]" elementType="HTTPArgument">
  9598. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9599. <stringProp name="Argument.value">${customer_email}</stringProp>
  9600. <stringProp name="Argument.metadata">=</stringProp>
  9601. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9602. <stringProp name="Argument.name">login[username]</stringProp>
  9603. </elementProp>
  9604. <elementProp name="login[password]" elementType="HTTPArgument">
  9605. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9606. <stringProp name="Argument.value">${customer_password}</stringProp>
  9607. <stringProp name="Argument.metadata">=</stringProp>
  9608. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9609. <stringProp name="Argument.name">login[password]</stringProp>
  9610. </elementProp>
  9611. <elementProp name="send" elementType="HTTPArgument">
  9612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9613. <stringProp name="Argument.value"/>
  9614. <stringProp name="Argument.metadata">=</stringProp>
  9615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9616. <stringProp name="Argument.name">send</stringProp>
  9617. </elementProp>
  9618. </collectionProp>
  9619. </elementProp>
  9620. <stringProp name="HTTPSampler.domain"/>
  9621. <stringProp name="HTTPSampler.port"/>
  9622. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9623. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9624. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9625. <stringProp name="HTTPSampler.contentEncoding"/>
  9626. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  9627. <stringProp name="HTTPSampler.method">POST</stringProp>
  9628. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9629. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9630. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9631. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9632. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9633. <stringProp name="HTTPSampler.embedded_url_re"/>
  9634. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  9635. <hashTree>
  9636. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9637. <collectionProp name="Asserion.test_strings">
  9638. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  9639. </collectionProp>
  9640. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9641. <boolProp name="Assertion.assume_success">false</boolProp>
  9642. <intProp name="Assertion.test_type">2</intProp>
  9643. </ResponseAssertion>
  9644. <hashTree/>
  9645. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  9646. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  9647. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  9648. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  9649. <stringProp name="RegexExtractor.template">$1$</stringProp>
  9650. <stringProp name="RegexExtractor.default"/>
  9651. <stringProp name="RegexExtractor.match_number">1</stringProp>
  9652. </RegexExtractor>
  9653. <hashTree/>
  9654. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  9655. <collectionProp name="Asserion.test_strings">
  9656. <stringProp name="2845929">^.+$</stringProp>
  9657. </collectionProp>
  9658. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9659. <boolProp name="Assertion.assume_success">false</boolProp>
  9660. <intProp name="Assertion.test_type">1</intProp>
  9661. <stringProp name="Assertion.scope">variable</stringProp>
  9662. <stringProp name="Scope.variable">addressId</stringProp>
  9663. </ResponseAssertion>
  9664. <hashTree/>
  9665. </hashTree>
  9666. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  9667. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9668. <collectionProp name="Arguments.arguments">
  9669. <elementProp name="sections" elementType="HTTPArgument">
  9670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9671. <stringProp name="Argument.value"/>
  9672. <stringProp name="Argument.metadata">=</stringProp>
  9673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9674. <stringProp name="Argument.name">sections</stringProp>
  9675. </elementProp>
  9676. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  9677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9678. <stringProp name="Argument.value">false</stringProp>
  9679. <stringProp name="Argument.metadata">=</stringProp>
  9680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9681. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  9682. </elementProp>
  9683. <elementProp name="_" elementType="HTTPArgument">
  9684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9685. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  9686. <stringProp name="Argument.metadata">=</stringProp>
  9687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9688. <stringProp name="Argument.name">_</stringProp>
  9689. </elementProp>
  9690. </collectionProp>
  9691. </elementProp>
  9692. <stringProp name="HTTPSampler.domain"/>
  9693. <stringProp name="HTTPSampler.port"/>
  9694. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9695. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9696. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9697. <stringProp name="HTTPSampler.contentEncoding"/>
  9698. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  9699. <stringProp name="HTTPSampler.method">GET</stringProp>
  9700. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9701. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9702. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9703. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9704. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9705. <stringProp name="HTTPSampler.embedded_url_re"/>
  9706. </HTTPSamplerProxy>
  9707. <hashTree/>
  9708. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Review Simple Products" enabled="true">
  9709. <boolProp name="LoopController.continue_forever">true</boolProp>
  9710. <stringProp name="LoopController.loops">1</stringProp>
  9711. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  9712. <hashTree>
  9713. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  9714. <stringProp name="CounterConfig.start">1</stringProp>
  9715. <stringProp name="CounterConfig.end"/>
  9716. <stringProp name="CounterConfig.incr">1</stringProp>
  9717. <stringProp name="CounterConfig.name">_counter</stringProp>
  9718. <stringProp name="CounterConfig.format"/>
  9719. <boolProp name="CounterConfig.per_user">true</boolProp>
  9720. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  9721. </CounterConfig>
  9722. <hashTree/>
  9723. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  9724. <stringProp name="BeanShellSampler.query">
  9725. import java.util.Random;
  9726. Random random = vars.getObject("randomIntGenerator");
  9727. number = random.nextInt(props.get("simple_products_list").size());
  9728. product = props.get("simple_products_list").get(number);
  9729. vars.put("product_url_key", product.get("url_key"));
  9730. vars.put("product_id", product.get("id"));
  9731. vars.put("product_name", product.get("title"));
  9732. vars.put("product_uenc", product.get("uenc"));
  9733. vars.put("product_sku", product.get("sku"));
  9734. </stringProp>
  9735. <stringProp name="BeanShellSampler.filename"/>
  9736. <stringProp name="BeanShellSampler.parameters"/>
  9737. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  9738. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  9739. <hashTree/>
  9740. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  9741. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9742. <collectionProp name="Arguments.arguments"/>
  9743. </elementProp>
  9744. <stringProp name="HTTPSampler.domain"/>
  9745. <stringProp name="HTTPSampler.port"/>
  9746. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9747. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9748. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9749. <stringProp name="HTTPSampler.contentEncoding"/>
  9750. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  9751. <stringProp name="HTTPSampler.method">GET</stringProp>
  9752. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9753. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9754. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9755. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9756. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9757. <stringProp name="HTTPSampler.embedded_url_re"/>
  9758. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  9759. <hashTree>
  9760. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9761. <collectionProp name="Asserion.test_strings">
  9762. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  9763. </collectionProp>
  9764. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9765. <boolProp name="Assertion.assume_success">false</boolProp>
  9766. <intProp name="Assertion.test_type">2</intProp>
  9767. </ResponseAssertion>
  9768. <hashTree/>
  9769. </hashTree>
  9770. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product 1 Rate and Review" enabled="true">
  9771. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9772. <collectionProp name="Arguments.arguments">
  9773. <elementProp name="form_key" elementType="HTTPArgument">
  9774. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9775. <stringProp name="Argument.value">${form_key}</stringProp>
  9776. <stringProp name="Argument.metadata">=</stringProp>
  9777. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9778. <stringProp name="Argument.name">form_key</stringProp>
  9779. </elementProp>
  9780. <elementProp name="ratings[1]" elementType="HTTPArgument">
  9781. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9782. <stringProp name="Argument.value">3</stringProp>
  9783. <stringProp name="Argument.metadata">=</stringProp>
  9784. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9785. <stringProp name="Argument.name">ratings[1]</stringProp>
  9786. </elementProp>
  9787. <elementProp name="validate_rating" elementType="HTTPArgument">
  9788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9789. <stringProp name="Argument.value"/>
  9790. <stringProp name="Argument.metadata">=</stringProp>
  9791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9792. <stringProp name="Argument.name">validate_rating</stringProp>
  9793. </elementProp>
  9794. <elementProp name="nickname" elementType="HTTPArgument">
  9795. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9796. <stringProp name="Argument.value">FirstName</stringProp>
  9797. <stringProp name="Argument.metadata">=</stringProp>
  9798. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9799. <stringProp name="Argument.name">nickname</stringProp>
  9800. </elementProp>
  9801. <elementProp name="title" elementType="HTTPArgument">
  9802. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9803. <stringProp name="Argument.value">Some Review Title</stringProp>
  9804. <stringProp name="Argument.metadata">=</stringProp>
  9805. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9806. <stringProp name="Argument.name">title</stringProp>
  9807. </elementProp>
  9808. <elementProp name="detail" elementType="HTTPArgument">
  9809. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9810. <stringProp name="Argument.value">Some Review Text</stringProp>
  9811. <stringProp name="Argument.metadata">=</stringProp>
  9812. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9813. <stringProp name="Argument.name">detail</stringProp>
  9814. </elementProp>
  9815. </collectionProp>
  9816. </elementProp>
  9817. <stringProp name="HTTPSampler.domain"/>
  9818. <stringProp name="HTTPSampler.port"/>
  9819. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9820. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9821. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9822. <stringProp name="HTTPSampler.contentEncoding"/>
  9823. <stringProp name="HTTPSampler.path">${base_path}review/product/post/id/${product_id}</stringProp>
  9824. <stringProp name="HTTPSampler.method">POST</stringProp>
  9825. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9826. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9827. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9828. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9829. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9830. <stringProp name="HTTPSampler.embedded_url_re"/>
  9831. <stringProp name="TestPlan.comments">tool/fragments/ce/product_review/product_review.jmx</stringProp></HTTPSamplerProxy>
  9832. <hashTree>
  9833. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  9834. <collectionProp name="Asserion.test_strings">
  9835. <stringProp name="-1606201635">HTTP/1.1 200 OK</stringProp>
  9836. </collectionProp>
  9837. <stringProp name="Assertion.test_field">Assertion.response_headers</stringProp>
  9838. <boolProp name="Assertion.assume_success">false</boolProp>
  9839. <intProp name="Assertion.test_type">16</intProp>
  9840. </ResponseAssertion>
  9841. <hashTree/>
  9842. </hashTree>
  9843. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Review Section" enabled="true">
  9844. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9845. <collectionProp name="Arguments.arguments">
  9846. <elementProp name="sections" elementType="HTTPArgument">
  9847. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9848. <stringProp name="Argument.value">review,messages</stringProp>
  9849. <stringProp name="Argument.metadata">=</stringProp>
  9850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9851. <stringProp name="Argument.name">sections</stringProp>
  9852. </elementProp>
  9853. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  9854. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9855. <stringProp name="Argument.value">false</stringProp>
  9856. <stringProp name="Argument.metadata">=</stringProp>
  9857. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9858. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  9859. </elementProp>
  9860. <elementProp name="_" elementType="HTTPArgument">
  9861. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  9862. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  9863. <stringProp name="Argument.metadata">=</stringProp>
  9864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  9865. <stringProp name="Argument.name">_</stringProp>
  9866. </elementProp>
  9867. </collectionProp>
  9868. </elementProp>
  9869. <stringProp name="HTTPSampler.domain"/>
  9870. <stringProp name="HTTPSampler.port"/>
  9871. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9872. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9873. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9874. <stringProp name="HTTPSampler.contentEncoding"/>
  9875. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  9876. <stringProp name="HTTPSampler.method">GET</stringProp>
  9877. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9878. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9879. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9880. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9881. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9882. <stringProp name="HTTPSampler.embedded_url_re"/>
  9883. <stringProp name="TestPlan.comments">tool/fragments/ce/product_review/load_review.jmx</stringProp></HTTPSamplerProxy>
  9884. <hashTree/>
  9885. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Product Rating and Review - Pause" enabled="true">
  9886. <intProp name="ActionProcessor.action">1</intProp>
  9887. <intProp name="ActionProcessor.target">0</intProp>
  9888. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${reviewDelay}*1000))}</stringProp>
  9889. <stringProp name="TestPlan.comments">tool/fragments/ce/product_review/product_review_pause.jmx</stringProp></TestAction>
  9890. <hashTree/>
  9891. </hashTree>
  9892. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  9893. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  9894. <collectionProp name="Arguments.arguments"/>
  9895. </elementProp>
  9896. <stringProp name="HTTPSampler.domain"/>
  9897. <stringProp name="HTTPSampler.port"/>
  9898. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  9899. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  9900. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  9901. <stringProp name="HTTPSampler.contentEncoding"/>
  9902. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  9903. <stringProp name="HTTPSampler.method">GET</stringProp>
  9904. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  9905. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  9906. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  9907. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  9908. <boolProp name="HTTPSampler.monitor">false</boolProp>
  9909. <stringProp name="HTTPSampler.embedded_url_re"/>
  9910. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  9911. <hashTree>
  9912. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  9913. <collectionProp name="Asserion.test_strings">
  9914. <stringProp name="1723813687">You are signed out.</stringProp>
  9915. </collectionProp>
  9916. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  9917. <boolProp name="Assertion.assume_success">false</boolProp>
  9918. <intProp name="Assertion.test_type">2</intProp>
  9919. </ResponseAssertion>
  9920. <hashTree/>
  9921. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  9922. <boolProp name="resetInterpreter">false</boolProp>
  9923. <stringProp name="parameters"/>
  9924. <stringProp name="filename"/>
  9925. <stringProp name="script">
  9926. customerUserList = props.get("customer_emails_list");
  9927. customerUserList.add(vars.get("customer_email"));
  9928. </stringProp>
  9929. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  9930. <hashTree/>
  9931. </hashTree>
  9932. </hashTree>
  9933. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Add To Cart By Customer" enabled="true">
  9934. <intProp name="ThroughputController.style">1</intProp>
  9935. <boolProp name="ThroughputController.perThread">false</boolProp>
  9936. <intProp name="ThroughputController.maxThroughput">1</intProp>
  9937. <stringProp name="ThroughputController.percentThroughput">${addToCartByCustomerPercentage}</stringProp>
  9938. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  9939. <hashTree>
  9940. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  9941. <stringProp name="script">
  9942. var tmpLabel = vars.get("testLabel")
  9943. if (tmpLabel) {
  9944. var testLabel = " (" + tmpLabel + ")"
  9945. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  9946. if (sampler.getName().indexOf(testLabel) == -1) {
  9947. sampler.setName(sampler.getName() + testLabel);
  9948. }
  9949. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  9950. sampler.setName("SetUp - " + sampler.getName());
  9951. }
  9952. } else {
  9953. testLabel = ""
  9954. }
  9955. </stringProp>
  9956. <stringProp name="scriptLanguage">javascript</stringProp>
  9957. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  9958. <hashTree/>
  9959. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  9960. <stringProp name="BeanShellSampler.query">
  9961. vars.put("testLabel", "Add To Cart By Customer");
  9962. </stringProp>
  9963. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  9964. </BeanShellSampler>
  9965. <hashTree/>
  9966. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  9967. <collectionProp name="CookieManager.cookies">
  9968. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  9969. <stringProp name="Cookie.value">30</stringProp>
  9970. <stringProp name="Cookie.domain">${host}</stringProp>
  9971. <stringProp name="Cookie.path">/</stringProp>
  9972. <boolProp name="Cookie.secure">false</boolProp>
  9973. <longProp name="Cookie.expires">0</longProp>
  9974. <boolProp name="Cookie.path_specified">true</boolProp>
  9975. <boolProp name="Cookie.domain_specified">true</boolProp>
  9976. </elementProp>
  9977. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  9978. <stringProp name="Cookie.value">${form_key}</stringProp>
  9979. <stringProp name="Cookie.domain">${host}</stringProp>
  9980. <stringProp name="Cookie.path">${base_path}</stringProp>
  9981. <boolProp name="Cookie.secure">false</boolProp>
  9982. <longProp name="Cookie.expires">0</longProp>
  9983. <boolProp name="Cookie.path_specified">true</boolProp>
  9984. <boolProp name="Cookie.domain_specified">true</boolProp>
  9985. </elementProp>
  9986. </collectionProp>
  9987. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  9988. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  9989. <hashTree/>
  9990. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  9991. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  9992. <stringProp name="BeanShellSampler.query">
  9993. import java.util.Random;
  9994. Random random = new Random();
  9995. if (${seedForRandom} &gt; 0) {
  9996. random.setSeed(${seedForRandom} + ${__threadNum});
  9997. }
  9998. vars.putObject("randomIntGenerator", random);
  9999. </stringProp>
  10000. <stringProp name="BeanShellSampler.filename"/>
  10001. <stringProp name="BeanShellSampler.parameters"/>
  10002. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10003. </BeanShellSampler>
  10004. <hashTree/>
  10005. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  10006. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  10007. <stringProp name="BeanShellSampler.query">
  10008. vars.put("totalProductsAdded", "0");
  10009. </stringProp>
  10010. <stringProp name="BeanShellSampler.filename"/>
  10011. <stringProp name="BeanShellSampler.parameters"/>
  10012. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10013. </BeanShellSampler>
  10014. <hashTree/>
  10015. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  10016. <stringProp name="scriptLanguage">javascript</stringProp>
  10017. <stringProp name="parameters"/>
  10018. <stringProp name="filename"/>
  10019. <stringProp name="cacheKey"/>
  10020. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  10021. var categories = props.get("categories");
  10022. number = random.nextInt(categories.length);
  10023. vars.put("category_url_key", categories[number].url_key);
  10024. vars.put("category_name", categories[number].name);
  10025. vars.put("category_id", categories[number].id);
  10026. vars.putObject("category", categories[number]);
  10027. </stringProp>
  10028. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  10029. <hashTree/>
  10030. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  10031. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  10032. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  10033. <hashTree>
  10034. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  10035. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  10036. <stringProp name="BeanShellSampler.query">
  10037. customerUserList = props.get("customer_emails_list");
  10038. customerUser = customerUserList.poll();
  10039. if (customerUser == null) {
  10040. SampleResult.setResponseMessage("customerUser list is empty");
  10041. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  10042. IsSuccess=false;
  10043. SampleResult.setSuccessful(false);
  10044. SampleResult.setStopThread(true);
  10045. }
  10046. vars.put("customer_email", customerUser);
  10047. </stringProp>
  10048. <stringProp name="BeanShellSampler.filename"/>
  10049. <stringProp name="BeanShellSampler.parameters"/>
  10050. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10051. </BeanShellSampler>
  10052. <hashTree/>
  10053. </hashTree>
  10054. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  10055. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10056. <collectionProp name="Arguments.arguments"/>
  10057. </elementProp>
  10058. <stringProp name="HTTPSampler.domain"/>
  10059. <stringProp name="HTTPSampler.port"/>
  10060. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10061. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10062. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10063. <stringProp name="HTTPSampler.contentEncoding"/>
  10064. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  10065. <stringProp name="HTTPSampler.method">GET</stringProp>
  10066. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10067. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10068. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10069. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10070. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10071. <stringProp name="HTTPSampler.embedded_url_re"/>
  10072. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  10073. <hashTree>
  10074. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10075. <collectionProp name="Asserion.test_strings">
  10076. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  10077. </collectionProp>
  10078. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10079. <boolProp name="Assertion.assume_success">false</boolProp>
  10080. <intProp name="Assertion.test_type">2</intProp>
  10081. </ResponseAssertion>
  10082. <hashTree/>
  10083. </hashTree>
  10084. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  10085. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10086. <collectionProp name="Arguments.arguments">
  10087. <elementProp name="form_key" elementType="HTTPArgument">
  10088. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10089. <stringProp name="Argument.value">${form_key}</stringProp>
  10090. <stringProp name="Argument.metadata">=</stringProp>
  10091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10092. <stringProp name="Argument.name">form_key</stringProp>
  10093. </elementProp>
  10094. <elementProp name="login[username]" elementType="HTTPArgument">
  10095. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10096. <stringProp name="Argument.value">${customer_email}</stringProp>
  10097. <stringProp name="Argument.metadata">=</stringProp>
  10098. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10099. <stringProp name="Argument.name">login[username]</stringProp>
  10100. </elementProp>
  10101. <elementProp name="login[password]" elementType="HTTPArgument">
  10102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10103. <stringProp name="Argument.value">${customer_password}</stringProp>
  10104. <stringProp name="Argument.metadata">=</stringProp>
  10105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10106. <stringProp name="Argument.name">login[password]</stringProp>
  10107. </elementProp>
  10108. <elementProp name="send" elementType="HTTPArgument">
  10109. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10110. <stringProp name="Argument.value"/>
  10111. <stringProp name="Argument.metadata">=</stringProp>
  10112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10113. <stringProp name="Argument.name">send</stringProp>
  10114. </elementProp>
  10115. </collectionProp>
  10116. </elementProp>
  10117. <stringProp name="HTTPSampler.domain"/>
  10118. <stringProp name="HTTPSampler.port"/>
  10119. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10120. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10121. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10122. <stringProp name="HTTPSampler.contentEncoding"/>
  10123. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  10124. <stringProp name="HTTPSampler.method">POST</stringProp>
  10125. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10126. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10127. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10128. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10129. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10130. <stringProp name="HTTPSampler.embedded_url_re"/>
  10131. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  10132. <hashTree>
  10133. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10134. <collectionProp name="Asserion.test_strings">
  10135. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  10136. </collectionProp>
  10137. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10138. <boolProp name="Assertion.assume_success">false</boolProp>
  10139. <intProp name="Assertion.test_type">2</intProp>
  10140. </ResponseAssertion>
  10141. <hashTree/>
  10142. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  10143. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  10144. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  10145. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  10146. <stringProp name="RegexExtractor.template">$1$</stringProp>
  10147. <stringProp name="RegexExtractor.default"/>
  10148. <stringProp name="RegexExtractor.match_number">1</stringProp>
  10149. </RegexExtractor>
  10150. <hashTree/>
  10151. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  10152. <collectionProp name="Asserion.test_strings">
  10153. <stringProp name="2845929">^.+$</stringProp>
  10154. </collectionProp>
  10155. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10156. <boolProp name="Assertion.assume_success">false</boolProp>
  10157. <intProp name="Assertion.test_type">1</intProp>
  10158. <stringProp name="Assertion.scope">variable</stringProp>
  10159. <stringProp name="Scope.variable">addressId</stringProp>
  10160. </ResponseAssertion>
  10161. <hashTree/>
  10162. </hashTree>
  10163. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  10164. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10165. <collectionProp name="Arguments.arguments">
  10166. <elementProp name="sections" elementType="HTTPArgument">
  10167. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10168. <stringProp name="Argument.value"/>
  10169. <stringProp name="Argument.metadata">=</stringProp>
  10170. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10171. <stringProp name="Argument.name">sections</stringProp>
  10172. </elementProp>
  10173. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  10174. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10175. <stringProp name="Argument.value">false</stringProp>
  10176. <stringProp name="Argument.metadata">=</stringProp>
  10177. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10178. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  10179. </elementProp>
  10180. <elementProp name="_" elementType="HTTPArgument">
  10181. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10182. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  10183. <stringProp name="Argument.metadata">=</stringProp>
  10184. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10185. <stringProp name="Argument.name">_</stringProp>
  10186. </elementProp>
  10187. </collectionProp>
  10188. </elementProp>
  10189. <stringProp name="HTTPSampler.domain"/>
  10190. <stringProp name="HTTPSampler.port"/>
  10191. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10192. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10193. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10194. <stringProp name="HTTPSampler.contentEncoding"/>
  10195. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  10196. <stringProp name="HTTPSampler.method">GET</stringProp>
  10197. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10198. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10199. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10200. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10201. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10202. <stringProp name="HTTPSampler.embedded_url_re"/>
  10203. </HTTPSamplerProxy>
  10204. <hashTree/>
  10205. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  10206. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10207. <collectionProp name="Arguments.arguments"/>
  10208. </elementProp>
  10209. <stringProp name="HTTPSampler.domain"/>
  10210. <stringProp name="HTTPSampler.port"/>
  10211. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10212. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10213. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10214. <stringProp name="HTTPSampler.contentEncoding"/>
  10215. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  10216. <stringProp name="HTTPSampler.method">GET</stringProp>
  10217. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10218. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10219. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10220. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10221. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10222. <stringProp name="HTTPSampler.embedded_url_re"/>
  10223. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  10224. <hashTree>
  10225. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10226. <collectionProp name="Asserion.test_strings">
  10227. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  10228. </collectionProp>
  10229. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10230. <boolProp name="Assertion.assume_success">false</boolProp>
  10231. <intProp name="Assertion.test_type">2</intProp>
  10232. </ResponseAssertion>
  10233. <hashTree/>
  10234. </hashTree>
  10235. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  10236. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10237. <collectionProp name="Arguments.arguments"/>
  10238. </elementProp>
  10239. <stringProp name="HTTPSampler.domain"/>
  10240. <stringProp name="HTTPSampler.port"/>
  10241. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10242. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10243. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10244. <stringProp name="HTTPSampler.contentEncoding"/>
  10245. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  10246. <stringProp name="HTTPSampler.method">GET</stringProp>
  10247. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10248. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10249. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10250. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10251. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10252. <stringProp name="HTTPSampler.embedded_url_re"/>
  10253. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  10254. <hashTree>
  10255. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10256. <collectionProp name="Asserion.test_strings">
  10257. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  10258. </collectionProp>
  10259. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10260. <boolProp name="Assertion.assume_success">false</boolProp>
  10261. <intProp name="Assertion.test_type">6</intProp>
  10262. </ResponseAssertion>
  10263. <hashTree/>
  10264. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  10265. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  10266. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  10267. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  10268. <stringProp name="RegexExtractor.template">$1$</stringProp>
  10269. <stringProp name="RegexExtractor.default"/>
  10270. <stringProp name="RegexExtractor.match_number">1</stringProp>
  10271. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  10272. </RegexExtractor>
  10273. <hashTree/>
  10274. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  10275. <collectionProp name="Asserion.test_strings">
  10276. <stringProp name="1191417111">^[0-9]+$</stringProp>
  10277. </collectionProp>
  10278. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10279. <boolProp name="Assertion.assume_success">false</boolProp>
  10280. <intProp name="Assertion.test_type">1</intProp>
  10281. <stringProp name="Assertion.scope">variable</stringProp>
  10282. <stringProp name="Scope.variable">category_id</stringProp>
  10283. </ResponseAssertion>
  10284. <hashTree/>
  10285. </hashTree>
  10286. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
  10287. <boolProp name="LoopController.continue_forever">true</boolProp>
  10288. <stringProp name="LoopController.loops">2</stringProp>
  10289. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  10290. <hashTree>
  10291. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  10292. <stringProp name="CounterConfig.start">1</stringProp>
  10293. <stringProp name="CounterConfig.end"/>
  10294. <stringProp name="CounterConfig.incr">1</stringProp>
  10295. <stringProp name="CounterConfig.name">_counter</stringProp>
  10296. <stringProp name="CounterConfig.format"/>
  10297. <boolProp name="CounterConfig.per_user">true</boolProp>
  10298. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  10299. </CounterConfig>
  10300. <hashTree/>
  10301. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  10302. <stringProp name="BeanShellSampler.query">
  10303. import java.util.Random;
  10304. Random random = vars.getObject("randomIntGenerator");
  10305. number = random.nextInt(props.get("simple_products_list").size());
  10306. product = props.get("simple_products_list").get(number);
  10307. vars.put("product_url_key", product.get("url_key"));
  10308. vars.put("product_id", product.get("id"));
  10309. vars.put("product_name", product.get("title"));
  10310. vars.put("product_uenc", product.get("uenc"));
  10311. vars.put("product_sku", product.get("sku"));
  10312. </stringProp>
  10313. <stringProp name="BeanShellSampler.filename"/>
  10314. <stringProp name="BeanShellSampler.parameters"/>
  10315. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10316. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  10317. <hashTree/>
  10318. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  10319. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  10320. <stringProp name="BeanShellSampler.query">
  10321. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  10322. productsAdded = productsAdded + 1;
  10323. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  10324. </stringProp>
  10325. <stringProp name="BeanShellSampler.filename"/>
  10326. <stringProp name="BeanShellSampler.parameters"/>
  10327. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10328. </BeanShellSampler>
  10329. <hashTree/>
  10330. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  10331. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10332. <collectionProp name="Arguments.arguments"/>
  10333. </elementProp>
  10334. <stringProp name="HTTPSampler.domain"/>
  10335. <stringProp name="HTTPSampler.port"/>
  10336. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10337. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10338. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10339. <stringProp name="HTTPSampler.contentEncoding"/>
  10340. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  10341. <stringProp name="HTTPSampler.method">GET</stringProp>
  10342. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10343. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10344. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10345. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10346. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10347. <stringProp name="HTTPSampler.embedded_url_re"/>
  10348. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  10349. <hashTree>
  10350. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10351. <collectionProp name="Asserion.test_strings">
  10352. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  10353. </collectionProp>
  10354. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10355. <boolProp name="Assertion.assume_success">false</boolProp>
  10356. <intProp name="Assertion.test_type">2</intProp>
  10357. </ResponseAssertion>
  10358. <hashTree/>
  10359. </hashTree>
  10360. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  10361. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10362. <collectionProp name="Arguments.arguments">
  10363. <elementProp name="product" elementType="HTTPArgument">
  10364. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10365. <stringProp name="Argument.value">${product_id}</stringProp>
  10366. <stringProp name="Argument.metadata">=</stringProp>
  10367. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10368. <stringProp name="Argument.name">product</stringProp>
  10369. </elementProp>
  10370. <elementProp name="related_product" elementType="HTTPArgument">
  10371. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10372. <stringProp name="Argument.value"/>
  10373. <stringProp name="Argument.metadata">=</stringProp>
  10374. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10375. <stringProp name="Argument.name">related_product</stringProp>
  10376. </elementProp>
  10377. <elementProp name="qty" elementType="HTTPArgument">
  10378. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10379. <stringProp name="Argument.value">1</stringProp>
  10380. <stringProp name="Argument.metadata">=</stringProp>
  10381. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10382. <stringProp name="Argument.name">qty</stringProp>
  10383. </elementProp>
  10384. <elementProp name="form_key" elementType="HTTPArgument">
  10385. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10386. <stringProp name="Argument.value">${form_key}</stringProp>
  10387. <stringProp name="Argument.metadata">=</stringProp>
  10388. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10389. <stringProp name="Argument.name">form_key</stringProp>
  10390. </elementProp>
  10391. </collectionProp>
  10392. </elementProp>
  10393. <stringProp name="HTTPSampler.domain"/>
  10394. <stringProp name="HTTPSampler.port"/>
  10395. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10396. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10397. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10398. <stringProp name="HTTPSampler.contentEncoding"/>
  10399. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  10400. <stringProp name="HTTPSampler.method">POST</stringProp>
  10401. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10402. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10403. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10404. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10405. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10406. <stringProp name="HTTPSampler.embedded_url_re"/>
  10407. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  10408. <hashTree>
  10409. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  10410. <collectionProp name="HeaderManager.headers">
  10411. <elementProp name="" elementType="Header">
  10412. <stringProp name="Header.name">X-Requested-With</stringProp>
  10413. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  10414. </elementProp>
  10415. </collectionProp>
  10416. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  10417. <hashTree/>
  10418. </hashTree>
  10419. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  10420. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10421. <collectionProp name="Arguments.arguments">
  10422. <elementProp name="sections" elementType="HTTPArgument">
  10423. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10424. <stringProp name="Argument.value">cart,messages</stringProp>
  10425. <stringProp name="Argument.metadata">=</stringProp>
  10426. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10427. <stringProp name="Argument.name">sections</stringProp>
  10428. </elementProp>
  10429. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  10430. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10431. <stringProp name="Argument.value">true</stringProp>
  10432. <stringProp name="Argument.metadata">=</stringProp>
  10433. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10434. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  10435. </elementProp>
  10436. <elementProp name="_" elementType="HTTPArgument">
  10437. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10438. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  10439. <stringProp name="Argument.metadata">=</stringProp>
  10440. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10441. <stringProp name="Argument.name">_</stringProp>
  10442. </elementProp>
  10443. </collectionProp>
  10444. </elementProp>
  10445. <stringProp name="HTTPSampler.domain"/>
  10446. <stringProp name="HTTPSampler.port"/>
  10447. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10448. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10449. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10450. <stringProp name="HTTPSampler.contentEncoding"/>
  10451. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  10452. <stringProp name="HTTPSampler.method">GET</stringProp>
  10453. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10454. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10455. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10456. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10457. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10458. <stringProp name="HTTPSampler.embedded_url_re"/>
  10459. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  10460. <hashTree>
  10461. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10462. <collectionProp name="Asserion.test_strings">
  10463. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  10464. </collectionProp>
  10465. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10466. <boolProp name="Assertion.assume_success">false</boolProp>
  10467. <intProp name="Assertion.test_type">2</intProp>
  10468. </ResponseAssertion>
  10469. <hashTree/>
  10470. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10471. <collectionProp name="Asserion.test_strings">
  10472. <stringProp name="2057973164">This product is out of stock.</stringProp>
  10473. </collectionProp>
  10474. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10475. <boolProp name="Assertion.assume_success">false</boolProp>
  10476. <intProp name="Assertion.test_type">6</intProp>
  10477. </ResponseAssertion>
  10478. <hashTree/>
  10479. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10480. <collectionProp name="Asserion.test_strings">
  10481. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  10482. </collectionProp>
  10483. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10484. <boolProp name="Assertion.assume_success">false</boolProp>
  10485. <intProp name="Assertion.test_type">2</intProp>
  10486. </ResponseAssertion>
  10487. <hashTree/>
  10488. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  10489. <collectionProp name="HeaderManager.headers">
  10490. <elementProp name="" elementType="Header">
  10491. <stringProp name="Header.name">X-Requested-With</stringProp>
  10492. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  10493. </elementProp>
  10494. </collectionProp>
  10495. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  10496. <hashTree/>
  10497. </hashTree>
  10498. </hashTree>
  10499. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
  10500. <boolProp name="LoopController.continue_forever">true</boolProp>
  10501. <stringProp name="LoopController.loops">1</stringProp>
  10502. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  10503. <hashTree>
  10504. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  10505. <stringProp name="CounterConfig.start">1</stringProp>
  10506. <stringProp name="CounterConfig.end"/>
  10507. <stringProp name="CounterConfig.incr">1</stringProp>
  10508. <stringProp name="CounterConfig.name">_counter</stringProp>
  10509. <stringProp name="CounterConfig.format"/>
  10510. <boolProp name="CounterConfig.per_user">true</boolProp>
  10511. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  10512. </CounterConfig>
  10513. <hashTree/>
  10514. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  10515. <stringProp name="BeanShellSampler.query">
  10516. import java.util.Random;
  10517. Random random = vars.getObject("randomIntGenerator");
  10518. number = random.nextInt(props.get("configurable_products_list").size());
  10519. product = props.get("configurable_products_list").get(number);
  10520. vars.put("product_url_key", product.get("url_key"));
  10521. vars.put("product_id", product.get("id"));
  10522. vars.put("product_name", product.get("title"));
  10523. vars.put("product_uenc", product.get("uenc"));
  10524. vars.put("product_sku", product.get("sku"));
  10525. </stringProp>
  10526. <stringProp name="BeanShellSampler.filename"/>
  10527. <stringProp name="BeanShellSampler.parameters"/>
  10528. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10529. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  10530. <hashTree/>
  10531. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  10532. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  10533. <stringProp name="BeanShellSampler.query">
  10534. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  10535. productsAdded = productsAdded + 1;
  10536. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  10537. </stringProp>
  10538. <stringProp name="BeanShellSampler.filename"/>
  10539. <stringProp name="BeanShellSampler.parameters"/>
  10540. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10541. </BeanShellSampler>
  10542. <hashTree/>
  10543. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  10544. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10545. <collectionProp name="Arguments.arguments"/>
  10546. </elementProp>
  10547. <stringProp name="HTTPSampler.domain"/>
  10548. <stringProp name="HTTPSampler.port"/>
  10549. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10550. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10551. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10552. <stringProp name="HTTPSampler.contentEncoding"/>
  10553. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  10554. <stringProp name="HTTPSampler.method">GET</stringProp>
  10555. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10556. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10557. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10558. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10559. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10560. <stringProp name="HTTPSampler.embedded_url_re"/>
  10561. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  10562. <hashTree>
  10563. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10564. <collectionProp name="Asserion.test_strings">
  10565. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  10566. </collectionProp>
  10567. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10568. <boolProp name="Assertion.assume_success">false</boolProp>
  10569. <intProp name="Assertion.test_type">2</intProp>
  10570. </ResponseAssertion>
  10571. <hashTree/>
  10572. </hashTree>
  10573. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  10574. <boolProp name="LoopController.continue_forever">true</boolProp>
  10575. <stringProp name="LoopController.loops">1</stringProp>
  10576. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  10577. <hashTree>
  10578. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  10579. <collectionProp name="HeaderManager.headers">
  10580. <elementProp name="" elementType="Header">
  10581. <stringProp name="Header.name">Content-Type</stringProp>
  10582. <stringProp name="Header.value">application/json</stringProp>
  10583. </elementProp>
  10584. <elementProp name="" elementType="Header">
  10585. <stringProp name="Header.name">Accept</stringProp>
  10586. <stringProp name="Header.value">*/*</stringProp>
  10587. </elementProp>
  10588. </collectionProp>
  10589. </HeaderManager>
  10590. <hashTree/>
  10591. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  10592. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  10593. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  10594. <collectionProp name="Arguments.arguments">
  10595. <elementProp name="" elementType="HTTPArgument">
  10596. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  10597. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  10598. <stringProp name="Argument.metadata">=</stringProp>
  10599. </elementProp>
  10600. </collectionProp>
  10601. </elementProp>
  10602. <stringProp name="HTTPSampler.domain"/>
  10603. <stringProp name="HTTPSampler.port"/>
  10604. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10605. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10606. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10607. <stringProp name="HTTPSampler.contentEncoding"/>
  10608. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  10609. <stringProp name="HTTPSampler.method">POST</stringProp>
  10610. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10611. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10612. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10613. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10614. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10615. <stringProp name="HTTPSampler.embedded_url_re"/>
  10616. </HTTPSamplerProxy>
  10617. <hashTree>
  10618. <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">
  10619. <stringProp name="VAR">admin_token</stringProp>
  10620. <stringProp name="JSONPATH">$</stringProp>
  10621. <stringProp name="DEFAULT"/>
  10622. <stringProp name="VARIABLE"/>
  10623. <stringProp name="SUBJECT">BODY</stringProp>
  10624. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  10625. <hashTree/>
  10626. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  10627. <collectionProp name="Asserion.test_strings">
  10628. <stringProp name="484395188">^.{10,}$</stringProp>
  10629. </collectionProp>
  10630. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10631. <boolProp name="Assertion.assume_success">false</boolProp>
  10632. <intProp name="Assertion.test_type">1</intProp>
  10633. <stringProp name="Assertion.scope">variable</stringProp>
  10634. <stringProp name="Scope.variable">admin_token</stringProp>
  10635. </ResponseAssertion>
  10636. <hashTree/>
  10637. </hashTree>
  10638. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  10639. <collectionProp name="HeaderManager.headers">
  10640. <elementProp name="" elementType="Header">
  10641. <stringProp name="Header.name">Authorization</stringProp>
  10642. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  10643. </elementProp>
  10644. </collectionProp>
  10645. </HeaderManager>
  10646. <hashTree/>
  10647. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  10648. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10649. <collectionProp name="Arguments.arguments"/>
  10650. </elementProp>
  10651. <stringProp name="HTTPSampler.domain"/>
  10652. <stringProp name="HTTPSampler.port"/>
  10653. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10654. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10655. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10656. <stringProp name="HTTPSampler.contentEncoding"/>
  10657. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  10658. <stringProp name="HTTPSampler.method">GET</stringProp>
  10659. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10660. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10661. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10662. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10663. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10664. <stringProp name="HTTPSampler.embedded_url_re"/>
  10665. </HTTPSamplerProxy>
  10666. <hashTree>
  10667. <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">
  10668. <stringProp name="VAR">attribute_ids</stringProp>
  10669. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  10670. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  10671. <stringProp name="VARIABLE"/>
  10672. <stringProp name="SUBJECT">BODY</stringProp>
  10673. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  10674. <hashTree/>
  10675. <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">
  10676. <stringProp name="VAR">option_values</stringProp>
  10677. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  10678. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  10679. <stringProp name="VARIABLE"/>
  10680. <stringProp name="SUBJECT">BODY</stringProp>
  10681. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  10682. <hashTree/>
  10683. </hashTree>
  10684. </hashTree>
  10685. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  10686. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10687. <collectionProp name="Arguments.arguments">
  10688. <elementProp name="product" elementType="HTTPArgument">
  10689. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10690. <stringProp name="Argument.value">${product_id}</stringProp>
  10691. <stringProp name="Argument.metadata">=</stringProp>
  10692. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10693. <stringProp name="Argument.name">product</stringProp>
  10694. </elementProp>
  10695. <elementProp name="related_product" elementType="HTTPArgument">
  10696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10697. <stringProp name="Argument.value"/>
  10698. <stringProp name="Argument.metadata">=</stringProp>
  10699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10700. <stringProp name="Argument.name">related_product</stringProp>
  10701. </elementProp>
  10702. <elementProp name="qty" elementType="HTTPArgument">
  10703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10704. <stringProp name="Argument.value">1</stringProp>
  10705. <stringProp name="Argument.metadata">=</stringProp>
  10706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10707. <stringProp name="Argument.name">qty</stringProp>
  10708. </elementProp>
  10709. <elementProp name="form_key" elementType="HTTPArgument">
  10710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10711. <stringProp name="Argument.value">${form_key}</stringProp>
  10712. <stringProp name="Argument.metadata">=</stringProp>
  10713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10714. <stringProp name="Argument.name">form_key</stringProp>
  10715. </elementProp>
  10716. </collectionProp>
  10717. </elementProp>
  10718. <stringProp name="HTTPSampler.domain"/>
  10719. <stringProp name="HTTPSampler.port"/>
  10720. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10721. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10722. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10723. <stringProp name="HTTPSampler.contentEncoding"/>
  10724. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  10725. <stringProp name="HTTPSampler.method">POST</stringProp>
  10726. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10727. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10728. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10729. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10730. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10731. <stringProp name="HTTPSampler.embedded_url_re"/>
  10732. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  10733. <hashTree>
  10734. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  10735. <boolProp name="resetInterpreter">false</boolProp>
  10736. <stringProp name="parameters"/>
  10737. <stringProp name="filename"/>
  10738. <stringProp name="script">
  10739. try {
  10740. attribute_ids = vars.get("attribute_ids");
  10741. option_values = vars.get("option_values");
  10742. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  10743. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  10744. attribute_ids_array = attribute_ids.split(",");
  10745. option_values_array = option_values.split(",");
  10746. args = ctx.getCurrentSampler().getArguments();
  10747. it = args.iterator();
  10748. while (it.hasNext()) {
  10749. argument = it.next();
  10750. if (argument.getStringValue().contains("${")) {
  10751. args.removeArgument(argument.getName());
  10752. }
  10753. }
  10754. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  10755. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  10756. }
  10757. } catch (Exception e) {
  10758. log.error("eror&#x2026;", e);
  10759. }
  10760. </stringProp>
  10761. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  10762. <hashTree/>
  10763. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  10764. <collectionProp name="HeaderManager.headers">
  10765. <elementProp name="" elementType="Header">
  10766. <stringProp name="Header.name">X-Requested-With</stringProp>
  10767. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  10768. </elementProp>
  10769. </collectionProp>
  10770. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  10771. <hashTree/>
  10772. </hashTree>
  10773. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  10774. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10775. <collectionProp name="Arguments.arguments">
  10776. <elementProp name="sections" elementType="HTTPArgument">
  10777. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10778. <stringProp name="Argument.value">cart,messages</stringProp>
  10779. <stringProp name="Argument.metadata">=</stringProp>
  10780. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10781. <stringProp name="Argument.name">sections</stringProp>
  10782. </elementProp>
  10783. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  10784. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10785. <stringProp name="Argument.value">true</stringProp>
  10786. <stringProp name="Argument.metadata">=</stringProp>
  10787. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10788. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  10789. </elementProp>
  10790. <elementProp name="_" elementType="HTTPArgument">
  10791. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10792. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  10793. <stringProp name="Argument.metadata">=</stringProp>
  10794. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10795. <stringProp name="Argument.name">_</stringProp>
  10796. </elementProp>
  10797. </collectionProp>
  10798. </elementProp>
  10799. <stringProp name="HTTPSampler.domain"/>
  10800. <stringProp name="HTTPSampler.port"/>
  10801. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10802. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10803. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10804. <stringProp name="HTTPSampler.contentEncoding"/>
  10805. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  10806. <stringProp name="HTTPSampler.method">GET</stringProp>
  10807. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10808. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10809. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10810. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10811. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10812. <stringProp name="HTTPSampler.embedded_url_re"/>
  10813. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  10814. <hashTree>
  10815. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10816. <collectionProp name="Asserion.test_strings">
  10817. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  10818. </collectionProp>
  10819. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10820. <boolProp name="Assertion.assume_success">false</boolProp>
  10821. <intProp name="Assertion.test_type">2</intProp>
  10822. </ResponseAssertion>
  10823. <hashTree/>
  10824. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10825. <collectionProp name="Asserion.test_strings">
  10826. <stringProp name="2057973164">This product is out of stock.</stringProp>
  10827. </collectionProp>
  10828. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10829. <boolProp name="Assertion.assume_success">false</boolProp>
  10830. <intProp name="Assertion.test_type">6</intProp>
  10831. </ResponseAssertion>
  10832. <hashTree/>
  10833. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  10834. <collectionProp name="Asserion.test_strings">
  10835. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  10836. </collectionProp>
  10837. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10838. <boolProp name="Assertion.assume_success">false</boolProp>
  10839. <intProp name="Assertion.test_type">2</intProp>
  10840. </ResponseAssertion>
  10841. <hashTree/>
  10842. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  10843. <collectionProp name="HeaderManager.headers">
  10844. <elementProp name="" elementType="Header">
  10845. <stringProp name="Header.name">X-Requested-With</stringProp>
  10846. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  10847. </elementProp>
  10848. </collectionProp>
  10849. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  10850. <hashTree/>
  10851. </hashTree>
  10852. </hashTree>
  10853. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Make Cart Empty" enabled="true">
  10854. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  10855. </GenericController>
  10856. <hashTree>
  10857. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Cart" enabled="true">
  10858. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10859. <collectionProp name="Arguments.arguments"/>
  10860. </elementProp>
  10861. <stringProp name="HTTPSampler.domain"/>
  10862. <stringProp name="HTTPSampler.port"/>
  10863. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10864. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10865. <stringProp name="HTTPSampler.protocol"/>
  10866. <stringProp name="HTTPSampler.contentEncoding"/>
  10867. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/</stringProp>
  10868. <stringProp name="HTTPSampler.method">GET</stringProp>
  10869. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10870. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10871. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10872. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10873. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10874. <stringProp name="HTTPSampler.embedded_url_re"/>
  10875. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/open_cart.jmx</stringProp></HTTPSamplerProxy>
  10876. <hashTree>
  10877. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Opened" enabled="true">
  10878. <collectionProp name="Asserion.test_strings">
  10879. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  10880. </collectionProp>
  10881. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  10882. <boolProp name="Assertion.assume_success">false</boolProp>
  10883. <intProp name="Assertion.test_type">2</intProp>
  10884. </ResponseAssertion>
  10885. <hashTree/>
  10886. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract cart qty inputs" enabled="true">
  10887. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  10888. <stringProp name="RegexExtractor.refname">cart_items_qty_inputs</stringProp>
  10889. <stringProp name="RegexExtractor.regex">name="cart\[([^\[\]]+)\]\[qty\]"</stringProp>
  10890. <stringProp name="RegexExtractor.template">$1$</stringProp>
  10891. <stringProp name="RegexExtractor.default"/>
  10892. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  10893. </RegexExtractor>
  10894. <hashTree/>
  10895. </hashTree>
  10896. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Remove Items From Cart" enabled="true">
  10897. <boolProp name="LoopController.continue_forever">true</boolProp>
  10898. <stringProp name="LoopController.loops">${cart_items_qty_inputs_matchNr}</stringProp>
  10899. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  10900. <hashTree>
  10901. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  10902. <stringProp name="CounterConfig.start">1</stringProp>
  10903. <stringProp name="CounterConfig.end"/>
  10904. <stringProp name="CounterConfig.incr">1</stringProp>
  10905. <stringProp name="CounterConfig.name">_counter</stringProp>
  10906. <stringProp name="CounterConfig.format"/>
  10907. <boolProp name="CounterConfig.per_user">true</boolProp>
  10908. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  10909. </CounterConfig>
  10910. <hashTree/>
  10911. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data for Removing from Cart" enabled="true">
  10912. <stringProp name="BeanShellSampler.query">
  10913. id = vars.get("_counter");
  10914. vars.put("uenc", vars.get("cart_items_uencs_" + id));
  10915. vars.put("item_id", vars.get("cart_items_qty_inputs_" + id));
  10916. </stringProp>
  10917. <stringProp name="BeanShellSampler.filename"/>
  10918. <stringProp name="BeanShellSampler.parameters"/>
  10919. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  10920. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/remove_item_from_cart_setup.jmx</stringProp></BeanShellSampler>
  10921. <hashTree/>
  10922. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Remove item" enabled="true">
  10923. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10924. <collectionProp name="Arguments.arguments">
  10925. <elementProp name="form_key" elementType="HTTPArgument">
  10926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10927. <stringProp name="Argument.value">${form_key}</stringProp>
  10928. <stringProp name="Argument.metadata">=</stringProp>
  10929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10930. <stringProp name="Argument.name">form_key</stringProp>
  10931. </elementProp>
  10932. <elementProp name="uenc" elementType="HTTPArgument">
  10933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10934. <stringProp name="Argument.value">${uenc}</stringProp>
  10935. <stringProp name="Argument.metadata">=</stringProp>
  10936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10937. <stringProp name="Argument.name">uenc</stringProp>
  10938. </elementProp>
  10939. <elementProp name="id" elementType="HTTPArgument">
  10940. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  10941. <stringProp name="Argument.value">${item_id}</stringProp>
  10942. <stringProp name="Argument.metadata">=</stringProp>
  10943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10944. <stringProp name="Argument.name">id</stringProp>
  10945. </elementProp>
  10946. </collectionProp>
  10947. </elementProp>
  10948. <stringProp name="HTTPSampler.domain"/>
  10949. <stringProp name="HTTPSampler.port"/>
  10950. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10951. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10952. <stringProp name="HTTPSampler.protocol"/>
  10953. <stringProp name="HTTPSampler.contentEncoding"/>
  10954. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/delete/</stringProp>
  10955. <stringProp name="HTTPSampler.method">POST</stringProp>
  10956. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10957. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  10958. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  10959. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  10960. <boolProp name="HTTPSampler.monitor">false</boolProp>
  10961. <stringProp name="HTTPSampler.embedded_url_re"/>
  10962. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/remove_item_from_cart.jmx</stringProp></HTTPSamplerProxy>
  10963. </hashTree>
  10964. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check Cart is Empty" enabled="true">
  10965. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  10966. <collectionProp name="Arguments.arguments">
  10967. <elementProp name="sections" elementType="HTTPArgument">
  10968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10969. <stringProp name="Argument.value">cart</stringProp>
  10970. <stringProp name="Argument.metadata">=</stringProp>
  10971. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10972. <stringProp name="Argument.name">sections</stringProp>
  10973. </elementProp>
  10974. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  10975. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10976. <stringProp name="Argument.value">true</stringProp>
  10977. <stringProp name="Argument.metadata">=</stringProp>
  10978. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10979. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  10980. </elementProp>
  10981. <elementProp name="_" elementType="HTTPArgument">
  10982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  10983. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  10984. <stringProp name="Argument.metadata">=</stringProp>
  10985. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  10986. <stringProp name="Argument.name">_</stringProp>
  10987. </elementProp>
  10988. </collectionProp>
  10989. </elementProp>
  10990. <stringProp name="HTTPSampler.domain"/>
  10991. <stringProp name="HTTPSampler.port"/>
  10992. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  10993. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  10994. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  10995. <stringProp name="HTTPSampler.contentEncoding"/>
  10996. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  10997. <stringProp name="HTTPSampler.method">GET</stringProp>
  10998. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  10999. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11000. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11001. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11002. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11003. <stringProp name="HTTPSampler.embedded_url_re"/>
  11004. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/check_cart_is_empty.jmx</stringProp></HTTPSamplerProxy>
  11005. <hashTree>
  11006. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11007. <collectionProp name="Asserion.test_strings">
  11008. <stringProp name="-350323027">\"summary_count\":0</stringProp>
  11009. </collectionProp>
  11010. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11011. <boolProp name="Assertion.assume_success">false</boolProp>
  11012. <intProp name="Assertion.test_type">2</intProp>
  11013. </ResponseAssertion>
  11014. <hashTree/>
  11015. </hashTree>
  11016. </hashTree>
  11017. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  11018. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11019. <collectionProp name="Arguments.arguments"/>
  11020. </elementProp>
  11021. <stringProp name="HTTPSampler.domain"/>
  11022. <stringProp name="HTTPSampler.port"/>
  11023. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11024. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11025. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11026. <stringProp name="HTTPSampler.contentEncoding"/>
  11027. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  11028. <stringProp name="HTTPSampler.method">GET</stringProp>
  11029. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11030. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11031. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11032. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11033. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11034. <stringProp name="HTTPSampler.embedded_url_re"/>
  11035. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  11036. <hashTree>
  11037. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  11038. <collectionProp name="Asserion.test_strings">
  11039. <stringProp name="1723813687">You are signed out.</stringProp>
  11040. </collectionProp>
  11041. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11042. <boolProp name="Assertion.assume_success">false</boolProp>
  11043. <intProp name="Assertion.test_type">2</intProp>
  11044. </ResponseAssertion>
  11045. <hashTree/>
  11046. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  11047. <boolProp name="resetInterpreter">false</boolProp>
  11048. <stringProp name="parameters"/>
  11049. <stringProp name="filename"/>
  11050. <stringProp name="script">
  11051. customerUserList = props.get("customer_emails_list");
  11052. customerUserList.add(vars.get("customer_email"));
  11053. </stringProp>
  11054. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  11055. <hashTree/>
  11056. </hashTree>
  11057. </hashTree>
  11058. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Account management" enabled="true">
  11059. <intProp name="ThroughputController.style">1</intProp>
  11060. <boolProp name="ThroughputController.perThread">false</boolProp>
  11061. <intProp name="ThroughputController.maxThroughput">1</intProp>
  11062. <stringProp name="ThroughputController.percentThroughput">${accountManagementPercentage}</stringProp>
  11063. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  11064. <hashTree>
  11065. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  11066. <stringProp name="script">
  11067. var tmpLabel = vars.get("testLabel")
  11068. if (tmpLabel) {
  11069. var testLabel = " (" + tmpLabel + ")"
  11070. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  11071. if (sampler.getName().indexOf(testLabel) == -1) {
  11072. sampler.setName(sampler.getName() + testLabel);
  11073. }
  11074. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  11075. sampler.setName("SetUp - " + sampler.getName());
  11076. }
  11077. } else {
  11078. testLabel = ""
  11079. }
  11080. </stringProp>
  11081. <stringProp name="scriptLanguage">javascript</stringProp>
  11082. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  11083. <hashTree/>
  11084. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  11085. <stringProp name="BeanShellSampler.query">
  11086. vars.put("testLabel", "Account management");
  11087. </stringProp>
  11088. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  11089. </BeanShellSampler>
  11090. <hashTree/>
  11091. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  11092. <collectionProp name="CookieManager.cookies">
  11093. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  11094. <stringProp name="Cookie.value">30</stringProp>
  11095. <stringProp name="Cookie.domain">${host}</stringProp>
  11096. <stringProp name="Cookie.path">/</stringProp>
  11097. <boolProp name="Cookie.secure">false</boolProp>
  11098. <longProp name="Cookie.expires">0</longProp>
  11099. <boolProp name="Cookie.path_specified">true</boolProp>
  11100. <boolProp name="Cookie.domain_specified">true</boolProp>
  11101. </elementProp>
  11102. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  11103. <stringProp name="Cookie.value">${form_key}</stringProp>
  11104. <stringProp name="Cookie.domain">${host}</stringProp>
  11105. <stringProp name="Cookie.path">${base_path}</stringProp>
  11106. <boolProp name="Cookie.secure">false</boolProp>
  11107. <longProp name="Cookie.expires">0</longProp>
  11108. <boolProp name="Cookie.path_specified">true</boolProp>
  11109. <boolProp name="Cookie.domain_specified">true</boolProp>
  11110. </elementProp>
  11111. </collectionProp>
  11112. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  11113. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  11114. <hashTree/>
  11115. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  11116. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  11117. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  11118. <hashTree>
  11119. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  11120. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  11121. <stringProp name="BeanShellSampler.query">
  11122. customerUserList = props.get("customer_emails_list");
  11123. customerUser = customerUserList.poll();
  11124. if (customerUser == null) {
  11125. SampleResult.setResponseMessage("customerUser list is empty");
  11126. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  11127. IsSuccess=false;
  11128. SampleResult.setSuccessful(false);
  11129. SampleResult.setStopThread(true);
  11130. }
  11131. vars.put("customer_email", customerUser);
  11132. </stringProp>
  11133. <stringProp name="BeanShellSampler.filename"/>
  11134. <stringProp name="BeanShellSampler.parameters"/>
  11135. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  11136. </BeanShellSampler>
  11137. <hashTree/>
  11138. </hashTree>
  11139. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  11140. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11141. <collectionProp name="Arguments.arguments"/>
  11142. </elementProp>
  11143. <stringProp name="HTTPSampler.domain"/>
  11144. <stringProp name="HTTPSampler.port"/>
  11145. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11146. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11147. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11148. <stringProp name="HTTPSampler.contentEncoding"/>
  11149. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  11150. <stringProp name="HTTPSampler.method">GET</stringProp>
  11151. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11152. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11153. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11154. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11155. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11156. <stringProp name="HTTPSampler.embedded_url_re"/>
  11157. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  11158. <hashTree>
  11159. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11160. <collectionProp name="Asserion.test_strings">
  11161. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  11162. </collectionProp>
  11163. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11164. <boolProp name="Assertion.assume_success">false</boolProp>
  11165. <intProp name="Assertion.test_type">2</intProp>
  11166. </ResponseAssertion>
  11167. <hashTree/>
  11168. </hashTree>
  11169. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  11170. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11171. <collectionProp name="Arguments.arguments"/>
  11172. </elementProp>
  11173. <stringProp name="HTTPSampler.domain"/>
  11174. <stringProp name="HTTPSampler.port"/>
  11175. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11176. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11177. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11178. <stringProp name="HTTPSampler.contentEncoding"/>
  11179. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  11180. <stringProp name="HTTPSampler.method">GET</stringProp>
  11181. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11182. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11183. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11184. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11185. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11186. <stringProp name="HTTPSampler.embedded_url_re"/>
  11187. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  11188. <hashTree>
  11189. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11190. <collectionProp name="Asserion.test_strings">
  11191. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  11192. </collectionProp>
  11193. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11194. <boolProp name="Assertion.assume_success">false</boolProp>
  11195. <intProp name="Assertion.test_type">2</intProp>
  11196. </ResponseAssertion>
  11197. <hashTree/>
  11198. </hashTree>
  11199. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  11200. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11201. <collectionProp name="Arguments.arguments">
  11202. <elementProp name="form_key" elementType="HTTPArgument">
  11203. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11204. <stringProp name="Argument.value">${form_key}</stringProp>
  11205. <stringProp name="Argument.metadata">=</stringProp>
  11206. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11207. <stringProp name="Argument.name">form_key</stringProp>
  11208. </elementProp>
  11209. <elementProp name="login[username]" elementType="HTTPArgument">
  11210. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11211. <stringProp name="Argument.value">${customer_email}</stringProp>
  11212. <stringProp name="Argument.metadata">=</stringProp>
  11213. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11214. <stringProp name="Argument.name">login[username]</stringProp>
  11215. </elementProp>
  11216. <elementProp name="login[password]" elementType="HTTPArgument">
  11217. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11218. <stringProp name="Argument.value">${customer_password}</stringProp>
  11219. <stringProp name="Argument.metadata">=</stringProp>
  11220. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11221. <stringProp name="Argument.name">login[password]</stringProp>
  11222. </elementProp>
  11223. <elementProp name="send" elementType="HTTPArgument">
  11224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11225. <stringProp name="Argument.value"/>
  11226. <stringProp name="Argument.metadata">=</stringProp>
  11227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11228. <stringProp name="Argument.name">send</stringProp>
  11229. </elementProp>
  11230. </collectionProp>
  11231. </elementProp>
  11232. <stringProp name="HTTPSampler.domain"/>
  11233. <stringProp name="HTTPSampler.port"/>
  11234. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11235. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11236. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11237. <stringProp name="HTTPSampler.contentEncoding"/>
  11238. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  11239. <stringProp name="HTTPSampler.method">POST</stringProp>
  11240. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11241. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11242. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11243. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11244. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11245. <stringProp name="HTTPSampler.embedded_url_re"/>
  11246. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  11247. <hashTree>
  11248. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11249. <collectionProp name="Asserion.test_strings">
  11250. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  11251. </collectionProp>
  11252. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11253. <boolProp name="Assertion.assume_success">false</boolProp>
  11254. <intProp name="Assertion.test_type">2</intProp>
  11255. </ResponseAssertion>
  11256. <hashTree/>
  11257. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  11258. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11259. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  11260. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  11261. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11262. <stringProp name="RegexExtractor.default"/>
  11263. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11264. </RegexExtractor>
  11265. <hashTree/>
  11266. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  11267. <collectionProp name="Asserion.test_strings">
  11268. <stringProp name="2845929">^.+$</stringProp>
  11269. </collectionProp>
  11270. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11271. <boolProp name="Assertion.assume_success">false</boolProp>
  11272. <intProp name="Assertion.test_type">1</intProp>
  11273. <stringProp name="Assertion.scope">variable</stringProp>
  11274. <stringProp name="Scope.variable">addressId</stringProp>
  11275. </ResponseAssertion>
  11276. <hashTree/>
  11277. </hashTree>
  11278. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  11279. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11280. <collectionProp name="Arguments.arguments">
  11281. <elementProp name="sections" elementType="HTTPArgument">
  11282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11283. <stringProp name="Argument.value"/>
  11284. <stringProp name="Argument.metadata">=</stringProp>
  11285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11286. <stringProp name="Argument.name">sections</stringProp>
  11287. </elementProp>
  11288. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  11289. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11290. <stringProp name="Argument.value">false</stringProp>
  11291. <stringProp name="Argument.metadata">=</stringProp>
  11292. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11293. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  11294. </elementProp>
  11295. <elementProp name="_" elementType="HTTPArgument">
  11296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11297. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  11298. <stringProp name="Argument.metadata">=</stringProp>
  11299. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11300. <stringProp name="Argument.name">_</stringProp>
  11301. </elementProp>
  11302. </collectionProp>
  11303. </elementProp>
  11304. <stringProp name="HTTPSampler.domain"/>
  11305. <stringProp name="HTTPSampler.port"/>
  11306. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11307. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11308. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11309. <stringProp name="HTTPSampler.contentEncoding"/>
  11310. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  11311. <stringProp name="HTTPSampler.method">GET</stringProp>
  11312. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11313. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11314. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11315. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11316. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11317. <stringProp name="HTTPSampler.embedded_url_re"/>
  11318. </HTTPSamplerProxy>
  11319. <hashTree/>
  11320. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Orders" enabled="true">
  11321. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11322. <collectionProp name="Arguments.arguments"/>
  11323. </elementProp>
  11324. <stringProp name="HTTPSampler.domain"/>
  11325. <stringProp name="HTTPSampler.port"/>
  11326. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11327. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11328. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11329. <stringProp name="HTTPSampler.contentEncoding"/>
  11330. <stringProp name="HTTPSampler.path">${base_path}sales/order/history/</stringProp>
  11331. <stringProp name="HTTPSampler.method">GET</stringProp>
  11332. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11333. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11334. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11335. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11336. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11337. <stringProp name="HTTPSampler.embedded_url_re"/>
  11338. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/my_orders.jmx</stringProp></HTTPSamplerProxy>
  11339. <hashTree>
  11340. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11341. <collectionProp name="Asserion.test_strings">
  11342. <stringProp name="220295440">&lt;title&gt;My Orders&lt;/title&gt;</stringProp>
  11343. </collectionProp>
  11344. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11345. <boolProp name="Assertion.assume_success">false</boolProp>
  11346. <intProp name="Assertion.test_type">2</intProp>
  11347. </ResponseAssertion>
  11348. <hashTree/>
  11349. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
  11350. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11351. <stringProp name="RegexExtractor.refname">orderId</stringProp>
  11352. <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
  11353. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11354. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  11355. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11356. </RegexExtractor>
  11357. <hashTree/>
  11358. </hashTree>
  11359. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Orders Controller" enabled="true">
  11360. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/if_orders.jmx</stringProp>
  11361. <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
  11362. <boolProp name="IfController.evaluateAll">false</boolProp>
  11363. </IfController>
  11364. <hashTree>
  11365. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order" enabled="true">
  11366. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11367. <collectionProp name="Arguments.arguments"/>
  11368. </elementProp>
  11369. <stringProp name="HTTPSampler.domain"/>
  11370. <stringProp name="HTTPSampler.port"/>
  11371. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11372. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11373. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11374. <stringProp name="HTTPSampler.contentEncoding"/>
  11375. <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
  11376. <stringProp name="HTTPSampler.method">GET</stringProp>
  11377. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11378. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11379. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11380. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11381. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11382. <stringProp name="HTTPSampler.embedded_url_re"/>
  11383. </HTTPSamplerProxy>
  11384. <hashTree>
  11385. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11386. <collectionProp name="Asserion.test_strings">
  11387. <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
  11388. </collectionProp>
  11389. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11390. <boolProp name="Assertion.assume_success">false</boolProp>
  11391. <intProp name="Assertion.test_type">2</intProp>
  11392. </ResponseAssertion>
  11393. <hashTree/>
  11394. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract shipment tab" enabled="true">
  11395. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11396. <stringProp name="RegexExtractor.refname">shipment_tab</stringProp>
  11397. <stringProp name="RegexExtractor.regex">sales/order/shipment/order_id/(\d+)..Order Shipments</stringProp>
  11398. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11399. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  11400. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11401. </RegexExtractor>
  11402. <hashTree/>
  11403. </hashTree>
  11404. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Shipments Controller" enabled="true">
  11405. <stringProp name="TestPlan.comments">May not have shipped</stringProp>
  11406. <stringProp name="IfController.condition">"${shipment_tab}" != "NOT_FOUND"</stringProp>
  11407. <boolProp name="IfController.evaluateAll">false</boolProp>
  11408. </IfController>
  11409. <hashTree>
  11410. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order Shipments" enabled="true">
  11411. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11412. <collectionProp name="Arguments.arguments"/>
  11413. </elementProp>
  11414. <stringProp name="HTTPSampler.domain"/>
  11415. <stringProp name="HTTPSampler.port"/>
  11416. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11417. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11418. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11419. <stringProp name="HTTPSampler.contentEncoding"/>
  11420. <stringProp name="HTTPSampler.path">${base_path}sales/order/shipment/order_id/${orderId}</stringProp>
  11421. <stringProp name="HTTPSampler.method">GET</stringProp>
  11422. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11423. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11424. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11425. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11426. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11427. <stringProp name="HTTPSampler.embedded_url_re"/>
  11428. </HTTPSamplerProxy>
  11429. <hashTree>
  11430. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11431. <collectionProp name="Asserion.test_strings">
  11432. <stringProp name="120578727">Track this shipment</stringProp>
  11433. </collectionProp>
  11434. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11435. <boolProp name="Assertion.assume_success">false</boolProp>
  11436. <intProp name="Assertion.test_type">2</intProp>
  11437. </ResponseAssertion>
  11438. <hashTree/>
  11439. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract popup link" enabled="true">
  11440. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11441. <stringProp name="RegexExtractor.refname">popupLink</stringProp>
  11442. <stringProp name="RegexExtractor.regex">popupWindow": {"windowURL":"([^'"]+)",</stringProp>
  11443. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11444. <stringProp name="RegexExtractor.default"/>
  11445. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11446. </RegexExtractor>
  11447. <hashTree/>
  11448. </hashTree>
  11449. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Track Shipment" enabled="true">
  11450. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11451. <collectionProp name="Arguments.arguments"/>
  11452. </elementProp>
  11453. <stringProp name="HTTPSampler.domain"/>
  11454. <stringProp name="HTTPSampler.port"/>
  11455. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11456. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11457. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11458. <stringProp name="HTTPSampler.contentEncoding"/>
  11459. <stringProp name="HTTPSampler.path">${popupLink}</stringProp>
  11460. <stringProp name="HTTPSampler.method">GET</stringProp>
  11461. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11462. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11463. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11464. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11465. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11466. <stringProp name="HTTPSampler.embedded_url_re"/>
  11467. </HTTPSamplerProxy>
  11468. <hashTree>
  11469. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11470. <collectionProp name="Asserion.test_strings">
  11471. <stringProp name="-760430210">&lt;title&gt;Tracking Information&lt;/title&gt;</stringProp>
  11472. </collectionProp>
  11473. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11474. <boolProp name="Assertion.assume_success">false</boolProp>
  11475. <intProp name="Assertion.test_type">2</intProp>
  11476. </ResponseAssertion>
  11477. <hashTree/>
  11478. </hashTree>
  11479. </hashTree>
  11480. </hashTree>
  11481. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Downloadable Products" enabled="true">
  11482. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11483. <collectionProp name="Arguments.arguments"/>
  11484. </elementProp>
  11485. <stringProp name="HTTPSampler.domain"/>
  11486. <stringProp name="HTTPSampler.port"/>
  11487. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11488. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11489. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11490. <stringProp name="HTTPSampler.contentEncoding"/>
  11491. <stringProp name="HTTPSampler.path">${base_path}downloadable/customer/products</stringProp>
  11492. <stringProp name="HTTPSampler.method">GET</stringProp>
  11493. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11494. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11495. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11496. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11497. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11498. <stringProp name="HTTPSampler.embedded_url_re"/>
  11499. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/my_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
  11500. <hashTree>
  11501. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11502. <collectionProp name="Asserion.test_strings">
  11503. <stringProp name="358050505">&lt;title&gt;My Downloadable Products&lt;/title&gt;</stringProp>
  11504. </collectionProp>
  11505. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11506. <boolProp name="Assertion.assume_success">false</boolProp>
  11507. <intProp name="Assertion.test_type">2</intProp>
  11508. </ResponseAssertion>
  11509. <hashTree/>
  11510. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
  11511. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11512. <stringProp name="RegexExtractor.refname">orderId</stringProp>
  11513. <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
  11514. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11515. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  11516. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11517. </RegexExtractor>
  11518. <hashTree/>
  11519. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract linkId" enabled="true">
  11520. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11521. <stringProp name="RegexExtractor.refname">linkId</stringProp>
  11522. <stringProp name="RegexExtractor.regex">downloadable/download/link/id/(\d+)/</stringProp>
  11523. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11524. <stringProp name="RegexExtractor.default"/>
  11525. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11526. </RegexExtractor>
  11527. <hashTree/>
  11528. </hashTree>
  11529. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Downloadables Controller" enabled="true">
  11530. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/if_downloadables.jmx</stringProp>
  11531. <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
  11532. <boolProp name="IfController.evaluateAll">false</boolProp>
  11533. </IfController>
  11534. <hashTree>
  11535. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Downloadable Product" enabled="true">
  11536. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11537. <collectionProp name="Arguments.arguments"/>
  11538. </elementProp>
  11539. <stringProp name="HTTPSampler.domain"/>
  11540. <stringProp name="HTTPSampler.port"/>
  11541. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11542. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11543. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11544. <stringProp name="HTTPSampler.contentEncoding"/>
  11545. <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
  11546. <stringProp name="HTTPSampler.method">GET</stringProp>
  11547. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11548. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11549. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11550. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11551. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11552. <stringProp name="HTTPSampler.embedded_url_re"/>
  11553. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/view_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
  11554. <hashTree>
  11555. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11556. <collectionProp name="Asserion.test_strings">
  11557. <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
  11558. </collectionProp>
  11559. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11560. <boolProp name="Assertion.assume_success">false</boolProp>
  11561. <intProp name="Assertion.test_type">2</intProp>
  11562. </ResponseAssertion>
  11563. <hashTree/>
  11564. </hashTree>
  11565. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Download Product" enabled="true">
  11566. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11567. <collectionProp name="Arguments.arguments"/>
  11568. </elementProp>
  11569. <stringProp name="HTTPSampler.domain"/>
  11570. <stringProp name="HTTPSampler.port"/>
  11571. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11572. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11573. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11574. <stringProp name="HTTPSampler.contentEncoding"/>
  11575. <stringProp name="HTTPSampler.path">${base_path}downloadable/download/link/id/${linkId}</stringProp>
  11576. <stringProp name="HTTPSampler.method">GET</stringProp>
  11577. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11578. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11579. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11580. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11581. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11582. <stringProp name="HTTPSampler.embedded_url_re"/>
  11583. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/download_product.jmx</stringProp></HTTPSamplerProxy>
  11584. <hashTree/>
  11585. </hashTree>
  11586. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Wish List" enabled="true">
  11587. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11588. <collectionProp name="Arguments.arguments"/>
  11589. </elementProp>
  11590. <stringProp name="HTTPSampler.domain"/>
  11591. <stringProp name="HTTPSampler.port"/>
  11592. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11593. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11594. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11595. <stringProp name="HTTPSampler.contentEncoding"/>
  11596. <stringProp name="HTTPSampler.path">${base_path}wishlist</stringProp>
  11597. <stringProp name="HTTPSampler.method">GET</stringProp>
  11598. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11599. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11600. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11601. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11602. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11603. <stringProp name="HTTPSampler.embedded_url_re"/>
  11604. </HTTPSamplerProxy>
  11605. <hashTree>
  11606. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11607. <collectionProp name="Asserion.test_strings">
  11608. <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
  11609. </collectionProp>
  11610. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11611. <boolProp name="Assertion.assume_success">false</boolProp>
  11612. <intProp name="Assertion.test_type">2</intProp>
  11613. </ResponseAssertion>
  11614. <hashTree/>
  11615. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract wishlistId" enabled="true">
  11616. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11617. <stringProp name="RegexExtractor.refname">wishlistId</stringProp>
  11618. <stringProp name="RegexExtractor.regex">wishlist/index/update/wishlist_id/([^'"]+)/</stringProp>
  11619. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11620. <stringProp name="RegexExtractor.default"/>
  11621. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11622. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/my_wish_list.jmx</stringProp>
  11623. </RegexExtractor>
  11624. <hashTree/>
  11625. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Verify that there are items in the wishlist" enabled="true">
  11626. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11627. <stringProp name="RegexExtractor.refname">buttonTitle</stringProp>
  11628. <stringProp name="RegexExtractor.regex">Update Wish List</stringProp>
  11629. <stringProp name="RegexExtractor.template">FOUND</stringProp>
  11630. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  11631. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11632. </RegexExtractor>
  11633. <hashTree/>
  11634. </hashTree>
  11635. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Wish List Controller" enabled="true">
  11636. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/if_wishlist.jmx</stringProp>
  11637. <stringProp name="IfController.condition">"${buttonTitle}" === "FOUND"</stringProp>
  11638. <boolProp name="IfController.evaluateAll">false</boolProp>
  11639. </IfController>
  11640. <hashTree>
  11641. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Share Wish List" enabled="true">
  11642. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11643. <collectionProp name="Arguments.arguments"/>
  11644. </elementProp>
  11645. <stringProp name="HTTPSampler.domain"/>
  11646. <stringProp name="HTTPSampler.port"/>
  11647. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11648. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11649. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11650. <stringProp name="HTTPSampler.contentEncoding"/>
  11651. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/share/wishlist_id/${wishlistId}/</stringProp>
  11652. <stringProp name="HTTPSampler.method">GET</stringProp>
  11653. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11654. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11655. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11656. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11657. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11658. <stringProp name="HTTPSampler.embedded_url_re"/>
  11659. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/share_wish_list.jmx</stringProp></HTTPSamplerProxy>
  11660. <hashTree>
  11661. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11662. <collectionProp name="Asserion.test_strings">
  11663. <stringProp name="1257102154">&lt;title&gt;Wish List Sharing&lt;/title&gt;</stringProp>
  11664. </collectionProp>
  11665. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11666. <boolProp name="Assertion.assume_success">false</boolProp>
  11667. <intProp name="Assertion.test_type">2</intProp>
  11668. </ResponseAssertion>
  11669. <hashTree/>
  11670. </hashTree>
  11671. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Send Wish List" enabled="true">
  11672. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11673. <collectionProp name="Arguments.arguments">
  11674. <elementProp name="form_key" elementType="HTTPArgument">
  11675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11676. <stringProp name="Argument.value">${form_key}</stringProp>
  11677. <stringProp name="Argument.metadata">=</stringProp>
  11678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11679. <stringProp name="Argument.name">form_key</stringProp>
  11680. <stringProp name="Argument.desc">true</stringProp>
  11681. </elementProp>
  11682. <elementProp name="emails" elementType="HTTPArgument">
  11683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11684. <stringProp name="Argument.value">${customer_email}</stringProp>
  11685. <stringProp name="Argument.metadata">=</stringProp>
  11686. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11687. <stringProp name="Argument.name">emails</stringProp>
  11688. </elementProp>
  11689. <elementProp name="message" elementType="HTTPArgument">
  11690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11691. <stringProp name="Argument.value">[TEST] See my wishlist!!!</stringProp>
  11692. <stringProp name="Argument.metadata">=</stringProp>
  11693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11694. <stringProp name="Argument.name">message</stringProp>
  11695. </elementProp>
  11696. </collectionProp>
  11697. </elementProp>
  11698. <stringProp name="HTTPSampler.domain"/>
  11699. <stringProp name="HTTPSampler.port"/>
  11700. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11701. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11702. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11703. <stringProp name="HTTPSampler.contentEncoding"/>
  11704. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/send/wishlist_id/${wishlistId}/</stringProp>
  11705. <stringProp name="HTTPSampler.method">POST</stringProp>
  11706. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11707. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11708. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11709. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11710. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11711. <stringProp name="HTTPSampler.embedded_url_re"/>
  11712. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/send_wish_list.jmx</stringProp></HTTPSamplerProxy>
  11713. <hashTree>
  11714. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  11715. <collectionProp name="Asserion.test_strings">
  11716. <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
  11717. </collectionProp>
  11718. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11719. <boolProp name="Assertion.assume_success">false</boolProp>
  11720. <intProp name="Assertion.test_type">2</intProp>
  11721. </ResponseAssertion>
  11722. <hashTree/>
  11723. </hashTree>
  11724. </hashTree>
  11725. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  11726. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11727. <collectionProp name="Arguments.arguments"/>
  11728. </elementProp>
  11729. <stringProp name="HTTPSampler.domain"/>
  11730. <stringProp name="HTTPSampler.port"/>
  11731. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11732. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11733. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11734. <stringProp name="HTTPSampler.contentEncoding"/>
  11735. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  11736. <stringProp name="HTTPSampler.method">GET</stringProp>
  11737. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11738. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11739. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11740. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11741. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11742. <stringProp name="HTTPSampler.embedded_url_re"/>
  11743. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  11744. <hashTree>
  11745. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  11746. <collectionProp name="Asserion.test_strings">
  11747. <stringProp name="1723813687">You are signed out.</stringProp>
  11748. </collectionProp>
  11749. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11750. <boolProp name="Assertion.assume_success">false</boolProp>
  11751. <intProp name="Assertion.test_type">2</intProp>
  11752. </ResponseAssertion>
  11753. <hashTree/>
  11754. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  11755. <boolProp name="resetInterpreter">false</boolProp>
  11756. <stringProp name="parameters"/>
  11757. <stringProp name="filename"/>
  11758. <stringProp name="script">
  11759. customerUserList = props.get("customer_emails_list");
  11760. customerUserList.add(vars.get("customer_email"));
  11761. </stringProp>
  11762. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  11763. <hashTree/>
  11764. </hashTree>
  11765. </hashTree>
  11766. </hashTree>
  11767. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Admin Pool" enabled="true">
  11768. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  11769. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  11770. <boolProp name="LoopController.continue_forever">false</boolProp>
  11771. <stringProp name="LoopController.loops">${loops}</stringProp>
  11772. </elementProp>
  11773. <stringProp name="ThreadGroup.num_threads">${adminPoolUsers}</stringProp>
  11774. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  11775. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  11776. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  11777. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  11778. <stringProp name="ThreadGroup.duration"/>
  11779. <stringProp name="ThreadGroup.delay"/>
  11780. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  11781. <hashTree>
  11782. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin CMS Management" enabled="true">
  11783. <intProp name="ThroughputController.style">1</intProp>
  11784. <boolProp name="ThroughputController.perThread">false</boolProp>
  11785. <intProp name="ThroughputController.maxThroughput">1</intProp>
  11786. <stringProp name="ThroughputController.percentThroughput">${adminCMSManagementPercentage}</stringProp>
  11787. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  11788. <hashTree>
  11789. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  11790. <stringProp name="script">
  11791. var tmpLabel = vars.get("testLabel")
  11792. if (tmpLabel) {
  11793. var testLabel = " (" + tmpLabel + ")"
  11794. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  11795. if (sampler.getName().indexOf(testLabel) == -1) {
  11796. sampler.setName(sampler.getName() + testLabel);
  11797. }
  11798. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  11799. sampler.setName("SetUp - " + sampler.getName());
  11800. }
  11801. } else {
  11802. testLabel = ""
  11803. }
  11804. </stringProp>
  11805. <stringProp name="scriptLanguage">javascript</stringProp>
  11806. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  11807. <hashTree/>
  11808. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  11809. <stringProp name="BeanShellSampler.query">
  11810. vars.put("testLabel", "Admin CMS Management");
  11811. </stringProp>
  11812. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  11813. </BeanShellSampler>
  11814. <hashTree/>
  11815. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  11816. <stringProp name="script">
  11817. function getFormKeyFromResponse()
  11818. {
  11819. var url = prev.getUrlAsString(),
  11820. responseCode = prev.getResponseCode(),
  11821. formKey = null;
  11822. searchPattern = /var FORM_KEY = '(.+)'/;
  11823. if (responseCode == "200" &amp;&amp; url) {
  11824. response = prev.getResponseDataAsString();
  11825. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  11826. }
  11827. return formKey;
  11828. }
  11829. formKey = vars.get("form_key_storage");
  11830. currentFormKey = getFormKeyFromResponse();
  11831. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  11832. vars.put("form_key_storage", currentFormKey);
  11833. }
  11834. </stringProp>
  11835. <stringProp name="scriptLanguage">javascript</stringProp>
  11836. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  11837. <hashTree/>
  11838. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  11839. <stringProp name="script">
  11840. formKey = vars.get("form_key_storage");
  11841. if (formKey
  11842. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  11843. &amp;&amp; sampler.getMethod() == "POST")
  11844. {
  11845. arguments = sampler.getArguments();
  11846. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  11847. {
  11848. argument = arguments.getArgument(i);
  11849. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  11850. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  11851. argument.setValue(formKey);
  11852. }
  11853. }
  11854. }
  11855. </stringProp>
  11856. <stringProp name="scriptLanguage">javascript</stringProp>
  11857. </JSR223PreProcessor>
  11858. <hashTree/>
  11859. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  11860. <collectionProp name="CookieManager.cookies"/>
  11861. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  11862. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  11863. <hashTree/>
  11864. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  11865. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  11866. </GenericController>
  11867. <hashTree>
  11868. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  11869. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  11870. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  11871. <hashTree>
  11872. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  11873. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  11874. <stringProp name="BeanShellSampler.query">
  11875. adminUser = "none";
  11876. adminUserList = props.get("adminUserList");
  11877. adminUserListIterator = props.get("adminUserListIterator");
  11878. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  11879. if (adminUsersDistribution == 1) {
  11880. adminUser = adminUserList.poll();
  11881. } else {
  11882. if (!adminUserListIterator.hasNext()) {
  11883. adminUserListIterator = adminUserList.descendingIterator();
  11884. }
  11885. adminUser = adminUserListIterator.next();
  11886. }
  11887. if (adminUser == "none") {
  11888. SampleResult.setResponseMessage("adminUser list is empty");
  11889. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  11890. IsSuccess=false;
  11891. SampleResult.setSuccessful(false);
  11892. SampleResult.setStopThread(true);
  11893. }
  11894. vars.put("admin_user", adminUser);
  11895. </stringProp>
  11896. <stringProp name="BeanShellSampler.filename"/>
  11897. <stringProp name="BeanShellSampler.parameters"/>
  11898. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  11899. </BeanShellSampler>
  11900. <hashTree/>
  11901. </hashTree>
  11902. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  11903. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11904. <collectionProp name="Arguments.arguments"/>
  11905. </elementProp>
  11906. <stringProp name="HTTPSampler.domain"/>
  11907. <stringProp name="HTTPSampler.port"/>
  11908. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11909. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11910. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11911. <stringProp name="HTTPSampler.contentEncoding"/>
  11912. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  11913. <stringProp name="HTTPSampler.method">GET</stringProp>
  11914. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11915. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11916. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11917. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11918. <boolProp name="HTTPSampler.monitor">false</boolProp>
  11919. <stringProp name="HTTPSampler.embedded_url_re"/>
  11920. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  11921. <hashTree>
  11922. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  11923. <collectionProp name="Asserion.test_strings">
  11924. <stringProp name="-1397214398">Welcome</stringProp>
  11925. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  11926. </collectionProp>
  11927. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11928. <boolProp name="Assertion.assume_success">false</boolProp>
  11929. <intProp name="Assertion.test_type">2</intProp>
  11930. </ResponseAssertion>
  11931. <hashTree/>
  11932. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  11933. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  11934. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  11935. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  11936. <stringProp name="RegexExtractor.template">$1$</stringProp>
  11937. <stringProp name="RegexExtractor.default"/>
  11938. <stringProp name="RegexExtractor.match_number">1</stringProp>
  11939. </RegexExtractor>
  11940. <hashTree/>
  11941. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  11942. <collectionProp name="Asserion.test_strings">
  11943. <stringProp name="2845929">^.+$</stringProp>
  11944. </collectionProp>
  11945. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  11946. <boolProp name="Assertion.assume_success">false</boolProp>
  11947. <intProp name="Assertion.test_type">1</intProp>
  11948. <stringProp name="Assertion.scope">variable</stringProp>
  11949. <stringProp name="Scope.variable">admin_form_key</stringProp>
  11950. </ResponseAssertion>
  11951. <hashTree/>
  11952. </hashTree>
  11953. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  11954. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  11955. <collectionProp name="Arguments.arguments">
  11956. <elementProp name="dummy" elementType="HTTPArgument">
  11957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11958. <stringProp name="Argument.value"/>
  11959. <stringProp name="Argument.metadata">=</stringProp>
  11960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11961. <stringProp name="Argument.name">dummy</stringProp>
  11962. </elementProp>
  11963. <elementProp name="form_key" elementType="HTTPArgument">
  11964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11965. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  11966. <stringProp name="Argument.metadata">=</stringProp>
  11967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11968. <stringProp name="Argument.name">form_key</stringProp>
  11969. </elementProp>
  11970. <elementProp name="login[password]" elementType="HTTPArgument">
  11971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11972. <stringProp name="Argument.value">${admin_password}</stringProp>
  11973. <stringProp name="Argument.metadata">=</stringProp>
  11974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11975. <stringProp name="Argument.name">login[password]</stringProp>
  11976. </elementProp>
  11977. <elementProp name="login[username]" elementType="HTTPArgument">
  11978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  11979. <stringProp name="Argument.value">${admin_user}</stringProp>
  11980. <stringProp name="Argument.metadata">=</stringProp>
  11981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  11982. <stringProp name="Argument.name">login[username]</stringProp>
  11983. </elementProp>
  11984. </collectionProp>
  11985. </elementProp>
  11986. <stringProp name="HTTPSampler.domain"/>
  11987. <stringProp name="HTTPSampler.port"/>
  11988. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  11989. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  11990. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  11991. <stringProp name="HTTPSampler.contentEncoding"/>
  11992. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  11993. <stringProp name="HTTPSampler.method">POST</stringProp>
  11994. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  11995. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  11996. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  11997. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  11998. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  11999. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12000. <stringProp name="HTTPSampler.embedded_url_re"/>
  12001. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  12002. </HTTPSamplerProxy>
  12003. <hashTree>
  12004. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  12005. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  12006. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  12007. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  12008. <stringProp name="RegexExtractor.template">$1$</stringProp>
  12009. <stringProp name="RegexExtractor.default"/>
  12010. <stringProp name="RegexExtractor.match_number">1</stringProp>
  12011. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  12012. <hashTree/>
  12013. </hashTree>
  12014. </hashTree>
  12015. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  12016. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  12017. </GenericController>
  12018. <hashTree>
  12019. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin CMS Management" enabled="true">
  12020. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_cms_management/admin_cms_management.jmx</stringProp>
  12021. </TestFragmentController>
  12022. <hashTree>
  12023. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  12024. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12025. <collectionProp name="Arguments.arguments"/>
  12026. </elementProp>
  12027. <stringProp name="HTTPSampler.domain"/>
  12028. <stringProp name="HTTPSampler.port"/>
  12029. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12030. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12031. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12032. <stringProp name="HTTPSampler.contentEncoding"/>
  12033. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/</stringProp>
  12034. <stringProp name="HTTPSampler.method">GET</stringProp>
  12035. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12036. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12037. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12038. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12039. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12040. <stringProp name="HTTPSampler.embedded_url_re"/>
  12041. </HTTPSamplerProxy>
  12042. <hashTree/>
  12043. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  12044. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12045. <collectionProp name="Arguments.arguments"/>
  12046. </elementProp>
  12047. <stringProp name="HTTPSampler.domain"/>
  12048. <stringProp name="HTTPSampler.port"/>
  12049. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12050. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12051. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12052. <stringProp name="HTTPSampler.contentEncoding"/>
  12053. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/new</stringProp>
  12054. <stringProp name="HTTPSampler.method">GET</stringProp>
  12055. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12056. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12057. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12058. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12059. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12060. <stringProp name="HTTPSampler.embedded_url_re"/>
  12061. </HTTPSamplerProxy>
  12062. <hashTree/>
  12063. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  12064. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12065. <collectionProp name="Arguments.arguments">
  12066. <elementProp name="content" elementType="HTTPArgument">
  12067. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12068. <stringProp name="Argument.value">&lt;p&gt;CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  12069. <stringProp name="Argument.metadata">=</stringProp>
  12070. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12071. <stringProp name="Argument.name">content</stringProp>
  12072. </elementProp>
  12073. <elementProp name="content_heading" elementType="HTTPArgument">
  12074. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12075. <stringProp name="Argument.value"/>
  12076. <stringProp name="Argument.metadata">=</stringProp>
  12077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12078. <stringProp name="Argument.name">content_heading</stringProp>
  12079. </elementProp>
  12080. <elementProp name="form_key" elementType="HTTPArgument">
  12081. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12082. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  12083. <stringProp name="Argument.metadata">=</stringProp>
  12084. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12085. <stringProp name="Argument.name">form_key</stringProp>
  12086. </elementProp>
  12087. <elementProp name="identifier" elementType="HTTPArgument">
  12088. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12089. <stringProp name="Argument.value"/>
  12090. <stringProp name="Argument.metadata">=</stringProp>
  12091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12092. <stringProp name="Argument.name">identifier</stringProp>
  12093. </elementProp>
  12094. <elementProp name="is_active" elementType="HTTPArgument">
  12095. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12096. <stringProp name="Argument.value">1</stringProp>
  12097. <stringProp name="Argument.metadata">=</stringProp>
  12098. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12099. <stringProp name="Argument.name">is_active</stringProp>
  12100. </elementProp>
  12101. <elementProp name="layout_update_xml" elementType="HTTPArgument">
  12102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12103. <stringProp name="Argument.value"/>
  12104. <stringProp name="Argument.metadata">=</stringProp>
  12105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12106. <stringProp name="Argument.name">layout_update_xml</stringProp>
  12107. </elementProp>
  12108. <elementProp name="meta_description" elementType="HTTPArgument">
  12109. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12110. <stringProp name="Argument.value"/>
  12111. <stringProp name="Argument.metadata">=</stringProp>
  12112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12113. <stringProp name="Argument.name">meta_description</stringProp>
  12114. </elementProp>
  12115. <elementProp name="meta_keywords" elementType="HTTPArgument">
  12116. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12117. <stringProp name="Argument.value"/>
  12118. <stringProp name="Argument.metadata">=</stringProp>
  12119. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12120. <stringProp name="Argument.name">meta_keywords</stringProp>
  12121. </elementProp>
  12122. <elementProp name="meta_title" elementType="HTTPArgument">
  12123. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12124. <stringProp name="Argument.value"/>
  12125. <stringProp name="Argument.metadata">=</stringProp>
  12126. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12127. <stringProp name="Argument.name">meta_title</stringProp>
  12128. </elementProp>
  12129. <elementProp name="nodes_data" elementType="HTTPArgument">
  12130. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  12131. <stringProp name="Argument.value">{}</stringProp>
  12132. <stringProp name="Argument.metadata">=</stringProp>
  12133. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12134. <stringProp name="Argument.name">nodes_data</stringProp>
  12135. </elementProp>
  12136. <elementProp name="node_ids" elementType="HTTPArgument">
  12137. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12138. <stringProp name="Argument.value"/>
  12139. <stringProp name="Argument.metadata">=</stringProp>
  12140. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12141. <stringProp name="Argument.name">node_ids</stringProp>
  12142. </elementProp>
  12143. <elementProp name="page_id" elementType="HTTPArgument">
  12144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12145. <stringProp name="Argument.value"/>
  12146. <stringProp name="Argument.metadata">=</stringProp>
  12147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12148. <stringProp name="Argument.name">page_id</stringProp>
  12149. </elementProp>
  12150. <elementProp name="page_layout" elementType="HTTPArgument">
  12151. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12152. <stringProp name="Argument.value">1column</stringProp>
  12153. <stringProp name="Argument.metadata">=</stringProp>
  12154. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12155. <stringProp name="Argument.name">page_layout</stringProp>
  12156. </elementProp>
  12157. <elementProp name="store_id[0]" elementType="HTTPArgument">
  12158. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12159. <stringProp name="Argument.value">0</stringProp>
  12160. <stringProp name="Argument.metadata">=</stringProp>
  12161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12162. <stringProp name="Argument.name">store_id[0]</stringProp>
  12163. </elementProp>
  12164. <elementProp name="title" elementType="HTTPArgument">
  12165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12166. <stringProp name="Argument.value">CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  12167. <stringProp name="Argument.metadata">=</stringProp>
  12168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12169. <stringProp name="Argument.name">title</stringProp>
  12170. </elementProp>
  12171. <elementProp name="website_root" elementType="HTTPArgument">
  12172. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12173. <stringProp name="Argument.value">0</stringProp>
  12174. <stringProp name="Argument.metadata">=</stringProp>
  12175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12176. <stringProp name="Argument.name">website_root</stringProp>
  12177. </elementProp>
  12178. </collectionProp>
  12179. </elementProp>
  12180. <stringProp name="HTTPSampler.domain"/>
  12181. <stringProp name="HTTPSampler.port"/>
  12182. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12183. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12184. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12185. <stringProp name="HTTPSampler.contentEncoding"/>
  12186. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/save/</stringProp>
  12187. <stringProp name="HTTPSampler.method">POST</stringProp>
  12188. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12189. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12190. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12191. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12192. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12193. <stringProp name="HTTPSampler.embedded_url_re"/>
  12194. </HTTPSamplerProxy>
  12195. <hashTree>
  12196. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  12197. <collectionProp name="Asserion.test_strings">
  12198. <stringProp name="-398886250">You saved the page.</stringProp>
  12199. </collectionProp>
  12200. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  12201. <boolProp name="Assertion.assume_success">false</boolProp>
  12202. <intProp name="Assertion.test_type">16</intProp>
  12203. </ResponseAssertion>
  12204. <hashTree/>
  12205. </hashTree>
  12206. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  12207. <intProp name="ActionProcessor.action">1</intProp>
  12208. <intProp name="ActionProcessor.target">0</intProp>
  12209. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCMSManagementDelay}*1000))}</stringProp>
  12210. </TestAction>
  12211. <hashTree/>
  12212. </hashTree>
  12213. </hashTree>
  12214. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  12215. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12216. <collectionProp name="Arguments.arguments"/>
  12217. </elementProp>
  12218. <stringProp name="HTTPSampler.domain"/>
  12219. <stringProp name="HTTPSampler.port"/>
  12220. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12221. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12222. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12223. <stringProp name="HTTPSampler.contentEncoding"/>
  12224. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  12225. <stringProp name="HTTPSampler.method">GET</stringProp>
  12226. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12227. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12228. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12229. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12230. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12231. <stringProp name="HTTPSampler.embedded_url_re"/>
  12232. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  12233. <hashTree>
  12234. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  12235. <boolProp name="resetInterpreter">false</boolProp>
  12236. <stringProp name="parameters"/>
  12237. <stringProp name="filename"/>
  12238. <stringProp name="script">
  12239. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  12240. if (adminUsersDistribution == 1) {
  12241. adminUserList = props.get("adminUserList");
  12242. adminUserList.add(vars.get("admin_user"));
  12243. }
  12244. </stringProp>
  12245. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  12246. <hashTree/>
  12247. </hashTree>
  12248. </hashTree>
  12249. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Product Grid" enabled="true">
  12250. <intProp name="ThroughputController.style">1</intProp>
  12251. <boolProp name="ThroughputController.perThread">false</boolProp>
  12252. <intProp name="ThroughputController.maxThroughput">1</intProp>
  12253. <stringProp name="ThroughputController.percentThroughput">${browseProductGridPercentage}</stringProp>
  12254. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  12255. <hashTree>
  12256. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  12257. <stringProp name="script">
  12258. var tmpLabel = vars.get("testLabel")
  12259. if (tmpLabel) {
  12260. var testLabel = " (" + tmpLabel + ")"
  12261. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  12262. if (sampler.getName().indexOf(testLabel) == -1) {
  12263. sampler.setName(sampler.getName() + testLabel);
  12264. }
  12265. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  12266. sampler.setName("SetUp - " + sampler.getName());
  12267. }
  12268. } else {
  12269. testLabel = ""
  12270. }
  12271. </stringProp>
  12272. <stringProp name="scriptLanguage">javascript</stringProp>
  12273. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  12274. <hashTree/>
  12275. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  12276. <stringProp name="BeanShellSampler.query">
  12277. vars.put("testLabel", "Browse Product Grid");
  12278. </stringProp>
  12279. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  12280. </BeanShellSampler>
  12281. <hashTree/>
  12282. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  12283. <stringProp name="script">
  12284. function getFormKeyFromResponse()
  12285. {
  12286. var url = prev.getUrlAsString(),
  12287. responseCode = prev.getResponseCode(),
  12288. formKey = null;
  12289. searchPattern = /var FORM_KEY = '(.+)'/;
  12290. if (responseCode == "200" &amp;&amp; url) {
  12291. response = prev.getResponseDataAsString();
  12292. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  12293. }
  12294. return formKey;
  12295. }
  12296. formKey = vars.get("form_key_storage");
  12297. currentFormKey = getFormKeyFromResponse();
  12298. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  12299. vars.put("form_key_storage", currentFormKey);
  12300. }
  12301. </stringProp>
  12302. <stringProp name="scriptLanguage">javascript</stringProp>
  12303. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  12304. <hashTree/>
  12305. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  12306. <stringProp name="script">
  12307. formKey = vars.get("form_key_storage");
  12308. if (formKey
  12309. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  12310. &amp;&amp; sampler.getMethod() == "POST")
  12311. {
  12312. arguments = sampler.getArguments();
  12313. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  12314. {
  12315. argument = arguments.getArgument(i);
  12316. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  12317. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  12318. argument.setValue(formKey);
  12319. }
  12320. }
  12321. }
  12322. </stringProp>
  12323. <stringProp name="scriptLanguage">javascript</stringProp>
  12324. </JSR223PreProcessor>
  12325. <hashTree/>
  12326. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  12327. <collectionProp name="CookieManager.cookies"/>
  12328. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  12329. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  12330. <hashTree/>
  12331. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  12332. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  12333. </GenericController>
  12334. <hashTree>
  12335. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  12336. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  12337. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  12338. <hashTree>
  12339. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  12340. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  12341. <stringProp name="BeanShellSampler.query">
  12342. adminUser = "none";
  12343. adminUserList = props.get("adminUserList");
  12344. adminUserListIterator = props.get("adminUserListIterator");
  12345. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  12346. if (adminUsersDistribution == 1) {
  12347. adminUser = adminUserList.poll();
  12348. } else {
  12349. if (!adminUserListIterator.hasNext()) {
  12350. adminUserListIterator = adminUserList.descendingIterator();
  12351. }
  12352. adminUser = adminUserListIterator.next();
  12353. }
  12354. if (adminUser == "none") {
  12355. SampleResult.setResponseMessage("adminUser list is empty");
  12356. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  12357. IsSuccess=false;
  12358. SampleResult.setSuccessful(false);
  12359. SampleResult.setStopThread(true);
  12360. }
  12361. vars.put("admin_user", adminUser);
  12362. </stringProp>
  12363. <stringProp name="BeanShellSampler.filename"/>
  12364. <stringProp name="BeanShellSampler.parameters"/>
  12365. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  12366. </BeanShellSampler>
  12367. <hashTree/>
  12368. </hashTree>
  12369. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  12370. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12371. <collectionProp name="Arguments.arguments"/>
  12372. </elementProp>
  12373. <stringProp name="HTTPSampler.domain"/>
  12374. <stringProp name="HTTPSampler.port"/>
  12375. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12376. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12377. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12378. <stringProp name="HTTPSampler.contentEncoding"/>
  12379. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  12380. <stringProp name="HTTPSampler.method">GET</stringProp>
  12381. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12382. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12383. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12384. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12385. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12386. <stringProp name="HTTPSampler.embedded_url_re"/>
  12387. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  12388. <hashTree>
  12389. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  12390. <collectionProp name="Asserion.test_strings">
  12391. <stringProp name="-1397214398">Welcome</stringProp>
  12392. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  12393. </collectionProp>
  12394. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  12395. <boolProp name="Assertion.assume_success">false</boolProp>
  12396. <intProp name="Assertion.test_type">2</intProp>
  12397. </ResponseAssertion>
  12398. <hashTree/>
  12399. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  12400. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  12401. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  12402. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  12403. <stringProp name="RegexExtractor.template">$1$</stringProp>
  12404. <stringProp name="RegexExtractor.default"/>
  12405. <stringProp name="RegexExtractor.match_number">1</stringProp>
  12406. </RegexExtractor>
  12407. <hashTree/>
  12408. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  12409. <collectionProp name="Asserion.test_strings">
  12410. <stringProp name="2845929">^.+$</stringProp>
  12411. </collectionProp>
  12412. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  12413. <boolProp name="Assertion.assume_success">false</boolProp>
  12414. <intProp name="Assertion.test_type">1</intProp>
  12415. <stringProp name="Assertion.scope">variable</stringProp>
  12416. <stringProp name="Scope.variable">admin_form_key</stringProp>
  12417. </ResponseAssertion>
  12418. <hashTree/>
  12419. </hashTree>
  12420. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  12421. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12422. <collectionProp name="Arguments.arguments">
  12423. <elementProp name="dummy" elementType="HTTPArgument">
  12424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12425. <stringProp name="Argument.value"/>
  12426. <stringProp name="Argument.metadata">=</stringProp>
  12427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12428. <stringProp name="Argument.name">dummy</stringProp>
  12429. </elementProp>
  12430. <elementProp name="form_key" elementType="HTTPArgument">
  12431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12432. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  12433. <stringProp name="Argument.metadata">=</stringProp>
  12434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12435. <stringProp name="Argument.name">form_key</stringProp>
  12436. </elementProp>
  12437. <elementProp name="login[password]" elementType="HTTPArgument">
  12438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12439. <stringProp name="Argument.value">${admin_password}</stringProp>
  12440. <stringProp name="Argument.metadata">=</stringProp>
  12441. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12442. <stringProp name="Argument.name">login[password]</stringProp>
  12443. </elementProp>
  12444. <elementProp name="login[username]" elementType="HTTPArgument">
  12445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12446. <stringProp name="Argument.value">${admin_user}</stringProp>
  12447. <stringProp name="Argument.metadata">=</stringProp>
  12448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12449. <stringProp name="Argument.name">login[username]</stringProp>
  12450. </elementProp>
  12451. </collectionProp>
  12452. </elementProp>
  12453. <stringProp name="HTTPSampler.domain"/>
  12454. <stringProp name="HTTPSampler.port"/>
  12455. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12456. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12457. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12458. <stringProp name="HTTPSampler.contentEncoding"/>
  12459. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  12460. <stringProp name="HTTPSampler.method">POST</stringProp>
  12461. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12462. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12463. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12464. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12465. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  12466. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12467. <stringProp name="HTTPSampler.embedded_url_re"/>
  12468. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  12469. </HTTPSamplerProxy>
  12470. <hashTree>
  12471. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  12472. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  12473. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  12474. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  12475. <stringProp name="RegexExtractor.template">$1$</stringProp>
  12476. <stringProp name="RegexExtractor.default"/>
  12477. <stringProp name="RegexExtractor.match_number">1</stringProp>
  12478. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  12479. <hashTree/>
  12480. </hashTree>
  12481. </hashTree>
  12482. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  12483. <stringProp name="script">
  12484. vars.put("gridEntityType" , "Product");
  12485. pagesCount = parseInt(vars.get("products_page_size")) || 20;
  12486. vars.put("grid_entity_page_size" , pagesCount);
  12487. vars.put("grid_namespace" , "product_listing");
  12488. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text"));
  12489. vars.put("grid_filter_field", "name");
  12490. // set sort fields and sort directions
  12491. vars.put("grid_sort_field_1", "name");
  12492. vars.put("grid_sort_field_2", "price");
  12493. vars.put("grid_sort_field_3", "attribute_set_id");
  12494. vars.put("grid_sort_order_1", "asc");
  12495. vars.put("grid_sort_order_2", "desc");
  12496. </stringProp>
  12497. <stringProp name="scriptLanguage">javascript</stringProp>
  12498. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_products_grid/setup.jmx</stringProp></JSR223PostProcessor>
  12499. <hashTree/>
  12500. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  12501. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  12502. </GenericController>
  12503. <hashTree>
  12504. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  12505. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12506. <collectionProp name="Arguments.arguments">
  12507. <elementProp name="namespace" elementType="HTTPArgument">
  12508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12509. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  12510. <stringProp name="Argument.metadata">=</stringProp>
  12511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12512. <stringProp name="Argument.name">namespace</stringProp>
  12513. <stringProp name="Argument.desc">true</stringProp>
  12514. </elementProp>
  12515. <elementProp name="search" elementType="HTTPArgument">
  12516. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12517. <stringProp name="Argument.value"/>
  12518. <stringProp name="Argument.metadata">=</stringProp>
  12519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12520. <stringProp name="Argument.name">search</stringProp>
  12521. <stringProp name="Argument.desc">true</stringProp>
  12522. </elementProp>
  12523. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  12524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12525. <stringProp name="Argument.value">true</stringProp>
  12526. <stringProp name="Argument.metadata">=</stringProp>
  12527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12528. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  12529. <stringProp name="Argument.desc">true</stringProp>
  12530. </elementProp>
  12531. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  12532. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12533. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  12534. <stringProp name="Argument.metadata">=</stringProp>
  12535. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12536. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  12537. <stringProp name="Argument.desc">true</stringProp>
  12538. </elementProp>
  12539. <elementProp name="paging[current]" elementType="HTTPArgument">
  12540. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12541. <stringProp name="Argument.value">1</stringProp>
  12542. <stringProp name="Argument.metadata">=</stringProp>
  12543. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12544. <stringProp name="Argument.name">paging[current]</stringProp>
  12545. <stringProp name="Argument.desc">true</stringProp>
  12546. </elementProp>
  12547. <elementProp name="sorting[field]" elementType="HTTPArgument">
  12548. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12549. <stringProp name="Argument.value">entity_id</stringProp>
  12550. <stringProp name="Argument.metadata">=</stringProp>
  12551. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12552. <stringProp name="Argument.name">sorting[field]</stringProp>
  12553. <stringProp name="Argument.desc">true</stringProp>
  12554. </elementProp>
  12555. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  12556. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12557. <stringProp name="Argument.value">asc</stringProp>
  12558. <stringProp name="Argument.metadata">=</stringProp>
  12559. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12560. <stringProp name="Argument.name">sorting[direction]</stringProp>
  12561. <stringProp name="Argument.desc">true</stringProp>
  12562. </elementProp>
  12563. <elementProp name="isAjax" elementType="HTTPArgument">
  12564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12565. <stringProp name="Argument.value">true</stringProp>
  12566. <stringProp name="Argument.metadata">=</stringProp>
  12567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12568. <stringProp name="Argument.name">isAjax</stringProp>
  12569. <stringProp name="Argument.desc">true</stringProp>
  12570. </elementProp>
  12571. </collectionProp>
  12572. </elementProp>
  12573. <stringProp name="HTTPSampler.domain"/>
  12574. <stringProp name="HTTPSampler.port"/>
  12575. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12576. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12577. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12578. <stringProp name="HTTPSampler.contentEncoding"/>
  12579. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  12580. <stringProp name="HTTPSampler.method">GET</stringProp>
  12581. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12582. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12583. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12584. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12585. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12586. <stringProp name="HTTPSampler.embedded_url_re"/>
  12587. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  12588. <hashTree>
  12589. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  12590. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  12591. <stringProp name="EXPECTED_VALUE">0</stringProp>
  12592. <boolProp name="JSONVALIDATION">true</boolProp>
  12593. <boolProp name="EXPECT_NULL">false</boolProp>
  12594. <boolProp name="INVERT">true</boolProp>
  12595. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  12596. <hashTree/>
  12597. <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 total records" enabled="true">
  12598. <stringProp name="VAR">entity_total_records</stringProp>
  12599. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  12600. <stringProp name="DEFAULT"/>
  12601. <stringProp name="VARIABLE"/>
  12602. <stringProp name="SUBJECT">BODY</stringProp>
  12603. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  12604. <hashTree/>
  12605. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  12606. <stringProp name="cacheKey"/>
  12607. <stringProp name="filename"/>
  12608. <stringProp name="parameters"/>
  12609. <stringProp name="script">
  12610. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  12611. var totalsRecord = parseInt(vars.get("entity_total_records"));
  12612. var pageCount = Math.round(totalsRecord/pageSize);
  12613. vars.put("grid_pages_count", pageCount);
  12614. </stringProp>
  12615. <stringProp name="scriptLanguage">javascript</stringProp>
  12616. </JSR223PostProcessor>
  12617. <hashTree/>
  12618. </hashTree>
  12619. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  12620. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12621. <collectionProp name="Arguments.arguments">
  12622. <elementProp name="namespace" elementType="HTTPArgument">
  12623. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12624. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  12625. <stringProp name="Argument.metadata">=</stringProp>
  12626. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12627. <stringProp name="Argument.name">namespace</stringProp>
  12628. <stringProp name="Argument.desc">true</stringProp>
  12629. </elementProp>
  12630. <elementProp name="search" elementType="HTTPArgument">
  12631. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12632. <stringProp name="Argument.value"/>
  12633. <stringProp name="Argument.metadata">=</stringProp>
  12634. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12635. <stringProp name="Argument.name">search</stringProp>
  12636. <stringProp name="Argument.desc">true</stringProp>
  12637. </elementProp>
  12638. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  12639. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12640. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  12641. <stringProp name="Argument.metadata">=</stringProp>
  12642. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12643. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  12644. <stringProp name="Argument.desc">true</stringProp>
  12645. </elementProp>
  12646. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  12647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12648. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  12649. <stringProp name="Argument.metadata">=</stringProp>
  12650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12651. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  12652. <stringProp name="Argument.desc">true</stringProp>
  12653. </elementProp>
  12654. <elementProp name="paging[current]" elementType="HTTPArgument">
  12655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12656. <stringProp name="Argument.value">1</stringProp>
  12657. <stringProp name="Argument.metadata">=</stringProp>
  12658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12659. <stringProp name="Argument.name">paging[current]</stringProp>
  12660. <stringProp name="Argument.desc">true</stringProp>
  12661. </elementProp>
  12662. <elementProp name="sorting[field]" elementType="HTTPArgument">
  12663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12664. <stringProp name="Argument.value">entity_id</stringProp>
  12665. <stringProp name="Argument.metadata">=</stringProp>
  12666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12667. <stringProp name="Argument.name">sorting[field]</stringProp>
  12668. <stringProp name="Argument.desc">true</stringProp>
  12669. </elementProp>
  12670. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  12671. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12672. <stringProp name="Argument.value">asc</stringProp>
  12673. <stringProp name="Argument.metadata">=</stringProp>
  12674. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12675. <stringProp name="Argument.name">sorting[direction]</stringProp>
  12676. <stringProp name="Argument.desc">true</stringProp>
  12677. </elementProp>
  12678. <elementProp name="isAjax" elementType="HTTPArgument">
  12679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12680. <stringProp name="Argument.value">true</stringProp>
  12681. <stringProp name="Argument.metadata">=</stringProp>
  12682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12683. <stringProp name="Argument.name">isAjax</stringProp>
  12684. <stringProp name="Argument.desc">true</stringProp>
  12685. </elementProp>
  12686. </collectionProp>
  12687. </elementProp>
  12688. <stringProp name="HTTPSampler.domain"/>
  12689. <stringProp name="HTTPSampler.port"/>
  12690. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12691. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12692. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12693. <stringProp name="HTTPSampler.contentEncoding"/>
  12694. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  12695. <stringProp name="HTTPSampler.method">GET</stringProp>
  12696. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12697. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12698. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12699. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12700. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12701. <stringProp name="HTTPSampler.embedded_url_re"/>
  12702. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  12703. <hashTree>
  12704. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  12705. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  12706. <stringProp name="EXPECTED_VALUE">0</stringProp>
  12707. <boolProp name="JSONVALIDATION">true</boolProp>
  12708. <boolProp name="EXPECT_NULL">false</boolProp>
  12709. <boolProp name="INVERT">true</boolProp>
  12710. <boolProp name="ISREGEX">true</boolProp>
  12711. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  12712. <hashTree/>
  12713. <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 total records" enabled="true">
  12714. <stringProp name="VAR">entity_total_records</stringProp>
  12715. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  12716. <stringProp name="DEFAULT"/>
  12717. <stringProp name="VARIABLE"/>
  12718. <stringProp name="SUBJECT">BODY</stringProp>
  12719. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  12720. <hashTree/>
  12721. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  12722. <stringProp name="parameters"/>
  12723. <stringProp name="filename"/>
  12724. <stringProp name="script">
  12725. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  12726. var totalsRecord = parseInt(vars.get("entity_total_records"));
  12727. var pageCount = Math.round(totalsRecord/pageSize);
  12728. vars.put("grid_pages_count_filtered", pageCount);
  12729. </stringProp>
  12730. <stringProp name="scriptLanguage">javascript</stringProp>
  12731. </JSR223PostProcessor>
  12732. <hashTree/>
  12733. </hashTree>
  12734. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  12735. <stringProp name="CounterConfig.start">1</stringProp>
  12736. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  12737. <stringProp name="CounterConfig.incr">1</stringProp>
  12738. <stringProp name="CounterConfig.name">page_number</stringProp>
  12739. <stringProp name="CounterConfig.format"/>
  12740. <boolProp name="CounterConfig.per_user">true</boolProp>
  12741. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  12742. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  12743. <hashTree/>
  12744. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  12745. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12746. <collectionProp name="Arguments.arguments">
  12747. <elementProp name="namespace" elementType="HTTPArgument">
  12748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12749. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  12750. <stringProp name="Argument.metadata">=</stringProp>
  12751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12752. <stringProp name="Argument.name">namespace</stringProp>
  12753. <stringProp name="Argument.desc">true</stringProp>
  12754. </elementProp>
  12755. <elementProp name="search" elementType="HTTPArgument">
  12756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12757. <stringProp name="Argument.value"/>
  12758. <stringProp name="Argument.metadata">=</stringProp>
  12759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12760. <stringProp name="Argument.name">search</stringProp>
  12761. <stringProp name="Argument.desc">true</stringProp>
  12762. </elementProp>
  12763. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  12764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12765. <stringProp name="Argument.value">true</stringProp>
  12766. <stringProp name="Argument.metadata">=</stringProp>
  12767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12768. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  12769. <stringProp name="Argument.desc">true</stringProp>
  12770. </elementProp>
  12771. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  12772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12773. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  12774. <stringProp name="Argument.metadata">=</stringProp>
  12775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12776. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  12777. <stringProp name="Argument.desc">true</stringProp>
  12778. </elementProp>
  12779. <elementProp name="paging[current]" elementType="HTTPArgument">
  12780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12781. <stringProp name="Argument.value">${page_number}</stringProp>
  12782. <stringProp name="Argument.metadata">=</stringProp>
  12783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12784. <stringProp name="Argument.name">paging[current]</stringProp>
  12785. <stringProp name="Argument.desc">true</stringProp>
  12786. </elementProp>
  12787. <elementProp name="sorting[field]" elementType="HTTPArgument">
  12788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12789. <stringProp name="Argument.value">entity_id</stringProp>
  12790. <stringProp name="Argument.metadata">=</stringProp>
  12791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12792. <stringProp name="Argument.name">sorting[field]</stringProp>
  12793. <stringProp name="Argument.desc">true</stringProp>
  12794. </elementProp>
  12795. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  12796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12797. <stringProp name="Argument.value">asc</stringProp>
  12798. <stringProp name="Argument.metadata">=</stringProp>
  12799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12800. <stringProp name="Argument.name">sorting[direction]</stringProp>
  12801. <stringProp name="Argument.desc">true</stringProp>
  12802. </elementProp>
  12803. <elementProp name="isAjax" elementType="HTTPArgument">
  12804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12805. <stringProp name="Argument.value">true</stringProp>
  12806. <stringProp name="Argument.metadata">=</stringProp>
  12807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12808. <stringProp name="Argument.name">isAjax</stringProp>
  12809. <stringProp name="Argument.desc">true</stringProp>
  12810. </elementProp>
  12811. </collectionProp>
  12812. </elementProp>
  12813. <stringProp name="HTTPSampler.domain"/>
  12814. <stringProp name="HTTPSampler.port"/>
  12815. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12816. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12817. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12818. <stringProp name="HTTPSampler.contentEncoding"/>
  12819. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  12820. <stringProp name="HTTPSampler.method">GET</stringProp>
  12821. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12822. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12823. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12824. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12825. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12826. <stringProp name="HTTPSampler.embedded_url_re"/>
  12827. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  12828. <hashTree>
  12829. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  12830. <collectionProp name="Asserion.test_strings">
  12831. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  12832. </collectionProp>
  12833. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  12834. <boolProp name="Assertion.assume_success">false</boolProp>
  12835. <intProp name="Assertion.test_type">2</intProp>
  12836. </ResponseAssertion>
  12837. <hashTree/>
  12838. </hashTree>
  12839. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  12840. <stringProp name="CounterConfig.start">1</stringProp>
  12841. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  12842. <stringProp name="CounterConfig.incr">1</stringProp>
  12843. <stringProp name="CounterConfig.name">page_number</stringProp>
  12844. <stringProp name="CounterConfig.format"/>
  12845. <boolProp name="CounterConfig.per_user">true</boolProp>
  12846. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  12847. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  12848. <hashTree/>
  12849. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  12850. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  12851. </TestFragmentController>
  12852. <hashTree>
  12853. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  12854. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  12855. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  12856. <boolProp name="ForeachController.useSeparator">true</boolProp>
  12857. <stringProp name="ForeachController.startIndex">0</stringProp>
  12858. <stringProp name="ForeachController.endIndex">3</stringProp>
  12859. </ForeachController>
  12860. <hashTree>
  12861. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  12862. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  12863. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  12864. <boolProp name="ForeachController.useSeparator">true</boolProp>
  12865. <stringProp name="ForeachController.startIndex">0</stringProp>
  12866. <stringProp name="ForeachController.endIndex">2</stringProp>
  12867. </ForeachController>
  12868. <hashTree>
  12869. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  12870. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12871. <collectionProp name="Arguments.arguments">
  12872. <elementProp name="namespace" elementType="HTTPArgument">
  12873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12874. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  12875. <stringProp name="Argument.metadata">=</stringProp>
  12876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12877. <stringProp name="Argument.name">namespace</stringProp>
  12878. <stringProp name="Argument.desc">false</stringProp>
  12879. </elementProp>
  12880. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  12881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12882. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  12883. <stringProp name="Argument.metadata">=</stringProp>
  12884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12885. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  12886. <stringProp name="Argument.desc">false</stringProp>
  12887. </elementProp>
  12888. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  12889. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12890. <stringProp name="Argument.value">true</stringProp>
  12891. <stringProp name="Argument.metadata">=</stringProp>
  12892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12893. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  12894. <stringProp name="Argument.desc">false</stringProp>
  12895. </elementProp>
  12896. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  12897. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12898. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  12899. <stringProp name="Argument.metadata">=</stringProp>
  12900. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12901. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  12902. <stringProp name="Argument.desc">false</stringProp>
  12903. </elementProp>
  12904. <elementProp name="paging[current]" elementType="HTTPArgument">
  12905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12906. <stringProp name="Argument.value">${page_number}</stringProp>
  12907. <stringProp name="Argument.metadata">=</stringProp>
  12908. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12909. <stringProp name="Argument.name">paging[current]</stringProp>
  12910. <stringProp name="Argument.desc">false</stringProp>
  12911. </elementProp>
  12912. <elementProp name="sorting[field]" elementType="HTTPArgument">
  12913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12914. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  12915. <stringProp name="Argument.metadata">=</stringProp>
  12916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12917. <stringProp name="Argument.name">sorting[field]</stringProp>
  12918. <stringProp name="Argument.desc">false</stringProp>
  12919. </elementProp>
  12920. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  12921. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12922. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  12923. <stringProp name="Argument.metadata">=</stringProp>
  12924. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12925. <stringProp name="Argument.name">sorting[direction]</stringProp>
  12926. <stringProp name="Argument.desc">false</stringProp>
  12927. </elementProp>
  12928. <elementProp name="isAjax" elementType="HTTPArgument">
  12929. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  12930. <stringProp name="Argument.value">true</stringProp>
  12931. <stringProp name="Argument.metadata">=</stringProp>
  12932. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  12933. <stringProp name="Argument.name">isAjax</stringProp>
  12934. <stringProp name="Argument.desc">false</stringProp>
  12935. </elementProp>
  12936. </collectionProp>
  12937. </elementProp>
  12938. <stringProp name="HTTPSampler.domain"/>
  12939. <stringProp name="HTTPSampler.port"/>
  12940. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12941. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12942. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12943. <stringProp name="HTTPSampler.contentEncoding"/>
  12944. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  12945. <stringProp name="HTTPSampler.method">GET</stringProp>
  12946. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12947. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12948. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12949. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12950. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12951. <stringProp name="HTTPSampler.embedded_url_re"/>
  12952. </HTTPSamplerProxy>
  12953. <hashTree>
  12954. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  12955. <collectionProp name="Asserion.test_strings">
  12956. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  12957. </collectionProp>
  12958. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  12959. <boolProp name="Assertion.assume_success">false</boolProp>
  12960. <intProp name="Assertion.test_type">2</intProp>
  12961. </ResponseAssertion>
  12962. <hashTree/>
  12963. </hashTree>
  12964. </hashTree>
  12965. </hashTree>
  12966. </hashTree>
  12967. </hashTree>
  12968. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  12969. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  12970. <collectionProp name="Arguments.arguments"/>
  12971. </elementProp>
  12972. <stringProp name="HTTPSampler.domain"/>
  12973. <stringProp name="HTTPSampler.port"/>
  12974. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  12975. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  12976. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  12977. <stringProp name="HTTPSampler.contentEncoding"/>
  12978. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  12979. <stringProp name="HTTPSampler.method">GET</stringProp>
  12980. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  12981. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  12982. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  12983. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  12984. <boolProp name="HTTPSampler.monitor">false</boolProp>
  12985. <stringProp name="HTTPSampler.embedded_url_re"/>
  12986. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  12987. <hashTree>
  12988. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  12989. <boolProp name="resetInterpreter">false</boolProp>
  12990. <stringProp name="parameters"/>
  12991. <stringProp name="filename"/>
  12992. <stringProp name="script">
  12993. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  12994. if (adminUsersDistribution == 1) {
  12995. adminUserList = props.get("adminUserList");
  12996. adminUserList.add(vars.get("admin_user"));
  12997. }
  12998. </stringProp>
  12999. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  13000. <hashTree/>
  13001. </hashTree>
  13002. </hashTree>
  13003. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Order Grid" enabled="true">
  13004. <intProp name="ThroughputController.style">1</intProp>
  13005. <boolProp name="ThroughputController.perThread">false</boolProp>
  13006. <intProp name="ThroughputController.maxThroughput">1</intProp>
  13007. <stringProp name="ThroughputController.percentThroughput">${browseOrderGridPercentage}</stringProp>
  13008. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  13009. <hashTree>
  13010. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  13011. <stringProp name="script">
  13012. var tmpLabel = vars.get("testLabel")
  13013. if (tmpLabel) {
  13014. var testLabel = " (" + tmpLabel + ")"
  13015. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  13016. if (sampler.getName().indexOf(testLabel) == -1) {
  13017. sampler.setName(sampler.getName() + testLabel);
  13018. }
  13019. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  13020. sampler.setName("SetUp - " + sampler.getName());
  13021. }
  13022. } else {
  13023. testLabel = ""
  13024. }
  13025. </stringProp>
  13026. <stringProp name="scriptLanguage">javascript</stringProp>
  13027. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  13028. <hashTree/>
  13029. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  13030. <stringProp name="BeanShellSampler.query">
  13031. vars.put("testLabel", "Browse Order Grid");
  13032. </stringProp>
  13033. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  13034. </BeanShellSampler>
  13035. <hashTree/>
  13036. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  13037. <stringProp name="script">
  13038. function getFormKeyFromResponse()
  13039. {
  13040. var url = prev.getUrlAsString(),
  13041. responseCode = prev.getResponseCode(),
  13042. formKey = null;
  13043. searchPattern = /var FORM_KEY = '(.+)'/;
  13044. if (responseCode == "200" &amp;&amp; url) {
  13045. response = prev.getResponseDataAsString();
  13046. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  13047. }
  13048. return formKey;
  13049. }
  13050. formKey = vars.get("form_key_storage");
  13051. currentFormKey = getFormKeyFromResponse();
  13052. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  13053. vars.put("form_key_storage", currentFormKey);
  13054. }
  13055. </stringProp>
  13056. <stringProp name="scriptLanguage">javascript</stringProp>
  13057. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  13058. <hashTree/>
  13059. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  13060. <stringProp name="script">
  13061. formKey = vars.get("form_key_storage");
  13062. if (formKey
  13063. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  13064. &amp;&amp; sampler.getMethod() == "POST")
  13065. {
  13066. arguments = sampler.getArguments();
  13067. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  13068. {
  13069. argument = arguments.getArgument(i);
  13070. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  13071. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  13072. argument.setValue(formKey);
  13073. }
  13074. }
  13075. }
  13076. </stringProp>
  13077. <stringProp name="scriptLanguage">javascript</stringProp>
  13078. </JSR223PreProcessor>
  13079. <hashTree/>
  13080. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  13081. <collectionProp name="CookieManager.cookies"/>
  13082. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  13083. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  13084. <hashTree/>
  13085. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  13086. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  13087. </GenericController>
  13088. <hashTree>
  13089. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  13090. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  13091. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  13092. <hashTree>
  13093. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  13094. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  13095. <stringProp name="BeanShellSampler.query">
  13096. adminUser = "none";
  13097. adminUserList = props.get("adminUserList");
  13098. adminUserListIterator = props.get("adminUserListIterator");
  13099. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  13100. if (adminUsersDistribution == 1) {
  13101. adminUser = adminUserList.poll();
  13102. } else {
  13103. if (!adminUserListIterator.hasNext()) {
  13104. adminUserListIterator = adminUserList.descendingIterator();
  13105. }
  13106. adminUser = adminUserListIterator.next();
  13107. }
  13108. if (adminUser == "none") {
  13109. SampleResult.setResponseMessage("adminUser list is empty");
  13110. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  13111. IsSuccess=false;
  13112. SampleResult.setSuccessful(false);
  13113. SampleResult.setStopThread(true);
  13114. }
  13115. vars.put("admin_user", adminUser);
  13116. </stringProp>
  13117. <stringProp name="BeanShellSampler.filename"/>
  13118. <stringProp name="BeanShellSampler.parameters"/>
  13119. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  13120. </BeanShellSampler>
  13121. <hashTree/>
  13122. </hashTree>
  13123. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  13124. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13125. <collectionProp name="Arguments.arguments"/>
  13126. </elementProp>
  13127. <stringProp name="HTTPSampler.domain"/>
  13128. <stringProp name="HTTPSampler.port"/>
  13129. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13130. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13131. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13132. <stringProp name="HTTPSampler.contentEncoding"/>
  13133. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  13134. <stringProp name="HTTPSampler.method">GET</stringProp>
  13135. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13136. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13137. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13138. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13139. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13140. <stringProp name="HTTPSampler.embedded_url_re"/>
  13141. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  13142. <hashTree>
  13143. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  13144. <collectionProp name="Asserion.test_strings">
  13145. <stringProp name="-1397214398">Welcome</stringProp>
  13146. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  13147. </collectionProp>
  13148. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  13149. <boolProp name="Assertion.assume_success">false</boolProp>
  13150. <intProp name="Assertion.test_type">2</intProp>
  13151. </ResponseAssertion>
  13152. <hashTree/>
  13153. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  13154. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  13155. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  13156. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  13157. <stringProp name="RegexExtractor.template">$1$</stringProp>
  13158. <stringProp name="RegexExtractor.default"/>
  13159. <stringProp name="RegexExtractor.match_number">1</stringProp>
  13160. </RegexExtractor>
  13161. <hashTree/>
  13162. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  13163. <collectionProp name="Asserion.test_strings">
  13164. <stringProp name="2845929">^.+$</stringProp>
  13165. </collectionProp>
  13166. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  13167. <boolProp name="Assertion.assume_success">false</boolProp>
  13168. <intProp name="Assertion.test_type">1</intProp>
  13169. <stringProp name="Assertion.scope">variable</stringProp>
  13170. <stringProp name="Scope.variable">admin_form_key</stringProp>
  13171. </ResponseAssertion>
  13172. <hashTree/>
  13173. </hashTree>
  13174. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  13175. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13176. <collectionProp name="Arguments.arguments">
  13177. <elementProp name="dummy" elementType="HTTPArgument">
  13178. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13179. <stringProp name="Argument.value"/>
  13180. <stringProp name="Argument.metadata">=</stringProp>
  13181. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13182. <stringProp name="Argument.name">dummy</stringProp>
  13183. </elementProp>
  13184. <elementProp name="form_key" elementType="HTTPArgument">
  13185. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13186. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  13187. <stringProp name="Argument.metadata">=</stringProp>
  13188. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13189. <stringProp name="Argument.name">form_key</stringProp>
  13190. </elementProp>
  13191. <elementProp name="login[password]" elementType="HTTPArgument">
  13192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13193. <stringProp name="Argument.value">${admin_password}</stringProp>
  13194. <stringProp name="Argument.metadata">=</stringProp>
  13195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13196. <stringProp name="Argument.name">login[password]</stringProp>
  13197. </elementProp>
  13198. <elementProp name="login[username]" elementType="HTTPArgument">
  13199. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13200. <stringProp name="Argument.value">${admin_user}</stringProp>
  13201. <stringProp name="Argument.metadata">=</stringProp>
  13202. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13203. <stringProp name="Argument.name">login[username]</stringProp>
  13204. </elementProp>
  13205. </collectionProp>
  13206. </elementProp>
  13207. <stringProp name="HTTPSampler.domain"/>
  13208. <stringProp name="HTTPSampler.port"/>
  13209. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13210. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13211. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13212. <stringProp name="HTTPSampler.contentEncoding"/>
  13213. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  13214. <stringProp name="HTTPSampler.method">POST</stringProp>
  13215. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13216. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13217. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13218. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13219. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  13220. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13221. <stringProp name="HTTPSampler.embedded_url_re"/>
  13222. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  13223. </HTTPSamplerProxy>
  13224. <hashTree>
  13225. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  13226. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  13227. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  13228. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  13229. <stringProp name="RegexExtractor.template">$1$</stringProp>
  13230. <stringProp name="RegexExtractor.default"/>
  13231. <stringProp name="RegexExtractor.match_number">1</stringProp>
  13232. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  13233. <hashTree/>
  13234. </hashTree>
  13235. </hashTree>
  13236. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  13237. <stringProp name="script">
  13238. vars.put("gridEntityType" , "Order");
  13239. pagesCount = parseInt(vars.get("orders_page_size")) || 20;
  13240. vars.put("grid_entity_page_size" , pagesCount);
  13241. vars.put("grid_namespace" , "sales_order_grid");
  13242. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text"));
  13243. vars.put("grid_filter_field", "status");
  13244. // set sort fields and sort directions
  13245. vars.put("grid_sort_field_1", "increment_id");
  13246. vars.put("grid_sort_field_2", "created_at");
  13247. vars.put("grid_sort_field_3", "billing_name");
  13248. vars.put("grid_sort_order_1", "asc");
  13249. vars.put("grid_sort_order_2", "desc");
  13250. </stringProp>
  13251. <stringProp name="scriptLanguage">javascript</stringProp>
  13252. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_orders_grid/setup.jmx</stringProp></JSR223PostProcessor>
  13253. <hashTree/>
  13254. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  13255. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  13256. </GenericController>
  13257. <hashTree>
  13258. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  13259. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13260. <collectionProp name="Arguments.arguments">
  13261. <elementProp name="namespace" elementType="HTTPArgument">
  13262. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13263. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  13264. <stringProp name="Argument.metadata">=</stringProp>
  13265. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13266. <stringProp name="Argument.name">namespace</stringProp>
  13267. <stringProp name="Argument.desc">true</stringProp>
  13268. </elementProp>
  13269. <elementProp name="search" elementType="HTTPArgument">
  13270. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13271. <stringProp name="Argument.value"/>
  13272. <stringProp name="Argument.metadata">=</stringProp>
  13273. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13274. <stringProp name="Argument.name">search</stringProp>
  13275. <stringProp name="Argument.desc">true</stringProp>
  13276. </elementProp>
  13277. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  13278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13279. <stringProp name="Argument.value">true</stringProp>
  13280. <stringProp name="Argument.metadata">=</stringProp>
  13281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13282. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  13283. <stringProp name="Argument.desc">true</stringProp>
  13284. </elementProp>
  13285. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  13286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13287. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  13288. <stringProp name="Argument.metadata">=</stringProp>
  13289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13290. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  13291. <stringProp name="Argument.desc">true</stringProp>
  13292. </elementProp>
  13293. <elementProp name="paging[current]" elementType="HTTPArgument">
  13294. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13295. <stringProp name="Argument.value">1</stringProp>
  13296. <stringProp name="Argument.metadata">=</stringProp>
  13297. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13298. <stringProp name="Argument.name">paging[current]</stringProp>
  13299. <stringProp name="Argument.desc">true</stringProp>
  13300. </elementProp>
  13301. <elementProp name="sorting[field]" elementType="HTTPArgument">
  13302. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13303. <stringProp name="Argument.value">entity_id</stringProp>
  13304. <stringProp name="Argument.metadata">=</stringProp>
  13305. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13306. <stringProp name="Argument.name">sorting[field]</stringProp>
  13307. <stringProp name="Argument.desc">true</stringProp>
  13308. </elementProp>
  13309. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  13310. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13311. <stringProp name="Argument.value">asc</stringProp>
  13312. <stringProp name="Argument.metadata">=</stringProp>
  13313. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13314. <stringProp name="Argument.name">sorting[direction]</stringProp>
  13315. <stringProp name="Argument.desc">true</stringProp>
  13316. </elementProp>
  13317. <elementProp name="isAjax" elementType="HTTPArgument">
  13318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13319. <stringProp name="Argument.value">true</stringProp>
  13320. <stringProp name="Argument.metadata">=</stringProp>
  13321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13322. <stringProp name="Argument.name">isAjax</stringProp>
  13323. <stringProp name="Argument.desc">true</stringProp>
  13324. </elementProp>
  13325. </collectionProp>
  13326. </elementProp>
  13327. <stringProp name="HTTPSampler.domain"/>
  13328. <stringProp name="HTTPSampler.port"/>
  13329. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13330. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13331. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13332. <stringProp name="HTTPSampler.contentEncoding"/>
  13333. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  13334. <stringProp name="HTTPSampler.method">GET</stringProp>
  13335. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13336. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13337. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13338. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13339. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13340. <stringProp name="HTTPSampler.embedded_url_re"/>
  13341. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  13342. <hashTree>
  13343. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  13344. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  13345. <stringProp name="EXPECTED_VALUE">0</stringProp>
  13346. <boolProp name="JSONVALIDATION">true</boolProp>
  13347. <boolProp name="EXPECT_NULL">false</boolProp>
  13348. <boolProp name="INVERT">true</boolProp>
  13349. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  13350. <hashTree/>
  13351. <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 total records" enabled="true">
  13352. <stringProp name="VAR">entity_total_records</stringProp>
  13353. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  13354. <stringProp name="DEFAULT"/>
  13355. <stringProp name="VARIABLE"/>
  13356. <stringProp name="SUBJECT">BODY</stringProp>
  13357. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  13358. <hashTree/>
  13359. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  13360. <stringProp name="cacheKey"/>
  13361. <stringProp name="filename"/>
  13362. <stringProp name="parameters"/>
  13363. <stringProp name="script">
  13364. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  13365. var totalsRecord = parseInt(vars.get("entity_total_records"));
  13366. var pageCount = Math.round(totalsRecord/pageSize);
  13367. vars.put("grid_pages_count", pageCount);
  13368. </stringProp>
  13369. <stringProp name="scriptLanguage">javascript</stringProp>
  13370. </JSR223PostProcessor>
  13371. <hashTree/>
  13372. </hashTree>
  13373. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  13374. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13375. <collectionProp name="Arguments.arguments">
  13376. <elementProp name="namespace" elementType="HTTPArgument">
  13377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13378. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  13379. <stringProp name="Argument.metadata">=</stringProp>
  13380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13381. <stringProp name="Argument.name">namespace</stringProp>
  13382. <stringProp name="Argument.desc">true</stringProp>
  13383. </elementProp>
  13384. <elementProp name="search" elementType="HTTPArgument">
  13385. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13386. <stringProp name="Argument.value"/>
  13387. <stringProp name="Argument.metadata">=</stringProp>
  13388. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13389. <stringProp name="Argument.name">search</stringProp>
  13390. <stringProp name="Argument.desc">true</stringProp>
  13391. </elementProp>
  13392. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  13393. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13394. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  13395. <stringProp name="Argument.metadata">=</stringProp>
  13396. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13397. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  13398. <stringProp name="Argument.desc">true</stringProp>
  13399. </elementProp>
  13400. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  13401. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13402. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  13403. <stringProp name="Argument.metadata">=</stringProp>
  13404. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13405. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  13406. <stringProp name="Argument.desc">true</stringProp>
  13407. </elementProp>
  13408. <elementProp name="paging[current]" elementType="HTTPArgument">
  13409. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13410. <stringProp name="Argument.value">1</stringProp>
  13411. <stringProp name="Argument.metadata">=</stringProp>
  13412. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13413. <stringProp name="Argument.name">paging[current]</stringProp>
  13414. <stringProp name="Argument.desc">true</stringProp>
  13415. </elementProp>
  13416. <elementProp name="sorting[field]" elementType="HTTPArgument">
  13417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13418. <stringProp name="Argument.value">entity_id</stringProp>
  13419. <stringProp name="Argument.metadata">=</stringProp>
  13420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13421. <stringProp name="Argument.name">sorting[field]</stringProp>
  13422. <stringProp name="Argument.desc">true</stringProp>
  13423. </elementProp>
  13424. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  13425. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13426. <stringProp name="Argument.value">asc</stringProp>
  13427. <stringProp name="Argument.metadata">=</stringProp>
  13428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13429. <stringProp name="Argument.name">sorting[direction]</stringProp>
  13430. <stringProp name="Argument.desc">true</stringProp>
  13431. </elementProp>
  13432. <elementProp name="isAjax" elementType="HTTPArgument">
  13433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13434. <stringProp name="Argument.value">true</stringProp>
  13435. <stringProp name="Argument.metadata">=</stringProp>
  13436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13437. <stringProp name="Argument.name">isAjax</stringProp>
  13438. <stringProp name="Argument.desc">true</stringProp>
  13439. </elementProp>
  13440. </collectionProp>
  13441. </elementProp>
  13442. <stringProp name="HTTPSampler.domain"/>
  13443. <stringProp name="HTTPSampler.port"/>
  13444. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13445. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13446. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13447. <stringProp name="HTTPSampler.contentEncoding"/>
  13448. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  13449. <stringProp name="HTTPSampler.method">GET</stringProp>
  13450. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13451. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13452. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13453. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13454. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13455. <stringProp name="HTTPSampler.embedded_url_re"/>
  13456. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  13457. <hashTree>
  13458. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  13459. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  13460. <stringProp name="EXPECTED_VALUE">0</stringProp>
  13461. <boolProp name="JSONVALIDATION">true</boolProp>
  13462. <boolProp name="EXPECT_NULL">false</boolProp>
  13463. <boolProp name="INVERT">true</boolProp>
  13464. <boolProp name="ISREGEX">true</boolProp>
  13465. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  13466. <hashTree/>
  13467. <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 total records" enabled="true">
  13468. <stringProp name="VAR">entity_total_records</stringProp>
  13469. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  13470. <stringProp name="DEFAULT"/>
  13471. <stringProp name="VARIABLE"/>
  13472. <stringProp name="SUBJECT">BODY</stringProp>
  13473. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  13474. <hashTree/>
  13475. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  13476. <stringProp name="parameters"/>
  13477. <stringProp name="filename"/>
  13478. <stringProp name="script">
  13479. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  13480. var totalsRecord = parseInt(vars.get("entity_total_records"));
  13481. var pageCount = Math.round(totalsRecord/pageSize);
  13482. vars.put("grid_pages_count_filtered", pageCount);
  13483. </stringProp>
  13484. <stringProp name="scriptLanguage">javascript</stringProp>
  13485. </JSR223PostProcessor>
  13486. <hashTree/>
  13487. </hashTree>
  13488. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  13489. <stringProp name="CounterConfig.start">1</stringProp>
  13490. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  13491. <stringProp name="CounterConfig.incr">1</stringProp>
  13492. <stringProp name="CounterConfig.name">page_number</stringProp>
  13493. <stringProp name="CounterConfig.format"/>
  13494. <boolProp name="CounterConfig.per_user">true</boolProp>
  13495. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  13496. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  13497. <hashTree/>
  13498. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  13499. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13500. <collectionProp name="Arguments.arguments">
  13501. <elementProp name="namespace" elementType="HTTPArgument">
  13502. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13503. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  13504. <stringProp name="Argument.metadata">=</stringProp>
  13505. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13506. <stringProp name="Argument.name">namespace</stringProp>
  13507. <stringProp name="Argument.desc">true</stringProp>
  13508. </elementProp>
  13509. <elementProp name="search" elementType="HTTPArgument">
  13510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13511. <stringProp name="Argument.value"/>
  13512. <stringProp name="Argument.metadata">=</stringProp>
  13513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13514. <stringProp name="Argument.name">search</stringProp>
  13515. <stringProp name="Argument.desc">true</stringProp>
  13516. </elementProp>
  13517. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  13518. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13519. <stringProp name="Argument.value">true</stringProp>
  13520. <stringProp name="Argument.metadata">=</stringProp>
  13521. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13522. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  13523. <stringProp name="Argument.desc">true</stringProp>
  13524. </elementProp>
  13525. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  13526. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13527. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  13528. <stringProp name="Argument.metadata">=</stringProp>
  13529. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13530. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  13531. <stringProp name="Argument.desc">true</stringProp>
  13532. </elementProp>
  13533. <elementProp name="paging[current]" elementType="HTTPArgument">
  13534. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13535. <stringProp name="Argument.value">${page_number}</stringProp>
  13536. <stringProp name="Argument.metadata">=</stringProp>
  13537. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13538. <stringProp name="Argument.name">paging[current]</stringProp>
  13539. <stringProp name="Argument.desc">true</stringProp>
  13540. </elementProp>
  13541. <elementProp name="sorting[field]" elementType="HTTPArgument">
  13542. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13543. <stringProp name="Argument.value">entity_id</stringProp>
  13544. <stringProp name="Argument.metadata">=</stringProp>
  13545. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13546. <stringProp name="Argument.name">sorting[field]</stringProp>
  13547. <stringProp name="Argument.desc">true</stringProp>
  13548. </elementProp>
  13549. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  13550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13551. <stringProp name="Argument.value">asc</stringProp>
  13552. <stringProp name="Argument.metadata">=</stringProp>
  13553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13554. <stringProp name="Argument.name">sorting[direction]</stringProp>
  13555. <stringProp name="Argument.desc">true</stringProp>
  13556. </elementProp>
  13557. <elementProp name="isAjax" elementType="HTTPArgument">
  13558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13559. <stringProp name="Argument.value">true</stringProp>
  13560. <stringProp name="Argument.metadata">=</stringProp>
  13561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13562. <stringProp name="Argument.name">isAjax</stringProp>
  13563. <stringProp name="Argument.desc">true</stringProp>
  13564. </elementProp>
  13565. </collectionProp>
  13566. </elementProp>
  13567. <stringProp name="HTTPSampler.domain"/>
  13568. <stringProp name="HTTPSampler.port"/>
  13569. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13570. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13571. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13572. <stringProp name="HTTPSampler.contentEncoding"/>
  13573. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  13574. <stringProp name="HTTPSampler.method">GET</stringProp>
  13575. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13576. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13577. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13578. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13579. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13580. <stringProp name="HTTPSampler.embedded_url_re"/>
  13581. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  13582. <hashTree>
  13583. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  13584. <collectionProp name="Asserion.test_strings">
  13585. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  13586. </collectionProp>
  13587. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  13588. <boolProp name="Assertion.assume_success">false</boolProp>
  13589. <intProp name="Assertion.test_type">2</intProp>
  13590. </ResponseAssertion>
  13591. <hashTree/>
  13592. </hashTree>
  13593. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  13594. <stringProp name="CounterConfig.start">1</stringProp>
  13595. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  13596. <stringProp name="CounterConfig.incr">1</stringProp>
  13597. <stringProp name="CounterConfig.name">page_number</stringProp>
  13598. <stringProp name="CounterConfig.format"/>
  13599. <boolProp name="CounterConfig.per_user">true</boolProp>
  13600. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  13601. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  13602. <hashTree/>
  13603. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  13604. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  13605. </TestFragmentController>
  13606. <hashTree>
  13607. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  13608. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  13609. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  13610. <boolProp name="ForeachController.useSeparator">true</boolProp>
  13611. <stringProp name="ForeachController.startIndex">0</stringProp>
  13612. <stringProp name="ForeachController.endIndex">3</stringProp>
  13613. </ForeachController>
  13614. <hashTree>
  13615. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  13616. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  13617. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  13618. <boolProp name="ForeachController.useSeparator">true</boolProp>
  13619. <stringProp name="ForeachController.startIndex">0</stringProp>
  13620. <stringProp name="ForeachController.endIndex">2</stringProp>
  13621. </ForeachController>
  13622. <hashTree>
  13623. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  13624. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13625. <collectionProp name="Arguments.arguments">
  13626. <elementProp name="namespace" elementType="HTTPArgument">
  13627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13628. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  13629. <stringProp name="Argument.metadata">=</stringProp>
  13630. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13631. <stringProp name="Argument.name">namespace</stringProp>
  13632. <stringProp name="Argument.desc">false</stringProp>
  13633. </elementProp>
  13634. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  13635. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13636. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  13637. <stringProp name="Argument.metadata">=</stringProp>
  13638. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13639. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  13640. <stringProp name="Argument.desc">false</stringProp>
  13641. </elementProp>
  13642. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  13643. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13644. <stringProp name="Argument.value">true</stringProp>
  13645. <stringProp name="Argument.metadata">=</stringProp>
  13646. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13647. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  13648. <stringProp name="Argument.desc">false</stringProp>
  13649. </elementProp>
  13650. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  13651. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13652. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  13653. <stringProp name="Argument.metadata">=</stringProp>
  13654. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13655. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  13656. <stringProp name="Argument.desc">false</stringProp>
  13657. </elementProp>
  13658. <elementProp name="paging[current]" elementType="HTTPArgument">
  13659. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13660. <stringProp name="Argument.value">${page_number}</stringProp>
  13661. <stringProp name="Argument.metadata">=</stringProp>
  13662. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13663. <stringProp name="Argument.name">paging[current]</stringProp>
  13664. <stringProp name="Argument.desc">false</stringProp>
  13665. </elementProp>
  13666. <elementProp name="sorting[field]" elementType="HTTPArgument">
  13667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13668. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  13669. <stringProp name="Argument.metadata">=</stringProp>
  13670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13671. <stringProp name="Argument.name">sorting[field]</stringProp>
  13672. <stringProp name="Argument.desc">false</stringProp>
  13673. </elementProp>
  13674. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  13675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13676. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  13677. <stringProp name="Argument.metadata">=</stringProp>
  13678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13679. <stringProp name="Argument.name">sorting[direction]</stringProp>
  13680. <stringProp name="Argument.desc">false</stringProp>
  13681. </elementProp>
  13682. <elementProp name="isAjax" elementType="HTTPArgument">
  13683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13684. <stringProp name="Argument.value">true</stringProp>
  13685. <stringProp name="Argument.metadata">=</stringProp>
  13686. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13687. <stringProp name="Argument.name">isAjax</stringProp>
  13688. <stringProp name="Argument.desc">false</stringProp>
  13689. </elementProp>
  13690. </collectionProp>
  13691. </elementProp>
  13692. <stringProp name="HTTPSampler.domain"/>
  13693. <stringProp name="HTTPSampler.port"/>
  13694. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13695. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13696. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13697. <stringProp name="HTTPSampler.contentEncoding"/>
  13698. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  13699. <stringProp name="HTTPSampler.method">GET</stringProp>
  13700. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13701. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13702. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13703. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13704. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13705. <stringProp name="HTTPSampler.embedded_url_re"/>
  13706. </HTTPSamplerProxy>
  13707. <hashTree>
  13708. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  13709. <collectionProp name="Asserion.test_strings">
  13710. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  13711. </collectionProp>
  13712. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  13713. <boolProp name="Assertion.assume_success">false</boolProp>
  13714. <intProp name="Assertion.test_type">2</intProp>
  13715. </ResponseAssertion>
  13716. <hashTree/>
  13717. </hashTree>
  13718. </hashTree>
  13719. </hashTree>
  13720. </hashTree>
  13721. </hashTree>
  13722. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  13723. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13724. <collectionProp name="Arguments.arguments"/>
  13725. </elementProp>
  13726. <stringProp name="HTTPSampler.domain"/>
  13727. <stringProp name="HTTPSampler.port"/>
  13728. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13729. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13730. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13731. <stringProp name="HTTPSampler.contentEncoding"/>
  13732. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  13733. <stringProp name="HTTPSampler.method">GET</stringProp>
  13734. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13735. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13736. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13737. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13738. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13739. <stringProp name="HTTPSampler.embedded_url_re"/>
  13740. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  13741. <hashTree>
  13742. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  13743. <boolProp name="resetInterpreter">false</boolProp>
  13744. <stringProp name="parameters"/>
  13745. <stringProp name="filename"/>
  13746. <stringProp name="script">
  13747. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  13748. if (adminUsersDistribution == 1) {
  13749. adminUserList = props.get("adminUserList");
  13750. adminUserList.add(vars.get("admin_user"));
  13751. }
  13752. </stringProp>
  13753. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  13754. <hashTree/>
  13755. </hashTree>
  13756. </hashTree>
  13757. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Create Product" enabled="true">
  13758. <intProp name="ThroughputController.style">1</intProp>
  13759. <boolProp name="ThroughputController.perThread">false</boolProp>
  13760. <intProp name="ThroughputController.maxThroughput">1</intProp>
  13761. <stringProp name="ThroughputController.percentThroughput">${adminProductCreationPercentage}</stringProp>
  13762. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  13763. <hashTree>
  13764. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  13765. <stringProp name="script">
  13766. var tmpLabel = vars.get("testLabel")
  13767. if (tmpLabel) {
  13768. var testLabel = " (" + tmpLabel + ")"
  13769. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  13770. if (sampler.getName().indexOf(testLabel) == -1) {
  13771. sampler.setName(sampler.getName() + testLabel);
  13772. }
  13773. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  13774. sampler.setName("SetUp - " + sampler.getName());
  13775. }
  13776. } else {
  13777. testLabel = ""
  13778. }
  13779. </stringProp>
  13780. <stringProp name="scriptLanguage">javascript</stringProp>
  13781. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  13782. <hashTree/>
  13783. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  13784. <stringProp name="BeanShellSampler.query">
  13785. vars.put("testLabel", "Admin Create Product");
  13786. </stringProp>
  13787. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  13788. </BeanShellSampler>
  13789. <hashTree/>
  13790. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  13791. <stringProp name="script">
  13792. function getFormKeyFromResponse()
  13793. {
  13794. var url = prev.getUrlAsString(),
  13795. responseCode = prev.getResponseCode(),
  13796. formKey = null;
  13797. searchPattern = /var FORM_KEY = '(.+)'/;
  13798. if (responseCode == "200" &amp;&amp; url) {
  13799. response = prev.getResponseDataAsString();
  13800. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  13801. }
  13802. return formKey;
  13803. }
  13804. formKey = vars.get("form_key_storage");
  13805. currentFormKey = getFormKeyFromResponse();
  13806. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  13807. vars.put("form_key_storage", currentFormKey);
  13808. }
  13809. </stringProp>
  13810. <stringProp name="scriptLanguage">javascript</stringProp>
  13811. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  13812. <hashTree/>
  13813. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  13814. <stringProp name="script">
  13815. formKey = vars.get("form_key_storage");
  13816. if (formKey
  13817. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  13818. &amp;&amp; sampler.getMethod() == "POST")
  13819. {
  13820. arguments = sampler.getArguments();
  13821. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  13822. {
  13823. argument = arguments.getArgument(i);
  13824. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  13825. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  13826. argument.setValue(formKey);
  13827. }
  13828. }
  13829. }
  13830. </stringProp>
  13831. <stringProp name="scriptLanguage">javascript</stringProp>
  13832. </JSR223PreProcessor>
  13833. <hashTree/>
  13834. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  13835. <collectionProp name="CookieManager.cookies"/>
  13836. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  13837. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  13838. <hashTree/>
  13839. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  13840. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  13841. </GenericController>
  13842. <hashTree>
  13843. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  13844. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  13845. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  13846. <hashTree>
  13847. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  13848. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  13849. <stringProp name="BeanShellSampler.query">
  13850. adminUser = "none";
  13851. adminUserList = props.get("adminUserList");
  13852. adminUserListIterator = props.get("adminUserListIterator");
  13853. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  13854. if (adminUsersDistribution == 1) {
  13855. adminUser = adminUserList.poll();
  13856. } else {
  13857. if (!adminUserListIterator.hasNext()) {
  13858. adminUserListIterator = adminUserList.descendingIterator();
  13859. }
  13860. adminUser = adminUserListIterator.next();
  13861. }
  13862. if (adminUser == "none") {
  13863. SampleResult.setResponseMessage("adminUser list is empty");
  13864. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  13865. IsSuccess=false;
  13866. SampleResult.setSuccessful(false);
  13867. SampleResult.setStopThread(true);
  13868. }
  13869. vars.put("admin_user", adminUser);
  13870. </stringProp>
  13871. <stringProp name="BeanShellSampler.filename"/>
  13872. <stringProp name="BeanShellSampler.parameters"/>
  13873. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  13874. </BeanShellSampler>
  13875. <hashTree/>
  13876. </hashTree>
  13877. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  13878. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13879. <collectionProp name="Arguments.arguments"/>
  13880. </elementProp>
  13881. <stringProp name="HTTPSampler.domain"/>
  13882. <stringProp name="HTTPSampler.port"/>
  13883. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13884. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13885. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13886. <stringProp name="HTTPSampler.contentEncoding"/>
  13887. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  13888. <stringProp name="HTTPSampler.method">GET</stringProp>
  13889. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13890. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13891. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13892. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13893. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13894. <stringProp name="HTTPSampler.embedded_url_re"/>
  13895. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  13896. <hashTree>
  13897. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  13898. <collectionProp name="Asserion.test_strings">
  13899. <stringProp name="-1397214398">Welcome</stringProp>
  13900. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  13901. </collectionProp>
  13902. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  13903. <boolProp name="Assertion.assume_success">false</boolProp>
  13904. <intProp name="Assertion.test_type">2</intProp>
  13905. </ResponseAssertion>
  13906. <hashTree/>
  13907. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  13908. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  13909. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  13910. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  13911. <stringProp name="RegexExtractor.template">$1$</stringProp>
  13912. <stringProp name="RegexExtractor.default"/>
  13913. <stringProp name="RegexExtractor.match_number">1</stringProp>
  13914. </RegexExtractor>
  13915. <hashTree/>
  13916. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  13917. <collectionProp name="Asserion.test_strings">
  13918. <stringProp name="2845929">^.+$</stringProp>
  13919. </collectionProp>
  13920. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  13921. <boolProp name="Assertion.assume_success">false</boolProp>
  13922. <intProp name="Assertion.test_type">1</intProp>
  13923. <stringProp name="Assertion.scope">variable</stringProp>
  13924. <stringProp name="Scope.variable">admin_form_key</stringProp>
  13925. </ResponseAssertion>
  13926. <hashTree/>
  13927. </hashTree>
  13928. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  13929. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  13930. <collectionProp name="Arguments.arguments">
  13931. <elementProp name="dummy" elementType="HTTPArgument">
  13932. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13933. <stringProp name="Argument.value"/>
  13934. <stringProp name="Argument.metadata">=</stringProp>
  13935. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13936. <stringProp name="Argument.name">dummy</stringProp>
  13937. </elementProp>
  13938. <elementProp name="form_key" elementType="HTTPArgument">
  13939. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13940. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  13941. <stringProp name="Argument.metadata">=</stringProp>
  13942. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13943. <stringProp name="Argument.name">form_key</stringProp>
  13944. </elementProp>
  13945. <elementProp name="login[password]" elementType="HTTPArgument">
  13946. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13947. <stringProp name="Argument.value">${admin_password}</stringProp>
  13948. <stringProp name="Argument.metadata">=</stringProp>
  13949. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13950. <stringProp name="Argument.name">login[password]</stringProp>
  13951. </elementProp>
  13952. <elementProp name="login[username]" elementType="HTTPArgument">
  13953. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  13954. <stringProp name="Argument.value">${admin_user}</stringProp>
  13955. <stringProp name="Argument.metadata">=</stringProp>
  13956. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  13957. <stringProp name="Argument.name">login[username]</stringProp>
  13958. </elementProp>
  13959. </collectionProp>
  13960. </elementProp>
  13961. <stringProp name="HTTPSampler.domain"/>
  13962. <stringProp name="HTTPSampler.port"/>
  13963. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  13964. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  13965. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  13966. <stringProp name="HTTPSampler.contentEncoding"/>
  13967. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  13968. <stringProp name="HTTPSampler.method">POST</stringProp>
  13969. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  13970. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  13971. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  13972. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  13973. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  13974. <boolProp name="HTTPSampler.monitor">false</boolProp>
  13975. <stringProp name="HTTPSampler.embedded_url_re"/>
  13976. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  13977. </HTTPSamplerProxy>
  13978. <hashTree>
  13979. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  13980. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  13981. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  13982. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  13983. <stringProp name="RegexExtractor.template">$1$</stringProp>
  13984. <stringProp name="RegexExtractor.default"/>
  13985. <stringProp name="RegexExtractor.match_number">1</stringProp>
  13986. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  13987. <hashTree/>
  13988. </hashTree>
  13989. </hashTree>
  13990. <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
  13991. <stringProp name="TestPlan.comments">tool/fragments/ce/once_only_controller.jmx</stringProp>
  13992. </OnceOnlyController>
  13993. <hashTree>
  13994. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Related Product Id" enabled="true">
  13995. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_related_product_id.jmx</stringProp>
  13996. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  13997. import java.util.Random;
  13998. Random random = new Random();
  13999. if (${seedForRandom} &gt; 0) {
  14000. random.setSeed(${seedForRandom});
  14001. }
  14002. relatedIndex = random.nextInt(props.get("simple_products_list").size());
  14003. vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));</stringProp>
  14004. <stringProp name="BeanShellSampler.filename"/>
  14005. <stringProp name="BeanShellSampler.parameters"/>
  14006. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  14007. </BeanShellSampler>
  14008. <hashTree/>
  14009. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Product Attributes" enabled="true">
  14010. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  14011. </GenericController>
  14012. <hashTree>
  14013. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  14014. <collectionProp name="HeaderManager.headers">
  14015. <elementProp name="" elementType="Header">
  14016. <stringProp name="Header.name">Content-Type</stringProp>
  14017. <stringProp name="Header.value">application/json</stringProp>
  14018. </elementProp>
  14019. <elementProp name="" elementType="Header">
  14020. <stringProp name="Header.name">Accept</stringProp>
  14021. <stringProp name="Header.value">*/*</stringProp>
  14022. </elementProp>
  14023. </collectionProp>
  14024. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  14025. <hashTree/>
  14026. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  14027. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  14028. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  14029. <collectionProp name="Arguments.arguments">
  14030. <elementProp name="" elementType="HTTPArgument">
  14031. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  14032. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  14033. <stringProp name="Argument.metadata">=</stringProp>
  14034. </elementProp>
  14035. </collectionProp>
  14036. </elementProp>
  14037. <stringProp name="HTTPSampler.domain"/>
  14038. <stringProp name="HTTPSampler.port"/>
  14039. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  14040. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  14041. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  14042. <stringProp name="HTTPSampler.contentEncoding"/>
  14043. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  14044. <stringProp name="HTTPSampler.method">POST</stringProp>
  14045. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  14046. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  14047. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  14048. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  14049. <boolProp name="HTTPSampler.monitor">false</boolProp>
  14050. <stringProp name="HTTPSampler.embedded_url_re"/>
  14051. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  14052. <hashTree>
  14053. <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">
  14054. <stringProp name="VAR">admin_token</stringProp>
  14055. <stringProp name="JSONPATH">$</stringProp>
  14056. <stringProp name="DEFAULT"/>
  14057. <stringProp name="VARIABLE"/>
  14058. <stringProp name="SUBJECT">BODY</stringProp>
  14059. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  14060. <hashTree/>
  14061. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  14062. <collectionProp name="Asserion.test_strings">
  14063. <stringProp name="484395188">^.{10,}$</stringProp>
  14064. </collectionProp>
  14065. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  14066. <boolProp name="Assertion.assume_success">false</boolProp>
  14067. <intProp name="Assertion.test_type">1</intProp>
  14068. <stringProp name="Assertion.scope">variable</stringProp>
  14069. <stringProp name="Scope.variable">admin_token</stringProp>
  14070. </ResponseAssertion>
  14071. <hashTree/>
  14072. </hashTree>
  14073. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  14074. <collectionProp name="HeaderManager.headers">
  14075. <elementProp name="" elementType="Header">
  14076. <stringProp name="Header.name">Authorization</stringProp>
  14077. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  14078. </elementProp>
  14079. </collectionProp>
  14080. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  14081. <hashTree/>
  14082. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get product attributes" enabled="true">
  14083. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  14084. <collectionProp name="Arguments.arguments">
  14085. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  14086. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  14087. <stringProp name="Argument.value">mycolor</stringProp>
  14088. <stringProp name="Argument.metadata">=</stringProp>
  14089. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14090. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  14091. </elementProp>
  14092. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  14093. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  14094. <stringProp name="Argument.value">attribute_code</stringProp>
  14095. <stringProp name="Argument.metadata">=</stringProp>
  14096. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14097. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  14098. </elementProp>
  14099. <elementProp name="searchCriteria[filterGroups][0][filters][1][value]" elementType="HTTPArgument">
  14100. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  14101. <stringProp name="Argument.value">mysize</stringProp>
  14102. <stringProp name="Argument.metadata">=</stringProp>
  14103. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14104. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][value]</stringProp>
  14105. </elementProp>
  14106. <elementProp name="searchCriteria[filterGroups][0][filters][1][field]" elementType="HTTPArgument">
  14107. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  14108. <stringProp name="Argument.value">attribute_code</stringProp>
  14109. <stringProp name="Argument.metadata">=</stringProp>
  14110. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14111. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][field]</stringProp>
  14112. </elementProp>
  14113. </collectionProp>
  14114. </elementProp>
  14115. <stringProp name="HTTPSampler.domain"/>
  14116. <stringProp name="HTTPSampler.port"/>
  14117. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  14118. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  14119. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  14120. <stringProp name="HTTPSampler.contentEncoding"/>
  14121. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes</stringProp>
  14122. <stringProp name="HTTPSampler.method">GET</stringProp>
  14123. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  14124. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  14125. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  14126. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  14127. <boolProp name="HTTPSampler.monitor">false</boolProp>
  14128. <stringProp name="HTTPSampler.embedded_url_re"/>
  14129. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_product_attributes.jmx</stringProp></HTTPSamplerProxy>
  14130. <hashTree>
  14131. <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 product attributes" enabled="true">
  14132. <stringProp name="VAR">product_attributes</stringProp>
  14133. <stringProp name="JSONPATH">$.items</stringProp>
  14134. <stringProp name="DEFAULT"/>
  14135. <stringProp name="VARIABLE"/>
  14136. <stringProp name="SUBJECT">BODY</stringProp>
  14137. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  14138. <hashTree/>
  14139. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="SetUp - Prepare product attributes" enabled="true">
  14140. <stringProp name="scriptLanguage">javascript</stringProp>
  14141. <stringProp name="parameters"/>
  14142. <stringProp name="filename"/>
  14143. <stringProp name="cacheKey"/>
  14144. <stringProp name="script">
  14145. var attributesData = JSON.parse(vars.get("product_attributes")),
  14146. maxOptions = 2;
  14147. attributes = [];
  14148. for (i in attributesData) {
  14149. if (i &gt;= 2) {
  14150. break;
  14151. }
  14152. var data = attributesData[i],
  14153. attribute = {
  14154. "id": data.attribute_id,
  14155. "code": data.attribute_code,
  14156. "label": data.default_frontend_label,
  14157. "options": []
  14158. };
  14159. var processedOptions = 0;
  14160. for (optionN in data.options) {
  14161. var option = data.options[optionN];
  14162. if (parseInt(option.value) &gt; 0 &amp;&amp; processedOptions &lt; maxOptions) {
  14163. processedOptions++;
  14164. attribute.options.push(option);
  14165. }
  14166. }
  14167. attributes.push(attribute);
  14168. }
  14169. vars.putObject("product_attributes", attributes);
  14170. </stringProp>
  14171. </JSR223PostProcessor>
  14172. <hashTree/>
  14173. </hashTree>
  14174. </hashTree>
  14175. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Attribute Set Id" enabled="true">
  14176. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  14177. <collectionProp name="Arguments.arguments"/>
  14178. </elementProp>
  14179. <stringProp name="HTTPSampler.domain"/>
  14180. <stringProp name="HTTPSampler.port"/>
  14181. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  14182. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  14183. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  14184. <stringProp name="HTTPSampler.contentEncoding"/>
  14185. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter}</stringProp>
  14186. <stringProp name="HTTPSampler.method">GET</stringProp>
  14187. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  14188. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  14189. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  14190. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  14191. <boolProp name="HTTPSampler.monitor">false</boolProp>
  14192. <stringProp name="HTTPSampler.embedded_url_re"/>
  14193. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx</stringProp>
  14194. </HTTPSamplerProxy>
  14195. <hashTree>
  14196. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  14197. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  14198. <stringProp name="RegexExtractor.refname">attribute_set_id</stringProp>
  14199. <stringProp name="RegexExtractor.regex">catalog&amp;#x2F;product_set&amp;#x2F;edit&amp;#x2F;id&amp;#x2F;([\d]+)&amp;#x2F;"[\D\d]*Attribute Set 1</stringProp>
  14200. <stringProp name="RegexExtractor.template">$1$</stringProp>
  14201. <stringProp name="RegexExtractor.default"/>
  14202. <stringProp name="RegexExtractor.match_number">1</stringProp>
  14203. </RegexExtractor>
  14204. <hashTree/>
  14205. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="SetUp - Set Attribute Set Filter" enabled="true">
  14206. <boolProp name="resetInterpreter">false</boolProp>
  14207. <stringProp name="parameters"/>
  14208. <stringProp name="filename"/>
  14209. <stringProp name="script">import org.apache.commons.codec.binary.Base64;
  14210. byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes());
  14211. vars.put("attribute_set_filter", new String(encodedBytes));
  14212. </stringProp>
  14213. </BeanShellPreProcessor>
  14214. <hashTree/>
  14215. </hashTree>
  14216. </hashTree>
  14217. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  14218. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  14219. </GenericController>
  14220. <hashTree>
  14221. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  14222. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  14223. import java.util.Random;
  14224. Random random = new Random();
  14225. int number1;
  14226. if (${seedForRandom} &gt; 0) {
  14227. random.setSeed(${seedForRandom});
  14228. }
  14229. number = random.nextInt(props.get("simple_products_list_for_edit").size());
  14230. simpleList = props.get("simple_products_list_for_edit").get(number);
  14231. vars.put("simple_product_1_id", simpleList.get("id"));
  14232. vars.put("simple_product_1_name", simpleList.get("title"));
  14233. do {
  14234. number1 = random.nextInt(props.get("simple_products_list_for_edit").size());
  14235. } while(number == number1);
  14236. simpleList = props.get("simple_products_list_for_edit").get(number1);
  14237. vars.put("simple_product_2_id", simpleList.get("id"));
  14238. vars.put("simple_product_2_name", simpleList.get("title"));
  14239. number2 = random.nextInt(props.get("configurable_products_list").size());
  14240. configurableList = props.get("configurable_products_list").get(number2);
  14241. vars.put("configurable_product_1_id", configurableList.get("id"));
  14242. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  14243. vars.put("configurable_product_1_name", configurableList.get("title"));
  14244. //Additional category to be added
  14245. //int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  14246. //vars.put("category_additional", (categoryId+1).toString());
  14247. //New price
  14248. vars.put("price_new", "9999");
  14249. //New special price
  14250. vars.put("special_price_new", "8888");
  14251. //New quantity
  14252. vars.put("quantity_new", "100600");
  14253. vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}");
  14254. </stringProp>
  14255. <stringProp name="BeanShellSampler.filename"/>
  14256. <stringProp name="BeanShellSampler.parameters"/>
  14257. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  14258. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/setup.jmx</stringProp></BeanShellSampler>
  14259. <hashTree/>
  14260. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Bundle Product" enabled="true">
  14261. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_bundle_product.jmx</stringProp>
  14262. </TestFragmentController>
  14263. <hashTree>
  14264. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  14265. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  14266. <collectionProp name="Arguments.arguments"/>
  14267. </elementProp>
  14268. <stringProp name="HTTPSampler.domain"/>
  14269. <stringProp name="HTTPSampler.port"/>
  14270. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  14271. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  14272. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  14273. <stringProp name="HTTPSampler.contentEncoding"/>
  14274. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  14275. <stringProp name="HTTPSampler.method">GET</stringProp>
  14276. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  14277. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  14278. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  14279. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  14280. <boolProp name="HTTPSampler.monitor">false</boolProp>
  14281. <stringProp name="HTTPSampler.embedded_url_re"/>
  14282. </HTTPSamplerProxy>
  14283. <hashTree>
  14284. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  14285. <collectionProp name="Asserion.test_strings">
  14286. <stringProp name="1509986340">records found</stringProp>
  14287. </collectionProp>
  14288. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  14289. <boolProp name="Assertion.assume_success">false</boolProp>
  14290. <intProp name="Assertion.test_type">2</intProp>
  14291. </ResponseAssertion>
  14292. <hashTree/>
  14293. </hashTree>
  14294. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product" enabled="true">
  14295. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  14296. <collectionProp name="Arguments.arguments"/>
  14297. </elementProp>
  14298. <stringProp name="HTTPSampler.domain"/>
  14299. <stringProp name="HTTPSampler.port"/>
  14300. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  14301. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  14302. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  14303. <stringProp name="HTTPSampler.contentEncoding"/>
  14304. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/</stringProp>
  14305. <stringProp name="HTTPSampler.method">GET</stringProp>
  14306. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  14307. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  14308. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  14309. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  14310. <boolProp name="HTTPSampler.monitor">false</boolProp>
  14311. <stringProp name="HTTPSampler.embedded_url_re"/>
  14312. </HTTPSamplerProxy>
  14313. <hashTree>
  14314. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  14315. <collectionProp name="Asserion.test_strings">
  14316. <stringProp name="-144461265">New Product</stringProp>
  14317. </collectionProp>
  14318. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  14319. <boolProp name="Assertion.assume_success">false</boolProp>
  14320. <intProp name="Assertion.test_type">2</intProp>
  14321. </ResponseAssertion>
  14322. <hashTree/>
  14323. </hashTree>
  14324. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Validate" enabled="true">
  14325. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  14326. <collectionProp name="Arguments.arguments">
  14327. <elementProp name="ajax" elementType="HTTPArgument">
  14328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14329. <stringProp name="Argument.value">true</stringProp>
  14330. <stringProp name="Argument.metadata">=</stringProp>
  14331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14332. <stringProp name="Argument.name">ajax</stringProp>
  14333. <stringProp name="Argument.desc">false</stringProp>
  14334. </elementProp>
  14335. <elementProp name="isAjax" elementType="HTTPArgument">
  14336. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14337. <stringProp name="Argument.value">true</stringProp>
  14338. <stringProp name="Argument.metadata">=</stringProp>
  14339. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14340. <stringProp name="Argument.name">isAjax</stringProp>
  14341. <stringProp name="Argument.desc">false</stringProp>
  14342. </elementProp>
  14343. <elementProp name="form_key" elementType="HTTPArgument">
  14344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14345. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  14346. <stringProp name="Argument.metadata">=</stringProp>
  14347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14348. <stringProp name="Argument.name">form_key</stringProp>
  14349. <stringProp name="Argument.desc">false</stringProp>
  14350. </elementProp>
  14351. <elementProp name="product[name]" elementType="HTTPArgument">
  14352. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14353. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  14354. <stringProp name="Argument.metadata">=</stringProp>
  14355. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14356. <stringProp name="Argument.name">product[name]</stringProp>
  14357. <stringProp name="Argument.desc">false</stringProp>
  14358. </elementProp>
  14359. <elementProp name="product[sku]" elementType="HTTPArgument">
  14360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14361. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  14362. <stringProp name="Argument.metadata">=</stringProp>
  14363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14364. <stringProp name="Argument.name">product[sku]</stringProp>
  14365. <stringProp name="Argument.desc">false</stringProp>
  14366. </elementProp>
  14367. <elementProp name="product[price]" elementType="HTTPArgument">
  14368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14369. <stringProp name="Argument.value">42</stringProp>
  14370. <stringProp name="Argument.metadata">=</stringProp>
  14371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14372. <stringProp name="Argument.name">product[price]</stringProp>
  14373. </elementProp>
  14374. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  14375. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14376. <stringProp name="Argument.value">2</stringProp>
  14377. <stringProp name="Argument.metadata">=</stringProp>
  14378. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14379. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  14380. </elementProp>
  14381. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  14382. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14383. <stringProp name="Argument.value">111</stringProp>
  14384. <stringProp name="Argument.metadata">=</stringProp>
  14385. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14386. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  14387. </elementProp>
  14388. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  14389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14390. <stringProp name="Argument.value">1</stringProp>
  14391. <stringProp name="Argument.metadata">=</stringProp>
  14392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14393. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  14394. </elementProp>
  14395. <elementProp name="product[weight]" elementType="HTTPArgument">
  14396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14397. <stringProp name="Argument.value">1.0000</stringProp>
  14398. <stringProp name="Argument.metadata">=</stringProp>
  14399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14400. <stringProp name="Argument.name">product[weight]</stringProp>
  14401. </elementProp>
  14402. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  14403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14404. <stringProp name="Argument.value">1</stringProp>
  14405. <stringProp name="Argument.metadata">=</stringProp>
  14406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14407. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  14408. <stringProp name="Argument.desc">true</stringProp>
  14409. </elementProp>
  14410. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  14411. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14412. <stringProp name="Argument.value">2</stringProp>
  14413. <stringProp name="Argument.metadata">=</stringProp>
  14414. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14415. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  14416. </elementProp>
  14417. <elementProp name="product[description]" elementType="HTTPArgument">
  14418. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14419. <stringProp name="Argument.value">&lt;p&gt;Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  14420. <stringProp name="Argument.metadata">=</stringProp>
  14421. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14422. <stringProp name="Argument.name">product[description]</stringProp>
  14423. </elementProp>
  14424. <elementProp name="product[short_description]" elementType="HTTPArgument">
  14425. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14426. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  14427. <stringProp name="Argument.metadata">=</stringProp>
  14428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14429. <stringProp name="Argument.name">product[short_description]</stringProp>
  14430. </elementProp>
  14431. <elementProp name="product[status]" elementType="HTTPArgument">
  14432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14433. <stringProp name="Argument.value">1</stringProp>
  14434. <stringProp name="Argument.metadata">=</stringProp>
  14435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14436. <stringProp name="Argument.name">product[status]</stringProp>
  14437. </elementProp>
  14438. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  14439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14440. <stringProp name="Argument.value"/>
  14441. <stringProp name="Argument.metadata">=</stringProp>
  14442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14443. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  14444. </elementProp>
  14445. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  14446. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14447. <stringProp name="Argument.value">1</stringProp>
  14448. <stringProp name="Argument.metadata">=</stringProp>
  14449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14450. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  14451. </elementProp>
  14452. <elementProp name="product[image]" elementType="HTTPArgument">
  14453. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14454. <stringProp name="Argument.value"/>
  14455. <stringProp name="Argument.metadata">=</stringProp>
  14456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14457. <stringProp name="Argument.name">product[image]</stringProp>
  14458. </elementProp>
  14459. <elementProp name="product[small_image]" elementType="HTTPArgument">
  14460. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14461. <stringProp name="Argument.value"/>
  14462. <stringProp name="Argument.metadata">=</stringProp>
  14463. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14464. <stringProp name="Argument.name">product[small_image]</stringProp>
  14465. </elementProp>
  14466. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  14467. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14468. <stringProp name="Argument.value"/>
  14469. <stringProp name="Argument.metadata">=</stringProp>
  14470. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14471. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  14472. </elementProp>
  14473. <elementProp name="product[url_key]" elementType="HTTPArgument">
  14474. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14475. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  14476. <stringProp name="Argument.metadata">=</stringProp>
  14477. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14478. <stringProp name="Argument.name">product[url_key]</stringProp>
  14479. </elementProp>
  14480. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  14481. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14482. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  14483. <stringProp name="Argument.metadata">=</stringProp>
  14484. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14485. <stringProp name="Argument.name">product[meta_title]</stringProp>
  14486. </elementProp>
  14487. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  14488. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14489. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  14490. <stringProp name="Argument.metadata">=</stringProp>
  14491. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14492. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  14493. </elementProp>
  14494. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  14495. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14496. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  14497. <stringProp name="Argument.metadata">=</stringProp>
  14498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14499. <stringProp name="Argument.name">product[meta_description]</stringProp>
  14500. </elementProp>
  14501. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  14502. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14503. <stringProp name="Argument.value">1</stringProp>
  14504. <stringProp name="Argument.metadata">=</stringProp>
  14505. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14506. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  14507. </elementProp>
  14508. <elementProp name="product[special_price]" elementType="HTTPArgument">
  14509. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14510. <stringProp name="Argument.value">99</stringProp>
  14511. <stringProp name="Argument.metadata">=</stringProp>
  14512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14513. <stringProp name="Argument.name">product[special_price]</stringProp>
  14514. </elementProp>
  14515. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  14516. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14517. <stringProp name="Argument.value">1</stringProp>
  14518. <stringProp name="Argument.metadata">=</stringProp>
  14519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14520. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  14521. </elementProp>
  14522. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  14523. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14524. <stringProp name="Argument.value"/>
  14525. <stringProp name="Argument.metadata">=</stringProp>
  14526. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14527. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  14528. </elementProp>
  14529. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  14530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14531. <stringProp name="Argument.value"/>
  14532. <stringProp name="Argument.metadata">=</stringProp>
  14533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14534. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  14535. </elementProp>
  14536. <elementProp name="product[cost]" elementType="HTTPArgument">
  14537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14538. <stringProp name="Argument.value"/>
  14539. <stringProp name="Argument.metadata">=</stringProp>
  14540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14541. <stringProp name="Argument.name">product[cost]</stringProp>
  14542. </elementProp>
  14543. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  14544. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14545. <stringProp name="Argument.value">0</stringProp>
  14546. <stringProp name="Argument.metadata">=</stringProp>
  14547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14548. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  14549. </elementProp>
  14550. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  14551. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14552. <stringProp name="Argument.value">32000</stringProp>
  14553. <stringProp name="Argument.metadata">=</stringProp>
  14554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14555. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  14556. </elementProp>
  14557. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  14558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14559. <stringProp name="Argument.value">100</stringProp>
  14560. <stringProp name="Argument.metadata">=</stringProp>
  14561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14562. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  14563. </elementProp>
  14564. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  14565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14566. <stringProp name="Argument.value">90</stringProp>
  14567. <stringProp name="Argument.metadata">=</stringProp>
  14568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14569. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  14570. </elementProp>
  14571. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  14572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14573. <stringProp name="Argument.value"/>
  14574. <stringProp name="Argument.metadata">=</stringProp>
  14575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14576. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  14577. </elementProp>
  14578. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  14579. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14580. <stringProp name="Argument.value">0</stringProp>
  14581. <stringProp name="Argument.metadata">=</stringProp>
  14582. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14583. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  14584. </elementProp>
  14585. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  14586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14587. <stringProp name="Argument.value">1</stringProp>
  14588. <stringProp name="Argument.metadata">=</stringProp>
  14589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14590. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  14591. </elementProp>
  14592. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  14593. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14594. <stringProp name="Argument.value">101</stringProp>
  14595. <stringProp name="Argument.metadata">=</stringProp>
  14596. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14597. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  14598. </elementProp>
  14599. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  14600. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14601. <stringProp name="Argument.value">99</stringProp>
  14602. <stringProp name="Argument.metadata">=</stringProp>
  14603. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14604. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  14605. </elementProp>
  14606. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  14607. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14608. <stringProp name="Argument.value"/>
  14609. <stringProp name="Argument.metadata">=</stringProp>
  14610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14611. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  14612. </elementProp>
  14613. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  14614. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14615. <stringProp name="Argument.value">1</stringProp>
  14616. <stringProp name="Argument.metadata">=</stringProp>
  14617. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14618. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  14619. </elementProp>
  14620. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  14621. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14622. <stringProp name="Argument.value">100500</stringProp>
  14623. <stringProp name="Argument.metadata">=</stringProp>
  14624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14625. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  14626. </elementProp>
  14627. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  14628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14629. <stringProp name="Argument.value">100500</stringProp>
  14630. <stringProp name="Argument.metadata">=</stringProp>
  14631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14632. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  14633. </elementProp>
  14634. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  14635. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14636. <stringProp name="Argument.value">0</stringProp>
  14637. <stringProp name="Argument.metadata">=</stringProp>
  14638. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14639. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  14640. </elementProp>
  14641. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  14642. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14643. <stringProp name="Argument.value">1</stringProp>
  14644. <stringProp name="Argument.metadata">=</stringProp>
  14645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14646. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  14647. </elementProp>
  14648. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  14649. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14650. <stringProp name="Argument.value">1</stringProp>
  14651. <stringProp name="Argument.metadata">=</stringProp>
  14652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14653. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  14654. </elementProp>
  14655. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  14656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14657. <stringProp name="Argument.value">1</stringProp>
  14658. <stringProp name="Argument.metadata">=</stringProp>
  14659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14660. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  14661. </elementProp>
  14662. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  14663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14664. <stringProp name="Argument.value">10000</stringProp>
  14665. <stringProp name="Argument.metadata">=</stringProp>
  14666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14667. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  14668. </elementProp>
  14669. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  14670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14671. <stringProp name="Argument.value">1</stringProp>
  14672. <stringProp name="Argument.metadata">=</stringProp>
  14673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14674. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  14675. </elementProp>
  14676. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  14677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14678. <stringProp name="Argument.value">0</stringProp>
  14679. <stringProp name="Argument.metadata">=</stringProp>
  14680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14681. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  14682. </elementProp>
  14683. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  14684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14685. <stringProp name="Argument.value">0</stringProp>
  14686. <stringProp name="Argument.metadata">=</stringProp>
  14687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14688. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  14689. </elementProp>
  14690. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  14691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14692. <stringProp name="Argument.value">0</stringProp>
  14693. <stringProp name="Argument.metadata">=</stringProp>
  14694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14695. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  14696. </elementProp>
  14697. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  14698. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14699. <stringProp name="Argument.value">1</stringProp>
  14700. <stringProp name="Argument.metadata">=</stringProp>
  14701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14702. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  14703. </elementProp>
  14704. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  14705. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14706. <stringProp name="Argument.value">1</stringProp>
  14707. <stringProp name="Argument.metadata">=</stringProp>
  14708. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14709. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  14710. </elementProp>
  14711. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  14712. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14713. <stringProp name="Argument.value">0</stringProp>
  14714. <stringProp name="Argument.metadata">=</stringProp>
  14715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14716. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  14717. </elementProp>
  14718. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  14719. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14720. <stringProp name="Argument.value">0</stringProp>
  14721. <stringProp name="Argument.metadata">=</stringProp>
  14722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14723. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  14724. </elementProp>
  14725. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  14726. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14727. <stringProp name="Argument.value">1</stringProp>
  14728. <stringProp name="Argument.metadata">=</stringProp>
  14729. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14730. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  14731. </elementProp>
  14732. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  14733. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14734. <stringProp name="Argument.value">1</stringProp>
  14735. <stringProp name="Argument.metadata">=</stringProp>
  14736. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14737. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  14738. </elementProp>
  14739. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  14740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14741. <stringProp name="Argument.value"/>
  14742. <stringProp name="Argument.metadata">=</stringProp>
  14743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14744. <stringProp name="Argument.name">product[custom_design]</stringProp>
  14745. </elementProp>
  14746. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  14747. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14748. <stringProp name="Argument.value"/>
  14749. <stringProp name="Argument.metadata">=</stringProp>
  14750. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14751. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  14752. </elementProp>
  14753. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  14754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14755. <stringProp name="Argument.value"/>
  14756. <stringProp name="Argument.metadata">=</stringProp>
  14757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14758. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  14759. </elementProp>
  14760. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  14761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14762. <stringProp name="Argument.value"/>
  14763. <stringProp name="Argument.metadata">=</stringProp>
  14764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14765. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  14766. </elementProp>
  14767. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  14768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14769. <stringProp name="Argument.value"/>
  14770. <stringProp name="Argument.metadata">=</stringProp>
  14771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14772. <stringProp name="Argument.name">product[page_layout]</stringProp>
  14773. </elementProp>
  14774. <elementProp name="product[options_container]" elementType="HTTPArgument">
  14775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14776. <stringProp name="Argument.value">container2</stringProp>
  14777. <stringProp name="Argument.metadata">=</stringProp>
  14778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14779. <stringProp name="Argument.name">product[options_container]</stringProp>
  14780. </elementProp>
  14781. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  14782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14783. <stringProp name="Argument.value"/>
  14784. <stringProp name="Argument.metadata">=</stringProp>
  14785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14786. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  14787. </elementProp>
  14788. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  14789. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14790. <stringProp name="Argument.value">0</stringProp>
  14791. <stringProp name="Argument.metadata">=</stringProp>
  14792. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14793. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  14794. </elementProp>
  14795. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  14796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14797. <stringProp name="Argument.value">option title one</stringProp>
  14798. <stringProp name="Argument.metadata">=</stringProp>
  14799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14800. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  14801. </elementProp>
  14802. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  14803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14804. <stringProp name="Argument.value"/>
  14805. <stringProp name="Argument.metadata">=</stringProp>
  14806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14807. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  14808. </elementProp>
  14809. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  14810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14811. <stringProp name="Argument.value"/>
  14812. <stringProp name="Argument.metadata">=</stringProp>
  14813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14814. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  14815. </elementProp>
  14816. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  14817. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14818. <stringProp name="Argument.value">select</stringProp>
  14819. <stringProp name="Argument.metadata">=</stringProp>
  14820. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14821. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  14822. </elementProp>
  14823. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  14824. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14825. <stringProp name="Argument.value">1</stringProp>
  14826. <stringProp name="Argument.metadata">=</stringProp>
  14827. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14828. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  14829. </elementProp>
  14830. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  14831. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14832. <stringProp name="Argument.value">0</stringProp>
  14833. <stringProp name="Argument.metadata">=</stringProp>
  14834. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14835. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  14836. </elementProp>
  14837. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  14838. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14839. <stringProp name="Argument.value"/>
  14840. <stringProp name="Argument.metadata">=</stringProp>
  14841. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14842. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  14843. </elementProp>
  14844. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  14845. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14846. <stringProp name="Argument.value"/>
  14847. <stringProp name="Argument.metadata">=</stringProp>
  14848. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14849. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  14850. </elementProp>
  14851. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  14852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14853. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  14854. <stringProp name="Argument.metadata">=</stringProp>
  14855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14856. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  14857. </elementProp>
  14858. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  14859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14860. <stringProp name="Argument.value"/>
  14861. <stringProp name="Argument.metadata">=</stringProp>
  14862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14863. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  14864. </elementProp>
  14865. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  14866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14867. <stringProp name="Argument.value">25</stringProp>
  14868. <stringProp name="Argument.metadata">=</stringProp>
  14869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14870. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  14871. </elementProp>
  14872. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  14873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14874. <stringProp name="Argument.value">1</stringProp>
  14875. <stringProp name="Argument.metadata">=</stringProp>
  14876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14877. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  14878. </elementProp>
  14879. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  14880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14881. <stringProp name="Argument.value">1</stringProp>
  14882. <stringProp name="Argument.metadata">=</stringProp>
  14883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14884. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  14885. </elementProp>
  14886. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  14887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14888. <stringProp name="Argument.value">1</stringProp>
  14889. <stringProp name="Argument.metadata">=</stringProp>
  14890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14891. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  14892. </elementProp>
  14893. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  14894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14895. <stringProp name="Argument.value">0</stringProp>
  14896. <stringProp name="Argument.metadata">=</stringProp>
  14897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14898. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  14899. </elementProp>
  14900. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  14901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14902. <stringProp name="Argument.value"/>
  14903. <stringProp name="Argument.metadata">=</stringProp>
  14904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14905. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  14906. </elementProp>
  14907. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  14908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14909. <stringProp name="Argument.value"/>
  14910. <stringProp name="Argument.metadata">=</stringProp>
  14911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14912. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  14913. </elementProp>
  14914. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  14915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14916. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  14917. <stringProp name="Argument.metadata">=</stringProp>
  14918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14919. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  14920. </elementProp>
  14921. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  14922. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14923. <stringProp name="Argument.value"/>
  14924. <stringProp name="Argument.metadata">=</stringProp>
  14925. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14926. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  14927. </elementProp>
  14928. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  14929. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14930. <stringProp name="Argument.value">10.99</stringProp>
  14931. <stringProp name="Argument.metadata">=</stringProp>
  14932. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14933. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  14934. </elementProp>
  14935. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  14936. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14937. <stringProp name="Argument.value">0</stringProp>
  14938. <stringProp name="Argument.metadata">=</stringProp>
  14939. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14940. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  14941. </elementProp>
  14942. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  14943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14944. <stringProp name="Argument.value">1</stringProp>
  14945. <stringProp name="Argument.metadata">=</stringProp>
  14946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14947. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  14948. </elementProp>
  14949. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  14950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14951. <stringProp name="Argument.value">1</stringProp>
  14952. <stringProp name="Argument.metadata">=</stringProp>
  14953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14954. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  14955. </elementProp>
  14956. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  14957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14958. <stringProp name="Argument.value">1</stringProp>
  14959. <stringProp name="Argument.metadata">=</stringProp>
  14960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14961. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  14962. </elementProp>
  14963. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  14964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14965. <stringProp name="Argument.value">option title two</stringProp>
  14966. <stringProp name="Argument.metadata">=</stringProp>
  14967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14968. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  14969. </elementProp>
  14970. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  14971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14972. <stringProp name="Argument.value"/>
  14973. <stringProp name="Argument.metadata">=</stringProp>
  14974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14975. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  14976. </elementProp>
  14977. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  14978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14979. <stringProp name="Argument.value"/>
  14980. <stringProp name="Argument.metadata">=</stringProp>
  14981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14982. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  14983. </elementProp>
  14984. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  14985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14986. <stringProp name="Argument.value">select</stringProp>
  14987. <stringProp name="Argument.metadata">=</stringProp>
  14988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14989. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  14990. </elementProp>
  14991. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  14992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  14993. <stringProp name="Argument.value">1</stringProp>
  14994. <stringProp name="Argument.metadata">=</stringProp>
  14995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  14996. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  14997. </elementProp>
  14998. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  14999. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15000. <stringProp name="Argument.value">1</stringProp>
  15001. <stringProp name="Argument.metadata">=</stringProp>
  15002. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15003. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  15004. </elementProp>
  15005. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  15006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15007. <stringProp name="Argument.value"/>
  15008. <stringProp name="Argument.metadata">=</stringProp>
  15009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15010. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  15011. <stringProp name="Argument.desc">true</stringProp>
  15012. </elementProp>
  15013. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  15014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15015. <stringProp name="Argument.value"/>
  15016. <stringProp name="Argument.metadata">=</stringProp>
  15017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15018. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  15019. <stringProp name="Argument.desc">true</stringProp>
  15020. </elementProp>
  15021. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  15022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15023. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  15024. <stringProp name="Argument.metadata">=</stringProp>
  15025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15026. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  15027. <stringProp name="Argument.desc">true</stringProp>
  15028. </elementProp>
  15029. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  15030. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15031. <stringProp name="Argument.value"/>
  15032. <stringProp name="Argument.metadata">=</stringProp>
  15033. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15034. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  15035. <stringProp name="Argument.desc">true</stringProp>
  15036. </elementProp>
  15037. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  15038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15039. <stringProp name="Argument.value">5.00</stringProp>
  15040. <stringProp name="Argument.metadata">=</stringProp>
  15041. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15042. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  15043. <stringProp name="Argument.desc">true</stringProp>
  15044. </elementProp>
  15045. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  15046. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15047. <stringProp name="Argument.value">0</stringProp>
  15048. <stringProp name="Argument.metadata">=</stringProp>
  15049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15050. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  15051. <stringProp name="Argument.desc">true</stringProp>
  15052. </elementProp>
  15053. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  15054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15055. <stringProp name="Argument.value">1</stringProp>
  15056. <stringProp name="Argument.metadata">=</stringProp>
  15057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15058. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  15059. <stringProp name="Argument.desc">true</stringProp>
  15060. </elementProp>
  15061. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  15062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15063. <stringProp name="Argument.value">1</stringProp>
  15064. <stringProp name="Argument.metadata">=</stringProp>
  15065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15066. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  15067. <stringProp name="Argument.desc">true</stringProp>
  15068. </elementProp>
  15069. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  15070. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15071. <stringProp name="Argument.value">0</stringProp>
  15072. <stringProp name="Argument.metadata">=</stringProp>
  15073. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15074. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  15075. <stringProp name="Argument.desc">true</stringProp>
  15076. </elementProp>
  15077. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  15078. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15079. <stringProp name="Argument.value"/>
  15080. <stringProp name="Argument.metadata">=</stringProp>
  15081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15082. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  15083. <stringProp name="Argument.desc">true</stringProp>
  15084. </elementProp>
  15085. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  15086. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15087. <stringProp name="Argument.value"/>
  15088. <stringProp name="Argument.metadata">=</stringProp>
  15089. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15090. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  15091. <stringProp name="Argument.desc">true</stringProp>
  15092. </elementProp>
  15093. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  15094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15095. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  15096. <stringProp name="Argument.metadata">=</stringProp>
  15097. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15098. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  15099. <stringProp name="Argument.desc">true</stringProp>
  15100. </elementProp>
  15101. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  15102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15103. <stringProp name="Argument.value"/>
  15104. <stringProp name="Argument.metadata">=</stringProp>
  15105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15106. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  15107. <stringProp name="Argument.desc">true</stringProp>
  15108. </elementProp>
  15109. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  15110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15111. <stringProp name="Argument.value">7.00</stringProp>
  15112. <stringProp name="Argument.metadata">=</stringProp>
  15113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15114. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  15115. <stringProp name="Argument.desc">true</stringProp>
  15116. </elementProp>
  15117. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  15118. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15119. <stringProp name="Argument.value">0</stringProp>
  15120. <stringProp name="Argument.metadata">=</stringProp>
  15121. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15122. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  15123. <stringProp name="Argument.desc">true</stringProp>
  15124. </elementProp>
  15125. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  15126. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15127. <stringProp name="Argument.value">1</stringProp>
  15128. <stringProp name="Argument.metadata">=</stringProp>
  15129. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15130. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  15131. <stringProp name="Argument.desc">true</stringProp>
  15132. </elementProp>
  15133. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  15134. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15135. <stringProp name="Argument.value">1</stringProp>
  15136. <stringProp name="Argument.metadata">=</stringProp>
  15137. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15138. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  15139. <stringProp name="Argument.desc">true</stringProp>
  15140. </elementProp>
  15141. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  15142. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15143. <stringProp name="Argument.value">1</stringProp>
  15144. <stringProp name="Argument.metadata">=</stringProp>
  15145. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15146. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  15147. <stringProp name="Argument.desc">true</stringProp>
  15148. </elementProp>
  15149. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  15150. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15151. <stringProp name="Argument.value">2</stringProp>
  15152. <stringProp name="Argument.metadata">=</stringProp>
  15153. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15154. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  15155. <stringProp name="Argument.desc">true</stringProp>
  15156. </elementProp>
  15157. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  15158. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15159. <stringProp name="Argument.value">${related_product_id}</stringProp>
  15160. <stringProp name="Argument.metadata">=</stringProp>
  15161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15162. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  15163. </elementProp>
  15164. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  15165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15166. <stringProp name="Argument.value">1</stringProp>
  15167. <stringProp name="Argument.metadata">=</stringProp>
  15168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15169. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  15170. </elementProp>
  15171. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  15172. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15173. <stringProp name="Argument.value">${related_product_id}</stringProp>
  15174. <stringProp name="Argument.metadata">=</stringProp>
  15175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15176. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  15177. </elementProp>
  15178. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  15179. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15180. <stringProp name="Argument.value">1</stringProp>
  15181. <stringProp name="Argument.metadata">=</stringProp>
  15182. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15183. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  15184. </elementProp>
  15185. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  15186. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15187. <stringProp name="Argument.value">${related_product_id}</stringProp>
  15188. <stringProp name="Argument.metadata">=</stringProp>
  15189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15190. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  15191. </elementProp>
  15192. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  15193. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15194. <stringProp name="Argument.value">1</stringProp>
  15195. <stringProp name="Argument.metadata">=</stringProp>
  15196. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15197. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  15198. </elementProp>
  15199. </collectionProp>
  15200. </elementProp>
  15201. <stringProp name="HTTPSampler.domain"/>
  15202. <stringProp name="HTTPSampler.port"/>
  15203. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  15204. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  15205. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  15206. <stringProp name="HTTPSampler.contentEncoding"/>
  15207. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  15208. <stringProp name="HTTPSampler.method">POST</stringProp>
  15209. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  15210. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  15211. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  15212. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  15213. <boolProp name="HTTPSampler.monitor">false</boolProp>
  15214. <stringProp name="HTTPSampler.embedded_url_re"/>
  15215. </HTTPSamplerProxy>
  15216. <hashTree>
  15217. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  15218. <collectionProp name="Asserion.test_strings">
  15219. <stringProp name="1853918323">{"error":false}</stringProp>
  15220. </collectionProp>
  15221. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  15222. <boolProp name="Assertion.assume_success">false</boolProp>
  15223. <intProp name="Assertion.test_type">2</intProp>
  15224. </ResponseAssertion>
  15225. <hashTree/>
  15226. </hashTree>
  15227. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Save" enabled="true">
  15228. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  15229. <collectionProp name="Arguments.arguments">
  15230. <elementProp name="ajax" elementType="HTTPArgument">
  15231. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15232. <stringProp name="Argument.value">true</stringProp>
  15233. <stringProp name="Argument.metadata">=</stringProp>
  15234. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15235. <stringProp name="Argument.name">ajax</stringProp>
  15236. <stringProp name="Argument.desc">false</stringProp>
  15237. </elementProp>
  15238. <elementProp name="isAjax" elementType="HTTPArgument">
  15239. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15240. <stringProp name="Argument.value">true</stringProp>
  15241. <stringProp name="Argument.metadata">=</stringProp>
  15242. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15243. <stringProp name="Argument.name">isAjax</stringProp>
  15244. <stringProp name="Argument.desc">false</stringProp>
  15245. </elementProp>
  15246. <elementProp name="form_key" elementType="HTTPArgument">
  15247. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15248. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  15249. <stringProp name="Argument.metadata">=</stringProp>
  15250. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15251. <stringProp name="Argument.name">form_key</stringProp>
  15252. <stringProp name="Argument.desc">false</stringProp>
  15253. </elementProp>
  15254. <elementProp name="product[name]" elementType="HTTPArgument">
  15255. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15256. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  15257. <stringProp name="Argument.metadata">=</stringProp>
  15258. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15259. <stringProp name="Argument.name">product[name]</stringProp>
  15260. <stringProp name="Argument.desc">false</stringProp>
  15261. </elementProp>
  15262. <elementProp name="product[sku]" elementType="HTTPArgument">
  15263. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15264. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  15265. <stringProp name="Argument.metadata">=</stringProp>
  15266. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15267. <stringProp name="Argument.name">product[sku]</stringProp>
  15268. <stringProp name="Argument.desc">false</stringProp>
  15269. </elementProp>
  15270. <elementProp name="product[price]" elementType="HTTPArgument">
  15271. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15272. <stringProp name="Argument.value">42</stringProp>
  15273. <stringProp name="Argument.metadata">=</stringProp>
  15274. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15275. <stringProp name="Argument.name">product[price]</stringProp>
  15276. </elementProp>
  15277. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  15278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15279. <stringProp name="Argument.value">2</stringProp>
  15280. <stringProp name="Argument.metadata">=</stringProp>
  15281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15282. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  15283. </elementProp>
  15284. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  15285. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15286. <stringProp name="Argument.value">111</stringProp>
  15287. <stringProp name="Argument.metadata">=</stringProp>
  15288. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15289. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  15290. </elementProp>
  15291. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  15292. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15293. <stringProp name="Argument.value">1</stringProp>
  15294. <stringProp name="Argument.metadata">=</stringProp>
  15295. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15296. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  15297. </elementProp>
  15298. <elementProp name="product[weight]" elementType="HTTPArgument">
  15299. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15300. <stringProp name="Argument.value">1.0000</stringProp>
  15301. <stringProp name="Argument.metadata">=</stringProp>
  15302. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15303. <stringProp name="Argument.name">product[weight]</stringProp>
  15304. </elementProp>
  15305. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  15306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15307. <stringProp name="Argument.value">1</stringProp>
  15308. <stringProp name="Argument.metadata">=</stringProp>
  15309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15310. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  15311. <stringProp name="Argument.desc">true</stringProp>
  15312. </elementProp>
  15313. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  15314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15315. <stringProp name="Argument.value">2</stringProp>
  15316. <stringProp name="Argument.metadata">=</stringProp>
  15317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15318. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  15319. </elementProp>
  15320. <elementProp name="product[description]" elementType="HTTPArgument">
  15321. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15322. <stringProp name="Argument.value">&lt;p&gt;Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  15323. <stringProp name="Argument.metadata">=</stringProp>
  15324. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15325. <stringProp name="Argument.name">product[description]</stringProp>
  15326. </elementProp>
  15327. <elementProp name="product[short_description]" elementType="HTTPArgument">
  15328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15329. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  15330. <stringProp name="Argument.metadata">=</stringProp>
  15331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15332. <stringProp name="Argument.name">product[short_description]</stringProp>
  15333. </elementProp>
  15334. <elementProp name="product[status]" elementType="HTTPArgument">
  15335. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15336. <stringProp name="Argument.value">1</stringProp>
  15337. <stringProp name="Argument.metadata">=</stringProp>
  15338. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15339. <stringProp name="Argument.name">product[status]</stringProp>
  15340. </elementProp>
  15341. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  15342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15343. <stringProp name="Argument.value"/>
  15344. <stringProp name="Argument.metadata">=</stringProp>
  15345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15346. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  15347. </elementProp>
  15348. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  15349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15350. <stringProp name="Argument.value">1</stringProp>
  15351. <stringProp name="Argument.metadata">=</stringProp>
  15352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15353. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  15354. </elementProp>
  15355. <elementProp name="product[image]" elementType="HTTPArgument">
  15356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15357. <stringProp name="Argument.value"/>
  15358. <stringProp name="Argument.metadata">=</stringProp>
  15359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15360. <stringProp name="Argument.name">product[image]</stringProp>
  15361. </elementProp>
  15362. <elementProp name="product[small_image]" elementType="HTTPArgument">
  15363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15364. <stringProp name="Argument.value"/>
  15365. <stringProp name="Argument.metadata">=</stringProp>
  15366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15367. <stringProp name="Argument.name">product[small_image]</stringProp>
  15368. </elementProp>
  15369. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  15370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15371. <stringProp name="Argument.value"/>
  15372. <stringProp name="Argument.metadata">=</stringProp>
  15373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15374. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  15375. </elementProp>
  15376. <elementProp name="product[url_key]" elementType="HTTPArgument">
  15377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15378. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  15379. <stringProp name="Argument.metadata">=</stringProp>
  15380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15381. <stringProp name="Argument.name">product[url_key]</stringProp>
  15382. </elementProp>
  15383. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  15384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15385. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  15386. <stringProp name="Argument.metadata">=</stringProp>
  15387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15388. <stringProp name="Argument.name">product[meta_title]</stringProp>
  15389. </elementProp>
  15390. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  15391. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15392. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  15393. <stringProp name="Argument.metadata">=</stringProp>
  15394. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15395. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  15396. </elementProp>
  15397. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  15398. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15399. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  15400. <stringProp name="Argument.metadata">=</stringProp>
  15401. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15402. <stringProp name="Argument.name">product[meta_description]</stringProp>
  15403. </elementProp>
  15404. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  15405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15406. <stringProp name="Argument.value">1</stringProp>
  15407. <stringProp name="Argument.metadata">=</stringProp>
  15408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15409. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  15410. </elementProp>
  15411. <elementProp name="product[special_price]" elementType="HTTPArgument">
  15412. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15413. <stringProp name="Argument.value">99</stringProp>
  15414. <stringProp name="Argument.metadata">=</stringProp>
  15415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15416. <stringProp name="Argument.name">product[special_price]</stringProp>
  15417. </elementProp>
  15418. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  15419. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15420. <stringProp name="Argument.value"/>
  15421. <stringProp name="Argument.metadata">=</stringProp>
  15422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15423. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  15424. </elementProp>
  15425. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  15426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15427. <stringProp name="Argument.value"/>
  15428. <stringProp name="Argument.metadata">=</stringProp>
  15429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15430. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  15431. </elementProp>
  15432. <elementProp name="product[cost]" elementType="HTTPArgument">
  15433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15434. <stringProp name="Argument.value"/>
  15435. <stringProp name="Argument.metadata">=</stringProp>
  15436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15437. <stringProp name="Argument.name">product[cost]</stringProp>
  15438. </elementProp>
  15439. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  15440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15441. <stringProp name="Argument.value">0</stringProp>
  15442. <stringProp name="Argument.metadata">=</stringProp>
  15443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15444. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  15445. </elementProp>
  15446. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  15447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15448. <stringProp name="Argument.value">32000</stringProp>
  15449. <stringProp name="Argument.metadata">=</stringProp>
  15450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15451. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  15452. </elementProp>
  15453. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  15454. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15455. <stringProp name="Argument.value">100</stringProp>
  15456. <stringProp name="Argument.metadata">=</stringProp>
  15457. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15458. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  15459. </elementProp>
  15460. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  15461. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15462. <stringProp name="Argument.value">90</stringProp>
  15463. <stringProp name="Argument.metadata">=</stringProp>
  15464. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15465. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  15466. </elementProp>
  15467. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  15468. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15469. <stringProp name="Argument.value"/>
  15470. <stringProp name="Argument.metadata">=</stringProp>
  15471. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15472. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  15473. </elementProp>
  15474. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  15475. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15476. <stringProp name="Argument.value">0</stringProp>
  15477. <stringProp name="Argument.metadata">=</stringProp>
  15478. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15479. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  15480. </elementProp>
  15481. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  15482. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15483. <stringProp name="Argument.value">1</stringProp>
  15484. <stringProp name="Argument.metadata">=</stringProp>
  15485. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15486. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  15487. </elementProp>
  15488. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  15489. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15490. <stringProp name="Argument.value">101</stringProp>
  15491. <stringProp name="Argument.metadata">=</stringProp>
  15492. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15493. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  15494. </elementProp>
  15495. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  15496. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15497. <stringProp name="Argument.value">99</stringProp>
  15498. <stringProp name="Argument.metadata">=</stringProp>
  15499. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15500. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  15501. </elementProp>
  15502. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  15503. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15504. <stringProp name="Argument.value"/>
  15505. <stringProp name="Argument.metadata">=</stringProp>
  15506. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15507. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  15508. </elementProp>
  15509. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  15510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15511. <stringProp name="Argument.value">1</stringProp>
  15512. <stringProp name="Argument.metadata">=</stringProp>
  15513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15514. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  15515. </elementProp>
  15516. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  15517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15518. <stringProp name="Argument.value">100500</stringProp>
  15519. <stringProp name="Argument.metadata">=</stringProp>
  15520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15521. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  15522. </elementProp>
  15523. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  15524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15525. <stringProp name="Argument.value">100500</stringProp>
  15526. <stringProp name="Argument.metadata">=</stringProp>
  15527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15528. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  15529. </elementProp>
  15530. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  15531. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15532. <stringProp name="Argument.value">0</stringProp>
  15533. <stringProp name="Argument.metadata">=</stringProp>
  15534. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15535. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  15536. </elementProp>
  15537. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  15538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15539. <stringProp name="Argument.value">1</stringProp>
  15540. <stringProp name="Argument.metadata">=</stringProp>
  15541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15542. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  15543. </elementProp>
  15544. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  15545. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15546. <stringProp name="Argument.value">1</stringProp>
  15547. <stringProp name="Argument.metadata">=</stringProp>
  15548. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15549. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  15550. </elementProp>
  15551. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  15552. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15553. <stringProp name="Argument.value">1</stringProp>
  15554. <stringProp name="Argument.metadata">=</stringProp>
  15555. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15556. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  15557. </elementProp>
  15558. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  15559. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15560. <stringProp name="Argument.value">10000</stringProp>
  15561. <stringProp name="Argument.metadata">=</stringProp>
  15562. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15563. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  15564. </elementProp>
  15565. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  15566. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15567. <stringProp name="Argument.value">1</stringProp>
  15568. <stringProp name="Argument.metadata">=</stringProp>
  15569. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15570. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  15571. </elementProp>
  15572. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  15573. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15574. <stringProp name="Argument.value">0</stringProp>
  15575. <stringProp name="Argument.metadata">=</stringProp>
  15576. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15577. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  15578. </elementProp>
  15579. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  15580. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15581. <stringProp name="Argument.value">0</stringProp>
  15582. <stringProp name="Argument.metadata">=</stringProp>
  15583. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15584. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  15585. </elementProp>
  15586. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  15587. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15588. <stringProp name="Argument.value">0</stringProp>
  15589. <stringProp name="Argument.metadata">=</stringProp>
  15590. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15591. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  15592. </elementProp>
  15593. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  15594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15595. <stringProp name="Argument.value">1</stringProp>
  15596. <stringProp name="Argument.metadata">=</stringProp>
  15597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15598. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  15599. </elementProp>
  15600. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  15601. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15602. <stringProp name="Argument.value">1</stringProp>
  15603. <stringProp name="Argument.metadata">=</stringProp>
  15604. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15605. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  15606. </elementProp>
  15607. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  15608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15609. <stringProp name="Argument.value">1</stringProp>
  15610. <stringProp name="Argument.metadata">=</stringProp>
  15611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15612. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  15613. </elementProp>
  15614. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  15615. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15616. <stringProp name="Argument.value">0</stringProp>
  15617. <stringProp name="Argument.metadata">=</stringProp>
  15618. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15619. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  15620. </elementProp>
  15621. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  15622. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15623. <stringProp name="Argument.value">0</stringProp>
  15624. <stringProp name="Argument.metadata">=</stringProp>
  15625. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15626. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  15627. </elementProp>
  15628. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  15629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15630. <stringProp name="Argument.value">1</stringProp>
  15631. <stringProp name="Argument.metadata">=</stringProp>
  15632. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15633. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  15634. </elementProp>
  15635. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  15636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15637. <stringProp name="Argument.value">1</stringProp>
  15638. <stringProp name="Argument.metadata">=</stringProp>
  15639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15640. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  15641. </elementProp>
  15642. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  15643. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15644. <stringProp name="Argument.value"/>
  15645. <stringProp name="Argument.metadata">=</stringProp>
  15646. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15647. <stringProp name="Argument.name">product[custom_design]</stringProp>
  15648. </elementProp>
  15649. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  15650. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15651. <stringProp name="Argument.value"/>
  15652. <stringProp name="Argument.metadata">=</stringProp>
  15653. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15654. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  15655. </elementProp>
  15656. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  15657. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15658. <stringProp name="Argument.value"/>
  15659. <stringProp name="Argument.metadata">=</stringProp>
  15660. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15661. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  15662. </elementProp>
  15663. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  15664. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15665. <stringProp name="Argument.value"/>
  15666. <stringProp name="Argument.metadata">=</stringProp>
  15667. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15668. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  15669. </elementProp>
  15670. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  15671. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15672. <stringProp name="Argument.value"/>
  15673. <stringProp name="Argument.metadata">=</stringProp>
  15674. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15675. <stringProp name="Argument.name">product[page_layout]</stringProp>
  15676. </elementProp>
  15677. <elementProp name="product[options_container]" elementType="HTTPArgument">
  15678. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15679. <stringProp name="Argument.value">container2</stringProp>
  15680. <stringProp name="Argument.metadata">=</stringProp>
  15681. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15682. <stringProp name="Argument.name">product[options_container]</stringProp>
  15683. </elementProp>
  15684. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  15685. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15686. <stringProp name="Argument.value"/>
  15687. <stringProp name="Argument.metadata">=</stringProp>
  15688. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15689. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  15690. </elementProp>
  15691. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  15692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15693. <stringProp name="Argument.value">0</stringProp>
  15694. <stringProp name="Argument.metadata">=</stringProp>
  15695. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15696. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  15697. <stringProp name="Argument.desc">false</stringProp>
  15698. </elementProp>
  15699. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  15700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15701. <stringProp name="Argument.value">option title one</stringProp>
  15702. <stringProp name="Argument.metadata">=</stringProp>
  15703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15704. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  15705. <stringProp name="Argument.desc">false</stringProp>
  15706. </elementProp>
  15707. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  15708. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15709. <stringProp name="Argument.value"/>
  15710. <stringProp name="Argument.metadata">=</stringProp>
  15711. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15712. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  15713. <stringProp name="Argument.desc">false</stringProp>
  15714. </elementProp>
  15715. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  15716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15717. <stringProp name="Argument.value"/>
  15718. <stringProp name="Argument.metadata">=</stringProp>
  15719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15720. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  15721. <stringProp name="Argument.desc">false</stringProp>
  15722. </elementProp>
  15723. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  15724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15725. <stringProp name="Argument.value">select</stringProp>
  15726. <stringProp name="Argument.metadata">=</stringProp>
  15727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15728. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  15729. <stringProp name="Argument.desc">false</stringProp>
  15730. </elementProp>
  15731. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  15732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15733. <stringProp name="Argument.value">1</stringProp>
  15734. <stringProp name="Argument.metadata">=</stringProp>
  15735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15736. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  15737. <stringProp name="Argument.desc">false</stringProp>
  15738. </elementProp>
  15739. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  15740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15741. <stringProp name="Argument.value">0</stringProp>
  15742. <stringProp name="Argument.metadata">=</stringProp>
  15743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15744. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  15745. <stringProp name="Argument.desc">false</stringProp>
  15746. </elementProp>
  15747. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  15748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15749. <stringProp name="Argument.value"/>
  15750. <stringProp name="Argument.metadata">=</stringProp>
  15751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15752. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  15753. <stringProp name="Argument.desc">false</stringProp>
  15754. </elementProp>
  15755. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  15756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15757. <stringProp name="Argument.value"/>
  15758. <stringProp name="Argument.metadata">=</stringProp>
  15759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15760. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  15761. <stringProp name="Argument.desc">false</stringProp>
  15762. </elementProp>
  15763. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  15764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15765. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  15766. <stringProp name="Argument.metadata">=</stringProp>
  15767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15768. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  15769. <stringProp name="Argument.desc">false</stringProp>
  15770. </elementProp>
  15771. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  15772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15773. <stringProp name="Argument.value"/>
  15774. <stringProp name="Argument.metadata">=</stringProp>
  15775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15776. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  15777. <stringProp name="Argument.desc">false</stringProp>
  15778. </elementProp>
  15779. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  15780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15781. <stringProp name="Argument.value">25</stringProp>
  15782. <stringProp name="Argument.metadata">=</stringProp>
  15783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15784. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  15785. <stringProp name="Argument.desc">false</stringProp>
  15786. </elementProp>
  15787. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  15788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15789. <stringProp name="Argument.value">1</stringProp>
  15790. <stringProp name="Argument.metadata">=</stringProp>
  15791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15792. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  15793. <stringProp name="Argument.desc">false</stringProp>
  15794. </elementProp>
  15795. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  15796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15797. <stringProp name="Argument.value">1</stringProp>
  15798. <stringProp name="Argument.metadata">=</stringProp>
  15799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15800. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  15801. <stringProp name="Argument.desc">false</stringProp>
  15802. </elementProp>
  15803. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  15804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15805. <stringProp name="Argument.value">1</stringProp>
  15806. <stringProp name="Argument.metadata">=</stringProp>
  15807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15808. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  15809. <stringProp name="Argument.desc">false</stringProp>
  15810. </elementProp>
  15811. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  15812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15813. <stringProp name="Argument.value">0</stringProp>
  15814. <stringProp name="Argument.metadata">=</stringProp>
  15815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15816. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  15817. <stringProp name="Argument.desc">false</stringProp>
  15818. </elementProp>
  15819. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  15820. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15821. <stringProp name="Argument.value"/>
  15822. <stringProp name="Argument.metadata">=</stringProp>
  15823. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15824. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  15825. <stringProp name="Argument.desc">false</stringProp>
  15826. </elementProp>
  15827. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  15828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15829. <stringProp name="Argument.value"/>
  15830. <stringProp name="Argument.metadata">=</stringProp>
  15831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15832. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  15833. <stringProp name="Argument.desc">false</stringProp>
  15834. </elementProp>
  15835. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  15836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15837. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  15838. <stringProp name="Argument.metadata">=</stringProp>
  15839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15840. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  15841. <stringProp name="Argument.desc">false</stringProp>
  15842. </elementProp>
  15843. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  15844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15845. <stringProp name="Argument.value"/>
  15846. <stringProp name="Argument.metadata">=</stringProp>
  15847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15848. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  15849. <stringProp name="Argument.desc">false</stringProp>
  15850. </elementProp>
  15851. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  15852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15853. <stringProp name="Argument.value">10.99</stringProp>
  15854. <stringProp name="Argument.metadata">=</stringProp>
  15855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15856. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  15857. <stringProp name="Argument.desc">false</stringProp>
  15858. </elementProp>
  15859. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  15860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15861. <stringProp name="Argument.value">0</stringProp>
  15862. <stringProp name="Argument.metadata">=</stringProp>
  15863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15864. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  15865. <stringProp name="Argument.desc">false</stringProp>
  15866. </elementProp>
  15867. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  15868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15869. <stringProp name="Argument.value">1</stringProp>
  15870. <stringProp name="Argument.metadata">=</stringProp>
  15871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15872. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  15873. <stringProp name="Argument.desc">false</stringProp>
  15874. </elementProp>
  15875. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  15876. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15877. <stringProp name="Argument.value">1</stringProp>
  15878. <stringProp name="Argument.metadata">=</stringProp>
  15879. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15880. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  15881. <stringProp name="Argument.desc">false</stringProp>
  15882. </elementProp>
  15883. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  15884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15885. <stringProp name="Argument.value">1</stringProp>
  15886. <stringProp name="Argument.metadata">=</stringProp>
  15887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15888. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  15889. <stringProp name="Argument.desc">false</stringProp>
  15890. </elementProp>
  15891. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  15892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15893. <stringProp name="Argument.value">option title two</stringProp>
  15894. <stringProp name="Argument.metadata">=</stringProp>
  15895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15896. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  15897. <stringProp name="Argument.desc">false</stringProp>
  15898. </elementProp>
  15899. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  15900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15901. <stringProp name="Argument.value"/>
  15902. <stringProp name="Argument.metadata">=</stringProp>
  15903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15904. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  15905. <stringProp name="Argument.desc">false</stringProp>
  15906. </elementProp>
  15907. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  15908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15909. <stringProp name="Argument.value"/>
  15910. <stringProp name="Argument.metadata">=</stringProp>
  15911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15912. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  15913. <stringProp name="Argument.desc">false</stringProp>
  15914. </elementProp>
  15915. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  15916. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15917. <stringProp name="Argument.value">select</stringProp>
  15918. <stringProp name="Argument.metadata">=</stringProp>
  15919. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15920. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  15921. <stringProp name="Argument.desc">false</stringProp>
  15922. </elementProp>
  15923. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  15924. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15925. <stringProp name="Argument.value">1</stringProp>
  15926. <stringProp name="Argument.metadata">=</stringProp>
  15927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15928. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  15929. <stringProp name="Argument.desc">false</stringProp>
  15930. </elementProp>
  15931. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  15932. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15933. <stringProp name="Argument.value">1</stringProp>
  15934. <stringProp name="Argument.metadata">=</stringProp>
  15935. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15936. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  15937. <stringProp name="Argument.desc">false</stringProp>
  15938. </elementProp>
  15939. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  15940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15941. <stringProp name="Argument.value"/>
  15942. <stringProp name="Argument.metadata">=</stringProp>
  15943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15944. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  15945. <stringProp name="Argument.desc">false</stringProp>
  15946. </elementProp>
  15947. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  15948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15949. <stringProp name="Argument.value"/>
  15950. <stringProp name="Argument.metadata">=</stringProp>
  15951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15952. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  15953. <stringProp name="Argument.desc">false</stringProp>
  15954. </elementProp>
  15955. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  15956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15957. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  15958. <stringProp name="Argument.metadata">=</stringProp>
  15959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15960. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  15961. <stringProp name="Argument.desc">false</stringProp>
  15962. </elementProp>
  15963. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  15964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15965. <stringProp name="Argument.value"/>
  15966. <stringProp name="Argument.metadata">=</stringProp>
  15967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15968. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  15969. <stringProp name="Argument.desc">false</stringProp>
  15970. </elementProp>
  15971. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  15972. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15973. <stringProp name="Argument.value">5.00</stringProp>
  15974. <stringProp name="Argument.metadata">=</stringProp>
  15975. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15976. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  15977. <stringProp name="Argument.desc">false</stringProp>
  15978. </elementProp>
  15979. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  15980. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15981. <stringProp name="Argument.value">0</stringProp>
  15982. <stringProp name="Argument.metadata">=</stringProp>
  15983. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15984. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  15985. <stringProp name="Argument.desc">false</stringProp>
  15986. </elementProp>
  15987. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  15988. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15989. <stringProp name="Argument.value">1</stringProp>
  15990. <stringProp name="Argument.metadata">=</stringProp>
  15991. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  15992. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  15993. <stringProp name="Argument.desc">false</stringProp>
  15994. </elementProp>
  15995. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  15996. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  15997. <stringProp name="Argument.value">1</stringProp>
  15998. <stringProp name="Argument.metadata">=</stringProp>
  15999. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16000. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  16001. <stringProp name="Argument.desc">false</stringProp>
  16002. </elementProp>
  16003. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  16004. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16005. <stringProp name="Argument.value">0</stringProp>
  16006. <stringProp name="Argument.metadata">=</stringProp>
  16007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16008. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  16009. <stringProp name="Argument.desc">false</stringProp>
  16010. </elementProp>
  16011. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  16012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16013. <stringProp name="Argument.value"/>
  16014. <stringProp name="Argument.metadata">=</stringProp>
  16015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16016. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  16017. <stringProp name="Argument.desc">false</stringProp>
  16018. </elementProp>
  16019. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  16020. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16021. <stringProp name="Argument.value"/>
  16022. <stringProp name="Argument.metadata">=</stringProp>
  16023. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16024. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  16025. <stringProp name="Argument.desc">false</stringProp>
  16026. </elementProp>
  16027. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  16028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16029. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  16030. <stringProp name="Argument.metadata">=</stringProp>
  16031. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16032. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  16033. <stringProp name="Argument.desc">false</stringProp>
  16034. </elementProp>
  16035. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  16036. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16037. <stringProp name="Argument.value"/>
  16038. <stringProp name="Argument.metadata">=</stringProp>
  16039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16040. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  16041. <stringProp name="Argument.desc">false</stringProp>
  16042. </elementProp>
  16043. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  16044. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16045. <stringProp name="Argument.value">7.00</stringProp>
  16046. <stringProp name="Argument.metadata">=</stringProp>
  16047. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16048. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  16049. <stringProp name="Argument.desc">false</stringProp>
  16050. </elementProp>
  16051. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  16052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16053. <stringProp name="Argument.value">0</stringProp>
  16054. <stringProp name="Argument.metadata">=</stringProp>
  16055. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16056. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  16057. <stringProp name="Argument.desc">false</stringProp>
  16058. </elementProp>
  16059. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  16060. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16061. <stringProp name="Argument.value">1</stringProp>
  16062. <stringProp name="Argument.metadata">=</stringProp>
  16063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16064. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  16065. <stringProp name="Argument.desc">false</stringProp>
  16066. </elementProp>
  16067. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  16068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16069. <stringProp name="Argument.value">1</stringProp>
  16070. <stringProp name="Argument.metadata">=</stringProp>
  16071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16072. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  16073. <stringProp name="Argument.desc">false</stringProp>
  16074. </elementProp>
  16075. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  16076. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16077. <stringProp name="Argument.value">1</stringProp>
  16078. <stringProp name="Argument.metadata">=</stringProp>
  16079. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16080. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  16081. <stringProp name="Argument.desc">false</stringProp>
  16082. </elementProp>
  16083. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  16084. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16085. <stringProp name="Argument.value">2</stringProp>
  16086. <stringProp name="Argument.metadata">=</stringProp>
  16087. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16088. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  16089. <stringProp name="Argument.desc">false</stringProp>
  16090. </elementProp>
  16091. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  16092. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16093. <stringProp name="Argument.value">${related_product_id}</stringProp>
  16094. <stringProp name="Argument.metadata">=</stringProp>
  16095. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16096. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  16097. </elementProp>
  16098. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  16099. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16100. <stringProp name="Argument.value">1</stringProp>
  16101. <stringProp name="Argument.metadata">=</stringProp>
  16102. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16103. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  16104. </elementProp>
  16105. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  16106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16107. <stringProp name="Argument.value">${related_product_id}</stringProp>
  16108. <stringProp name="Argument.metadata">=</stringProp>
  16109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16110. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  16111. </elementProp>
  16112. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  16113. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16114. <stringProp name="Argument.value">1</stringProp>
  16115. <stringProp name="Argument.metadata">=</stringProp>
  16116. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16117. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  16118. </elementProp>
  16119. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  16120. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16121. <stringProp name="Argument.value">${related_product_id}</stringProp>
  16122. <stringProp name="Argument.metadata">=</stringProp>
  16123. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16124. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  16125. </elementProp>
  16126. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  16127. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16128. <stringProp name="Argument.value">1</stringProp>
  16129. <stringProp name="Argument.metadata">=</stringProp>
  16130. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16131. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  16132. </elementProp>
  16133. </collectionProp>
  16134. </elementProp>
  16135. <stringProp name="HTTPSampler.domain"/>
  16136. <stringProp name="HTTPSampler.port"/>
  16137. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  16138. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  16139. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  16140. <stringProp name="HTTPSampler.contentEncoding"/>
  16141. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/</stringProp>
  16142. <stringProp name="HTTPSampler.method">POST</stringProp>
  16143. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  16144. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  16145. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  16146. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  16147. <boolProp name="HTTPSampler.monitor">false</boolProp>
  16148. <stringProp name="HTTPSampler.embedded_url_re"/>
  16149. </HTTPSamplerProxy>
  16150. <hashTree>
  16151. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  16152. <collectionProp name="Asserion.test_strings">
  16153. <stringProp name="-583471546">You saved the product</stringProp>
  16154. <stringProp name="-1534079309">option title one</stringProp>
  16155. <stringProp name="-1534074215">option title two</stringProp>
  16156. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  16157. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  16158. </collectionProp>
  16159. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  16160. <boolProp name="Assertion.assume_success">false</boolProp>
  16161. <intProp name="Assertion.test_type">2</intProp>
  16162. </ResponseAssertion>
  16163. <hashTree/>
  16164. </hashTree>
  16165. </hashTree>
  16166. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Create Configurable Product" enabled="true">
  16167. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  16168. </GenericController>
  16169. <hashTree>
  16170. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  16171. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  16172. <collectionProp name="Arguments.arguments"/>
  16173. </elementProp>
  16174. <stringProp name="HTTPSampler.domain"/>
  16175. <stringProp name="HTTPSampler.port"/>
  16176. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  16177. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  16178. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  16179. <stringProp name="HTTPSampler.contentEncoding"/>
  16180. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  16181. <stringProp name="HTTPSampler.method">GET</stringProp>
  16182. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  16183. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  16184. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  16185. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  16186. <boolProp name="HTTPSampler.monitor">false</boolProp>
  16187. <stringProp name="HTTPSampler.embedded_url_re"/>
  16188. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/open_catalog_grid.jmx</stringProp></HTTPSamplerProxy>
  16189. <hashTree>
  16190. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  16191. <collectionProp name="Asserion.test_strings">
  16192. <stringProp name="1509986340">records found</stringProp>
  16193. </collectionProp>
  16194. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  16195. <boolProp name="Assertion.assume_success">false</boolProp>
  16196. <intProp name="Assertion.test_type">2</intProp>
  16197. </ResponseAssertion>
  16198. <hashTree/>
  16199. </hashTree>
  16200. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product" enabled="true">
  16201. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  16202. <collectionProp name="Arguments.arguments"/>
  16203. </elementProp>
  16204. <stringProp name="HTTPSampler.domain"/>
  16205. <stringProp name="HTTPSampler.port"/>
  16206. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  16207. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  16208. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  16209. <stringProp name="HTTPSampler.contentEncoding"/>
  16210. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/${attribute_set_id}/type/configurable/</stringProp>
  16211. <stringProp name="HTTPSampler.method">GET</stringProp>
  16212. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  16213. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  16214. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  16215. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  16216. <boolProp name="HTTPSampler.monitor">false</boolProp>
  16217. <stringProp name="HTTPSampler.embedded_url_re"/>
  16218. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/new_configurable.jmx</stringProp></HTTPSamplerProxy>
  16219. <hashTree>
  16220. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  16221. <collectionProp name="Asserion.test_strings">
  16222. <stringProp name="-144461265">New Product</stringProp>
  16223. </collectionProp>
  16224. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  16225. <boolProp name="Assertion.assume_success">false</boolProp>
  16226. <intProp name="Assertion.test_type">2</intProp>
  16227. </ResponseAssertion>
  16228. <hashTree/>
  16229. </hashTree>
  16230. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Validate" enabled="true">
  16231. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  16232. <collectionProp name="Arguments.arguments">
  16233. <elementProp name="ajax" elementType="HTTPArgument">
  16234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16235. <stringProp name="Argument.value">true</stringProp>
  16236. <stringProp name="Argument.metadata">=</stringProp>
  16237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16238. <stringProp name="Argument.name">ajax</stringProp>
  16239. <stringProp name="Argument.desc">false</stringProp>
  16240. </elementProp>
  16241. <elementProp name="isAjax" elementType="HTTPArgument">
  16242. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16243. <stringProp name="Argument.value">true</stringProp>
  16244. <stringProp name="Argument.metadata">=</stringProp>
  16245. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16246. <stringProp name="Argument.name">isAjax</stringProp>
  16247. <stringProp name="Argument.desc">false</stringProp>
  16248. </elementProp>
  16249. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  16250. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16251. <stringProp name="Argument.value">1</stringProp>
  16252. <stringProp name="Argument.metadata">=</stringProp>
  16253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16254. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  16255. <stringProp name="Argument.desc">true</stringProp>
  16256. </elementProp>
  16257. <elementProp name="form_key" elementType="HTTPArgument">
  16258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16259. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  16260. <stringProp name="Argument.metadata">=</stringProp>
  16261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16262. <stringProp name="Argument.name">form_key</stringProp>
  16263. <stringProp name="Argument.desc">true</stringProp>
  16264. </elementProp>
  16265. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  16266. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16267. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  16268. <stringProp name="Argument.metadata">=</stringProp>
  16269. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16270. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  16271. <stringProp name="Argument.desc">true</stringProp>
  16272. </elementProp>
  16273. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  16274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16275. <stringProp name="Argument.value">1</stringProp>
  16276. <stringProp name="Argument.metadata">=</stringProp>
  16277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16278. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  16279. <stringProp name="Argument.desc">true</stringProp>
  16280. </elementProp>
  16281. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  16282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16283. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  16284. <stringProp name="Argument.metadata">=</stringProp>
  16285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16286. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  16287. <stringProp name="Argument.desc">true</stringProp>
  16288. </elementProp>
  16289. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  16290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16291. <stringProp name="Argument.value">4</stringProp>
  16292. <stringProp name="Argument.metadata">=</stringProp>
  16293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16294. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  16295. <stringProp name="Argument.desc">true</stringProp>
  16296. </elementProp>
  16297. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  16298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16299. <stringProp name="Argument.value"/>
  16300. <stringProp name="Argument.metadata">=</stringProp>
  16301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16302. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  16303. <stringProp name="Argument.desc">true</stringProp>
  16304. </elementProp>
  16305. <elementProp name="product[description]" elementType="HTTPArgument">
  16306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16307. <stringProp name="Argument.value"/>
  16308. <stringProp name="Argument.metadata">=</stringProp>
  16309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16310. <stringProp name="Argument.name">product[description]</stringProp>
  16311. <stringProp name="Argument.desc">true</stringProp>
  16312. </elementProp>
  16313. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  16314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16315. <stringProp name="Argument.value">0</stringProp>
  16316. <stringProp name="Argument.metadata">=</stringProp>
  16317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16318. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  16319. <stringProp name="Argument.desc">true</stringProp>
  16320. </elementProp>
  16321. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  16322. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16323. <stringProp name="Argument.value">1</stringProp>
  16324. <stringProp name="Argument.metadata">=</stringProp>
  16325. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16326. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  16327. <stringProp name="Argument.desc">true</stringProp>
  16328. </elementProp>
  16329. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  16330. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16331. <stringProp name="Argument.value"/>
  16332. <stringProp name="Argument.metadata">=</stringProp>
  16333. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16334. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  16335. <stringProp name="Argument.desc">true</stringProp>
  16336. </elementProp>
  16337. <elementProp name="product[image]" elementType="HTTPArgument">
  16338. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16339. <stringProp name="Argument.value"/>
  16340. <stringProp name="Argument.metadata">=</stringProp>
  16341. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16342. <stringProp name="Argument.name">product[image]</stringProp>
  16343. <stringProp name="Argument.desc">true</stringProp>
  16344. </elementProp>
  16345. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  16346. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16347. <stringProp name="Argument.value">2</stringProp>
  16348. <stringProp name="Argument.metadata">=</stringProp>
  16349. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16350. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  16351. <stringProp name="Argument.desc">true</stringProp>
  16352. </elementProp>
  16353. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  16354. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16355. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  16356. <stringProp name="Argument.metadata">=</stringProp>
  16357. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16358. <stringProp name="Argument.name">product[meta_description]</stringProp>
  16359. <stringProp name="Argument.desc">true</stringProp>
  16360. </elementProp>
  16361. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  16362. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16363. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  16364. <stringProp name="Argument.metadata">=</stringProp>
  16365. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16366. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  16367. <stringProp name="Argument.desc">true</stringProp>
  16368. </elementProp>
  16369. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  16370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16371. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  16372. <stringProp name="Argument.metadata">=</stringProp>
  16373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16374. <stringProp name="Argument.name">product[meta_title]</stringProp>
  16375. <stringProp name="Argument.desc">true</stringProp>
  16376. </elementProp>
  16377. <elementProp name="product[name]" elementType="HTTPArgument">
  16378. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16379. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  16380. <stringProp name="Argument.metadata">=</stringProp>
  16381. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16382. <stringProp name="Argument.name">product[name]</stringProp>
  16383. <stringProp name="Argument.desc">true</stringProp>
  16384. </elementProp>
  16385. <elementProp name="product[options_container]" elementType="HTTPArgument">
  16386. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16387. <stringProp name="Argument.value">container2</stringProp>
  16388. <stringProp name="Argument.metadata">=</stringProp>
  16389. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16390. <stringProp name="Argument.name">product[options_container]</stringProp>
  16391. <stringProp name="Argument.desc">true</stringProp>
  16392. </elementProp>
  16393. <elementProp name="product[price]" elementType="HTTPArgument">
  16394. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16395. <stringProp name="Argument.value">${price_new}</stringProp>
  16396. <stringProp name="Argument.metadata">=</stringProp>
  16397. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16398. <stringProp name="Argument.name">product[price]</stringProp>
  16399. <stringProp name="Argument.desc">true</stringProp>
  16400. </elementProp>
  16401. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  16402. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16403. <stringProp name="Argument.value">1</stringProp>
  16404. <stringProp name="Argument.metadata">=</stringProp>
  16405. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16406. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  16407. <stringProp name="Argument.desc">true</stringProp>
  16408. </elementProp>
  16409. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  16410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16411. <stringProp name="Argument.value">1</stringProp>
  16412. <stringProp name="Argument.metadata">=</stringProp>
  16413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16414. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  16415. <stringProp name="Argument.desc">true</stringProp>
  16416. </elementProp>
  16417. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  16418. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16419. <stringProp name="Argument.value">1000</stringProp>
  16420. <stringProp name="Argument.metadata">=</stringProp>
  16421. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16422. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  16423. <stringProp name="Argument.desc">true</stringProp>
  16424. </elementProp>
  16425. <elementProp name="product[short_description]" elementType="HTTPArgument">
  16426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16427. <stringProp name="Argument.value"/>
  16428. <stringProp name="Argument.metadata">=</stringProp>
  16429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16430. <stringProp name="Argument.name">product[short_description]</stringProp>
  16431. <stringProp name="Argument.desc">true</stringProp>
  16432. </elementProp>
  16433. <elementProp name="product[sku]" elementType="HTTPArgument">
  16434. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16435. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  16436. <stringProp name="Argument.metadata">=</stringProp>
  16437. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16438. <stringProp name="Argument.name">product[sku]</stringProp>
  16439. <stringProp name="Argument.desc">true</stringProp>
  16440. </elementProp>
  16441. <elementProp name="product[small_image]" elementType="HTTPArgument">
  16442. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16443. <stringProp name="Argument.value"/>
  16444. <stringProp name="Argument.metadata">=</stringProp>
  16445. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16446. <stringProp name="Argument.name">product[small_image]</stringProp>
  16447. <stringProp name="Argument.desc">true</stringProp>
  16448. </elementProp>
  16449. <elementProp name="product[special_price]" elementType="HTTPArgument">
  16450. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16451. <stringProp name="Argument.value">${special_price_new}</stringProp>
  16452. <stringProp name="Argument.metadata">=</stringProp>
  16453. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16454. <stringProp name="Argument.name">product[special_price]</stringProp>
  16455. <stringProp name="Argument.desc">true</stringProp>
  16456. </elementProp>
  16457. <elementProp name="product[status]" elementType="HTTPArgument">
  16458. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16459. <stringProp name="Argument.value">1</stringProp>
  16460. <stringProp name="Argument.metadata">=</stringProp>
  16461. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16462. <stringProp name="Argument.name">product[status]</stringProp>
  16463. <stringProp name="Argument.desc">true</stringProp>
  16464. </elementProp>
  16465. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  16466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16467. <stringProp name="Argument.value">0</stringProp>
  16468. <stringProp name="Argument.metadata">=</stringProp>
  16469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16470. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  16471. <stringProp name="Argument.desc">true</stringProp>
  16472. </elementProp>
  16473. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  16474. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16475. <stringProp name="Argument.value">1</stringProp>
  16476. <stringProp name="Argument.metadata">=</stringProp>
  16477. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16478. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  16479. <stringProp name="Argument.desc">true</stringProp>
  16480. </elementProp>
  16481. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  16482. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16483. <stringProp name="Argument.value">0</stringProp>
  16484. <stringProp name="Argument.metadata">=</stringProp>
  16485. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16486. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  16487. <stringProp name="Argument.desc">true</stringProp>
  16488. </elementProp>
  16489. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  16490. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16491. <stringProp name="Argument.value">0</stringProp>
  16492. <stringProp name="Argument.metadata">=</stringProp>
  16493. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16494. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  16495. <stringProp name="Argument.desc">true</stringProp>
  16496. </elementProp>
  16497. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  16498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16499. <stringProp name="Argument.value">0</stringProp>
  16500. <stringProp name="Argument.metadata">=</stringProp>
  16501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16502. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  16503. <stringProp name="Argument.desc">true</stringProp>
  16504. </elementProp>
  16505. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  16506. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16507. <stringProp name="Argument.value">1</stringProp>
  16508. <stringProp name="Argument.metadata">=</stringProp>
  16509. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16510. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  16511. <stringProp name="Argument.desc">true</stringProp>
  16512. </elementProp>
  16513. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  16514. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16515. <stringProp name="Argument.value">10000</stringProp>
  16516. <stringProp name="Argument.metadata">=</stringProp>
  16517. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16518. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  16519. <stringProp name="Argument.desc">true</stringProp>
  16520. </elementProp>
  16521. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  16522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16523. <stringProp name="Argument.value">0</stringProp>
  16524. <stringProp name="Argument.metadata">=</stringProp>
  16525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16526. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  16527. <stringProp name="Argument.desc">true</stringProp>
  16528. </elementProp>
  16529. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  16530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16531. <stringProp name="Argument.value">1</stringProp>
  16532. <stringProp name="Argument.metadata">=</stringProp>
  16533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16534. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  16535. <stringProp name="Argument.desc">true</stringProp>
  16536. </elementProp>
  16537. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  16538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16539. <stringProp name="Argument.value">1</stringProp>
  16540. <stringProp name="Argument.metadata">=</stringProp>
  16541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16542. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  16543. <stringProp name="Argument.desc">true</stringProp>
  16544. </elementProp>
  16545. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  16546. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16547. <stringProp name="Argument.value">1</stringProp>
  16548. <stringProp name="Argument.metadata">=</stringProp>
  16549. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16550. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  16551. <stringProp name="Argument.desc">true</stringProp>
  16552. </elementProp>
  16553. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  16554. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16555. <stringProp name="Argument.value">1</stringProp>
  16556. <stringProp name="Argument.metadata">=</stringProp>
  16557. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16558. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  16559. <stringProp name="Argument.desc">true</stringProp>
  16560. </elementProp>
  16561. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  16562. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16563. <stringProp name="Argument.value">1</stringProp>
  16564. <stringProp name="Argument.metadata">=</stringProp>
  16565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16566. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  16567. <stringProp name="Argument.desc">true</stringProp>
  16568. </elementProp>
  16569. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  16570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16571. <stringProp name="Argument.value">1</stringProp>
  16572. <stringProp name="Argument.metadata">=</stringProp>
  16573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16574. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  16575. <stringProp name="Argument.desc">true</stringProp>
  16576. </elementProp>
  16577. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  16578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16579. <stringProp name="Argument.value">1</stringProp>
  16580. <stringProp name="Argument.metadata">=</stringProp>
  16581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16582. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  16583. <stringProp name="Argument.desc">true</stringProp>
  16584. </elementProp>
  16585. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  16586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16587. <stringProp name="Argument.value">1</stringProp>
  16588. <stringProp name="Argument.metadata">=</stringProp>
  16589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16590. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  16591. <stringProp name="Argument.desc">true</stringProp>
  16592. </elementProp>
  16593. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  16594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16595. <stringProp name="Argument.value">1</stringProp>
  16596. <stringProp name="Argument.metadata">=</stringProp>
  16597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16598. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  16599. <stringProp name="Argument.desc">true</stringProp>
  16600. </elementProp>
  16601. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  16602. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16603. <stringProp name="Argument.value">1</stringProp>
  16604. <stringProp name="Argument.metadata">=</stringProp>
  16605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16606. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  16607. <stringProp name="Argument.desc">true</stringProp>
  16608. </elementProp>
  16609. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  16610. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16611. <stringProp name="Argument.value">1</stringProp>
  16612. <stringProp name="Argument.metadata">=</stringProp>
  16613. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16614. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  16615. <stringProp name="Argument.desc">true</stringProp>
  16616. </elementProp>
  16617. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  16618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16619. <stringProp name="Argument.value">1</stringProp>
  16620. <stringProp name="Argument.metadata">=</stringProp>
  16621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16622. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  16623. <stringProp name="Argument.desc">true</stringProp>
  16624. </elementProp>
  16625. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  16626. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16627. <stringProp name="Argument.value">2</stringProp>
  16628. <stringProp name="Argument.metadata">=</stringProp>
  16629. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16630. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  16631. <stringProp name="Argument.desc">true</stringProp>
  16632. </elementProp>
  16633. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  16634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16635. <stringProp name="Argument.value"/>
  16636. <stringProp name="Argument.metadata">=</stringProp>
  16637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16638. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  16639. <stringProp name="Argument.desc">true</stringProp>
  16640. </elementProp>
  16641. <elementProp name="product[url_key]" elementType="HTTPArgument">
  16642. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16643. <stringProp name="Argument.value"/>
  16644. <stringProp name="Argument.metadata">=</stringProp>
  16645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16646. <stringProp name="Argument.name">product[url_key]</stringProp>
  16647. <stringProp name="Argument.desc">true</stringProp>
  16648. </elementProp>
  16649. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  16650. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16651. <stringProp name="Argument.value">1</stringProp>
  16652. <stringProp name="Argument.metadata">=</stringProp>
  16653. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16654. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  16655. <stringProp name="Argument.desc">true</stringProp>
  16656. </elementProp>
  16657. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  16658. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16659. <stringProp name="Argument.value">1</stringProp>
  16660. <stringProp name="Argument.metadata">=</stringProp>
  16661. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16662. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  16663. <stringProp name="Argument.desc">true</stringProp>
  16664. </elementProp>
  16665. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  16666. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16667. <stringProp name="Argument.value">1</stringProp>
  16668. <stringProp name="Argument.metadata">=</stringProp>
  16669. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16670. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  16671. <stringProp name="Argument.desc">true</stringProp>
  16672. </elementProp>
  16673. <elementProp name="product[visibility]" elementType="HTTPArgument">
  16674. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16675. <stringProp name="Argument.value">4</stringProp>
  16676. <stringProp name="Argument.metadata">=</stringProp>
  16677. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16678. <stringProp name="Argument.name">product[visibility]</stringProp>
  16679. <stringProp name="Argument.desc">true</stringProp>
  16680. </elementProp>
  16681. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  16682. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16683. <stringProp name="Argument.value">1</stringProp>
  16684. <stringProp name="Argument.metadata">=</stringProp>
  16685. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16686. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  16687. <stringProp name="Argument.desc">true</stringProp>
  16688. </elementProp>
  16689. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  16690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16691. <stringProp name="Argument.value">${related_product_id}</stringProp>
  16692. <stringProp name="Argument.metadata">=</stringProp>
  16693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16694. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  16695. </elementProp>
  16696. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  16697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16698. <stringProp name="Argument.value">1</stringProp>
  16699. <stringProp name="Argument.metadata">=</stringProp>
  16700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16701. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  16702. </elementProp>
  16703. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  16704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16705. <stringProp name="Argument.value">${related_product_id}</stringProp>
  16706. <stringProp name="Argument.metadata">=</stringProp>
  16707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16708. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  16709. </elementProp>
  16710. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  16711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16712. <stringProp name="Argument.value">1</stringProp>
  16713. <stringProp name="Argument.metadata">=</stringProp>
  16714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16715. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  16716. </elementProp>
  16717. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  16718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16719. <stringProp name="Argument.value">${related_product_id}</stringProp>
  16720. <stringProp name="Argument.metadata">=</stringProp>
  16721. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16722. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  16723. </elementProp>
  16724. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  16725. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16726. <stringProp name="Argument.value">1</stringProp>
  16727. <stringProp name="Argument.metadata">=</stringProp>
  16728. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16729. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  16730. </elementProp>
  16731. </collectionProp>
  16732. </elementProp>
  16733. <stringProp name="HTTPSampler.domain"/>
  16734. <stringProp name="HTTPSampler.port"/>
  16735. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  16736. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  16737. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  16738. <stringProp name="HTTPSampler.contentEncoding"/>
  16739. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/${attribute_set_id}/</stringProp>
  16740. <stringProp name="HTTPSampler.method">POST</stringProp>
  16741. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  16742. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  16743. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  16744. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  16745. <boolProp name="HTTPSampler.monitor">false</boolProp>
  16746. <stringProp name="HTTPSampler.embedded_url_re"/>
  16747. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_validate.jmx</stringProp></HTTPSamplerProxy>
  16748. <hashTree>
  16749. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  16750. <collectionProp name="Asserion.test_strings">
  16751. <stringProp name="1853918323">{"error":false}</stringProp>
  16752. </collectionProp>
  16753. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  16754. <boolProp name="Assertion.assume_success">false</boolProp>
  16755. <intProp name="Assertion.test_type">2</intProp>
  16756. </ResponseAssertion>
  16757. <hashTree/>
  16758. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  16759. <stringProp name="scriptLanguage">javascript</stringProp>
  16760. <stringProp name="parameters"/>
  16761. <stringProp name="filename"/>
  16762. <stringProp name="cacheKey"/>
  16763. <stringProp name="script">
  16764. attributes = vars.getObject("product_attributes");
  16765. for (i in attributes) {
  16766. var attribute = attributes[i];
  16767. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  16768. sampler.addArgument("attributes[" + i + "]", attribute.id);
  16769. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  16770. addConfigurableAttributeData(attribute);
  16771. }
  16772. addConfigurableMatrix(attributes);
  16773. function addConfigurableAttributeData(attribute) {
  16774. var attributeId = attribute.id;
  16775. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  16776. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  16777. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  16778. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  16779. attribute.options.forEach(function (option, index) {
  16780. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  16781. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  16782. });
  16783. }
  16784. /**
  16785. * Build 4 simple products for Configurable
  16786. */
  16787. function addConfigurableMatrix(attributes) {
  16788. var attribute1 = attributes[0],
  16789. attribute2 = attributes[1],
  16790. productIndex = 1,
  16791. products = [];
  16792. var variationNames = [];
  16793. attribute1.options.forEach(function (option1) {
  16794. attribute2.options.forEach(function (option2) {
  16795. var productAttributes = {},
  16796. namePart = option1.label + "+" + option2.label,
  16797. variationKey = option1.value + "-" + option2.value;
  16798. productAttributes[attribute1.code] = option1.value;
  16799. productAttributes[attribute2.code] = option2.value;
  16800. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  16801. var product = {
  16802. "id": null,
  16803. "name": namePart + " - " + vars.get("configurable_sku"),
  16804. "sku": namePart + " - " + vars.get("configurable_sku"),
  16805. "status": 1,
  16806. "price": "100",
  16807. "price_currency": "$",
  16808. "price_string": "$100",
  16809. "weight": "6",
  16810. "qty": "50",
  16811. "variationKey": variationKey,
  16812. "configurable_attribute": JSON.stringify(productAttributes),
  16813. "thumbnail_image": "",
  16814. "media_gallery": {"images": {}},
  16815. "image": [],
  16816. "was_changed": true,
  16817. "canEdit": 1,
  16818. "newProduct": 1,
  16819. "record_id": productIndex
  16820. };
  16821. productIndex++;
  16822. products.push(product);
  16823. });
  16824. });
  16825. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  16826. vars.putObject("configurable_variations_assertion", variationNames);
  16827. }
  16828. </stringProp>
  16829. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  16830. <hashTree/>
  16831. </hashTree>
  16832. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Save" enabled="true">
  16833. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  16834. <collectionProp name="Arguments.arguments">
  16835. <elementProp name="ajax" elementType="HTTPArgument">
  16836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16837. <stringProp name="Argument.value">true</stringProp>
  16838. <stringProp name="Argument.metadata">=</stringProp>
  16839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16840. <stringProp name="Argument.name">ajax</stringProp>
  16841. <stringProp name="Argument.desc">false</stringProp>
  16842. </elementProp>
  16843. <elementProp name="isAjax" elementType="HTTPArgument">
  16844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16845. <stringProp name="Argument.value">true</stringProp>
  16846. <stringProp name="Argument.metadata">=</stringProp>
  16847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16848. <stringProp name="Argument.name">isAjax</stringProp>
  16849. <stringProp name="Argument.desc">false</stringProp>
  16850. </elementProp>
  16851. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  16852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16853. <stringProp name="Argument.value">1</stringProp>
  16854. <stringProp name="Argument.metadata">=</stringProp>
  16855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16856. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  16857. <stringProp name="Argument.desc">true</stringProp>
  16858. </elementProp>
  16859. <elementProp name="form_key" elementType="HTTPArgument">
  16860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16861. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  16862. <stringProp name="Argument.metadata">=</stringProp>
  16863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16864. <stringProp name="Argument.name">form_key</stringProp>
  16865. <stringProp name="Argument.desc">true</stringProp>
  16866. </elementProp>
  16867. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  16868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16869. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  16870. <stringProp name="Argument.metadata">=</stringProp>
  16871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16872. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  16873. <stringProp name="Argument.desc">true</stringProp>
  16874. </elementProp>
  16875. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  16876. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16877. <stringProp name="Argument.value">1</stringProp>
  16878. <stringProp name="Argument.metadata">=</stringProp>
  16879. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16880. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  16881. <stringProp name="Argument.desc">true</stringProp>
  16882. </elementProp>
  16883. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  16884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16885. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  16886. <stringProp name="Argument.metadata">=</stringProp>
  16887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16888. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  16889. <stringProp name="Argument.desc">true</stringProp>
  16890. </elementProp>
  16891. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  16892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16893. <stringProp name="Argument.value">2</stringProp>
  16894. <stringProp name="Argument.metadata">=</stringProp>
  16895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16896. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  16897. <stringProp name="Argument.desc">true</stringProp>
  16898. </elementProp>
  16899. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  16900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16901. <stringProp name="Argument.value"/>
  16902. <stringProp name="Argument.metadata">=</stringProp>
  16903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16904. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  16905. <stringProp name="Argument.desc">true</stringProp>
  16906. </elementProp>
  16907. <elementProp name="product[description]" elementType="HTTPArgument">
  16908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16909. <stringProp name="Argument.value"/>
  16910. <stringProp name="Argument.metadata">=</stringProp>
  16911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16912. <stringProp name="Argument.name">product[description]</stringProp>
  16913. <stringProp name="Argument.desc">true</stringProp>
  16914. </elementProp>
  16915. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  16916. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16917. <stringProp name="Argument.value">0</stringProp>
  16918. <stringProp name="Argument.metadata">=</stringProp>
  16919. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16920. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  16921. <stringProp name="Argument.desc">true</stringProp>
  16922. </elementProp>
  16923. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  16924. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16925. <stringProp name="Argument.value">1</stringProp>
  16926. <stringProp name="Argument.metadata">=</stringProp>
  16927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16928. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  16929. <stringProp name="Argument.desc">true</stringProp>
  16930. </elementProp>
  16931. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  16932. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16933. <stringProp name="Argument.value"/>
  16934. <stringProp name="Argument.metadata">=</stringProp>
  16935. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16936. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  16937. <stringProp name="Argument.desc">true</stringProp>
  16938. </elementProp>
  16939. <elementProp name="product[image]" elementType="HTTPArgument">
  16940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16941. <stringProp name="Argument.value"/>
  16942. <stringProp name="Argument.metadata">=</stringProp>
  16943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16944. <stringProp name="Argument.name">product[image]</stringProp>
  16945. <stringProp name="Argument.desc">true</stringProp>
  16946. </elementProp>
  16947. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  16948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16949. <stringProp name="Argument.value">2</stringProp>
  16950. <stringProp name="Argument.metadata">=</stringProp>
  16951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16952. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  16953. <stringProp name="Argument.desc">true</stringProp>
  16954. </elementProp>
  16955. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  16956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16957. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  16958. <stringProp name="Argument.metadata">=</stringProp>
  16959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16960. <stringProp name="Argument.name">product[meta_description]</stringProp>
  16961. <stringProp name="Argument.desc">true</stringProp>
  16962. </elementProp>
  16963. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  16964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16965. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  16966. <stringProp name="Argument.metadata">=</stringProp>
  16967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16968. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  16969. <stringProp name="Argument.desc">true</stringProp>
  16970. </elementProp>
  16971. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  16972. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16973. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  16974. <stringProp name="Argument.metadata">=</stringProp>
  16975. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16976. <stringProp name="Argument.name">product[meta_title]</stringProp>
  16977. <stringProp name="Argument.desc">true</stringProp>
  16978. </elementProp>
  16979. <elementProp name="product[name]" elementType="HTTPArgument">
  16980. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16981. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  16982. <stringProp name="Argument.metadata">=</stringProp>
  16983. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16984. <stringProp name="Argument.name">product[name]</stringProp>
  16985. <stringProp name="Argument.desc">true</stringProp>
  16986. </elementProp>
  16987. <elementProp name="product[options_container]" elementType="HTTPArgument">
  16988. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16989. <stringProp name="Argument.value">container2</stringProp>
  16990. <stringProp name="Argument.metadata">=</stringProp>
  16991. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  16992. <stringProp name="Argument.name">product[options_container]</stringProp>
  16993. <stringProp name="Argument.desc">true</stringProp>
  16994. </elementProp>
  16995. <elementProp name="product[price]" elementType="HTTPArgument">
  16996. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  16997. <stringProp name="Argument.value">${price_new}</stringProp>
  16998. <stringProp name="Argument.metadata">=</stringProp>
  16999. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17000. <stringProp name="Argument.name">product[price]</stringProp>
  17001. <stringProp name="Argument.desc">true</stringProp>
  17002. </elementProp>
  17003. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  17004. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17005. <stringProp name="Argument.value">1</stringProp>
  17006. <stringProp name="Argument.metadata">=</stringProp>
  17007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17008. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  17009. <stringProp name="Argument.desc">true</stringProp>
  17010. </elementProp>
  17011. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  17012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17013. <stringProp name="Argument.value">1</stringProp>
  17014. <stringProp name="Argument.metadata">=</stringProp>
  17015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17016. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  17017. <stringProp name="Argument.desc">true</stringProp>
  17018. </elementProp>
  17019. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  17020. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17021. <stringProp name="Argument.value">1000</stringProp>
  17022. <stringProp name="Argument.metadata">=</stringProp>
  17023. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17024. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  17025. <stringProp name="Argument.desc">true</stringProp>
  17026. </elementProp>
  17027. <elementProp name="product[short_description]" elementType="HTTPArgument">
  17028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17029. <stringProp name="Argument.value"/>
  17030. <stringProp name="Argument.metadata">=</stringProp>
  17031. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17032. <stringProp name="Argument.name">product[short_description]</stringProp>
  17033. <stringProp name="Argument.desc">true</stringProp>
  17034. </elementProp>
  17035. <elementProp name="product[sku]" elementType="HTTPArgument">
  17036. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17037. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  17038. <stringProp name="Argument.metadata">=</stringProp>
  17039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17040. <stringProp name="Argument.name">product[sku]</stringProp>
  17041. <stringProp name="Argument.desc">true</stringProp>
  17042. </elementProp>
  17043. <elementProp name="product[small_image]" elementType="HTTPArgument">
  17044. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17045. <stringProp name="Argument.value"/>
  17046. <stringProp name="Argument.metadata">=</stringProp>
  17047. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17048. <stringProp name="Argument.name">product[small_image]</stringProp>
  17049. <stringProp name="Argument.desc">true</stringProp>
  17050. </elementProp>
  17051. <elementProp name="product[special_price]" elementType="HTTPArgument">
  17052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17053. <stringProp name="Argument.value">${special_price_new}</stringProp>
  17054. <stringProp name="Argument.metadata">=</stringProp>
  17055. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17056. <stringProp name="Argument.name">product[special_price]</stringProp>
  17057. <stringProp name="Argument.desc">true</stringProp>
  17058. </elementProp>
  17059. <elementProp name="product[status]" elementType="HTTPArgument">
  17060. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17061. <stringProp name="Argument.value">1</stringProp>
  17062. <stringProp name="Argument.metadata">=</stringProp>
  17063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17064. <stringProp name="Argument.name">product[status]</stringProp>
  17065. <stringProp name="Argument.desc">true</stringProp>
  17066. </elementProp>
  17067. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  17068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17069. <stringProp name="Argument.value">0</stringProp>
  17070. <stringProp name="Argument.metadata">=</stringProp>
  17071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17072. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  17073. <stringProp name="Argument.desc">true</stringProp>
  17074. </elementProp>
  17075. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  17076. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17077. <stringProp name="Argument.value">1</stringProp>
  17078. <stringProp name="Argument.metadata">=</stringProp>
  17079. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17080. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  17081. <stringProp name="Argument.desc">true</stringProp>
  17082. </elementProp>
  17083. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  17084. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17085. <stringProp name="Argument.value">0</stringProp>
  17086. <stringProp name="Argument.metadata">=</stringProp>
  17087. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17088. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  17089. <stringProp name="Argument.desc">true</stringProp>
  17090. </elementProp>
  17091. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  17092. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17093. <stringProp name="Argument.value">0</stringProp>
  17094. <stringProp name="Argument.metadata">=</stringProp>
  17095. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17096. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  17097. <stringProp name="Argument.desc">true</stringProp>
  17098. </elementProp>
  17099. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  17100. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17101. <stringProp name="Argument.value">0</stringProp>
  17102. <stringProp name="Argument.metadata">=</stringProp>
  17103. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17104. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  17105. <stringProp name="Argument.desc">true</stringProp>
  17106. </elementProp>
  17107. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  17108. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17109. <stringProp name="Argument.value">1</stringProp>
  17110. <stringProp name="Argument.metadata">=</stringProp>
  17111. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17112. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  17113. <stringProp name="Argument.desc">true</stringProp>
  17114. </elementProp>
  17115. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  17116. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17117. <stringProp name="Argument.value">10000</stringProp>
  17118. <stringProp name="Argument.metadata">=</stringProp>
  17119. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17120. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  17121. <stringProp name="Argument.desc">true</stringProp>
  17122. </elementProp>
  17123. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  17124. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17125. <stringProp name="Argument.value">0</stringProp>
  17126. <stringProp name="Argument.metadata">=</stringProp>
  17127. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17128. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  17129. <stringProp name="Argument.desc">true</stringProp>
  17130. </elementProp>
  17131. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  17132. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17133. <stringProp name="Argument.value">1</stringProp>
  17134. <stringProp name="Argument.metadata">=</stringProp>
  17135. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17136. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  17137. <stringProp name="Argument.desc">true</stringProp>
  17138. </elementProp>
  17139. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  17140. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17141. <stringProp name="Argument.value">1</stringProp>
  17142. <stringProp name="Argument.metadata">=</stringProp>
  17143. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17144. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  17145. <stringProp name="Argument.desc">true</stringProp>
  17146. </elementProp>
  17147. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  17148. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17149. <stringProp name="Argument.value">1</stringProp>
  17150. <stringProp name="Argument.metadata">=</stringProp>
  17151. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17152. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  17153. <stringProp name="Argument.desc">true</stringProp>
  17154. </elementProp>
  17155. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  17156. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17157. <stringProp name="Argument.value">1</stringProp>
  17158. <stringProp name="Argument.metadata">=</stringProp>
  17159. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17160. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  17161. <stringProp name="Argument.desc">true</stringProp>
  17162. </elementProp>
  17163. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  17164. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17165. <stringProp name="Argument.value">1</stringProp>
  17166. <stringProp name="Argument.metadata">=</stringProp>
  17167. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17168. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  17169. <stringProp name="Argument.desc">true</stringProp>
  17170. </elementProp>
  17171. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  17172. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17173. <stringProp name="Argument.value">1</stringProp>
  17174. <stringProp name="Argument.metadata">=</stringProp>
  17175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17176. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  17177. <stringProp name="Argument.desc">true</stringProp>
  17178. </elementProp>
  17179. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  17180. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17181. <stringProp name="Argument.value">1</stringProp>
  17182. <stringProp name="Argument.metadata">=</stringProp>
  17183. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17184. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  17185. <stringProp name="Argument.desc">true</stringProp>
  17186. </elementProp>
  17187. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  17188. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17189. <stringProp name="Argument.value">1</stringProp>
  17190. <stringProp name="Argument.metadata">=</stringProp>
  17191. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17192. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  17193. <stringProp name="Argument.desc">true</stringProp>
  17194. </elementProp>
  17195. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  17196. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17197. <stringProp name="Argument.value">1</stringProp>
  17198. <stringProp name="Argument.metadata">=</stringProp>
  17199. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17200. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  17201. <stringProp name="Argument.desc">true</stringProp>
  17202. </elementProp>
  17203. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  17204. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17205. <stringProp name="Argument.value">1</stringProp>
  17206. <stringProp name="Argument.metadata">=</stringProp>
  17207. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17208. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  17209. <stringProp name="Argument.desc">true</stringProp>
  17210. </elementProp>
  17211. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  17212. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17213. <stringProp name="Argument.value">1</stringProp>
  17214. <stringProp name="Argument.metadata">=</stringProp>
  17215. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17216. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  17217. <stringProp name="Argument.desc">true</stringProp>
  17218. </elementProp>
  17219. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  17220. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17221. <stringProp name="Argument.value">1</stringProp>
  17222. <stringProp name="Argument.metadata">=</stringProp>
  17223. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17224. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  17225. <stringProp name="Argument.desc">true</stringProp>
  17226. </elementProp>
  17227. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  17228. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17229. <stringProp name="Argument.value">2</stringProp>
  17230. <stringProp name="Argument.metadata">=</stringProp>
  17231. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17232. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  17233. <stringProp name="Argument.desc">true</stringProp>
  17234. </elementProp>
  17235. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  17236. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17237. <stringProp name="Argument.value"/>
  17238. <stringProp name="Argument.metadata">=</stringProp>
  17239. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17240. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  17241. <stringProp name="Argument.desc">true</stringProp>
  17242. </elementProp>
  17243. <elementProp name="product[url_key]" elementType="HTTPArgument">
  17244. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17245. <stringProp name="Argument.value"/>
  17246. <stringProp name="Argument.metadata">=</stringProp>
  17247. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17248. <stringProp name="Argument.name">product[url_key]</stringProp>
  17249. <stringProp name="Argument.desc">true</stringProp>
  17250. </elementProp>
  17251. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  17252. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17253. <stringProp name="Argument.value">1</stringProp>
  17254. <stringProp name="Argument.metadata">=</stringProp>
  17255. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17256. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  17257. <stringProp name="Argument.desc">true</stringProp>
  17258. </elementProp>
  17259. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  17260. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17261. <stringProp name="Argument.value">1</stringProp>
  17262. <stringProp name="Argument.metadata">=</stringProp>
  17263. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17264. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  17265. <stringProp name="Argument.desc">true</stringProp>
  17266. </elementProp>
  17267. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  17268. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17269. <stringProp name="Argument.value">1</stringProp>
  17270. <stringProp name="Argument.metadata">=</stringProp>
  17271. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17272. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  17273. <stringProp name="Argument.desc">true</stringProp>
  17274. </elementProp>
  17275. <elementProp name="product[visibility]" elementType="HTTPArgument">
  17276. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17277. <stringProp name="Argument.value">4</stringProp>
  17278. <stringProp name="Argument.metadata">=</stringProp>
  17279. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17280. <stringProp name="Argument.name">product[visibility]</stringProp>
  17281. <stringProp name="Argument.desc">true</stringProp>
  17282. </elementProp>
  17283. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  17284. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17285. <stringProp name="Argument.value">1</stringProp>
  17286. <stringProp name="Argument.metadata">=</stringProp>
  17287. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17288. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  17289. <stringProp name="Argument.desc">true</stringProp>
  17290. </elementProp>
  17291. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  17292. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17293. <stringProp name="Argument.value">${related_product_id}</stringProp>
  17294. <stringProp name="Argument.metadata">=</stringProp>
  17295. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17296. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  17297. </elementProp>
  17298. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  17299. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17300. <stringProp name="Argument.value">1</stringProp>
  17301. <stringProp name="Argument.metadata">=</stringProp>
  17302. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17303. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  17304. </elementProp>
  17305. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  17306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17307. <stringProp name="Argument.value">${related_product_id}</stringProp>
  17308. <stringProp name="Argument.metadata">=</stringProp>
  17309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17310. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  17311. </elementProp>
  17312. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  17313. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17314. <stringProp name="Argument.value">1</stringProp>
  17315. <stringProp name="Argument.metadata">=</stringProp>
  17316. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17317. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  17318. </elementProp>
  17319. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  17320. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17321. <stringProp name="Argument.value">${related_product_id}</stringProp>
  17322. <stringProp name="Argument.metadata">=</stringProp>
  17323. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17324. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  17325. </elementProp>
  17326. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  17327. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17328. <stringProp name="Argument.value">1</stringProp>
  17329. <stringProp name="Argument.metadata">=</stringProp>
  17330. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17331. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  17332. </elementProp>
  17333. </collectionProp>
  17334. </elementProp>
  17335. <stringProp name="HTTPSampler.domain"/>
  17336. <stringProp name="HTTPSampler.port"/>
  17337. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  17338. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  17339. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  17340. <stringProp name="HTTPSampler.contentEncoding"/>
  17341. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/${attribute_set_id}/type/configurable/back/edit/active_tab/product-details/</stringProp>
  17342. <stringProp name="HTTPSampler.method">POST</stringProp>
  17343. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  17344. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  17345. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  17346. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  17347. <boolProp name="HTTPSampler.monitor">false</boolProp>
  17348. <stringProp name="HTTPSampler.embedded_url_re"/>
  17349. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_save.jmx</stringProp></HTTPSamplerProxy>
  17350. <hashTree>
  17351. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  17352. <collectionProp name="Asserion.test_strings">
  17353. <stringProp name="-583471546">You saved the product</stringProp>
  17354. </collectionProp>
  17355. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  17356. <boolProp name="Assertion.assume_success">false</boolProp>
  17357. <intProp name="Assertion.test_type">2</intProp>
  17358. </ResponseAssertion>
  17359. <hashTree/>
  17360. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert Variation" enabled="true">
  17361. <stringProp name="scriptLanguage">javascript</stringProp>
  17362. <stringProp name="parameters"/>
  17363. <stringProp name="filename"/>
  17364. <stringProp name="cacheKey"/>
  17365. <stringProp name="script">
  17366. var configurableVariations = vars.getObject("configurable_variations_assertion"),
  17367. response = SampleResult.getResponseDataAsString();
  17368. configurableVariations.forEach(function (variation) {
  17369. if (response.indexOf(variation) == -1) {
  17370. AssertionResult.setFailureMessage("Cannot find variation \"" + variation + "\"");
  17371. AssertionResult.setFailure(true);
  17372. }
  17373. });
  17374. </stringProp>
  17375. </JSR223Assertion>
  17376. <hashTree/>
  17377. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  17378. <stringProp name="scriptLanguage">javascript</stringProp>
  17379. <stringProp name="parameters"/>
  17380. <stringProp name="filename"/>
  17381. <stringProp name="cacheKey"/>
  17382. <stringProp name="script">
  17383. attributes = vars.getObject("product_attributes");
  17384. for (i in attributes) {
  17385. var attribute = attributes[i];
  17386. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  17387. sampler.addArgument("attributes[" + i + "]", attribute.id);
  17388. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  17389. addConfigurableAttributeData(attribute);
  17390. }
  17391. addConfigurableMatrix(attributes);
  17392. function addConfigurableAttributeData(attribute) {
  17393. var attributeId = attribute.id;
  17394. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  17395. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  17396. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  17397. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  17398. attribute.options.forEach(function (option, index) {
  17399. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  17400. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  17401. });
  17402. }
  17403. /**
  17404. * Build 4 simple products for Configurable
  17405. */
  17406. function addConfigurableMatrix(attributes) {
  17407. var attribute1 = attributes[0],
  17408. attribute2 = attributes[1],
  17409. productIndex = 1,
  17410. products = [];
  17411. var variationNames = [];
  17412. attribute1.options.forEach(function (option1) {
  17413. attribute2.options.forEach(function (option2) {
  17414. var productAttributes = {},
  17415. namePart = option1.label + "+" + option2.label,
  17416. variationKey = option1.value + "-" + option2.value;
  17417. productAttributes[attribute1.code] = option1.value;
  17418. productAttributes[attribute2.code] = option2.value;
  17419. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  17420. var product = {
  17421. "id": null,
  17422. "name": namePart + " - " + vars.get("configurable_sku"),
  17423. "sku": namePart + " - " + vars.get("configurable_sku"),
  17424. "status": 1,
  17425. "price": "100",
  17426. "price_currency": "$",
  17427. "price_string": "$100",
  17428. "weight": "6",
  17429. "qty": "50",
  17430. "variationKey": variationKey,
  17431. "configurable_attribute": JSON.stringify(productAttributes),
  17432. "thumbnail_image": "",
  17433. "media_gallery": {"images": {}},
  17434. "image": [],
  17435. "was_changed": true,
  17436. "canEdit": 1,
  17437. "newProduct": 1,
  17438. "record_id": productIndex
  17439. };
  17440. productIndex++;
  17441. products.push(product);
  17442. });
  17443. });
  17444. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  17445. vars.putObject("configurable_variations_assertion", variationNames);
  17446. }
  17447. </stringProp>
  17448. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  17449. <hashTree/>
  17450. </hashTree>
  17451. </hashTree>
  17452. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Downloadable Product" enabled="true">
  17453. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_downloadable_product.jmx</stringProp>
  17454. </TestFragmentController>
  17455. <hashTree>
  17456. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  17457. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  17458. <collectionProp name="Arguments.arguments"/>
  17459. </elementProp>
  17460. <stringProp name="HTTPSampler.domain"/>
  17461. <stringProp name="HTTPSampler.port"/>
  17462. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  17463. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  17464. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  17465. <stringProp name="HTTPSampler.contentEncoding"/>
  17466. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  17467. <stringProp name="HTTPSampler.method">GET</stringProp>
  17468. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  17469. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  17470. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  17471. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  17472. <boolProp name="HTTPSampler.monitor">false</boolProp>
  17473. <stringProp name="HTTPSampler.embedded_url_re"/>
  17474. </HTTPSamplerProxy>
  17475. <hashTree>
  17476. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  17477. <collectionProp name="Asserion.test_strings">
  17478. <stringProp name="1509986340">records found</stringProp>
  17479. </collectionProp>
  17480. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  17481. <boolProp name="Assertion.assume_success">false</boolProp>
  17482. <intProp name="Assertion.test_type">2</intProp>
  17483. </ResponseAssertion>
  17484. <hashTree/>
  17485. </hashTree>
  17486. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product" enabled="true">
  17487. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  17488. <collectionProp name="Arguments.arguments"/>
  17489. </elementProp>
  17490. <stringProp name="HTTPSampler.domain"/>
  17491. <stringProp name="HTTPSampler.port"/>
  17492. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  17493. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  17494. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  17495. <stringProp name="HTTPSampler.contentEncoding"/>
  17496. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/</stringProp>
  17497. <stringProp name="HTTPSampler.method">GET</stringProp>
  17498. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  17499. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  17500. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  17501. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  17502. <boolProp name="HTTPSampler.monitor">false</boolProp>
  17503. <stringProp name="HTTPSampler.embedded_url_re"/>
  17504. </HTTPSamplerProxy>
  17505. <hashTree>
  17506. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  17507. <collectionProp name="Asserion.test_strings">
  17508. <stringProp name="-144461265">New Product</stringProp>
  17509. </collectionProp>
  17510. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  17511. <boolProp name="Assertion.assume_success">false</boolProp>
  17512. <intProp name="Assertion.test_type">2</intProp>
  17513. </ResponseAssertion>
  17514. <hashTree/>
  17515. </hashTree>
  17516. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Original File" enabled="true">
  17517. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  17518. <collectionProp name="HTTPFileArgs.files">
  17519. <elementProp name="${files_folder}downloadable_original.txt" elementType="HTTPFileArg">
  17520. <stringProp name="File.path">${files_folder}downloadable_original.txt</stringProp>
  17521. <stringProp name="File.paramname">links</stringProp>
  17522. <stringProp name="File.mimetype">text/plain</stringProp>
  17523. </elementProp>
  17524. </collectionProp>
  17525. </elementProp>
  17526. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  17527. <collectionProp name="Arguments.arguments">
  17528. <elementProp name="form_key" elementType="HTTPArgument">
  17529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17530. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  17531. <stringProp name="Argument.metadata">=</stringProp>
  17532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17533. <stringProp name="Argument.name">form_key</stringProp>
  17534. <stringProp name="Argument.desc">false</stringProp>
  17535. </elementProp>
  17536. </collectionProp>
  17537. </elementProp>
  17538. <stringProp name="HTTPSampler.domain"/>
  17539. <stringProp name="HTTPSampler.port"/>
  17540. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  17541. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  17542. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  17543. <stringProp name="HTTPSampler.contentEncoding"/>
  17544. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true</stringProp>
  17545. <stringProp name="HTTPSampler.method">POST</stringProp>
  17546. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  17547. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  17548. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  17549. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  17550. <boolProp name="HTTPSampler.monitor">false</boolProp>
  17551. <stringProp name="HTTPSampler.embedded_url_re"/>
  17552. </HTTPSamplerProxy>
  17553. <hashTree>
  17554. <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 original file" enabled="true">
  17555. <stringProp name="VAR">original_file</stringProp>
  17556. <stringProp name="JSONPATH">$.file</stringProp>
  17557. <stringProp name="DEFAULT"/>
  17558. <stringProp name="VARIABLE"/>
  17559. <stringProp name="SUBJECT">BODY</stringProp>
  17560. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  17561. <hashTree/>
  17562. </hashTree>
  17563. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Sample File" enabled="true">
  17564. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  17565. <collectionProp name="HTTPFileArgs.files">
  17566. <elementProp name="${files_folder}downloadable_sample.txt" elementType="HTTPFileArg">
  17567. <stringProp name="File.path">${files_folder}downloadable_sample.txt</stringProp>
  17568. <stringProp name="File.paramname">samples</stringProp>
  17569. <stringProp name="File.mimetype">text/plain</stringProp>
  17570. </elementProp>
  17571. </collectionProp>
  17572. </elementProp>
  17573. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  17574. <collectionProp name="Arguments.arguments">
  17575. <elementProp name="form_key" elementType="HTTPArgument">
  17576. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17577. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  17578. <stringProp name="Argument.metadata">=</stringProp>
  17579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17580. <stringProp name="Argument.name">form_key</stringProp>
  17581. <stringProp name="Argument.desc">false</stringProp>
  17582. </elementProp>
  17583. </collectionProp>
  17584. </elementProp>
  17585. <stringProp name="HTTPSampler.domain"/>
  17586. <stringProp name="HTTPSampler.port"/>
  17587. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  17588. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  17589. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  17590. <stringProp name="HTTPSampler.contentEncoding"/>
  17591. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true</stringProp>
  17592. <stringProp name="HTTPSampler.method">POST</stringProp>
  17593. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  17594. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  17595. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  17596. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  17597. <boolProp name="HTTPSampler.monitor">false</boolProp>
  17598. <stringProp name="HTTPSampler.embedded_url_re"/>
  17599. </HTTPSamplerProxy>
  17600. <hashTree>
  17601. <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 sample file" enabled="true">
  17602. <stringProp name="VAR">sample_file</stringProp>
  17603. <stringProp name="JSONPATH">$.file</stringProp>
  17604. <stringProp name="DEFAULT"/>
  17605. <stringProp name="VARIABLE"/>
  17606. <stringProp name="SUBJECT">BODY</stringProp>
  17607. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  17608. <hashTree/>
  17609. </hashTree>
  17610. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Validate" enabled="true">
  17611. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  17612. <collectionProp name="Arguments.arguments">
  17613. <elementProp name="ajax" elementType="HTTPArgument">
  17614. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17615. <stringProp name="Argument.value">true</stringProp>
  17616. <stringProp name="Argument.metadata">=</stringProp>
  17617. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17618. <stringProp name="Argument.name">ajax</stringProp>
  17619. <stringProp name="Argument.desc">false</stringProp>
  17620. </elementProp>
  17621. <elementProp name="isAjax" elementType="HTTPArgument">
  17622. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17623. <stringProp name="Argument.value">true</stringProp>
  17624. <stringProp name="Argument.metadata">=</stringProp>
  17625. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17626. <stringProp name="Argument.name">isAjax</stringProp>
  17627. <stringProp name="Argument.desc">false</stringProp>
  17628. </elementProp>
  17629. <elementProp name="form_key" elementType="HTTPArgument">
  17630. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17631. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  17632. <stringProp name="Argument.metadata">=</stringProp>
  17633. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17634. <stringProp name="Argument.name">form_key</stringProp>
  17635. <stringProp name="Argument.desc">false</stringProp>
  17636. </elementProp>
  17637. <elementProp name="product[name]" elementType="HTTPArgument">
  17638. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17639. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  17640. <stringProp name="Argument.metadata">=</stringProp>
  17641. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17642. <stringProp name="Argument.name">product[name]</stringProp>
  17643. <stringProp name="Argument.desc">false</stringProp>
  17644. </elementProp>
  17645. <elementProp name="product[sku]" elementType="HTTPArgument">
  17646. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17647. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  17648. <stringProp name="Argument.metadata">=</stringProp>
  17649. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17650. <stringProp name="Argument.name">product[sku]</stringProp>
  17651. <stringProp name="Argument.desc">false</stringProp>
  17652. </elementProp>
  17653. <elementProp name="product[price]" elementType="HTTPArgument">
  17654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17655. <stringProp name="Argument.value">123</stringProp>
  17656. <stringProp name="Argument.metadata">=</stringProp>
  17657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17658. <stringProp name="Argument.name">product[price]</stringProp>
  17659. </elementProp>
  17660. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  17661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17662. <stringProp name="Argument.value">2</stringProp>
  17663. <stringProp name="Argument.metadata">=</stringProp>
  17664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17665. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  17666. </elementProp>
  17667. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  17668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17669. <stringProp name="Argument.value">111</stringProp>
  17670. <stringProp name="Argument.metadata">=</stringProp>
  17671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17672. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  17673. </elementProp>
  17674. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  17675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17676. <stringProp name="Argument.value">1</stringProp>
  17677. <stringProp name="Argument.metadata">=</stringProp>
  17678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17679. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  17680. </elementProp>
  17681. <elementProp name="product[weight]" elementType="HTTPArgument">
  17682. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17683. <stringProp name="Argument.value">1.0000</stringProp>
  17684. <stringProp name="Argument.metadata">=</stringProp>
  17685. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17686. <stringProp name="Argument.name">product[weight]</stringProp>
  17687. </elementProp>
  17688. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  17689. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17690. <stringProp name="Argument.value">2</stringProp>
  17691. <stringProp name="Argument.metadata">=</stringProp>
  17692. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17693. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  17694. </elementProp>
  17695. <elementProp name="product[description]" elementType="HTTPArgument">
  17696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17697. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  17698. <stringProp name="Argument.metadata">=</stringProp>
  17699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17700. <stringProp name="Argument.name">product[description]</stringProp>
  17701. </elementProp>
  17702. <elementProp name="product[short_description]" elementType="HTTPArgument">
  17703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17704. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  17705. <stringProp name="Argument.metadata">=</stringProp>
  17706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17707. <stringProp name="Argument.name">product[short_description]</stringProp>
  17708. </elementProp>
  17709. <elementProp name="product[status]" elementType="HTTPArgument">
  17710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17711. <stringProp name="Argument.value">1</stringProp>
  17712. <stringProp name="Argument.metadata">=</stringProp>
  17713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17714. <stringProp name="Argument.name">product[status]</stringProp>
  17715. </elementProp>
  17716. <elementProp name="product[image]" elementType="HTTPArgument">
  17717. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17718. <stringProp name="Argument.value"/>
  17719. <stringProp name="Argument.metadata">=</stringProp>
  17720. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17721. <stringProp name="Argument.name">product[image]</stringProp>
  17722. </elementProp>
  17723. <elementProp name="product[small_image]" elementType="HTTPArgument">
  17724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17725. <stringProp name="Argument.value"/>
  17726. <stringProp name="Argument.metadata">=</stringProp>
  17727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17728. <stringProp name="Argument.name">product[small_image]</stringProp>
  17729. </elementProp>
  17730. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  17731. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17732. <stringProp name="Argument.value"/>
  17733. <stringProp name="Argument.metadata">=</stringProp>
  17734. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17735. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  17736. </elementProp>
  17737. <elementProp name="product[url_key]" elementType="HTTPArgument">
  17738. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17739. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  17740. <stringProp name="Argument.metadata">=</stringProp>
  17741. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17742. <stringProp name="Argument.name">product[url_key]</stringProp>
  17743. </elementProp>
  17744. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  17745. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17746. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  17747. <stringProp name="Argument.metadata">=</stringProp>
  17748. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17749. <stringProp name="Argument.name">product[meta_title]</stringProp>
  17750. </elementProp>
  17751. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  17752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17753. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  17754. <stringProp name="Argument.metadata">=</stringProp>
  17755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17756. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  17757. </elementProp>
  17758. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  17759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17760. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  17761. <stringProp name="Argument.metadata">=</stringProp>
  17762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17763. <stringProp name="Argument.name">product[meta_description]</stringProp>
  17764. </elementProp>
  17765. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  17766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17767. <stringProp name="Argument.value">1</stringProp>
  17768. <stringProp name="Argument.metadata">=</stringProp>
  17769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17770. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  17771. </elementProp>
  17772. <elementProp name="product[special_price]" elementType="HTTPArgument">
  17773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17774. <stringProp name="Argument.value">99</stringProp>
  17775. <stringProp name="Argument.metadata">=</stringProp>
  17776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17777. <stringProp name="Argument.name">product[special_price]</stringProp>
  17778. </elementProp>
  17779. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  17780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17781. <stringProp name="Argument.value">1</stringProp>
  17782. <stringProp name="Argument.metadata">=</stringProp>
  17783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17784. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  17785. </elementProp>
  17786. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  17787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17788. <stringProp name="Argument.value"/>
  17789. <stringProp name="Argument.metadata">=</stringProp>
  17790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17791. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  17792. </elementProp>
  17793. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  17794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17795. <stringProp name="Argument.value"/>
  17796. <stringProp name="Argument.metadata">=</stringProp>
  17797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17798. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  17799. </elementProp>
  17800. <elementProp name="product[cost]" elementType="HTTPArgument">
  17801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17802. <stringProp name="Argument.value"/>
  17803. <stringProp name="Argument.metadata">=</stringProp>
  17804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17805. <stringProp name="Argument.name">product[cost]</stringProp>
  17806. </elementProp>
  17807. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  17808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17809. <stringProp name="Argument.value">0</stringProp>
  17810. <stringProp name="Argument.metadata">=</stringProp>
  17811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17812. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  17813. </elementProp>
  17814. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  17815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17816. <stringProp name="Argument.value">32000</stringProp>
  17817. <stringProp name="Argument.metadata">=</stringProp>
  17818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17819. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  17820. </elementProp>
  17821. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  17822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17823. <stringProp name="Argument.value">100</stringProp>
  17824. <stringProp name="Argument.metadata">=</stringProp>
  17825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17826. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  17827. </elementProp>
  17828. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  17829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17830. <stringProp name="Argument.value">90</stringProp>
  17831. <stringProp name="Argument.metadata">=</stringProp>
  17832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17833. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  17834. </elementProp>
  17835. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  17836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17837. <stringProp name="Argument.value"/>
  17838. <stringProp name="Argument.metadata">=</stringProp>
  17839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17840. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  17841. </elementProp>
  17842. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  17843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17844. <stringProp name="Argument.value">0</stringProp>
  17845. <stringProp name="Argument.metadata">=</stringProp>
  17846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17847. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  17848. </elementProp>
  17849. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  17850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17851. <stringProp name="Argument.value">1</stringProp>
  17852. <stringProp name="Argument.metadata">=</stringProp>
  17853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17854. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  17855. </elementProp>
  17856. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  17857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17858. <stringProp name="Argument.value">101</stringProp>
  17859. <stringProp name="Argument.metadata">=</stringProp>
  17860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17861. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  17862. </elementProp>
  17863. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  17864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17865. <stringProp name="Argument.value">99</stringProp>
  17866. <stringProp name="Argument.metadata">=</stringProp>
  17867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17868. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  17869. </elementProp>
  17870. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  17871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17872. <stringProp name="Argument.value"/>
  17873. <stringProp name="Argument.metadata">=</stringProp>
  17874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17875. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  17876. </elementProp>
  17877. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  17878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17879. <stringProp name="Argument.value">1</stringProp>
  17880. <stringProp name="Argument.metadata">=</stringProp>
  17881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17882. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  17883. </elementProp>
  17884. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  17885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17886. <stringProp name="Argument.value">100500</stringProp>
  17887. <stringProp name="Argument.metadata">=</stringProp>
  17888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17889. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  17890. </elementProp>
  17891. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  17892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17893. <stringProp name="Argument.value">100500</stringProp>
  17894. <stringProp name="Argument.metadata">=</stringProp>
  17895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17896. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  17897. </elementProp>
  17898. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  17899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17900. <stringProp name="Argument.value">0</stringProp>
  17901. <stringProp name="Argument.metadata">=</stringProp>
  17902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17903. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  17904. </elementProp>
  17905. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  17906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17907. <stringProp name="Argument.value">1</stringProp>
  17908. <stringProp name="Argument.metadata">=</stringProp>
  17909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17910. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  17911. </elementProp>
  17912. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  17913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17914. <stringProp name="Argument.value">1</stringProp>
  17915. <stringProp name="Argument.metadata">=</stringProp>
  17916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17917. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  17918. </elementProp>
  17919. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  17920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17921. <stringProp name="Argument.value">1</stringProp>
  17922. <stringProp name="Argument.metadata">=</stringProp>
  17923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17924. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  17925. </elementProp>
  17926. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  17927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17928. <stringProp name="Argument.value">10000</stringProp>
  17929. <stringProp name="Argument.metadata">=</stringProp>
  17930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17931. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  17932. </elementProp>
  17933. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  17934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17935. <stringProp name="Argument.value">1</stringProp>
  17936. <stringProp name="Argument.metadata">=</stringProp>
  17937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17938. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  17939. </elementProp>
  17940. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  17941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17942. <stringProp name="Argument.value">0</stringProp>
  17943. <stringProp name="Argument.metadata">=</stringProp>
  17944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17945. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  17946. </elementProp>
  17947. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  17948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17949. <stringProp name="Argument.value">0</stringProp>
  17950. <stringProp name="Argument.metadata">=</stringProp>
  17951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17952. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  17953. </elementProp>
  17954. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  17955. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17956. <stringProp name="Argument.value">0</stringProp>
  17957. <stringProp name="Argument.metadata">=</stringProp>
  17958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17959. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  17960. </elementProp>
  17961. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  17962. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17963. <stringProp name="Argument.value">1</stringProp>
  17964. <stringProp name="Argument.metadata">=</stringProp>
  17965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17966. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  17967. </elementProp>
  17968. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  17969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17970. <stringProp name="Argument.value">1</stringProp>
  17971. <stringProp name="Argument.metadata">=</stringProp>
  17972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17973. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  17974. </elementProp>
  17975. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  17976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17977. <stringProp name="Argument.value">0</stringProp>
  17978. <stringProp name="Argument.metadata">=</stringProp>
  17979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17980. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  17981. </elementProp>
  17982. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  17983. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17984. <stringProp name="Argument.value">0</stringProp>
  17985. <stringProp name="Argument.metadata">=</stringProp>
  17986. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17987. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  17988. </elementProp>
  17989. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  17990. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17991. <stringProp name="Argument.value">1</stringProp>
  17992. <stringProp name="Argument.metadata">=</stringProp>
  17993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  17994. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  17995. </elementProp>
  17996. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  17997. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  17998. <stringProp name="Argument.value">1</stringProp>
  17999. <stringProp name="Argument.metadata">=</stringProp>
  18000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18001. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  18002. </elementProp>
  18003. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  18004. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18005. <stringProp name="Argument.value"/>
  18006. <stringProp name="Argument.metadata">=</stringProp>
  18007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18008. <stringProp name="Argument.name">product[custom_design]</stringProp>
  18009. </elementProp>
  18010. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  18011. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18012. <stringProp name="Argument.value"/>
  18013. <stringProp name="Argument.metadata">=</stringProp>
  18014. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18015. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  18016. </elementProp>
  18017. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  18018. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18019. <stringProp name="Argument.value"/>
  18020. <stringProp name="Argument.metadata">=</stringProp>
  18021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18022. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  18023. </elementProp>
  18024. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  18025. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18026. <stringProp name="Argument.value"/>
  18027. <stringProp name="Argument.metadata">=</stringProp>
  18028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18029. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  18030. </elementProp>
  18031. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  18032. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18033. <stringProp name="Argument.value"/>
  18034. <stringProp name="Argument.metadata">=</stringProp>
  18035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18036. <stringProp name="Argument.name">product[page_layout]</stringProp>
  18037. </elementProp>
  18038. <elementProp name="product[options_container]" elementType="HTTPArgument">
  18039. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18040. <stringProp name="Argument.value">container2</stringProp>
  18041. <stringProp name="Argument.metadata">=</stringProp>
  18042. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18043. <stringProp name="Argument.name">product[options_container]</stringProp>
  18044. </elementProp>
  18045. <elementProp name="is_downloadable" elementType="HTTPArgument">
  18046. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18047. <stringProp name="Argument.value">on</stringProp>
  18048. <stringProp name="Argument.metadata">=</stringProp>
  18049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18050. <stringProp name="Argument.name">is_downloadable</stringProp>
  18051. </elementProp>
  18052. <elementProp name="product[links_title]" elementType="HTTPArgument">
  18053. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18054. <stringProp name="Argument.value">Links</stringProp>
  18055. <stringProp name="Argument.metadata">=</stringProp>
  18056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18057. <stringProp name="Argument.name">product[links_title]</stringProp>
  18058. </elementProp>
  18059. <elementProp name="product[links_purchased_separately]" elementType="HTTPArgument">
  18060. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18061. <stringProp name="Argument.value">0</stringProp>
  18062. <stringProp name="Argument.metadata">=</stringProp>
  18063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18064. <stringProp name="Argument.name">product[links_purchased_separately]</stringProp>
  18065. </elementProp>
  18066. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  18067. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18068. <stringProp name="Argument.value">${original_file}</stringProp>
  18069. <stringProp name="Argument.metadata">=</stringProp>
  18070. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18071. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  18072. <stringProp name="Argument.desc">false</stringProp>
  18073. </elementProp>
  18074. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  18075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18076. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  18077. <stringProp name="Argument.metadata">=</stringProp>
  18078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18079. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  18080. <stringProp name="Argument.desc">false</stringProp>
  18081. </elementProp>
  18082. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  18083. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18084. <stringProp name="Argument.value">13</stringProp>
  18085. <stringProp name="Argument.metadata">=</stringProp>
  18086. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18087. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  18088. <stringProp name="Argument.desc">false</stringProp>
  18089. </elementProp>
  18090. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  18091. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18092. <stringProp name="Argument.value">new</stringProp>
  18093. <stringProp name="Argument.metadata">=</stringProp>
  18094. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18095. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  18096. <stringProp name="Argument.desc">false</stringProp>
  18097. </elementProp>
  18098. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  18099. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18100. <stringProp name="Argument.value">1</stringProp>
  18101. <stringProp name="Argument.metadata">=</stringProp>
  18102. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18103. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  18104. </elementProp>
  18105. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  18106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18107. <stringProp name="Argument.value">0</stringProp>
  18108. <stringProp name="Argument.metadata">=</stringProp>
  18109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18110. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  18111. </elementProp>
  18112. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  18113. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18114. <stringProp name="Argument.value"/>
  18115. <stringProp name="Argument.metadata">=</stringProp>
  18116. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18117. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  18118. </elementProp>
  18119. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  18120. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18121. <stringProp name="Argument.value">0</stringProp>
  18122. <stringProp name="Argument.metadata">=</stringProp>
  18123. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18124. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  18125. <stringProp name="Argument.desc">true</stringProp>
  18126. </elementProp>
  18127. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  18128. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18129. <stringProp name="Argument.value">120</stringProp>
  18130. <stringProp name="Argument.metadata">=</stringProp>
  18131. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18132. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  18133. <stringProp name="Argument.desc">true</stringProp>
  18134. </elementProp>
  18135. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  18136. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18137. <stringProp name="Argument.value">0</stringProp>
  18138. <stringProp name="Argument.metadata">=</stringProp>
  18139. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18140. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  18141. <stringProp name="Argument.desc">true</stringProp>
  18142. </elementProp>
  18143. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  18144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18145. <stringProp name="Argument.value">file</stringProp>
  18146. <stringProp name="Argument.metadata">=</stringProp>
  18147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18148. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  18149. </elementProp>
  18150. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  18151. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18152. <stringProp name="Argument.value"/>
  18153. <stringProp name="Argument.metadata">=</stringProp>
  18154. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18155. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  18156. </elementProp>
  18157. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  18158. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18159. <stringProp name="Argument.value">1</stringProp>
  18160. <stringProp name="Argument.metadata">=</stringProp>
  18161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18162. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  18163. </elementProp>
  18164. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  18165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18166. <stringProp name="Argument.value">Original Link</stringProp>
  18167. <stringProp name="Argument.metadata">=</stringProp>
  18168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18169. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  18170. </elementProp>
  18171. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  18172. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18173. <stringProp name="Argument.value">file</stringProp>
  18174. <stringProp name="Argument.metadata">=</stringProp>
  18175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18176. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  18177. </elementProp>
  18178. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  18179. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18180. <stringProp name="Argument.value">${sample_file}</stringProp>
  18181. <stringProp name="Argument.metadata">=</stringProp>
  18182. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18183. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  18184. <stringProp name="Argument.desc">true</stringProp>
  18185. </elementProp>
  18186. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  18187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18188. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  18189. <stringProp name="Argument.metadata">=</stringProp>
  18190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18191. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  18192. <stringProp name="Argument.desc">true</stringProp>
  18193. </elementProp>
  18194. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  18195. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18196. <stringProp name="Argument.value">14</stringProp>
  18197. <stringProp name="Argument.metadata">=</stringProp>
  18198. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18199. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  18200. <stringProp name="Argument.desc">true</stringProp>
  18201. </elementProp>
  18202. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  18203. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18204. <stringProp name="Argument.value">new</stringProp>
  18205. <stringProp name="Argument.metadata">=</stringProp>
  18206. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18207. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  18208. <stringProp name="Argument.desc">true</stringProp>
  18209. </elementProp>
  18210. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  18211. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18212. <stringProp name="Argument.value">0</stringProp>
  18213. <stringProp name="Argument.metadata">=</stringProp>
  18214. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18215. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  18216. <stringProp name="Argument.desc">true</stringProp>
  18217. </elementProp>
  18218. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  18219. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18220. <stringProp name="Argument.value"/>
  18221. <stringProp name="Argument.metadata">=</stringProp>
  18222. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18223. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  18224. <stringProp name="Argument.desc">true</stringProp>
  18225. </elementProp>
  18226. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  18227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18228. <stringProp name="Argument.value">1</stringProp>
  18229. <stringProp name="Argument.metadata">=</stringProp>
  18230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18231. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  18232. <stringProp name="Argument.desc">true</stringProp>
  18233. </elementProp>
  18234. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  18235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18236. <stringProp name="Argument.value">Sample Link</stringProp>
  18237. <stringProp name="Argument.metadata">=</stringProp>
  18238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18239. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  18240. <stringProp name="Argument.desc">true</stringProp>
  18241. </elementProp>
  18242. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  18243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18244. <stringProp name="Argument.value">file</stringProp>
  18245. <stringProp name="Argument.metadata">=</stringProp>
  18246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18247. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  18248. <stringProp name="Argument.desc">true</stringProp>
  18249. </elementProp>
  18250. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  18251. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18252. <stringProp name="Argument.value">1</stringProp>
  18253. <stringProp name="Argument.metadata">=</stringProp>
  18254. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18255. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  18256. <stringProp name="Argument.desc">false</stringProp>
  18257. </elementProp>
  18258. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  18259. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18260. <stringProp name="Argument.value">4</stringProp>
  18261. <stringProp name="Argument.metadata">=</stringProp>
  18262. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18263. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  18264. <stringProp name="Argument.desc">false</stringProp>
  18265. </elementProp>
  18266. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  18267. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18268. <stringProp name="Argument.value"/>
  18269. <stringProp name="Argument.metadata">=</stringProp>
  18270. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18271. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  18272. <stringProp name="Argument.desc">false</stringProp>
  18273. </elementProp>
  18274. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  18275. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18276. <stringProp name="Argument.value">${related_product_id}</stringProp>
  18277. <stringProp name="Argument.metadata">=</stringProp>
  18278. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18279. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  18280. </elementProp>
  18281. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  18282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18283. <stringProp name="Argument.value">1</stringProp>
  18284. <stringProp name="Argument.metadata">=</stringProp>
  18285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18286. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  18287. </elementProp>
  18288. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  18289. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18290. <stringProp name="Argument.value">${related_product_id}</stringProp>
  18291. <stringProp name="Argument.metadata">=</stringProp>
  18292. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18293. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  18294. </elementProp>
  18295. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  18296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18297. <stringProp name="Argument.value">1</stringProp>
  18298. <stringProp name="Argument.metadata">=</stringProp>
  18299. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18300. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  18301. </elementProp>
  18302. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  18303. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18304. <stringProp name="Argument.value">${related_product_id}</stringProp>
  18305. <stringProp name="Argument.metadata">=</stringProp>
  18306. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18307. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  18308. </elementProp>
  18309. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  18310. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18311. <stringProp name="Argument.value">1</stringProp>
  18312. <stringProp name="Argument.metadata">=</stringProp>
  18313. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18314. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  18315. </elementProp>
  18316. </collectionProp>
  18317. </elementProp>
  18318. <stringProp name="HTTPSampler.domain"/>
  18319. <stringProp name="HTTPSampler.port"/>
  18320. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  18321. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  18322. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  18323. <stringProp name="HTTPSampler.contentEncoding"/>
  18324. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/</stringProp>
  18325. <stringProp name="HTTPSampler.method">POST</stringProp>
  18326. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  18327. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  18328. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  18329. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  18330. <boolProp name="HTTPSampler.monitor">false</boolProp>
  18331. <stringProp name="HTTPSampler.embedded_url_re"/>
  18332. </HTTPSamplerProxy>
  18333. <hashTree>
  18334. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  18335. <collectionProp name="Asserion.test_strings">
  18336. <stringProp name="1853918323">{"error":false}</stringProp>
  18337. </collectionProp>
  18338. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  18339. <boolProp name="Assertion.assume_success">false</boolProp>
  18340. <intProp name="Assertion.test_type">2</intProp>
  18341. </ResponseAssertion>
  18342. <hashTree/>
  18343. </hashTree>
  18344. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Save" enabled="true">
  18345. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  18346. <collectionProp name="Arguments.arguments">
  18347. <elementProp name="ajax" elementType="HTTPArgument">
  18348. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18349. <stringProp name="Argument.value">true</stringProp>
  18350. <stringProp name="Argument.metadata">=</stringProp>
  18351. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18352. <stringProp name="Argument.name">ajax</stringProp>
  18353. <stringProp name="Argument.desc">false</stringProp>
  18354. </elementProp>
  18355. <elementProp name="isAjax" elementType="HTTPArgument">
  18356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18357. <stringProp name="Argument.value">true</stringProp>
  18358. <stringProp name="Argument.metadata">=</stringProp>
  18359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18360. <stringProp name="Argument.name">isAjax</stringProp>
  18361. <stringProp name="Argument.desc">false</stringProp>
  18362. </elementProp>
  18363. <elementProp name="form_key" elementType="HTTPArgument">
  18364. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18365. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  18366. <stringProp name="Argument.metadata">=</stringProp>
  18367. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18368. <stringProp name="Argument.name">form_key</stringProp>
  18369. <stringProp name="Argument.desc">false</stringProp>
  18370. </elementProp>
  18371. <elementProp name="product[name]" elementType="HTTPArgument">
  18372. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18373. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  18374. <stringProp name="Argument.metadata">=</stringProp>
  18375. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18376. <stringProp name="Argument.name">product[name]</stringProp>
  18377. <stringProp name="Argument.desc">false</stringProp>
  18378. </elementProp>
  18379. <elementProp name="product[sku]" elementType="HTTPArgument">
  18380. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18381. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  18382. <stringProp name="Argument.metadata">=</stringProp>
  18383. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18384. <stringProp name="Argument.name">product[sku]</stringProp>
  18385. <stringProp name="Argument.desc">false</stringProp>
  18386. </elementProp>
  18387. <elementProp name="product[price]" elementType="HTTPArgument">
  18388. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18389. <stringProp name="Argument.value">123</stringProp>
  18390. <stringProp name="Argument.metadata">=</stringProp>
  18391. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18392. <stringProp name="Argument.name">product[price]</stringProp>
  18393. </elementProp>
  18394. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  18395. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18396. <stringProp name="Argument.value">2</stringProp>
  18397. <stringProp name="Argument.metadata">=</stringProp>
  18398. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18399. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  18400. </elementProp>
  18401. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  18402. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18403. <stringProp name="Argument.value">111</stringProp>
  18404. <stringProp name="Argument.metadata">=</stringProp>
  18405. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18406. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  18407. </elementProp>
  18408. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  18409. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18410. <stringProp name="Argument.value">1</stringProp>
  18411. <stringProp name="Argument.metadata">=</stringProp>
  18412. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18413. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  18414. </elementProp>
  18415. <elementProp name="product[weight]" elementType="HTTPArgument">
  18416. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18417. <stringProp name="Argument.value">1.0000</stringProp>
  18418. <stringProp name="Argument.metadata">=</stringProp>
  18419. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18420. <stringProp name="Argument.name">product[weight]</stringProp>
  18421. </elementProp>
  18422. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  18423. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18424. <stringProp name="Argument.value">2</stringProp>
  18425. <stringProp name="Argument.metadata">=</stringProp>
  18426. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18427. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  18428. </elementProp>
  18429. <elementProp name="product[description]" elementType="HTTPArgument">
  18430. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18431. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  18432. <stringProp name="Argument.metadata">=</stringProp>
  18433. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18434. <stringProp name="Argument.name">product[description]</stringProp>
  18435. </elementProp>
  18436. <elementProp name="product[short_description]" elementType="HTTPArgument">
  18437. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18438. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  18439. <stringProp name="Argument.metadata">=</stringProp>
  18440. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18441. <stringProp name="Argument.name">product[short_description]</stringProp>
  18442. <stringProp name="Argument.desc">false</stringProp>
  18443. </elementProp>
  18444. <elementProp name="product[status]" elementType="HTTPArgument">
  18445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18446. <stringProp name="Argument.value">1</stringProp>
  18447. <stringProp name="Argument.metadata">=</stringProp>
  18448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18449. <stringProp name="Argument.name">product[status]</stringProp>
  18450. </elementProp>
  18451. <elementProp name="product[image]" elementType="HTTPArgument">
  18452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18453. <stringProp name="Argument.value"/>
  18454. <stringProp name="Argument.metadata">=</stringProp>
  18455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18456. <stringProp name="Argument.name">product[image]</stringProp>
  18457. </elementProp>
  18458. <elementProp name="product[small_image]" elementType="HTTPArgument">
  18459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18460. <stringProp name="Argument.value"/>
  18461. <stringProp name="Argument.metadata">=</stringProp>
  18462. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18463. <stringProp name="Argument.name">product[small_image]</stringProp>
  18464. </elementProp>
  18465. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  18466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18467. <stringProp name="Argument.value"/>
  18468. <stringProp name="Argument.metadata">=</stringProp>
  18469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18470. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  18471. </elementProp>
  18472. <elementProp name="product[url_key]" elementType="HTTPArgument">
  18473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18474. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  18475. <stringProp name="Argument.metadata">=</stringProp>
  18476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18477. <stringProp name="Argument.name">product[url_key]</stringProp>
  18478. </elementProp>
  18479. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  18480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18481. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  18482. <stringProp name="Argument.metadata">=</stringProp>
  18483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18484. <stringProp name="Argument.name">product[meta_title]</stringProp>
  18485. </elementProp>
  18486. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  18487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18488. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  18489. <stringProp name="Argument.metadata">=</stringProp>
  18490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18491. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  18492. </elementProp>
  18493. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  18494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18495. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  18496. <stringProp name="Argument.metadata">=</stringProp>
  18497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18498. <stringProp name="Argument.name">product[meta_description]</stringProp>
  18499. </elementProp>
  18500. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  18501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18502. <stringProp name="Argument.value">1</stringProp>
  18503. <stringProp name="Argument.metadata">=</stringProp>
  18504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18505. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  18506. </elementProp>
  18507. <elementProp name="product[special_price]" elementType="HTTPArgument">
  18508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18509. <stringProp name="Argument.value">99</stringProp>
  18510. <stringProp name="Argument.metadata">=</stringProp>
  18511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18512. <stringProp name="Argument.name">product[special_price]</stringProp>
  18513. </elementProp>
  18514. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  18515. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18516. <stringProp name="Argument.value"/>
  18517. <stringProp name="Argument.metadata">=</stringProp>
  18518. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18519. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  18520. </elementProp>
  18521. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  18522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18523. <stringProp name="Argument.value"/>
  18524. <stringProp name="Argument.metadata">=</stringProp>
  18525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18526. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  18527. </elementProp>
  18528. <elementProp name="product[cost]" elementType="HTTPArgument">
  18529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18530. <stringProp name="Argument.value"/>
  18531. <stringProp name="Argument.metadata">=</stringProp>
  18532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18533. <stringProp name="Argument.name">product[cost]</stringProp>
  18534. </elementProp>
  18535. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  18536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18537. <stringProp name="Argument.value">0</stringProp>
  18538. <stringProp name="Argument.metadata">=</stringProp>
  18539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18540. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  18541. </elementProp>
  18542. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  18543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18544. <stringProp name="Argument.value">32000</stringProp>
  18545. <stringProp name="Argument.metadata">=</stringProp>
  18546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18547. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  18548. </elementProp>
  18549. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  18550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18551. <stringProp name="Argument.value">100</stringProp>
  18552. <stringProp name="Argument.metadata">=</stringProp>
  18553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18554. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  18555. </elementProp>
  18556. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  18557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18558. <stringProp name="Argument.value">90</stringProp>
  18559. <stringProp name="Argument.metadata">=</stringProp>
  18560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18561. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  18562. </elementProp>
  18563. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  18564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18565. <stringProp name="Argument.value"/>
  18566. <stringProp name="Argument.metadata">=</stringProp>
  18567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18568. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  18569. </elementProp>
  18570. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  18571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18572. <stringProp name="Argument.value">0</stringProp>
  18573. <stringProp name="Argument.metadata">=</stringProp>
  18574. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18575. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  18576. </elementProp>
  18577. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  18578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18579. <stringProp name="Argument.value">1</stringProp>
  18580. <stringProp name="Argument.metadata">=</stringProp>
  18581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18582. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  18583. </elementProp>
  18584. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  18585. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18586. <stringProp name="Argument.value">101</stringProp>
  18587. <stringProp name="Argument.metadata">=</stringProp>
  18588. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18589. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  18590. </elementProp>
  18591. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  18592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18593. <stringProp name="Argument.value">99</stringProp>
  18594. <stringProp name="Argument.metadata">=</stringProp>
  18595. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18596. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  18597. </elementProp>
  18598. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  18599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18600. <stringProp name="Argument.value"/>
  18601. <stringProp name="Argument.metadata">=</stringProp>
  18602. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18603. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  18604. </elementProp>
  18605. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  18606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18607. <stringProp name="Argument.value">1</stringProp>
  18608. <stringProp name="Argument.metadata">=</stringProp>
  18609. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18610. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  18611. </elementProp>
  18612. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  18613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18614. <stringProp name="Argument.value">100500</stringProp>
  18615. <stringProp name="Argument.metadata">=</stringProp>
  18616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18617. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  18618. </elementProp>
  18619. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  18620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18621. <stringProp name="Argument.value">100500</stringProp>
  18622. <stringProp name="Argument.metadata">=</stringProp>
  18623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18624. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  18625. </elementProp>
  18626. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  18627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18628. <stringProp name="Argument.value">0</stringProp>
  18629. <stringProp name="Argument.metadata">=</stringProp>
  18630. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18631. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  18632. </elementProp>
  18633. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  18634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18635. <stringProp name="Argument.value">1</stringProp>
  18636. <stringProp name="Argument.metadata">=</stringProp>
  18637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18638. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  18639. </elementProp>
  18640. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  18641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18642. <stringProp name="Argument.value">1</stringProp>
  18643. <stringProp name="Argument.metadata">=</stringProp>
  18644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18645. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  18646. </elementProp>
  18647. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  18648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18649. <stringProp name="Argument.value">1</stringProp>
  18650. <stringProp name="Argument.metadata">=</stringProp>
  18651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18652. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  18653. </elementProp>
  18654. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  18655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18656. <stringProp name="Argument.value">10000</stringProp>
  18657. <stringProp name="Argument.metadata">=</stringProp>
  18658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18659. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  18660. </elementProp>
  18661. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  18662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18663. <stringProp name="Argument.value">1</stringProp>
  18664. <stringProp name="Argument.metadata">=</stringProp>
  18665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18666. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  18667. </elementProp>
  18668. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  18669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18670. <stringProp name="Argument.value">0</stringProp>
  18671. <stringProp name="Argument.metadata">=</stringProp>
  18672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18673. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  18674. </elementProp>
  18675. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  18676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18677. <stringProp name="Argument.value">0</stringProp>
  18678. <stringProp name="Argument.metadata">=</stringProp>
  18679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18680. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  18681. </elementProp>
  18682. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  18683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18684. <stringProp name="Argument.value">0</stringProp>
  18685. <stringProp name="Argument.metadata">=</stringProp>
  18686. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18687. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  18688. </elementProp>
  18689. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  18690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18691. <stringProp name="Argument.value">1</stringProp>
  18692. <stringProp name="Argument.metadata">=</stringProp>
  18693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18694. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  18695. </elementProp>
  18696. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  18697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18698. <stringProp name="Argument.value">1</stringProp>
  18699. <stringProp name="Argument.metadata">=</stringProp>
  18700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18701. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  18702. </elementProp>
  18703. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  18704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18705. <stringProp name="Argument.value">1</stringProp>
  18706. <stringProp name="Argument.metadata">=</stringProp>
  18707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18708. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  18709. </elementProp>
  18710. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  18711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18712. <stringProp name="Argument.value">0</stringProp>
  18713. <stringProp name="Argument.metadata">=</stringProp>
  18714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18715. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  18716. </elementProp>
  18717. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  18718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18719. <stringProp name="Argument.value">0</stringProp>
  18720. <stringProp name="Argument.metadata">=</stringProp>
  18721. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18722. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  18723. </elementProp>
  18724. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  18725. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18726. <stringProp name="Argument.value">1</stringProp>
  18727. <stringProp name="Argument.metadata">=</stringProp>
  18728. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18729. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  18730. </elementProp>
  18731. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  18732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18733. <stringProp name="Argument.value">1</stringProp>
  18734. <stringProp name="Argument.metadata">=</stringProp>
  18735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18736. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  18737. </elementProp>
  18738. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  18739. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18740. <stringProp name="Argument.value"/>
  18741. <stringProp name="Argument.metadata">=</stringProp>
  18742. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18743. <stringProp name="Argument.name">product[custom_design]</stringProp>
  18744. </elementProp>
  18745. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  18746. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18747. <stringProp name="Argument.value"/>
  18748. <stringProp name="Argument.metadata">=</stringProp>
  18749. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18750. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  18751. </elementProp>
  18752. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  18753. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18754. <stringProp name="Argument.value"/>
  18755. <stringProp name="Argument.metadata">=</stringProp>
  18756. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18757. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  18758. </elementProp>
  18759. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  18760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18761. <stringProp name="Argument.value"/>
  18762. <stringProp name="Argument.metadata">=</stringProp>
  18763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18764. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  18765. </elementProp>
  18766. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  18767. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18768. <stringProp name="Argument.value"/>
  18769. <stringProp name="Argument.metadata">=</stringProp>
  18770. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18771. <stringProp name="Argument.name">product[page_layout]</stringProp>
  18772. </elementProp>
  18773. <elementProp name="product[options_container]" elementType="HTTPArgument">
  18774. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18775. <stringProp name="Argument.value">container2</stringProp>
  18776. <stringProp name="Argument.metadata">=</stringProp>
  18777. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18778. <stringProp name="Argument.name">product[options_container]</stringProp>
  18779. </elementProp>
  18780. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  18781. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18782. <stringProp name="Argument.value">${original_file}</stringProp>
  18783. <stringProp name="Argument.metadata">=</stringProp>
  18784. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18785. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  18786. <stringProp name="Argument.desc">false</stringProp>
  18787. </elementProp>
  18788. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  18789. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18790. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  18791. <stringProp name="Argument.metadata">=</stringProp>
  18792. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18793. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  18794. <stringProp name="Argument.desc">false</stringProp>
  18795. </elementProp>
  18796. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  18797. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18798. <stringProp name="Argument.value">13</stringProp>
  18799. <stringProp name="Argument.metadata">=</stringProp>
  18800. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18801. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  18802. <stringProp name="Argument.desc">false</stringProp>
  18803. </elementProp>
  18804. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  18805. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18806. <stringProp name="Argument.value">new</stringProp>
  18807. <stringProp name="Argument.metadata">=</stringProp>
  18808. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18809. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  18810. <stringProp name="Argument.desc">false</stringProp>
  18811. </elementProp>
  18812. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  18813. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18814. <stringProp name="Argument.value">1</stringProp>
  18815. <stringProp name="Argument.metadata">=</stringProp>
  18816. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18817. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  18818. <stringProp name="Argument.desc">true</stringProp>
  18819. </elementProp>
  18820. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  18821. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18822. <stringProp name="Argument.value">0</stringProp>
  18823. <stringProp name="Argument.metadata">=</stringProp>
  18824. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18825. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  18826. <stringProp name="Argument.desc">true</stringProp>
  18827. </elementProp>
  18828. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  18829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18830. <stringProp name="Argument.value"/>
  18831. <stringProp name="Argument.metadata">=</stringProp>
  18832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18833. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  18834. <stringProp name="Argument.desc">true</stringProp>
  18835. </elementProp>
  18836. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  18837. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18838. <stringProp name="Argument.value">0</stringProp>
  18839. <stringProp name="Argument.metadata">=</stringProp>
  18840. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18841. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  18842. <stringProp name="Argument.desc">false</stringProp>
  18843. </elementProp>
  18844. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  18845. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18846. <stringProp name="Argument.value">120</stringProp>
  18847. <stringProp name="Argument.metadata">=</stringProp>
  18848. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18849. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  18850. <stringProp name="Argument.desc">false</stringProp>
  18851. </elementProp>
  18852. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  18853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18854. <stringProp name="Argument.value">0</stringProp>
  18855. <stringProp name="Argument.metadata">=</stringProp>
  18856. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18857. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  18858. <stringProp name="Argument.desc">false</stringProp>
  18859. </elementProp>
  18860. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  18861. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18862. <stringProp name="Argument.value">file</stringProp>
  18863. <stringProp name="Argument.metadata">=</stringProp>
  18864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18865. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  18866. <stringProp name="Argument.desc">true</stringProp>
  18867. </elementProp>
  18868. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  18869. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18870. <stringProp name="Argument.value"/>
  18871. <stringProp name="Argument.metadata">=</stringProp>
  18872. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18873. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  18874. <stringProp name="Argument.desc">true</stringProp>
  18875. </elementProp>
  18876. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  18877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18878. <stringProp name="Argument.value">1</stringProp>
  18879. <stringProp name="Argument.metadata">=</stringProp>
  18880. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18881. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  18882. <stringProp name="Argument.desc">true</stringProp>
  18883. </elementProp>
  18884. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  18885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18886. <stringProp name="Argument.value">Original Link</stringProp>
  18887. <stringProp name="Argument.metadata">=</stringProp>
  18888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18889. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  18890. <stringProp name="Argument.desc">true</stringProp>
  18891. </elementProp>
  18892. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  18893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18894. <stringProp name="Argument.value">file</stringProp>
  18895. <stringProp name="Argument.metadata">=</stringProp>
  18896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18897. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  18898. <stringProp name="Argument.desc">true</stringProp>
  18899. </elementProp>
  18900. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  18901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18902. <stringProp name="Argument.value">${sample_file}</stringProp>
  18903. <stringProp name="Argument.metadata">=</stringProp>
  18904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18905. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  18906. <stringProp name="Argument.desc">true</stringProp>
  18907. </elementProp>
  18908. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  18909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18910. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  18911. <stringProp name="Argument.metadata">=</stringProp>
  18912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18913. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  18914. <stringProp name="Argument.desc">true</stringProp>
  18915. </elementProp>
  18916. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  18917. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18918. <stringProp name="Argument.value">14</stringProp>
  18919. <stringProp name="Argument.metadata">=</stringProp>
  18920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18921. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  18922. <stringProp name="Argument.desc">true</stringProp>
  18923. </elementProp>
  18924. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  18925. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18926. <stringProp name="Argument.value">new</stringProp>
  18927. <stringProp name="Argument.metadata">=</stringProp>
  18928. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18929. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  18930. <stringProp name="Argument.desc">true</stringProp>
  18931. </elementProp>
  18932. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  18933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18934. <stringProp name="Argument.value">0</stringProp>
  18935. <stringProp name="Argument.metadata">=</stringProp>
  18936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18937. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  18938. <stringProp name="Argument.desc">true</stringProp>
  18939. </elementProp>
  18940. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  18941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18942. <stringProp name="Argument.value"/>
  18943. <stringProp name="Argument.metadata">=</stringProp>
  18944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18945. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  18946. <stringProp name="Argument.desc">true</stringProp>
  18947. </elementProp>
  18948. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  18949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18950. <stringProp name="Argument.value">1</stringProp>
  18951. <stringProp name="Argument.metadata">=</stringProp>
  18952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18953. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  18954. <stringProp name="Argument.desc">true</stringProp>
  18955. </elementProp>
  18956. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  18957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18958. <stringProp name="Argument.value">Sample Link</stringProp>
  18959. <stringProp name="Argument.metadata">=</stringProp>
  18960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18961. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  18962. <stringProp name="Argument.desc">true</stringProp>
  18963. </elementProp>
  18964. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  18965. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18966. <stringProp name="Argument.value">file</stringProp>
  18967. <stringProp name="Argument.metadata">=</stringProp>
  18968. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18969. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  18970. <stringProp name="Argument.desc">true</stringProp>
  18971. </elementProp>
  18972. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  18973. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18974. <stringProp name="Argument.value">1</stringProp>
  18975. <stringProp name="Argument.metadata">=</stringProp>
  18976. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18977. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  18978. <stringProp name="Argument.desc">false</stringProp>
  18979. </elementProp>
  18980. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  18981. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18982. <stringProp name="Argument.value">4</stringProp>
  18983. <stringProp name="Argument.metadata">=</stringProp>
  18984. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18985. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  18986. <stringProp name="Argument.desc">false</stringProp>
  18987. </elementProp>
  18988. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  18989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18990. <stringProp name="Argument.value"/>
  18991. <stringProp name="Argument.metadata">=</stringProp>
  18992. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  18993. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  18994. <stringProp name="Argument.desc">false</stringProp>
  18995. </elementProp>
  18996. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  18997. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  18998. <stringProp name="Argument.value">${related_product_id}</stringProp>
  18999. <stringProp name="Argument.metadata">=</stringProp>
  19000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19001. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  19002. </elementProp>
  19003. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  19004. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19005. <stringProp name="Argument.value">1</stringProp>
  19006. <stringProp name="Argument.metadata">=</stringProp>
  19007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19008. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  19009. </elementProp>
  19010. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  19011. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19012. <stringProp name="Argument.value">${related_product_id}</stringProp>
  19013. <stringProp name="Argument.metadata">=</stringProp>
  19014. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19015. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  19016. </elementProp>
  19017. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  19018. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19019. <stringProp name="Argument.value">1</stringProp>
  19020. <stringProp name="Argument.metadata">=</stringProp>
  19021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19022. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  19023. </elementProp>
  19024. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  19025. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19026. <stringProp name="Argument.value">${related_product_id}</stringProp>
  19027. <stringProp name="Argument.metadata">=</stringProp>
  19028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19029. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  19030. </elementProp>
  19031. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  19032. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19033. <stringProp name="Argument.value">1</stringProp>
  19034. <stringProp name="Argument.metadata">=</stringProp>
  19035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19036. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  19037. </elementProp>
  19038. </collectionProp>
  19039. </elementProp>
  19040. <stringProp name="HTTPSampler.domain"/>
  19041. <stringProp name="HTTPSampler.port"/>
  19042. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  19043. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  19044. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  19045. <stringProp name="HTTPSampler.contentEncoding"/>
  19046. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/</stringProp>
  19047. <stringProp name="HTTPSampler.method">POST</stringProp>
  19048. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  19049. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  19050. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  19051. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  19052. <boolProp name="HTTPSampler.monitor">false</boolProp>
  19053. <stringProp name="HTTPSampler.embedded_url_re"/>
  19054. </HTTPSamplerProxy>
  19055. <hashTree>
  19056. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  19057. <collectionProp name="Asserion.test_strings">
  19058. <stringProp name="-583471546">You saved the product</stringProp>
  19059. </collectionProp>
  19060. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  19061. <boolProp name="Assertion.assume_success">false</boolProp>
  19062. <intProp name="Assertion.test_type">2</intProp>
  19063. </ResponseAssertion>
  19064. <hashTree/>
  19065. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  19066. <collectionProp name="Asserion.test_strings">
  19067. <stringProp name="-1600986843">violation</stringProp>
  19068. </collectionProp>
  19069. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  19070. <boolProp name="Assertion.assume_success">false</boolProp>
  19071. <intProp name="Assertion.test_type">6</intProp>
  19072. </ResponseAssertion>
  19073. <hashTree/>
  19074. </hashTree>
  19075. </hashTree>
  19076. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Simple Product" enabled="true">
  19077. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_simple_product.jmx</stringProp>
  19078. </TestFragmentController>
  19079. <hashTree>
  19080. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  19081. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  19082. <collectionProp name="Arguments.arguments"/>
  19083. </elementProp>
  19084. <stringProp name="HTTPSampler.domain"/>
  19085. <stringProp name="HTTPSampler.port"/>
  19086. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  19087. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  19088. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  19089. <stringProp name="HTTPSampler.contentEncoding"/>
  19090. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  19091. <stringProp name="HTTPSampler.method">GET</stringProp>
  19092. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  19093. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  19094. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  19095. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  19096. <boolProp name="HTTPSampler.monitor">false</boolProp>
  19097. <stringProp name="HTTPSampler.embedded_url_re"/>
  19098. </HTTPSamplerProxy>
  19099. <hashTree>
  19100. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  19101. <collectionProp name="Asserion.test_strings">
  19102. <stringProp name="1509986340">records found</stringProp>
  19103. </collectionProp>
  19104. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  19105. <boolProp name="Assertion.assume_success">false</boolProp>
  19106. <intProp name="Assertion.test_type">2</intProp>
  19107. </ResponseAssertion>
  19108. <hashTree/>
  19109. </hashTree>
  19110. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product" enabled="true">
  19111. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  19112. <collectionProp name="Arguments.arguments"/>
  19113. </elementProp>
  19114. <stringProp name="HTTPSampler.domain"/>
  19115. <stringProp name="HTTPSampler.port"/>
  19116. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  19117. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  19118. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  19119. <stringProp name="HTTPSampler.contentEncoding"/>
  19120. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/simple/</stringProp>
  19121. <stringProp name="HTTPSampler.method">GET</stringProp>
  19122. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  19123. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  19124. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  19125. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  19126. <boolProp name="HTTPSampler.monitor">false</boolProp>
  19127. <stringProp name="HTTPSampler.embedded_url_re"/>
  19128. </HTTPSamplerProxy>
  19129. <hashTree>
  19130. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  19131. <collectionProp name="Asserion.test_strings">
  19132. <stringProp name="-144461265">New Product</stringProp>
  19133. </collectionProp>
  19134. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  19135. <boolProp name="Assertion.assume_success">false</boolProp>
  19136. <intProp name="Assertion.test_type">2</intProp>
  19137. </ResponseAssertion>
  19138. <hashTree/>
  19139. </hashTree>
  19140. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Validate" enabled="true">
  19141. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  19142. <collectionProp name="Arguments.arguments">
  19143. <elementProp name="ajax" elementType="HTTPArgument">
  19144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19145. <stringProp name="Argument.value">true</stringProp>
  19146. <stringProp name="Argument.metadata">=</stringProp>
  19147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19148. <stringProp name="Argument.name">ajax</stringProp>
  19149. <stringProp name="Argument.desc">false</stringProp>
  19150. </elementProp>
  19151. <elementProp name="isAjax" elementType="HTTPArgument">
  19152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19153. <stringProp name="Argument.value">true</stringProp>
  19154. <stringProp name="Argument.metadata">=</stringProp>
  19155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19156. <stringProp name="Argument.name">isAjax</stringProp>
  19157. <stringProp name="Argument.desc">false</stringProp>
  19158. </elementProp>
  19159. <elementProp name="form_key" elementType="HTTPArgument">
  19160. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19161. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  19162. <stringProp name="Argument.metadata">=</stringProp>
  19163. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19164. <stringProp name="Argument.name">form_key</stringProp>
  19165. <stringProp name="Argument.desc">false</stringProp>
  19166. </elementProp>
  19167. <elementProp name="product[name]" elementType="HTTPArgument">
  19168. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19169. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  19170. <stringProp name="Argument.metadata">=</stringProp>
  19171. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19172. <stringProp name="Argument.name">product[name]</stringProp>
  19173. <stringProp name="Argument.desc">false</stringProp>
  19174. </elementProp>
  19175. <elementProp name="product[sku]" elementType="HTTPArgument">
  19176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19177. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  19178. <stringProp name="Argument.metadata">=</stringProp>
  19179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19180. <stringProp name="Argument.name">product[sku]</stringProp>
  19181. <stringProp name="Argument.desc">false</stringProp>
  19182. </elementProp>
  19183. <elementProp name="product[price]" elementType="HTTPArgument">
  19184. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19185. <stringProp name="Argument.value">123</stringProp>
  19186. <stringProp name="Argument.metadata">=</stringProp>
  19187. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19188. <stringProp name="Argument.name">product[price]</stringProp>
  19189. </elementProp>
  19190. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  19191. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19192. <stringProp name="Argument.value">2</stringProp>
  19193. <stringProp name="Argument.metadata">=</stringProp>
  19194. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19195. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  19196. </elementProp>
  19197. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  19198. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19199. <stringProp name="Argument.value">111</stringProp>
  19200. <stringProp name="Argument.metadata">=</stringProp>
  19201. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19202. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  19203. </elementProp>
  19204. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  19205. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19206. <stringProp name="Argument.value">1</stringProp>
  19207. <stringProp name="Argument.metadata">=</stringProp>
  19208. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19209. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  19210. </elementProp>
  19211. <elementProp name="product[weight]" elementType="HTTPArgument">
  19212. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19213. <stringProp name="Argument.value">1.0000</stringProp>
  19214. <stringProp name="Argument.metadata">=</stringProp>
  19215. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19216. <stringProp name="Argument.name">product[weight]</stringProp>
  19217. </elementProp>
  19218. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  19219. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19220. <stringProp name="Argument.value">1</stringProp>
  19221. <stringProp name="Argument.metadata">=</stringProp>
  19222. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19223. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  19224. <stringProp name="Argument.desc">true</stringProp>
  19225. </elementProp>
  19226. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  19227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19228. <stringProp name="Argument.value">2</stringProp>
  19229. <stringProp name="Argument.metadata">=</stringProp>
  19230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19231. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  19232. </elementProp>
  19233. <elementProp name="product[description]" elementType="HTTPArgument">
  19234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19235. <stringProp name="Argument.value">&lt;p&gt;Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  19236. <stringProp name="Argument.metadata">=</stringProp>
  19237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19238. <stringProp name="Argument.name">product[description]</stringProp>
  19239. </elementProp>
  19240. <elementProp name="product[short_description]" elementType="HTTPArgument">
  19241. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19242. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  19243. <stringProp name="Argument.metadata">=</stringProp>
  19244. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19245. <stringProp name="Argument.name">product[short_description]</stringProp>
  19246. </elementProp>
  19247. <elementProp name="product[status]" elementType="HTTPArgument">
  19248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19249. <stringProp name="Argument.value">1</stringProp>
  19250. <stringProp name="Argument.metadata">=</stringProp>
  19251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19252. <stringProp name="Argument.name">product[status]</stringProp>
  19253. </elementProp>
  19254. <elementProp name="product[image]" elementType="HTTPArgument">
  19255. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19256. <stringProp name="Argument.value"/>
  19257. <stringProp name="Argument.metadata">=</stringProp>
  19258. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19259. <stringProp name="Argument.name">product[image]</stringProp>
  19260. </elementProp>
  19261. <elementProp name="product[small_image]" elementType="HTTPArgument">
  19262. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19263. <stringProp name="Argument.value"/>
  19264. <stringProp name="Argument.metadata">=</stringProp>
  19265. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19266. <stringProp name="Argument.name">product[small_image]</stringProp>
  19267. </elementProp>
  19268. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  19269. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19270. <stringProp name="Argument.value"/>
  19271. <stringProp name="Argument.metadata">=</stringProp>
  19272. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19273. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  19274. </elementProp>
  19275. <elementProp name="product[url_key]" elementType="HTTPArgument">
  19276. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19277. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  19278. <stringProp name="Argument.metadata">=</stringProp>
  19279. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19280. <stringProp name="Argument.name">product[url_key]</stringProp>
  19281. </elementProp>
  19282. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  19283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19284. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  19285. <stringProp name="Argument.metadata">=</stringProp>
  19286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19287. <stringProp name="Argument.name">product[meta_title]</stringProp>
  19288. </elementProp>
  19289. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  19290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19291. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  19292. <stringProp name="Argument.metadata">=</stringProp>
  19293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19294. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  19295. </elementProp>
  19296. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  19297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19298. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  19299. <stringProp name="Argument.metadata">=</stringProp>
  19300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19301. <stringProp name="Argument.name">product[meta_description]</stringProp>
  19302. </elementProp>
  19303. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  19304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19305. <stringProp name="Argument.value">1</stringProp>
  19306. <stringProp name="Argument.metadata">=</stringProp>
  19307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19308. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  19309. </elementProp>
  19310. <elementProp name="product[special_price]" elementType="HTTPArgument">
  19311. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19312. <stringProp name="Argument.value">99</stringProp>
  19313. <stringProp name="Argument.metadata">=</stringProp>
  19314. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19315. <stringProp name="Argument.name">product[special_price]</stringProp>
  19316. </elementProp>
  19317. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  19318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19319. <stringProp name="Argument.value">1</stringProp>
  19320. <stringProp name="Argument.metadata">=</stringProp>
  19321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19322. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  19323. </elementProp>
  19324. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  19325. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19326. <stringProp name="Argument.value"/>
  19327. <stringProp name="Argument.metadata">=</stringProp>
  19328. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19329. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  19330. </elementProp>
  19331. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  19332. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19333. <stringProp name="Argument.value"/>
  19334. <stringProp name="Argument.metadata">=</stringProp>
  19335. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19336. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  19337. </elementProp>
  19338. <elementProp name="product[cost]" elementType="HTTPArgument">
  19339. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19340. <stringProp name="Argument.value"/>
  19341. <stringProp name="Argument.metadata">=</stringProp>
  19342. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19343. <stringProp name="Argument.name">product[cost]</stringProp>
  19344. </elementProp>
  19345. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  19346. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19347. <stringProp name="Argument.value">0</stringProp>
  19348. <stringProp name="Argument.metadata">=</stringProp>
  19349. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19350. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  19351. </elementProp>
  19352. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  19353. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19354. <stringProp name="Argument.value">32000</stringProp>
  19355. <stringProp name="Argument.metadata">=</stringProp>
  19356. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19357. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  19358. </elementProp>
  19359. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  19360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19361. <stringProp name="Argument.value">100</stringProp>
  19362. <stringProp name="Argument.metadata">=</stringProp>
  19363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19364. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  19365. </elementProp>
  19366. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  19367. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19368. <stringProp name="Argument.value">90</stringProp>
  19369. <stringProp name="Argument.metadata">=</stringProp>
  19370. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19371. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  19372. </elementProp>
  19373. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  19374. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19375. <stringProp name="Argument.value"/>
  19376. <stringProp name="Argument.metadata">=</stringProp>
  19377. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19378. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  19379. </elementProp>
  19380. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  19381. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19382. <stringProp name="Argument.value">0</stringProp>
  19383. <stringProp name="Argument.metadata">=</stringProp>
  19384. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19385. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  19386. </elementProp>
  19387. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  19388. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19389. <stringProp name="Argument.value">1</stringProp>
  19390. <stringProp name="Argument.metadata">=</stringProp>
  19391. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19392. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  19393. </elementProp>
  19394. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  19395. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19396. <stringProp name="Argument.value">101</stringProp>
  19397. <stringProp name="Argument.metadata">=</stringProp>
  19398. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19399. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  19400. </elementProp>
  19401. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  19402. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19403. <stringProp name="Argument.value">99</stringProp>
  19404. <stringProp name="Argument.metadata">=</stringProp>
  19405. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19406. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  19407. </elementProp>
  19408. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  19409. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19410. <stringProp name="Argument.value"/>
  19411. <stringProp name="Argument.metadata">=</stringProp>
  19412. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19413. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  19414. </elementProp>
  19415. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  19416. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19417. <stringProp name="Argument.value">1</stringProp>
  19418. <stringProp name="Argument.metadata">=</stringProp>
  19419. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19420. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  19421. </elementProp>
  19422. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  19423. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19424. <stringProp name="Argument.value">100500</stringProp>
  19425. <stringProp name="Argument.metadata">=</stringProp>
  19426. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19427. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  19428. </elementProp>
  19429. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  19430. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19431. <stringProp name="Argument.value">100500</stringProp>
  19432. <stringProp name="Argument.metadata">=</stringProp>
  19433. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19434. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  19435. </elementProp>
  19436. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  19437. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19438. <stringProp name="Argument.value">0</stringProp>
  19439. <stringProp name="Argument.metadata">=</stringProp>
  19440. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19441. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  19442. </elementProp>
  19443. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  19444. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19445. <stringProp name="Argument.value">1</stringProp>
  19446. <stringProp name="Argument.metadata">=</stringProp>
  19447. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19448. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  19449. </elementProp>
  19450. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  19451. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19452. <stringProp name="Argument.value">1</stringProp>
  19453. <stringProp name="Argument.metadata">=</stringProp>
  19454. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19455. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  19456. </elementProp>
  19457. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  19458. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19459. <stringProp name="Argument.value">1</stringProp>
  19460. <stringProp name="Argument.metadata">=</stringProp>
  19461. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19462. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  19463. </elementProp>
  19464. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  19465. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19466. <stringProp name="Argument.value">10000</stringProp>
  19467. <stringProp name="Argument.metadata">=</stringProp>
  19468. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19469. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  19470. </elementProp>
  19471. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  19472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19473. <stringProp name="Argument.value">1</stringProp>
  19474. <stringProp name="Argument.metadata">=</stringProp>
  19475. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19476. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  19477. </elementProp>
  19478. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  19479. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19480. <stringProp name="Argument.value">0</stringProp>
  19481. <stringProp name="Argument.metadata">=</stringProp>
  19482. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19483. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  19484. </elementProp>
  19485. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  19486. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19487. <stringProp name="Argument.value">0</stringProp>
  19488. <stringProp name="Argument.metadata">=</stringProp>
  19489. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19490. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  19491. </elementProp>
  19492. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  19493. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19494. <stringProp name="Argument.value">0</stringProp>
  19495. <stringProp name="Argument.metadata">=</stringProp>
  19496. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19497. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  19498. </elementProp>
  19499. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  19500. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19501. <stringProp name="Argument.value">1</stringProp>
  19502. <stringProp name="Argument.metadata">=</stringProp>
  19503. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19504. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  19505. </elementProp>
  19506. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  19507. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19508. <stringProp name="Argument.value">1</stringProp>
  19509. <stringProp name="Argument.metadata">=</stringProp>
  19510. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19511. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  19512. </elementProp>
  19513. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  19514. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19515. <stringProp name="Argument.value">0</stringProp>
  19516. <stringProp name="Argument.metadata">=</stringProp>
  19517. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19518. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  19519. </elementProp>
  19520. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  19521. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19522. <stringProp name="Argument.value">0</stringProp>
  19523. <stringProp name="Argument.metadata">=</stringProp>
  19524. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19525. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  19526. </elementProp>
  19527. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  19528. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19529. <stringProp name="Argument.value">1</stringProp>
  19530. <stringProp name="Argument.metadata">=</stringProp>
  19531. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19532. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  19533. </elementProp>
  19534. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  19535. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19536. <stringProp name="Argument.value">1</stringProp>
  19537. <stringProp name="Argument.metadata">=</stringProp>
  19538. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19539. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  19540. </elementProp>
  19541. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  19542. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19543. <stringProp name="Argument.value"/>
  19544. <stringProp name="Argument.metadata">=</stringProp>
  19545. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19546. <stringProp name="Argument.name">product[custom_design]</stringProp>
  19547. </elementProp>
  19548. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  19549. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19550. <stringProp name="Argument.value"/>
  19551. <stringProp name="Argument.metadata">=</stringProp>
  19552. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19553. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  19554. </elementProp>
  19555. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  19556. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19557. <stringProp name="Argument.value"/>
  19558. <stringProp name="Argument.metadata">=</stringProp>
  19559. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19560. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  19561. </elementProp>
  19562. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  19563. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19564. <stringProp name="Argument.value"/>
  19565. <stringProp name="Argument.metadata">=</stringProp>
  19566. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19567. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  19568. </elementProp>
  19569. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  19570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19571. <stringProp name="Argument.value"/>
  19572. <stringProp name="Argument.metadata">=</stringProp>
  19573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19574. <stringProp name="Argument.name">product[page_layout]</stringProp>
  19575. </elementProp>
  19576. <elementProp name="product[options_container]" elementType="HTTPArgument">
  19577. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19578. <stringProp name="Argument.value">container2</stringProp>
  19579. <stringProp name="Argument.metadata">=</stringProp>
  19580. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19581. <stringProp name="Argument.name">product[options_container]</stringProp>
  19582. </elementProp>
  19583. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  19584. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19585. <stringProp name="Argument.value"/>
  19586. <stringProp name="Argument.metadata">=</stringProp>
  19587. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19588. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  19589. <stringProp name="Argument.desc">false</stringProp>
  19590. </elementProp>
  19591. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  19592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19593. <stringProp name="Argument.value">1</stringProp>
  19594. <stringProp name="Argument.metadata">=</stringProp>
  19595. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19596. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  19597. <stringProp name="Argument.desc">false</stringProp>
  19598. </elementProp>
  19599. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  19600. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19601. <stringProp name="Argument.value">select</stringProp>
  19602. <stringProp name="Argument.metadata">=</stringProp>
  19603. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19604. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  19605. <stringProp name="Argument.desc">false</stringProp>
  19606. </elementProp>
  19607. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  19608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19609. <stringProp name="Argument.value">drop_down</stringProp>
  19610. <stringProp name="Argument.metadata">=</stringProp>
  19611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19612. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  19613. <stringProp name="Argument.desc">false</stringProp>
  19614. </elementProp>
  19615. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  19616. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19617. <stringProp name="Argument.value">0</stringProp>
  19618. <stringProp name="Argument.metadata">=</stringProp>
  19619. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19620. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  19621. <stringProp name="Argument.desc">false</stringProp>
  19622. </elementProp>
  19623. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  19624. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19625. <stringProp name="Argument.value">Product Option Title One</stringProp>
  19626. <stringProp name="Argument.metadata">=</stringProp>
  19627. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19628. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  19629. <stringProp name="Argument.desc">false</stringProp>
  19630. </elementProp>
  19631. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  19632. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19633. <stringProp name="Argument.value">drop_down</stringProp>
  19634. <stringProp name="Argument.metadata">=</stringProp>
  19635. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19636. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  19637. <stringProp name="Argument.desc">false</stringProp>
  19638. </elementProp>
  19639. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  19640. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19641. <stringProp name="Argument.value"/>
  19642. <stringProp name="Argument.metadata">=</stringProp>
  19643. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19644. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  19645. <stringProp name="Argument.desc">false</stringProp>
  19646. </elementProp>
  19647. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  19648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19649. <stringProp name="Argument.value">200</stringProp>
  19650. <stringProp name="Argument.metadata">=</stringProp>
  19651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19652. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  19653. <stringProp name="Argument.desc">false</stringProp>
  19654. </elementProp>
  19655. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  19656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19657. <stringProp name="Argument.value">fixed</stringProp>
  19658. <stringProp name="Argument.metadata">=</stringProp>
  19659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19660. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  19661. <stringProp name="Argument.desc">false</stringProp>
  19662. </elementProp>
  19663. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  19664. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19665. <stringProp name="Argument.value">sku-one</stringProp>
  19666. <stringProp name="Argument.metadata">=</stringProp>
  19667. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19668. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  19669. <stringProp name="Argument.desc">false</stringProp>
  19670. </elementProp>
  19671. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  19672. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19673. <stringProp name="Argument.value">0</stringProp>
  19674. <stringProp name="Argument.metadata">=</stringProp>
  19675. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19676. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  19677. <stringProp name="Argument.desc">false</stringProp>
  19678. </elementProp>
  19679. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  19680. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19681. <stringProp name="Argument.value">Row Title</stringProp>
  19682. <stringProp name="Argument.metadata">=</stringProp>
  19683. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19684. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  19685. <stringProp name="Argument.desc">false</stringProp>
  19686. </elementProp>
  19687. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  19688. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19689. <stringProp name="Argument.value"/>
  19690. <stringProp name="Argument.metadata">=</stringProp>
  19691. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19692. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  19693. <stringProp name="Argument.desc">false</stringProp>
  19694. </elementProp>
  19695. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  19696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19697. <stringProp name="Argument.value">1</stringProp>
  19698. <stringProp name="Argument.metadata">=</stringProp>
  19699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19700. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  19701. <stringProp name="Argument.desc">false</stringProp>
  19702. </elementProp>
  19703. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  19704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19705. <stringProp name="Argument.value">250</stringProp>
  19706. <stringProp name="Argument.metadata">=</stringProp>
  19707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19708. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  19709. <stringProp name="Argument.desc">false</stringProp>
  19710. </elementProp>
  19711. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  19712. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19713. <stringProp name="Argument.value">text</stringProp>
  19714. <stringProp name="Argument.metadata">=</stringProp>
  19715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19716. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  19717. <stringProp name="Argument.desc">false</stringProp>
  19718. </elementProp>
  19719. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  19720. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19721. <stringProp name="Argument.value">field</stringProp>
  19722. <stringProp name="Argument.metadata">=</stringProp>
  19723. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19724. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  19725. <stringProp name="Argument.desc">false</stringProp>
  19726. </elementProp>
  19727. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  19728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19729. <stringProp name="Argument.value">500</stringProp>
  19730. <stringProp name="Argument.metadata">=</stringProp>
  19731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19732. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  19733. <stringProp name="Argument.desc">false</stringProp>
  19734. </elementProp>
  19735. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  19736. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19737. <stringProp name="Argument.value">fixed</stringProp>
  19738. <stringProp name="Argument.metadata">=</stringProp>
  19739. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19740. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  19741. <stringProp name="Argument.desc">false</stringProp>
  19742. </elementProp>
  19743. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  19744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19745. <stringProp name="Argument.value">sku-two</stringProp>
  19746. <stringProp name="Argument.metadata">=</stringProp>
  19747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19748. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  19749. <stringProp name="Argument.desc">false</stringProp>
  19750. </elementProp>
  19751. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  19752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19753. <stringProp name="Argument.value">1</stringProp>
  19754. <stringProp name="Argument.metadata">=</stringProp>
  19755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19756. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  19757. <stringProp name="Argument.desc">false</stringProp>
  19758. </elementProp>
  19759. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  19760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19761. <stringProp name="Argument.value">Field Title</stringProp>
  19762. <stringProp name="Argument.metadata">=</stringProp>
  19763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19764. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  19765. <stringProp name="Argument.desc">false</stringProp>
  19766. </elementProp>
  19767. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  19768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19769. <stringProp name="Argument.value">field</stringProp>
  19770. <stringProp name="Argument.metadata">=</stringProp>
  19771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19772. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  19773. <stringProp name="Argument.desc">false</stringProp>
  19774. </elementProp>
  19775. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  19776. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19777. <stringProp name="Argument.value">1</stringProp>
  19778. <stringProp name="Argument.metadata">=</stringProp>
  19779. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19780. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  19781. <stringProp name="Argument.desc">true</stringProp>
  19782. </elementProp>
  19783. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  19784. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19785. <stringProp name="Argument.value">4</stringProp>
  19786. <stringProp name="Argument.metadata">=</stringProp>
  19787. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19788. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  19789. <stringProp name="Argument.desc">true</stringProp>
  19790. </elementProp>
  19791. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  19792. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19793. <stringProp name="Argument.value"/>
  19794. <stringProp name="Argument.metadata">=</stringProp>
  19795. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19796. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  19797. <stringProp name="Argument.desc">true</stringProp>
  19798. </elementProp>
  19799. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  19800. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19801. <stringProp name="Argument.value">${related_product_id}</stringProp>
  19802. <stringProp name="Argument.metadata">=</stringProp>
  19803. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19804. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  19805. </elementProp>
  19806. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  19807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19808. <stringProp name="Argument.value">1</stringProp>
  19809. <stringProp name="Argument.metadata">=</stringProp>
  19810. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19811. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  19812. </elementProp>
  19813. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  19814. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19815. <stringProp name="Argument.value">${related_product_id}</stringProp>
  19816. <stringProp name="Argument.metadata">=</stringProp>
  19817. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19818. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  19819. </elementProp>
  19820. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  19821. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19822. <stringProp name="Argument.value">1</stringProp>
  19823. <stringProp name="Argument.metadata">=</stringProp>
  19824. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19825. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  19826. </elementProp>
  19827. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  19828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19829. <stringProp name="Argument.value">${related_product_id}</stringProp>
  19830. <stringProp name="Argument.metadata">=</stringProp>
  19831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19832. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  19833. </elementProp>
  19834. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  19835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19836. <stringProp name="Argument.value">1</stringProp>
  19837. <stringProp name="Argument.metadata">=</stringProp>
  19838. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19839. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  19840. </elementProp>
  19841. </collectionProp>
  19842. </elementProp>
  19843. <stringProp name="HTTPSampler.domain"/>
  19844. <stringProp name="HTTPSampler.port"/>
  19845. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  19846. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  19847. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  19848. <stringProp name="HTTPSampler.contentEncoding"/>
  19849. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  19850. <stringProp name="HTTPSampler.method">POST</stringProp>
  19851. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  19852. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  19853. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  19854. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  19855. <boolProp name="HTTPSampler.monitor">false</boolProp>
  19856. <stringProp name="HTTPSampler.embedded_url_re"/>
  19857. </HTTPSamplerProxy>
  19858. <hashTree>
  19859. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  19860. <collectionProp name="Asserion.test_strings">
  19861. <stringProp name="1853918323">{"error":false}</stringProp>
  19862. </collectionProp>
  19863. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  19864. <boolProp name="Assertion.assume_success">false</boolProp>
  19865. <intProp name="Assertion.test_type">2</intProp>
  19866. </ResponseAssertion>
  19867. <hashTree/>
  19868. </hashTree>
  19869. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Save" enabled="true">
  19870. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  19871. <collectionProp name="Arguments.arguments">
  19872. <elementProp name="ajax" elementType="HTTPArgument">
  19873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19874. <stringProp name="Argument.value">true</stringProp>
  19875. <stringProp name="Argument.metadata">=</stringProp>
  19876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19877. <stringProp name="Argument.name">ajax</stringProp>
  19878. <stringProp name="Argument.desc">false</stringProp>
  19879. </elementProp>
  19880. <elementProp name="isAjax" elementType="HTTPArgument">
  19881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19882. <stringProp name="Argument.value">true</stringProp>
  19883. <stringProp name="Argument.metadata">=</stringProp>
  19884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19885. <stringProp name="Argument.name">isAjax</stringProp>
  19886. <stringProp name="Argument.desc">false</stringProp>
  19887. </elementProp>
  19888. <elementProp name="form_key" elementType="HTTPArgument">
  19889. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19890. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  19891. <stringProp name="Argument.metadata">=</stringProp>
  19892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19893. <stringProp name="Argument.name">form_key</stringProp>
  19894. <stringProp name="Argument.desc">false</stringProp>
  19895. </elementProp>
  19896. <elementProp name="product[name]" elementType="HTTPArgument">
  19897. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19898. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  19899. <stringProp name="Argument.metadata">=</stringProp>
  19900. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19901. <stringProp name="Argument.name">product[name]</stringProp>
  19902. <stringProp name="Argument.desc">false</stringProp>
  19903. </elementProp>
  19904. <elementProp name="product[sku]" elementType="HTTPArgument">
  19905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19906. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  19907. <stringProp name="Argument.metadata">=</stringProp>
  19908. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19909. <stringProp name="Argument.name">product[sku]</stringProp>
  19910. <stringProp name="Argument.desc">false</stringProp>
  19911. </elementProp>
  19912. <elementProp name="product[price]" elementType="HTTPArgument">
  19913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19914. <stringProp name="Argument.value">123</stringProp>
  19915. <stringProp name="Argument.metadata">=</stringProp>
  19916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19917. <stringProp name="Argument.name">product[price]</stringProp>
  19918. </elementProp>
  19919. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  19920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19921. <stringProp name="Argument.value">2</stringProp>
  19922. <stringProp name="Argument.metadata">=</stringProp>
  19923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19924. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  19925. </elementProp>
  19926. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  19927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19928. <stringProp name="Argument.value">111</stringProp>
  19929. <stringProp name="Argument.metadata">=</stringProp>
  19930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19931. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  19932. </elementProp>
  19933. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  19934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19935. <stringProp name="Argument.value">1</stringProp>
  19936. <stringProp name="Argument.metadata">=</stringProp>
  19937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19938. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  19939. </elementProp>
  19940. <elementProp name="product[weight]" elementType="HTTPArgument">
  19941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19942. <stringProp name="Argument.value">1.0000</stringProp>
  19943. <stringProp name="Argument.metadata">=</stringProp>
  19944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19945. <stringProp name="Argument.name">product[weight]</stringProp>
  19946. </elementProp>
  19947. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  19948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19949. <stringProp name="Argument.value">1</stringProp>
  19950. <stringProp name="Argument.metadata">=</stringProp>
  19951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19952. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  19953. <stringProp name="Argument.desc">true</stringProp>
  19954. </elementProp>
  19955. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  19956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19957. <stringProp name="Argument.value">2</stringProp>
  19958. <stringProp name="Argument.metadata">=</stringProp>
  19959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19960. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  19961. </elementProp>
  19962. <elementProp name="product[description]" elementType="HTTPArgument">
  19963. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19964. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  19965. <stringProp name="Argument.metadata">=</stringProp>
  19966. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19967. <stringProp name="Argument.name">product[description]</stringProp>
  19968. </elementProp>
  19969. <elementProp name="product[short_description]" elementType="HTTPArgument">
  19970. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19971. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  19972. <stringProp name="Argument.metadata">=</stringProp>
  19973. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19974. <stringProp name="Argument.name">product[short_description]</stringProp>
  19975. </elementProp>
  19976. <elementProp name="product[status]" elementType="HTTPArgument">
  19977. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19978. <stringProp name="Argument.value">1</stringProp>
  19979. <stringProp name="Argument.metadata">=</stringProp>
  19980. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19981. <stringProp name="Argument.name">product[status]</stringProp>
  19982. </elementProp>
  19983. <elementProp name="product[image]" elementType="HTTPArgument">
  19984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19985. <stringProp name="Argument.value"/>
  19986. <stringProp name="Argument.metadata">=</stringProp>
  19987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19988. <stringProp name="Argument.name">product[image]</stringProp>
  19989. </elementProp>
  19990. <elementProp name="product[small_image]" elementType="HTTPArgument">
  19991. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19992. <stringProp name="Argument.value"/>
  19993. <stringProp name="Argument.metadata">=</stringProp>
  19994. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  19995. <stringProp name="Argument.name">product[small_image]</stringProp>
  19996. </elementProp>
  19997. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  19998. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  19999. <stringProp name="Argument.value"/>
  20000. <stringProp name="Argument.metadata">=</stringProp>
  20001. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20002. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  20003. </elementProp>
  20004. <elementProp name="product[url_key]" elementType="HTTPArgument">
  20005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20006. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  20007. <stringProp name="Argument.metadata">=</stringProp>
  20008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20009. <stringProp name="Argument.name">product[url_key]</stringProp>
  20010. </elementProp>
  20011. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  20012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20013. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  20014. <stringProp name="Argument.metadata">=</stringProp>
  20015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20016. <stringProp name="Argument.name">product[meta_title]</stringProp>
  20017. </elementProp>
  20018. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  20019. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20020. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  20021. <stringProp name="Argument.metadata">=</stringProp>
  20022. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20023. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  20024. </elementProp>
  20025. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  20026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20027. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  20028. <stringProp name="Argument.metadata">=</stringProp>
  20029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20030. <stringProp name="Argument.name">product[meta_description]</stringProp>
  20031. </elementProp>
  20032. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  20033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20034. <stringProp name="Argument.value">1</stringProp>
  20035. <stringProp name="Argument.metadata">=</stringProp>
  20036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20037. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  20038. </elementProp>
  20039. <elementProp name="product[special_price]" elementType="HTTPArgument">
  20040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20041. <stringProp name="Argument.value">99</stringProp>
  20042. <stringProp name="Argument.metadata">=</stringProp>
  20043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20044. <stringProp name="Argument.name">product[special_price]</stringProp>
  20045. </elementProp>
  20046. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  20047. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20048. <stringProp name="Argument.value"/>
  20049. <stringProp name="Argument.metadata">=</stringProp>
  20050. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20051. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  20052. </elementProp>
  20053. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  20054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20055. <stringProp name="Argument.value"/>
  20056. <stringProp name="Argument.metadata">=</stringProp>
  20057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20058. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  20059. </elementProp>
  20060. <elementProp name="product[cost]" elementType="HTTPArgument">
  20061. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20062. <stringProp name="Argument.value"/>
  20063. <stringProp name="Argument.metadata">=</stringProp>
  20064. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20065. <stringProp name="Argument.name">product[cost]</stringProp>
  20066. </elementProp>
  20067. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  20068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20069. <stringProp name="Argument.value">0</stringProp>
  20070. <stringProp name="Argument.metadata">=</stringProp>
  20071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20072. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  20073. </elementProp>
  20074. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  20075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20076. <stringProp name="Argument.value">32000</stringProp>
  20077. <stringProp name="Argument.metadata">=</stringProp>
  20078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20079. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  20080. </elementProp>
  20081. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  20082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20083. <stringProp name="Argument.value">100</stringProp>
  20084. <stringProp name="Argument.metadata">=</stringProp>
  20085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20086. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  20087. </elementProp>
  20088. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  20089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20090. <stringProp name="Argument.value">90</stringProp>
  20091. <stringProp name="Argument.metadata">=</stringProp>
  20092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20093. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  20094. </elementProp>
  20095. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  20096. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20097. <stringProp name="Argument.value"/>
  20098. <stringProp name="Argument.metadata">=</stringProp>
  20099. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20100. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  20101. </elementProp>
  20102. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  20103. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20104. <stringProp name="Argument.value">0</stringProp>
  20105. <stringProp name="Argument.metadata">=</stringProp>
  20106. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20107. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  20108. </elementProp>
  20109. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  20110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20111. <stringProp name="Argument.value">1</stringProp>
  20112. <stringProp name="Argument.metadata">=</stringProp>
  20113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20114. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  20115. </elementProp>
  20116. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  20117. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20118. <stringProp name="Argument.value">101</stringProp>
  20119. <stringProp name="Argument.metadata">=</stringProp>
  20120. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20121. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  20122. </elementProp>
  20123. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  20124. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20125. <stringProp name="Argument.value">99</stringProp>
  20126. <stringProp name="Argument.metadata">=</stringProp>
  20127. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20128. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  20129. </elementProp>
  20130. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  20131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20132. <stringProp name="Argument.value"/>
  20133. <stringProp name="Argument.metadata">=</stringProp>
  20134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20135. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  20136. </elementProp>
  20137. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  20138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20139. <stringProp name="Argument.value">1</stringProp>
  20140. <stringProp name="Argument.metadata">=</stringProp>
  20141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20142. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  20143. </elementProp>
  20144. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  20145. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20146. <stringProp name="Argument.value">100500</stringProp>
  20147. <stringProp name="Argument.metadata">=</stringProp>
  20148. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20149. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  20150. </elementProp>
  20151. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  20152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20153. <stringProp name="Argument.value">100500</stringProp>
  20154. <stringProp name="Argument.metadata">=</stringProp>
  20155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20156. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  20157. </elementProp>
  20158. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  20159. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20160. <stringProp name="Argument.value">0</stringProp>
  20161. <stringProp name="Argument.metadata">=</stringProp>
  20162. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20163. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  20164. </elementProp>
  20165. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  20166. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20167. <stringProp name="Argument.value">1</stringProp>
  20168. <stringProp name="Argument.metadata">=</stringProp>
  20169. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20170. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  20171. </elementProp>
  20172. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  20173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20174. <stringProp name="Argument.value">1</stringProp>
  20175. <stringProp name="Argument.metadata">=</stringProp>
  20176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20177. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  20178. </elementProp>
  20179. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  20180. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20181. <stringProp name="Argument.value">1</stringProp>
  20182. <stringProp name="Argument.metadata">=</stringProp>
  20183. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20184. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  20185. </elementProp>
  20186. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  20187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20188. <stringProp name="Argument.value">10000</stringProp>
  20189. <stringProp name="Argument.metadata">=</stringProp>
  20190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20191. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  20192. </elementProp>
  20193. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  20194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20195. <stringProp name="Argument.value">1</stringProp>
  20196. <stringProp name="Argument.metadata">=</stringProp>
  20197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20198. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  20199. </elementProp>
  20200. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  20201. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20202. <stringProp name="Argument.value">0</stringProp>
  20203. <stringProp name="Argument.metadata">=</stringProp>
  20204. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20205. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  20206. </elementProp>
  20207. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  20208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20209. <stringProp name="Argument.value">0</stringProp>
  20210. <stringProp name="Argument.metadata">=</stringProp>
  20211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20212. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  20213. </elementProp>
  20214. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  20215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20216. <stringProp name="Argument.value">0</stringProp>
  20217. <stringProp name="Argument.metadata">=</stringProp>
  20218. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20219. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  20220. </elementProp>
  20221. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  20222. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20223. <stringProp name="Argument.value">1</stringProp>
  20224. <stringProp name="Argument.metadata">=</stringProp>
  20225. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20226. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  20227. </elementProp>
  20228. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  20229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20230. <stringProp name="Argument.value">1</stringProp>
  20231. <stringProp name="Argument.metadata">=</stringProp>
  20232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20233. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  20234. </elementProp>
  20235. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  20236. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20237. <stringProp name="Argument.value">1</stringProp>
  20238. <stringProp name="Argument.metadata">=</stringProp>
  20239. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20240. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  20241. </elementProp>
  20242. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  20243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20244. <stringProp name="Argument.value">0</stringProp>
  20245. <stringProp name="Argument.metadata">=</stringProp>
  20246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20247. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  20248. </elementProp>
  20249. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  20250. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20251. <stringProp name="Argument.value">0</stringProp>
  20252. <stringProp name="Argument.metadata">=</stringProp>
  20253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20254. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  20255. </elementProp>
  20256. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  20257. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20258. <stringProp name="Argument.value">1</stringProp>
  20259. <stringProp name="Argument.metadata">=</stringProp>
  20260. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20261. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  20262. </elementProp>
  20263. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  20264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20265. <stringProp name="Argument.value">1</stringProp>
  20266. <stringProp name="Argument.metadata">=</stringProp>
  20267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20268. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  20269. </elementProp>
  20270. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  20271. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20272. <stringProp name="Argument.value"/>
  20273. <stringProp name="Argument.metadata">=</stringProp>
  20274. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20275. <stringProp name="Argument.name">product[custom_design]</stringProp>
  20276. </elementProp>
  20277. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  20278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20279. <stringProp name="Argument.value"/>
  20280. <stringProp name="Argument.metadata">=</stringProp>
  20281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20282. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  20283. </elementProp>
  20284. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  20285. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20286. <stringProp name="Argument.value"/>
  20287. <stringProp name="Argument.metadata">=</stringProp>
  20288. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20289. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  20290. </elementProp>
  20291. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  20292. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20293. <stringProp name="Argument.value"/>
  20294. <stringProp name="Argument.metadata">=</stringProp>
  20295. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20296. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  20297. </elementProp>
  20298. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  20299. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20300. <stringProp name="Argument.value"/>
  20301. <stringProp name="Argument.metadata">=</stringProp>
  20302. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20303. <stringProp name="Argument.name">product[page_layout]</stringProp>
  20304. </elementProp>
  20305. <elementProp name="product[options_container]" elementType="HTTPArgument">
  20306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20307. <stringProp name="Argument.value">container2</stringProp>
  20308. <stringProp name="Argument.metadata">=</stringProp>
  20309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20310. <stringProp name="Argument.name">product[options_container]</stringProp>
  20311. </elementProp>
  20312. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  20313. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20314. <stringProp name="Argument.value"/>
  20315. <stringProp name="Argument.metadata">=</stringProp>
  20316. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20317. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  20318. <stringProp name="Argument.desc">true</stringProp>
  20319. </elementProp>
  20320. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  20321. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20322. <stringProp name="Argument.value">1</stringProp>
  20323. <stringProp name="Argument.metadata">=</stringProp>
  20324. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20325. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  20326. </elementProp>
  20327. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  20328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20329. <stringProp name="Argument.value">select</stringProp>
  20330. <stringProp name="Argument.metadata">=</stringProp>
  20331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20332. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  20333. <stringProp name="Argument.desc">false</stringProp>
  20334. </elementProp>
  20335. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  20336. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20337. <stringProp name="Argument.value">drop_down</stringProp>
  20338. <stringProp name="Argument.metadata">=</stringProp>
  20339. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20340. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  20341. <stringProp name="Argument.desc">false</stringProp>
  20342. </elementProp>
  20343. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  20344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20345. <stringProp name="Argument.value">0</stringProp>
  20346. <stringProp name="Argument.metadata">=</stringProp>
  20347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20348. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  20349. <stringProp name="Argument.desc">false</stringProp>
  20350. </elementProp>
  20351. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  20352. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20353. <stringProp name="Argument.value">Product Option Title One</stringProp>
  20354. <stringProp name="Argument.metadata">=</stringProp>
  20355. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20356. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  20357. </elementProp>
  20358. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  20359. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20360. <stringProp name="Argument.value">drop_down</stringProp>
  20361. <stringProp name="Argument.metadata">=</stringProp>
  20362. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20363. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  20364. </elementProp>
  20365. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  20366. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20367. <stringProp name="Argument.value"/>
  20368. <stringProp name="Argument.metadata">=</stringProp>
  20369. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20370. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  20371. <stringProp name="Argument.desc">false</stringProp>
  20372. </elementProp>
  20373. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  20374. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20375. <stringProp name="Argument.value">200</stringProp>
  20376. <stringProp name="Argument.metadata">=</stringProp>
  20377. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20378. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  20379. </elementProp>
  20380. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  20381. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20382. <stringProp name="Argument.value">fixed</stringProp>
  20383. <stringProp name="Argument.metadata">=</stringProp>
  20384. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20385. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  20386. </elementProp>
  20387. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  20388. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20389. <stringProp name="Argument.value">sku-one</stringProp>
  20390. <stringProp name="Argument.metadata">=</stringProp>
  20391. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20392. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  20393. </elementProp>
  20394. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  20395. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20396. <stringProp name="Argument.value">0</stringProp>
  20397. <stringProp name="Argument.metadata">=</stringProp>
  20398. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20399. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  20400. </elementProp>
  20401. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  20402. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20403. <stringProp name="Argument.value">Row Title</stringProp>
  20404. <stringProp name="Argument.metadata">=</stringProp>
  20405. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20406. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  20407. </elementProp>
  20408. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  20409. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20410. <stringProp name="Argument.value"/>
  20411. <stringProp name="Argument.metadata">=</stringProp>
  20412. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20413. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  20414. <stringProp name="Argument.desc">false</stringProp>
  20415. </elementProp>
  20416. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  20417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20418. <stringProp name="Argument.value">1</stringProp>
  20419. <stringProp name="Argument.metadata">=</stringProp>
  20420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20421. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  20422. </elementProp>
  20423. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  20424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20425. <stringProp name="Argument.value">250</stringProp>
  20426. <stringProp name="Argument.metadata">=</stringProp>
  20427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20428. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  20429. </elementProp>
  20430. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  20431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20432. <stringProp name="Argument.value">text</stringProp>
  20433. <stringProp name="Argument.metadata">=</stringProp>
  20434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20435. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  20436. </elementProp>
  20437. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  20438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20439. <stringProp name="Argument.value">field</stringProp>
  20440. <stringProp name="Argument.metadata">=</stringProp>
  20441. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20442. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  20443. </elementProp>
  20444. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  20445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20446. <stringProp name="Argument.value">500</stringProp>
  20447. <stringProp name="Argument.metadata">=</stringProp>
  20448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20449. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  20450. </elementProp>
  20451. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  20452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20453. <stringProp name="Argument.value">fixed</stringProp>
  20454. <stringProp name="Argument.metadata">=</stringProp>
  20455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20456. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  20457. </elementProp>
  20458. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  20459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20460. <stringProp name="Argument.value">sku-two</stringProp>
  20461. <stringProp name="Argument.metadata">=</stringProp>
  20462. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20463. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  20464. </elementProp>
  20465. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  20466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20467. <stringProp name="Argument.value">1</stringProp>
  20468. <stringProp name="Argument.metadata">=</stringProp>
  20469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20470. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  20471. </elementProp>
  20472. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  20473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20474. <stringProp name="Argument.value">Field Title</stringProp>
  20475. <stringProp name="Argument.metadata">=</stringProp>
  20476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20477. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  20478. </elementProp>
  20479. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  20480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20481. <stringProp name="Argument.value">field</stringProp>
  20482. <stringProp name="Argument.metadata">=</stringProp>
  20483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20484. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  20485. </elementProp>
  20486. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  20487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20488. <stringProp name="Argument.value">1</stringProp>
  20489. <stringProp name="Argument.metadata">=</stringProp>
  20490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20491. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  20492. <stringProp name="Argument.desc">true</stringProp>
  20493. </elementProp>
  20494. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  20495. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20496. <stringProp name="Argument.value">4</stringProp>
  20497. <stringProp name="Argument.metadata">=</stringProp>
  20498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20499. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  20500. <stringProp name="Argument.desc">true</stringProp>
  20501. </elementProp>
  20502. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  20503. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20504. <stringProp name="Argument.value"/>
  20505. <stringProp name="Argument.metadata">=</stringProp>
  20506. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20507. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  20508. <stringProp name="Argument.desc">true</stringProp>
  20509. </elementProp>
  20510. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  20511. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20512. <stringProp name="Argument.value">${related_product_id}</stringProp>
  20513. <stringProp name="Argument.metadata">=</stringProp>
  20514. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20515. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  20516. </elementProp>
  20517. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  20518. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20519. <stringProp name="Argument.value">1</stringProp>
  20520. <stringProp name="Argument.metadata">=</stringProp>
  20521. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20522. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  20523. </elementProp>
  20524. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  20525. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20526. <stringProp name="Argument.value">${related_product_id}</stringProp>
  20527. <stringProp name="Argument.metadata">=</stringProp>
  20528. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20529. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  20530. </elementProp>
  20531. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  20532. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20533. <stringProp name="Argument.value">1</stringProp>
  20534. <stringProp name="Argument.metadata">=</stringProp>
  20535. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20536. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  20537. </elementProp>
  20538. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  20539. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20540. <stringProp name="Argument.value">${related_product_id}</stringProp>
  20541. <stringProp name="Argument.metadata">=</stringProp>
  20542. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20543. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  20544. </elementProp>
  20545. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  20546. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20547. <stringProp name="Argument.value">1</stringProp>
  20548. <stringProp name="Argument.metadata">=</stringProp>
  20549. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20550. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  20551. </elementProp>
  20552. </collectionProp>
  20553. </elementProp>
  20554. <stringProp name="HTTPSampler.domain"/>
  20555. <stringProp name="HTTPSampler.port"/>
  20556. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  20557. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  20558. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  20559. <stringProp name="HTTPSampler.contentEncoding"/>
  20560. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/</stringProp>
  20561. <stringProp name="HTTPSampler.method">POST</stringProp>
  20562. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  20563. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  20564. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  20565. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  20566. <boolProp name="HTTPSampler.monitor">false</boolProp>
  20567. <stringProp name="HTTPSampler.embedded_url_re"/>
  20568. </HTTPSamplerProxy>
  20569. <hashTree>
  20570. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  20571. <collectionProp name="Asserion.test_strings">
  20572. <stringProp name="-583471546">You saved the product</stringProp>
  20573. </collectionProp>
  20574. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  20575. <boolProp name="Assertion.assume_success">false</boolProp>
  20576. <intProp name="Assertion.test_type">2</intProp>
  20577. </ResponseAssertion>
  20578. <hashTree/>
  20579. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  20580. <collectionProp name="Asserion.test_strings">
  20581. <stringProp name="-1600986843">violation</stringProp>
  20582. </collectionProp>
  20583. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  20584. <boolProp name="Assertion.assume_success">false</boolProp>
  20585. <intProp name="Assertion.test_type">6</intProp>
  20586. </ResponseAssertion>
  20587. <hashTree/>
  20588. </hashTree>
  20589. </hashTree>
  20590. </hashTree>
  20591. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  20592. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  20593. <collectionProp name="Arguments.arguments"/>
  20594. </elementProp>
  20595. <stringProp name="HTTPSampler.domain"/>
  20596. <stringProp name="HTTPSampler.port"/>
  20597. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  20598. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  20599. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  20600. <stringProp name="HTTPSampler.contentEncoding"/>
  20601. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  20602. <stringProp name="HTTPSampler.method">GET</stringProp>
  20603. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  20604. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  20605. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  20606. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  20607. <boolProp name="HTTPSampler.monitor">false</boolProp>
  20608. <stringProp name="HTTPSampler.embedded_url_re"/>
  20609. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  20610. <hashTree>
  20611. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  20612. <boolProp name="resetInterpreter">false</boolProp>
  20613. <stringProp name="parameters"/>
  20614. <stringProp name="filename"/>
  20615. <stringProp name="script">
  20616. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  20617. if (adminUsersDistribution == 1) {
  20618. adminUserList = props.get("adminUserList");
  20619. adminUserList.add(vars.get("admin_user"));
  20620. }
  20621. </stringProp>
  20622. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  20623. <hashTree/>
  20624. </hashTree>
  20625. </hashTree>
  20626. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Edit Product" enabled="true">
  20627. <intProp name="ThroughputController.style">1</intProp>
  20628. <boolProp name="ThroughputController.perThread">false</boolProp>
  20629. <intProp name="ThroughputController.maxThroughput">1</intProp>
  20630. <stringProp name="ThroughputController.percentThroughput">${adminProductEditingPercentage}</stringProp>
  20631. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  20632. <hashTree>
  20633. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  20634. <stringProp name="script">
  20635. var tmpLabel = vars.get("testLabel")
  20636. if (tmpLabel) {
  20637. var testLabel = " (" + tmpLabel + ")"
  20638. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  20639. if (sampler.getName().indexOf(testLabel) == -1) {
  20640. sampler.setName(sampler.getName() + testLabel);
  20641. }
  20642. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  20643. sampler.setName("SetUp - " + sampler.getName());
  20644. }
  20645. } else {
  20646. testLabel = ""
  20647. }
  20648. </stringProp>
  20649. <stringProp name="scriptLanguage">javascript</stringProp>
  20650. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  20651. <hashTree/>
  20652. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  20653. <stringProp name="BeanShellSampler.query">
  20654. vars.put("testLabel", "Admin Edit Product");
  20655. </stringProp>
  20656. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  20657. </BeanShellSampler>
  20658. <hashTree/>
  20659. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  20660. <stringProp name="script">
  20661. function getFormKeyFromResponse()
  20662. {
  20663. var url = prev.getUrlAsString(),
  20664. responseCode = prev.getResponseCode(),
  20665. formKey = null;
  20666. searchPattern = /var FORM_KEY = '(.+)'/;
  20667. if (responseCode == "200" &amp;&amp; url) {
  20668. response = prev.getResponseDataAsString();
  20669. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  20670. }
  20671. return formKey;
  20672. }
  20673. formKey = vars.get("form_key_storage");
  20674. currentFormKey = getFormKeyFromResponse();
  20675. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  20676. vars.put("form_key_storage", currentFormKey);
  20677. }
  20678. </stringProp>
  20679. <stringProp name="scriptLanguage">javascript</stringProp>
  20680. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  20681. <hashTree/>
  20682. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  20683. <stringProp name="script">
  20684. formKey = vars.get("form_key_storage");
  20685. if (formKey
  20686. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  20687. &amp;&amp; sampler.getMethod() == "POST")
  20688. {
  20689. arguments = sampler.getArguments();
  20690. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  20691. {
  20692. argument = arguments.getArgument(i);
  20693. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  20694. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  20695. argument.setValue(formKey);
  20696. }
  20697. }
  20698. }
  20699. </stringProp>
  20700. <stringProp name="scriptLanguage">javascript</stringProp>
  20701. </JSR223PreProcessor>
  20702. <hashTree/>
  20703. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  20704. <collectionProp name="CookieManager.cookies"/>
  20705. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  20706. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  20707. <hashTree/>
  20708. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  20709. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  20710. </GenericController>
  20711. <hashTree>
  20712. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  20713. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  20714. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  20715. <hashTree>
  20716. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  20717. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  20718. <stringProp name="BeanShellSampler.query">
  20719. adminUser = "none";
  20720. adminUserList = props.get("adminUserList");
  20721. adminUserListIterator = props.get("adminUserListIterator");
  20722. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  20723. if (adminUsersDistribution == 1) {
  20724. adminUser = adminUserList.poll();
  20725. } else {
  20726. if (!adminUserListIterator.hasNext()) {
  20727. adminUserListIterator = adminUserList.descendingIterator();
  20728. }
  20729. adminUser = adminUserListIterator.next();
  20730. }
  20731. if (adminUser == "none") {
  20732. SampleResult.setResponseMessage("adminUser list is empty");
  20733. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  20734. IsSuccess=false;
  20735. SampleResult.setSuccessful(false);
  20736. SampleResult.setStopThread(true);
  20737. }
  20738. vars.put("admin_user", adminUser);
  20739. </stringProp>
  20740. <stringProp name="BeanShellSampler.filename"/>
  20741. <stringProp name="BeanShellSampler.parameters"/>
  20742. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  20743. </BeanShellSampler>
  20744. <hashTree/>
  20745. </hashTree>
  20746. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  20747. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  20748. <collectionProp name="Arguments.arguments"/>
  20749. </elementProp>
  20750. <stringProp name="HTTPSampler.domain"/>
  20751. <stringProp name="HTTPSampler.port"/>
  20752. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  20753. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  20754. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  20755. <stringProp name="HTTPSampler.contentEncoding"/>
  20756. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  20757. <stringProp name="HTTPSampler.method">GET</stringProp>
  20758. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  20759. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  20760. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  20761. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  20762. <boolProp name="HTTPSampler.monitor">false</boolProp>
  20763. <stringProp name="HTTPSampler.embedded_url_re"/>
  20764. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  20765. <hashTree>
  20766. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  20767. <collectionProp name="Asserion.test_strings">
  20768. <stringProp name="-1397214398">Welcome</stringProp>
  20769. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  20770. </collectionProp>
  20771. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  20772. <boolProp name="Assertion.assume_success">false</boolProp>
  20773. <intProp name="Assertion.test_type">2</intProp>
  20774. </ResponseAssertion>
  20775. <hashTree/>
  20776. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  20777. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  20778. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  20779. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  20780. <stringProp name="RegexExtractor.template">$1$</stringProp>
  20781. <stringProp name="RegexExtractor.default"/>
  20782. <stringProp name="RegexExtractor.match_number">1</stringProp>
  20783. </RegexExtractor>
  20784. <hashTree/>
  20785. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  20786. <collectionProp name="Asserion.test_strings">
  20787. <stringProp name="2845929">^.+$</stringProp>
  20788. </collectionProp>
  20789. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  20790. <boolProp name="Assertion.assume_success">false</boolProp>
  20791. <intProp name="Assertion.test_type">1</intProp>
  20792. <stringProp name="Assertion.scope">variable</stringProp>
  20793. <stringProp name="Scope.variable">admin_form_key</stringProp>
  20794. </ResponseAssertion>
  20795. <hashTree/>
  20796. </hashTree>
  20797. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  20798. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  20799. <collectionProp name="Arguments.arguments">
  20800. <elementProp name="dummy" elementType="HTTPArgument">
  20801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20802. <stringProp name="Argument.value"/>
  20803. <stringProp name="Argument.metadata">=</stringProp>
  20804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20805. <stringProp name="Argument.name">dummy</stringProp>
  20806. </elementProp>
  20807. <elementProp name="form_key" elementType="HTTPArgument">
  20808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20809. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  20810. <stringProp name="Argument.metadata">=</stringProp>
  20811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20812. <stringProp name="Argument.name">form_key</stringProp>
  20813. </elementProp>
  20814. <elementProp name="login[password]" elementType="HTTPArgument">
  20815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20816. <stringProp name="Argument.value">${admin_password}</stringProp>
  20817. <stringProp name="Argument.metadata">=</stringProp>
  20818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20819. <stringProp name="Argument.name">login[password]</stringProp>
  20820. </elementProp>
  20821. <elementProp name="login[username]" elementType="HTTPArgument">
  20822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  20823. <stringProp name="Argument.value">${admin_user}</stringProp>
  20824. <stringProp name="Argument.metadata">=</stringProp>
  20825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  20826. <stringProp name="Argument.name">login[username]</stringProp>
  20827. </elementProp>
  20828. </collectionProp>
  20829. </elementProp>
  20830. <stringProp name="HTTPSampler.domain"/>
  20831. <stringProp name="HTTPSampler.port"/>
  20832. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  20833. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  20834. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  20835. <stringProp name="HTTPSampler.contentEncoding"/>
  20836. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  20837. <stringProp name="HTTPSampler.method">POST</stringProp>
  20838. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  20839. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  20840. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  20841. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  20842. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  20843. <boolProp name="HTTPSampler.monitor">false</boolProp>
  20844. <stringProp name="HTTPSampler.embedded_url_re"/>
  20845. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  20846. </HTTPSamplerProxy>
  20847. <hashTree>
  20848. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  20849. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  20850. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  20851. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  20852. <stringProp name="RegexExtractor.template">$1$</stringProp>
  20853. <stringProp name="RegexExtractor.default"/>
  20854. <stringProp name="RegexExtractor.match_number">1</stringProp>
  20855. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  20856. <hashTree/>
  20857. </hashTree>
  20858. </hashTree>
  20859. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  20860. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  20861. </GenericController>
  20862. <hashTree>
  20863. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Edit Product" enabled="true"/>
  20864. <hashTree>
  20865. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  20866. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx</stringProp>
  20867. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  20868. import java.util.HashMap;
  20869. import java.util.Random;
  20870. int relatedIndex;
  20871. try {
  20872. Random random = new Random();
  20873. if (${seedForRandom} &gt; 0) {
  20874. random.setSeed(${seedForRandom} + ${__threadNum});
  20875. }
  20876. simpleCount = props.get("simple_products_list_for_edit").size();
  20877. configCount = props.get("configurable_products_list_for_edit").size();
  20878. productCount = 0;
  20879. if (simpleCount &gt; configCount) {
  20880. productCount = configCount;
  20881. } else {
  20882. productCount = simpleCount;
  20883. }
  20884. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  20885. if (threadsNumber == 0) {
  20886. threadsNumber = 1;
  20887. }
  20888. //Current thread number starts from 0
  20889. currentThreadNum = ctx.getThreadNum();
  20890. String siterator = vars.get("threadIterator_" + currentThreadNum.toString());
  20891. iterator = 0;
  20892. if(siterator == null){
  20893. vars.put("threadIterator_" + currentThreadNum.toString() , "0");
  20894. } else {
  20895. iterator = Integer.parseInt(siterator);
  20896. iterator ++;
  20897. vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString());
  20898. }
  20899. //Number of products for one thread
  20900. productClusterLength = productCount / threadsNumber;
  20901. if (iterator &gt;= productClusterLength) {
  20902. vars.put("threadIterator_" + currentThreadNum.toString(), "0");
  20903. iterator = 0;
  20904. }
  20905. //Index of the current product from the cluster
  20906. i = productClusterLength * currentThreadNum + iterator;
  20907. //ids of simple and configurable products to edit
  20908. vars.put("simple_product_id", props.get("simple_products_list_for_edit").get(i).get("id"));
  20909. vars.put("configurable_product_id", props.get("configurable_products_list_for_edit").get(i).get("id"));
  20910. //id of related product
  20911. do {
  20912. relatedIndex = random.nextInt(props.get("simple_products_list_for_edit").size());
  20913. } while(i == relatedIndex);
  20914. vars.put("related_product_id", props.get("simple_products_list_for_edit").get(relatedIndex).get("id"));
  20915. } catch (Exception ex) {
  20916. log.info("Script execution failed", ex);
  20917. }</stringProp>
  20918. <stringProp name="BeanShellSampler.filename"/>
  20919. <stringProp name="BeanShellSampler.parameters"/>
  20920. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  20921. </BeanShellSampler>
  20922. <hashTree/>
  20923. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product" enabled="true">
  20924. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  20925. <collectionProp name="Arguments.arguments"/>
  20926. </elementProp>
  20927. <stringProp name="HTTPSampler.domain"/>
  20928. <stringProp name="HTTPSampler.port"/>
  20929. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  20930. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  20931. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  20932. <stringProp name="HTTPSampler.contentEncoding"/>
  20933. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/</stringProp>
  20934. <stringProp name="HTTPSampler.method">GET</stringProp>
  20935. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  20936. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  20937. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  20938. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  20939. <boolProp name="HTTPSampler.monitor">false</boolProp>
  20940. <stringProp name="HTTPSampler.embedded_url_re"/>
  20941. </HTTPSamplerProxy>
  20942. <hashTree>
  20943. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  20944. <collectionProp name="Asserion.test_strings">
  20945. <stringProp name="1355179215">Product</stringProp>
  20946. </collectionProp>
  20947. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  20948. <boolProp name="Assertion.assume_success">false</boolProp>
  20949. <intProp name="Assertion.test_type">16</intProp>
  20950. </ResponseAssertion>
  20951. <hashTree/>
  20952. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  20953. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  20954. <stringProp name="RegexExtractor.refname">simple_product_name</stringProp>
  20955. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  20956. <stringProp name="RegexExtractor.template">$1$</stringProp>
  20957. <stringProp name="RegexExtractor.default"/>
  20958. <stringProp name="RegexExtractor.match_number">1</stringProp>
  20959. </RegexExtractor>
  20960. <hashTree/>
  20961. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  20962. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  20963. <stringProp name="RegexExtractor.refname">simple_product_sku</stringProp>
  20964. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  20965. <stringProp name="RegexExtractor.template">$1$</stringProp>
  20966. <stringProp name="RegexExtractor.default"/>
  20967. <stringProp name="RegexExtractor.match_number">1</stringProp>
  20968. </RegexExtractor>
  20969. <hashTree/>
  20970. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  20971. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  20972. <stringProp name="RegexExtractor.refname">simple_product_category_id</stringProp>
  20973. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)".</stringProp>
  20974. <stringProp name="RegexExtractor.template">$1$</stringProp>
  20975. <stringProp name="RegexExtractor.default"/>
  20976. <stringProp name="RegexExtractor.match_number">1</stringProp>
  20977. </RegexExtractor>
  20978. <hashTree/>
  20979. </hashTree>
  20980. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set updated values" enabled="true">
  20981. <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
  20982. <stringProp name="BeanShellSampler.query">//Additional category to be added
  20983. import java.util.Random;
  20984. Random randomGenerator = new Random();
  20985. int newCategoryId;
  20986. if (${seedForRandom} &gt; 0) {
  20987. randomGenerator.setSeed(${seedForRandom} + ${__threadNum});
  20988. }
  20989. int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  20990. categoryList = props.get("admin_category_ids_list");
  20991. if (categoryList.size() &gt; 1) {
  20992. do {
  20993. int index = randomGenerator.nextInt(categoryList.size());
  20994. newCategoryId = Integer.parseInt(categoryList.get(index));
  20995. } while (categoryId == newCategoryId);
  20996. vars.put("category_additional", newCategoryId.toString());
  20997. }
  20998. //New price
  20999. vars.put("price_new", "9999");
  21000. //New special price
  21001. vars.put("special_price_new", "8888");
  21002. //New quantity
  21003. vars.put("quantity_new", "100600");
  21004. </stringProp>
  21005. <stringProp name="BeanShellSampler.filename"/>
  21006. <stringProp name="BeanShellSampler.parameters"/>
  21007. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  21008. </BeanShellSampler>
  21009. <hashTree/>
  21010. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Validate" enabled="true">
  21011. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  21012. <collectionProp name="Arguments.arguments">
  21013. <elementProp name="ajax" elementType="HTTPArgument">
  21014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21015. <stringProp name="Argument.value">true</stringProp>
  21016. <stringProp name="Argument.metadata">=</stringProp>
  21017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21018. <stringProp name="Argument.name">ajax</stringProp>
  21019. <stringProp name="Argument.desc">false</stringProp>
  21020. </elementProp>
  21021. <elementProp name="isAjax" elementType="HTTPArgument">
  21022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21023. <stringProp name="Argument.value">true</stringProp>
  21024. <stringProp name="Argument.metadata">=</stringProp>
  21025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21026. <stringProp name="Argument.name">isAjax</stringProp>
  21027. <stringProp name="Argument.desc">false</stringProp>
  21028. </elementProp>
  21029. <elementProp name="form_key" elementType="HTTPArgument">
  21030. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21031. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  21032. <stringProp name="Argument.metadata">=</stringProp>
  21033. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21034. <stringProp name="Argument.name">form_key</stringProp>
  21035. <stringProp name="Argument.desc">false</stringProp>
  21036. </elementProp>
  21037. <elementProp name="product[name]" elementType="HTTPArgument">
  21038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21039. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  21040. <stringProp name="Argument.metadata">=</stringProp>
  21041. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21042. <stringProp name="Argument.name">product[name]</stringProp>
  21043. <stringProp name="Argument.desc">false</stringProp>
  21044. </elementProp>
  21045. <elementProp name="product[sku]" elementType="HTTPArgument">
  21046. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21047. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  21048. <stringProp name="Argument.metadata">=</stringProp>
  21049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21050. <stringProp name="Argument.name">product[sku]</stringProp>
  21051. <stringProp name="Argument.desc">false</stringProp>
  21052. </elementProp>
  21053. <elementProp name="product[price]" elementType="HTTPArgument">
  21054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21055. <stringProp name="Argument.value">${price_new}</stringProp>
  21056. <stringProp name="Argument.metadata">=</stringProp>
  21057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21058. <stringProp name="Argument.name">product[price]</stringProp>
  21059. <stringProp name="Argument.desc">false</stringProp>
  21060. </elementProp>
  21061. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  21062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21063. <stringProp name="Argument.value">2</stringProp>
  21064. <stringProp name="Argument.metadata">=</stringProp>
  21065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21066. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  21067. <stringProp name="Argument.desc">false</stringProp>
  21068. </elementProp>
  21069. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  21070. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21071. <stringProp name="Argument.value">${quantity_new}</stringProp>
  21072. <stringProp name="Argument.metadata">=</stringProp>
  21073. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21074. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  21075. <stringProp name="Argument.desc">false</stringProp>
  21076. </elementProp>
  21077. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  21078. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21079. <stringProp name="Argument.value">1</stringProp>
  21080. <stringProp name="Argument.metadata">=</stringProp>
  21081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21082. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  21083. <stringProp name="Argument.desc">false</stringProp>
  21084. </elementProp>
  21085. <elementProp name="product[weight]" elementType="HTTPArgument">
  21086. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21087. <stringProp name="Argument.value">1.0000</stringProp>
  21088. <stringProp name="Argument.metadata">=</stringProp>
  21089. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21090. <stringProp name="Argument.name">product[weight]</stringProp>
  21091. <stringProp name="Argument.desc">false</stringProp>
  21092. </elementProp>
  21093. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  21094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21095. <stringProp name="Argument.value">1</stringProp>
  21096. <stringProp name="Argument.metadata">=</stringProp>
  21097. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21098. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  21099. <stringProp name="Argument.desc">false</stringProp>
  21100. </elementProp>
  21101. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  21102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21103. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  21104. <stringProp name="Argument.metadata">=</stringProp>
  21105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21106. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  21107. <stringProp name="Argument.desc">false</stringProp>
  21108. </elementProp>
  21109. <elementProp name="product[description]" elementType="HTTPArgument">
  21110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21111. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  21112. <stringProp name="Argument.metadata">=</stringProp>
  21113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21114. <stringProp name="Argument.name">product[description]</stringProp>
  21115. <stringProp name="Argument.desc">false</stringProp>
  21116. </elementProp>
  21117. <elementProp name="product[status]" elementType="HTTPArgument">
  21118. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21119. <stringProp name="Argument.value">1</stringProp>
  21120. <stringProp name="Argument.metadata">=</stringProp>
  21121. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21122. <stringProp name="Argument.name">product[status]</stringProp>
  21123. <stringProp name="Argument.desc">false</stringProp>
  21124. </elementProp>
  21125. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  21126. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21127. <stringProp name="Argument.value"/>
  21128. <stringProp name="Argument.metadata">=</stringProp>
  21129. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21130. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  21131. <stringProp name="Argument.desc">false</stringProp>
  21132. </elementProp>
  21133. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  21134. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21135. <stringProp name="Argument.value">1</stringProp>
  21136. <stringProp name="Argument.metadata">=</stringProp>
  21137. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21138. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  21139. <stringProp name="Argument.desc">false</stringProp>
  21140. </elementProp>
  21141. <elementProp name="product[image]" elementType="HTTPArgument">
  21142. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21143. <stringProp name="Argument.value"/>
  21144. <stringProp name="Argument.metadata">=</stringProp>
  21145. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21146. <stringProp name="Argument.name">product[image]</stringProp>
  21147. <stringProp name="Argument.desc">false</stringProp>
  21148. </elementProp>
  21149. <elementProp name="product[small_image]" elementType="HTTPArgument">
  21150. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21151. <stringProp name="Argument.value"/>
  21152. <stringProp name="Argument.metadata">=</stringProp>
  21153. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21154. <stringProp name="Argument.name">product[small_image]</stringProp>
  21155. <stringProp name="Argument.desc">false</stringProp>
  21156. </elementProp>
  21157. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  21158. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21159. <stringProp name="Argument.value"/>
  21160. <stringProp name="Argument.metadata">=</stringProp>
  21161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21162. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  21163. <stringProp name="Argument.desc">false</stringProp>
  21164. </elementProp>
  21165. <elementProp name="product[url_key]" elementType="HTTPArgument">
  21166. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21167. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  21168. <stringProp name="Argument.metadata">=</stringProp>
  21169. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21170. <stringProp name="Argument.name">product[url_key]</stringProp>
  21171. <stringProp name="Argument.desc">false</stringProp>
  21172. </elementProp>
  21173. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  21174. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21175. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  21176. <stringProp name="Argument.metadata">=</stringProp>
  21177. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21178. <stringProp name="Argument.name">product[meta_title]</stringProp>
  21179. <stringProp name="Argument.desc">false</stringProp>
  21180. </elementProp>
  21181. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  21182. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21183. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  21184. <stringProp name="Argument.metadata">=</stringProp>
  21185. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21186. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  21187. <stringProp name="Argument.desc">false</stringProp>
  21188. </elementProp>
  21189. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  21190. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21191. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  21192. <stringProp name="Argument.metadata">=</stringProp>
  21193. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21194. <stringProp name="Argument.name">product[meta_description]</stringProp>
  21195. <stringProp name="Argument.desc">false</stringProp>
  21196. </elementProp>
  21197. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  21198. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21199. <stringProp name="Argument.value">1</stringProp>
  21200. <stringProp name="Argument.metadata">=</stringProp>
  21201. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21202. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  21203. <stringProp name="Argument.desc">false</stringProp>
  21204. </elementProp>
  21205. <elementProp name="product[special_price]" elementType="HTTPArgument">
  21206. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21207. <stringProp name="Argument.value">${special_price_new}</stringProp>
  21208. <stringProp name="Argument.metadata">=</stringProp>
  21209. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21210. <stringProp name="Argument.name">product[special_price]</stringProp>
  21211. <stringProp name="Argument.desc">false</stringProp>
  21212. </elementProp>
  21213. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  21214. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21215. <stringProp name="Argument.value"/>
  21216. <stringProp name="Argument.metadata">=</stringProp>
  21217. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21218. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  21219. <stringProp name="Argument.desc">false</stringProp>
  21220. </elementProp>
  21221. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  21222. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21223. <stringProp name="Argument.value"/>
  21224. <stringProp name="Argument.metadata">=</stringProp>
  21225. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21226. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  21227. <stringProp name="Argument.desc">false</stringProp>
  21228. </elementProp>
  21229. <elementProp name="product[cost]" elementType="HTTPArgument">
  21230. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21231. <stringProp name="Argument.value"/>
  21232. <stringProp name="Argument.metadata">=</stringProp>
  21233. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21234. <stringProp name="Argument.name">product[cost]</stringProp>
  21235. <stringProp name="Argument.desc">false</stringProp>
  21236. </elementProp>
  21237. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  21238. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21239. <stringProp name="Argument.value">1</stringProp>
  21240. <stringProp name="Argument.metadata">=</stringProp>
  21241. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21242. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  21243. <stringProp name="Argument.desc">false</stringProp>
  21244. </elementProp>
  21245. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  21246. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21247. <stringProp name="Argument.value">${quantity_new}</stringProp>
  21248. <stringProp name="Argument.metadata">=</stringProp>
  21249. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21250. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  21251. <stringProp name="Argument.desc">false</stringProp>
  21252. </elementProp>
  21253. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  21254. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21255. <stringProp name="Argument.value">${quantity_new}</stringProp>
  21256. <stringProp name="Argument.metadata">=</stringProp>
  21257. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21258. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  21259. <stringProp name="Argument.desc">false</stringProp>
  21260. </elementProp>
  21261. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  21262. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21263. <stringProp name="Argument.value">0</stringProp>
  21264. <stringProp name="Argument.metadata">=</stringProp>
  21265. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21266. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  21267. <stringProp name="Argument.desc">false</stringProp>
  21268. </elementProp>
  21269. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  21270. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21271. <stringProp name="Argument.value">1</stringProp>
  21272. <stringProp name="Argument.metadata">=</stringProp>
  21273. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21274. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  21275. <stringProp name="Argument.desc">false</stringProp>
  21276. </elementProp>
  21277. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  21278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21279. <stringProp name="Argument.value">1</stringProp>
  21280. <stringProp name="Argument.metadata">=</stringProp>
  21281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21282. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  21283. <stringProp name="Argument.desc">false</stringProp>
  21284. </elementProp>
  21285. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  21286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21287. <stringProp name="Argument.value">1</stringProp>
  21288. <stringProp name="Argument.metadata">=</stringProp>
  21289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21290. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  21291. <stringProp name="Argument.desc">false</stringProp>
  21292. </elementProp>
  21293. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  21294. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21295. <stringProp name="Argument.value">10000</stringProp>
  21296. <stringProp name="Argument.metadata">=</stringProp>
  21297. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21298. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  21299. <stringProp name="Argument.desc">false</stringProp>
  21300. </elementProp>
  21301. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  21302. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21303. <stringProp name="Argument.value">1</stringProp>
  21304. <stringProp name="Argument.metadata">=</stringProp>
  21305. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21306. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  21307. <stringProp name="Argument.desc">false</stringProp>
  21308. </elementProp>
  21309. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  21310. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21311. <stringProp name="Argument.value">0</stringProp>
  21312. <stringProp name="Argument.metadata">=</stringProp>
  21313. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21314. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  21315. <stringProp name="Argument.desc">false</stringProp>
  21316. </elementProp>
  21317. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  21318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21319. <stringProp name="Argument.value">0</stringProp>
  21320. <stringProp name="Argument.metadata">=</stringProp>
  21321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21322. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  21323. <stringProp name="Argument.desc">false</stringProp>
  21324. </elementProp>
  21325. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  21326. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21327. <stringProp name="Argument.value">0</stringProp>
  21328. <stringProp name="Argument.metadata">=</stringProp>
  21329. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21330. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  21331. <stringProp name="Argument.desc">false</stringProp>
  21332. </elementProp>
  21333. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  21334. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21335. <stringProp name="Argument.value">1</stringProp>
  21336. <stringProp name="Argument.metadata">=</stringProp>
  21337. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21338. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  21339. <stringProp name="Argument.desc">false</stringProp>
  21340. </elementProp>
  21341. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  21342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21343. <stringProp name="Argument.value">1</stringProp>
  21344. <stringProp name="Argument.metadata">=</stringProp>
  21345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21346. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  21347. <stringProp name="Argument.desc">false</stringProp>
  21348. </elementProp>
  21349. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  21350. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21351. <stringProp name="Argument.value">1</stringProp>
  21352. <stringProp name="Argument.metadata">=</stringProp>
  21353. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21354. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  21355. <stringProp name="Argument.desc">false</stringProp>
  21356. </elementProp>
  21357. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  21358. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21359. <stringProp name="Argument.value">0</stringProp>
  21360. <stringProp name="Argument.metadata">=</stringProp>
  21361. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21362. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  21363. <stringProp name="Argument.desc">false</stringProp>
  21364. </elementProp>
  21365. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  21366. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21367. <stringProp name="Argument.value">0</stringProp>
  21368. <stringProp name="Argument.metadata">=</stringProp>
  21369. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21370. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  21371. <stringProp name="Argument.desc">false</stringProp>
  21372. </elementProp>
  21373. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  21374. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21375. <stringProp name="Argument.value">1</stringProp>
  21376. <stringProp name="Argument.metadata">=</stringProp>
  21377. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21378. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  21379. <stringProp name="Argument.desc">false</stringProp>
  21380. </elementProp>
  21381. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  21382. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21383. <stringProp name="Argument.value">1</stringProp>
  21384. <stringProp name="Argument.metadata">=</stringProp>
  21385. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21386. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  21387. <stringProp name="Argument.desc">false</stringProp>
  21388. </elementProp>
  21389. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  21390. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21391. <stringProp name="Argument.value"/>
  21392. <stringProp name="Argument.metadata">=</stringProp>
  21393. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21394. <stringProp name="Argument.name">product[custom_design]</stringProp>
  21395. <stringProp name="Argument.desc">false</stringProp>
  21396. </elementProp>
  21397. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  21398. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21399. <stringProp name="Argument.value"/>
  21400. <stringProp name="Argument.metadata">=</stringProp>
  21401. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21402. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  21403. <stringProp name="Argument.desc">false</stringProp>
  21404. </elementProp>
  21405. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  21406. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21407. <stringProp name="Argument.value"/>
  21408. <stringProp name="Argument.metadata">=</stringProp>
  21409. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21410. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  21411. <stringProp name="Argument.desc">false</stringProp>
  21412. </elementProp>
  21413. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  21414. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21415. <stringProp name="Argument.value"/>
  21416. <stringProp name="Argument.metadata">=</stringProp>
  21417. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21418. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  21419. <stringProp name="Argument.desc">false</stringProp>
  21420. </elementProp>
  21421. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  21422. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21423. <stringProp name="Argument.value"/>
  21424. <stringProp name="Argument.metadata">=</stringProp>
  21425. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21426. <stringProp name="Argument.name">product[page_layout]</stringProp>
  21427. <stringProp name="Argument.desc">false</stringProp>
  21428. </elementProp>
  21429. <elementProp name="product[options_container]" elementType="HTTPArgument">
  21430. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21431. <stringProp name="Argument.value">container2</stringProp>
  21432. <stringProp name="Argument.metadata">=</stringProp>
  21433. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21434. <stringProp name="Argument.name">product[options_container]</stringProp>
  21435. <stringProp name="Argument.desc">false</stringProp>
  21436. </elementProp>
  21437. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  21438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21439. <stringProp name="Argument.value"/>
  21440. <stringProp name="Argument.metadata">=</stringProp>
  21441. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21442. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  21443. <stringProp name="Argument.desc">false</stringProp>
  21444. </elementProp>
  21445. </collectionProp>
  21446. </elementProp>
  21447. <stringProp name="HTTPSampler.domain"/>
  21448. <stringProp name="HTTPSampler.port"/>
  21449. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  21450. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  21451. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  21452. <stringProp name="HTTPSampler.contentEncoding"/>
  21453. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true</stringProp>
  21454. <stringProp name="HTTPSampler.method">POST</stringProp>
  21455. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  21456. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  21457. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  21458. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  21459. <boolProp name="HTTPSampler.monitor">false</boolProp>
  21460. <stringProp name="HTTPSampler.embedded_url_re"/>
  21461. </HTTPSamplerProxy>
  21462. <hashTree>
  21463. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  21464. <collectionProp name="Asserion.test_strings">
  21465. <stringProp name="1853918323">{"error":false}</stringProp>
  21466. </collectionProp>
  21467. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  21468. <boolProp name="Assertion.assume_success">false</boolProp>
  21469. <intProp name="Assertion.test_type">2</intProp>
  21470. </ResponseAssertion>
  21471. <hashTree/>
  21472. </hashTree>
  21473. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Save" enabled="true">
  21474. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  21475. <collectionProp name="Arguments.arguments">
  21476. <elementProp name="ajax" elementType="HTTPArgument">
  21477. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21478. <stringProp name="Argument.value">true</stringProp>
  21479. <stringProp name="Argument.metadata">=</stringProp>
  21480. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21481. <stringProp name="Argument.name">ajax</stringProp>
  21482. <stringProp name="Argument.desc">false</stringProp>
  21483. </elementProp>
  21484. <elementProp name="isAjax" elementType="HTTPArgument">
  21485. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21486. <stringProp name="Argument.value">true</stringProp>
  21487. <stringProp name="Argument.metadata">=</stringProp>
  21488. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21489. <stringProp name="Argument.name">isAjax</stringProp>
  21490. <stringProp name="Argument.desc">false</stringProp>
  21491. </elementProp>
  21492. <elementProp name="form_key" elementType="HTTPArgument">
  21493. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21494. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  21495. <stringProp name="Argument.metadata">=</stringProp>
  21496. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21497. <stringProp name="Argument.name">form_key</stringProp>
  21498. <stringProp name="Argument.desc">false</stringProp>
  21499. </elementProp>
  21500. <elementProp name="product[name]" elementType="HTTPArgument">
  21501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21502. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  21503. <stringProp name="Argument.metadata">=</stringProp>
  21504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21505. <stringProp name="Argument.name">product[name]</stringProp>
  21506. <stringProp name="Argument.desc">false</stringProp>
  21507. </elementProp>
  21508. <elementProp name="product[sku]" elementType="HTTPArgument">
  21509. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21510. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  21511. <stringProp name="Argument.metadata">=</stringProp>
  21512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21513. <stringProp name="Argument.name">product[sku]</stringProp>
  21514. <stringProp name="Argument.desc">false</stringProp>
  21515. </elementProp>
  21516. <elementProp name="product[price]" elementType="HTTPArgument">
  21517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21518. <stringProp name="Argument.value">${price_new}</stringProp>
  21519. <stringProp name="Argument.metadata">=</stringProp>
  21520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21521. <stringProp name="Argument.name">product[price]</stringProp>
  21522. <stringProp name="Argument.desc">false</stringProp>
  21523. </elementProp>
  21524. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  21525. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21526. <stringProp name="Argument.value">2</stringProp>
  21527. <stringProp name="Argument.metadata">=</stringProp>
  21528. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21529. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  21530. <stringProp name="Argument.desc">false</stringProp>
  21531. </elementProp>
  21532. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  21533. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21534. <stringProp name="Argument.value">${quantity_new}</stringProp>
  21535. <stringProp name="Argument.metadata">=</stringProp>
  21536. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21537. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  21538. <stringProp name="Argument.desc">false</stringProp>
  21539. </elementProp>
  21540. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  21541. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21542. <stringProp name="Argument.value">1</stringProp>
  21543. <stringProp name="Argument.metadata">=</stringProp>
  21544. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21545. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  21546. <stringProp name="Argument.desc">false</stringProp>
  21547. </elementProp>
  21548. <elementProp name="product[weight]" elementType="HTTPArgument">
  21549. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21550. <stringProp name="Argument.value">1.0000</stringProp>
  21551. <stringProp name="Argument.metadata">=</stringProp>
  21552. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21553. <stringProp name="Argument.name">product[weight]</stringProp>
  21554. <stringProp name="Argument.desc">false</stringProp>
  21555. </elementProp>
  21556. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  21557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21558. <stringProp name="Argument.value">1</stringProp>
  21559. <stringProp name="Argument.metadata">=</stringProp>
  21560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21561. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  21562. <stringProp name="Argument.desc">false</stringProp>
  21563. </elementProp>
  21564. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  21565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21566. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  21567. <stringProp name="Argument.metadata">=</stringProp>
  21568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21569. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  21570. <stringProp name="Argument.desc">false</stringProp>
  21571. </elementProp>
  21572. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  21573. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21574. <stringProp name="Argument.value">${category_additional}</stringProp>
  21575. <stringProp name="Argument.metadata">=</stringProp>
  21576. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21577. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  21578. </elementProp>
  21579. <elementProp name="product[description]" elementType="HTTPArgument">
  21580. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21581. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  21582. <stringProp name="Argument.metadata">=</stringProp>
  21583. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21584. <stringProp name="Argument.name">product[description]</stringProp>
  21585. <stringProp name="Argument.desc">false</stringProp>
  21586. </elementProp>
  21587. <elementProp name="product[status]" elementType="HTTPArgument">
  21588. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21589. <stringProp name="Argument.value">1</stringProp>
  21590. <stringProp name="Argument.metadata">=</stringProp>
  21591. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21592. <stringProp name="Argument.name">product[status]</stringProp>
  21593. <stringProp name="Argument.desc">false</stringProp>
  21594. </elementProp>
  21595. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  21596. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21597. <stringProp name="Argument.value"/>
  21598. <stringProp name="Argument.metadata">=</stringProp>
  21599. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21600. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  21601. <stringProp name="Argument.desc">false</stringProp>
  21602. </elementProp>
  21603. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  21604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21605. <stringProp name="Argument.value">1</stringProp>
  21606. <stringProp name="Argument.metadata">=</stringProp>
  21607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21608. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  21609. <stringProp name="Argument.desc">false</stringProp>
  21610. </elementProp>
  21611. <elementProp name="product[image]" elementType="HTTPArgument">
  21612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21613. <stringProp name="Argument.value"/>
  21614. <stringProp name="Argument.metadata">=</stringProp>
  21615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21616. <stringProp name="Argument.name">product[image]</stringProp>
  21617. <stringProp name="Argument.desc">false</stringProp>
  21618. </elementProp>
  21619. <elementProp name="product[small_image]" elementType="HTTPArgument">
  21620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21621. <stringProp name="Argument.value"/>
  21622. <stringProp name="Argument.metadata">=</stringProp>
  21623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21624. <stringProp name="Argument.name">product[small_image]</stringProp>
  21625. <stringProp name="Argument.desc">false</stringProp>
  21626. </elementProp>
  21627. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  21628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21629. <stringProp name="Argument.value"/>
  21630. <stringProp name="Argument.metadata">=</stringProp>
  21631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21632. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  21633. <stringProp name="Argument.desc">false</stringProp>
  21634. </elementProp>
  21635. <elementProp name="product[url_key]" elementType="HTTPArgument">
  21636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21637. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  21638. <stringProp name="Argument.metadata">=</stringProp>
  21639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21640. <stringProp name="Argument.name">product[url_key]</stringProp>
  21641. <stringProp name="Argument.desc">false</stringProp>
  21642. </elementProp>
  21643. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  21644. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21645. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  21646. <stringProp name="Argument.metadata">=</stringProp>
  21647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21648. <stringProp name="Argument.name">product[meta_title]</stringProp>
  21649. <stringProp name="Argument.desc">false</stringProp>
  21650. </elementProp>
  21651. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  21652. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21653. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  21654. <stringProp name="Argument.metadata">=</stringProp>
  21655. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21656. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  21657. <stringProp name="Argument.desc">false</stringProp>
  21658. </elementProp>
  21659. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  21660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21661. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  21662. <stringProp name="Argument.metadata">=</stringProp>
  21663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21664. <stringProp name="Argument.name">product[meta_description]</stringProp>
  21665. <stringProp name="Argument.desc">false</stringProp>
  21666. </elementProp>
  21667. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  21668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21669. <stringProp name="Argument.value">1</stringProp>
  21670. <stringProp name="Argument.metadata">=</stringProp>
  21671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21672. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  21673. <stringProp name="Argument.desc">false</stringProp>
  21674. </elementProp>
  21675. <elementProp name="product[special_price]" elementType="HTTPArgument">
  21676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21677. <stringProp name="Argument.value">${special_price_new}</stringProp>
  21678. <stringProp name="Argument.metadata">=</stringProp>
  21679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21680. <stringProp name="Argument.name">product[special_price]</stringProp>
  21681. <stringProp name="Argument.desc">false</stringProp>
  21682. </elementProp>
  21683. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  21684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21685. <stringProp name="Argument.value"/>
  21686. <stringProp name="Argument.metadata">=</stringProp>
  21687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21688. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  21689. <stringProp name="Argument.desc">false</stringProp>
  21690. </elementProp>
  21691. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  21692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21693. <stringProp name="Argument.value"/>
  21694. <stringProp name="Argument.metadata">=</stringProp>
  21695. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21696. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  21697. <stringProp name="Argument.desc">false</stringProp>
  21698. </elementProp>
  21699. <elementProp name="product[cost]" elementType="HTTPArgument">
  21700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21701. <stringProp name="Argument.value"/>
  21702. <stringProp name="Argument.metadata">=</stringProp>
  21703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21704. <stringProp name="Argument.name">product[cost]</stringProp>
  21705. <stringProp name="Argument.desc">false</stringProp>
  21706. </elementProp>
  21707. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  21708. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21709. <stringProp name="Argument.value">1</stringProp>
  21710. <stringProp name="Argument.metadata">=</stringProp>
  21711. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21712. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  21713. <stringProp name="Argument.desc">false</stringProp>
  21714. </elementProp>
  21715. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  21716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21717. <stringProp name="Argument.value">${quantity_new}</stringProp>
  21718. <stringProp name="Argument.metadata">=</stringProp>
  21719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21720. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  21721. <stringProp name="Argument.desc">false</stringProp>
  21722. </elementProp>
  21723. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  21724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21725. <stringProp name="Argument.value">${quantity_new}</stringProp>
  21726. <stringProp name="Argument.metadata">=</stringProp>
  21727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21728. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  21729. <stringProp name="Argument.desc">false</stringProp>
  21730. </elementProp>
  21731. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  21732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21733. <stringProp name="Argument.value">0</stringProp>
  21734. <stringProp name="Argument.metadata">=</stringProp>
  21735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21736. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  21737. <stringProp name="Argument.desc">false</stringProp>
  21738. </elementProp>
  21739. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  21740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21741. <stringProp name="Argument.value">1</stringProp>
  21742. <stringProp name="Argument.metadata">=</stringProp>
  21743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21744. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  21745. <stringProp name="Argument.desc">false</stringProp>
  21746. </elementProp>
  21747. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  21748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21749. <stringProp name="Argument.value">1</stringProp>
  21750. <stringProp name="Argument.metadata">=</stringProp>
  21751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21752. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  21753. <stringProp name="Argument.desc">false</stringProp>
  21754. </elementProp>
  21755. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  21756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21757. <stringProp name="Argument.value">1</stringProp>
  21758. <stringProp name="Argument.metadata">=</stringProp>
  21759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21760. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  21761. <stringProp name="Argument.desc">false</stringProp>
  21762. </elementProp>
  21763. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  21764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21765. <stringProp name="Argument.value">10000</stringProp>
  21766. <stringProp name="Argument.metadata">=</stringProp>
  21767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21768. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  21769. <stringProp name="Argument.desc">false</stringProp>
  21770. </elementProp>
  21771. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  21772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21773. <stringProp name="Argument.value">1</stringProp>
  21774. <stringProp name="Argument.metadata">=</stringProp>
  21775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21776. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  21777. <stringProp name="Argument.desc">false</stringProp>
  21778. </elementProp>
  21779. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  21780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21781. <stringProp name="Argument.value">0</stringProp>
  21782. <stringProp name="Argument.metadata">=</stringProp>
  21783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21784. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  21785. <stringProp name="Argument.desc">false</stringProp>
  21786. </elementProp>
  21787. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  21788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21789. <stringProp name="Argument.value">0</stringProp>
  21790. <stringProp name="Argument.metadata">=</stringProp>
  21791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21792. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  21793. <stringProp name="Argument.desc">false</stringProp>
  21794. </elementProp>
  21795. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  21796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21797. <stringProp name="Argument.value">0</stringProp>
  21798. <stringProp name="Argument.metadata">=</stringProp>
  21799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21800. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  21801. <stringProp name="Argument.desc">false</stringProp>
  21802. </elementProp>
  21803. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  21804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21805. <stringProp name="Argument.value">1</stringProp>
  21806. <stringProp name="Argument.metadata">=</stringProp>
  21807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21808. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  21809. <stringProp name="Argument.desc">false</stringProp>
  21810. </elementProp>
  21811. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  21812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21813. <stringProp name="Argument.value">1</stringProp>
  21814. <stringProp name="Argument.metadata">=</stringProp>
  21815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21816. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  21817. <stringProp name="Argument.desc">false</stringProp>
  21818. </elementProp>
  21819. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  21820. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21821. <stringProp name="Argument.value">1</stringProp>
  21822. <stringProp name="Argument.metadata">=</stringProp>
  21823. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21824. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  21825. <stringProp name="Argument.desc">false</stringProp>
  21826. </elementProp>
  21827. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  21828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21829. <stringProp name="Argument.value">0</stringProp>
  21830. <stringProp name="Argument.metadata">=</stringProp>
  21831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21832. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  21833. <stringProp name="Argument.desc">false</stringProp>
  21834. </elementProp>
  21835. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  21836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21837. <stringProp name="Argument.value">0</stringProp>
  21838. <stringProp name="Argument.metadata">=</stringProp>
  21839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21840. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  21841. <stringProp name="Argument.desc">false</stringProp>
  21842. </elementProp>
  21843. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  21844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21845. <stringProp name="Argument.value">1</stringProp>
  21846. <stringProp name="Argument.metadata">=</stringProp>
  21847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21848. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  21849. <stringProp name="Argument.desc">false</stringProp>
  21850. </elementProp>
  21851. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  21852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21853. <stringProp name="Argument.value">1</stringProp>
  21854. <stringProp name="Argument.metadata">=</stringProp>
  21855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21856. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  21857. <stringProp name="Argument.desc">false</stringProp>
  21858. </elementProp>
  21859. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  21860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21861. <stringProp name="Argument.value"/>
  21862. <stringProp name="Argument.metadata">=</stringProp>
  21863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21864. <stringProp name="Argument.name">product[custom_design]</stringProp>
  21865. <stringProp name="Argument.desc">false</stringProp>
  21866. </elementProp>
  21867. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  21868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21869. <stringProp name="Argument.value"/>
  21870. <stringProp name="Argument.metadata">=</stringProp>
  21871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21872. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  21873. <stringProp name="Argument.desc">false</stringProp>
  21874. </elementProp>
  21875. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  21876. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21877. <stringProp name="Argument.value"/>
  21878. <stringProp name="Argument.metadata">=</stringProp>
  21879. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21880. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  21881. <stringProp name="Argument.desc">false</stringProp>
  21882. </elementProp>
  21883. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  21884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21885. <stringProp name="Argument.value"/>
  21886. <stringProp name="Argument.metadata">=</stringProp>
  21887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21888. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  21889. <stringProp name="Argument.desc">false</stringProp>
  21890. </elementProp>
  21891. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  21892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21893. <stringProp name="Argument.value"/>
  21894. <stringProp name="Argument.metadata">=</stringProp>
  21895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21896. <stringProp name="Argument.name">product[page_layout]</stringProp>
  21897. <stringProp name="Argument.desc">false</stringProp>
  21898. </elementProp>
  21899. <elementProp name="product[options_container]" elementType="HTTPArgument">
  21900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21901. <stringProp name="Argument.value">container2</stringProp>
  21902. <stringProp name="Argument.metadata">=</stringProp>
  21903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21904. <stringProp name="Argument.name">product[options_container]</stringProp>
  21905. <stringProp name="Argument.desc">false</stringProp>
  21906. </elementProp>
  21907. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  21908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  21909. <stringProp name="Argument.value"/>
  21910. <stringProp name="Argument.metadata">=</stringProp>
  21911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  21912. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  21913. <stringProp name="Argument.desc">false</stringProp>
  21914. </elementProp>
  21915. </collectionProp>
  21916. </elementProp>
  21917. <stringProp name="HTTPSampler.domain"/>
  21918. <stringProp name="HTTPSampler.port"/>
  21919. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  21920. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  21921. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  21922. <stringProp name="HTTPSampler.contentEncoding"/>
  21923. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/</stringProp>
  21924. <stringProp name="HTTPSampler.method">POST</stringProp>
  21925. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  21926. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  21927. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  21928. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  21929. <boolProp name="HTTPSampler.monitor">false</boolProp>
  21930. <stringProp name="HTTPSampler.embedded_url_re"/>
  21931. </HTTPSamplerProxy>
  21932. <hashTree>
  21933. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  21934. <collectionProp name="Asserion.test_strings">
  21935. <stringProp name="-583471546">You saved the product</stringProp>
  21936. </collectionProp>
  21937. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  21938. <boolProp name="Assertion.assume_success">false</boolProp>
  21939. <intProp name="Assertion.test_type">2</intProp>
  21940. </ResponseAssertion>
  21941. <hashTree/>
  21942. </hashTree>
  21943. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product" enabled="true">
  21944. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  21945. <collectionProp name="Arguments.arguments"/>
  21946. </elementProp>
  21947. <stringProp name="HTTPSampler.domain"/>
  21948. <stringProp name="HTTPSampler.port"/>
  21949. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  21950. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  21951. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  21952. <stringProp name="HTTPSampler.contentEncoding"/>
  21953. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/</stringProp>
  21954. <stringProp name="HTTPSampler.method">GET</stringProp>
  21955. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  21956. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  21957. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  21958. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  21959. <boolProp name="HTTPSampler.monitor">false</boolProp>
  21960. <stringProp name="HTTPSampler.embedded_url_re"/>
  21961. </HTTPSamplerProxy>
  21962. <hashTree>
  21963. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  21964. <collectionProp name="Asserion.test_strings">
  21965. <stringProp name="1355179215">Product</stringProp>
  21966. </collectionProp>
  21967. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  21968. <boolProp name="Assertion.assume_success">false</boolProp>
  21969. <intProp name="Assertion.test_type">16</intProp>
  21970. </ResponseAssertion>
  21971. <hashTree/>
  21972. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  21973. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  21974. <stringProp name="RegexExtractor.refname">configurable_product_name</stringProp>
  21975. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  21976. <stringProp name="RegexExtractor.template">$1$</stringProp>
  21977. <stringProp name="RegexExtractor.default"/>
  21978. <stringProp name="RegexExtractor.match_number">1</stringProp>
  21979. </RegexExtractor>
  21980. <hashTree/>
  21981. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  21982. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  21983. <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
  21984. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  21985. <stringProp name="RegexExtractor.template">$1$</stringProp>
  21986. <stringProp name="RegexExtractor.default"/>
  21987. <stringProp name="RegexExtractor.match_number">1</stringProp>
  21988. </RegexExtractor>
  21989. <hashTree/>
  21990. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  21991. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  21992. <stringProp name="RegexExtractor.refname">configurable_product_category_id</stringProp>
  21993. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)"</stringProp>
  21994. <stringProp name="RegexExtractor.template">$1$</stringProp>
  21995. <stringProp name="RegexExtractor.default"/>
  21996. <stringProp name="RegexExtractor.match_number">1</stringProp>
  21997. </RegexExtractor>
  21998. <hashTree/>
  21999. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable attribute id" enabled="true">
  22000. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22001. <stringProp name="RegexExtractor.refname">configurable_attribute_id</stringProp>
  22002. <stringProp name="RegexExtractor.regex">,"configurable_variation":"([^'"]+)",</stringProp>
  22003. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22004. <stringProp name="RegexExtractor.default"/>
  22005. <stringProp name="RegexExtractor.match_number">1</stringProp>
  22006. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  22007. </RegexExtractor>
  22008. <hashTree/>
  22009. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable matrix" enabled="true">
  22010. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22011. <stringProp name="RegexExtractor.refname">configurable_matrix</stringProp>
  22012. <stringProp name="RegexExtractor.regex">"configurable-matrix":(\[.*?\])</stringProp>
  22013. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22014. <stringProp name="RegexExtractor.default"/>
  22015. <stringProp name="RegexExtractor.match_number">1</stringProp>
  22016. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  22017. </RegexExtractor>
  22018. <hashTree/>
  22019. <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 associated products ids" enabled="true">
  22020. <stringProp name="VAR">associated_products_ids</stringProp>
  22021. <stringProp name="JSONPATH">$.[*].id</stringProp>
  22022. <stringProp name="DEFAULT"/>
  22023. <stringProp name="VARIABLE">configurable_matrix</stringProp>
  22024. <stringProp name="SUBJECT">VAR</stringProp>
  22025. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  22026. <hashTree/>
  22027. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable product json" enabled="true">
  22028. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22029. <stringProp name="RegexExtractor.refname">configurable_product_data</stringProp>
  22030. <stringProp name="RegexExtractor.regex">(\{"product":.*?configurable_attributes_data.*?\})\s*&lt;</stringProp>
  22031. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22032. <stringProp name="RegexExtractor.default"/>
  22033. <stringProp name="RegexExtractor.match_number">1</stringProp>
  22034. </RegexExtractor>
  22035. <hashTree/>
  22036. <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 configurable attributes data" enabled="true">
  22037. <stringProp name="VAR">configurable_attributes_data</stringProp>
  22038. <stringProp name="JSONPATH">$.product.configurable_attributes_data</stringProp>
  22039. <stringProp name="DEFAULT"/>
  22040. <stringProp name="VARIABLE">configurable_product_data</stringProp>
  22041. <stringProp name="SUBJECT">VAR</stringProp>
  22042. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  22043. <hashTree/>
  22044. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute ids" enabled="true">
  22045. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22046. <stringProp name="RegexExtractor.refname">configurable_attribute_ids</stringProp>
  22047. <stringProp name="RegexExtractor.regex">"attribute_id":"(\d+)"</stringProp>
  22048. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22049. <stringProp name="RegexExtractor.default"/>
  22050. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  22051. <stringProp name="Sample.scope">variable</stringProp>
  22052. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  22053. </RegexExtractor>
  22054. <hashTree/>
  22055. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute codes" enabled="true">
  22056. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22057. <stringProp name="RegexExtractor.refname">configurable_attribute_codes</stringProp>
  22058. <stringProp name="RegexExtractor.regex">"code":"(\w+)"</stringProp>
  22059. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22060. <stringProp name="RegexExtractor.default"/>
  22061. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  22062. <stringProp name="Sample.scope">variable</stringProp>
  22063. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  22064. </RegexExtractor>
  22065. <hashTree/>
  22066. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute labels" enabled="true">
  22067. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22068. <stringProp name="RegexExtractor.refname">configurable_attribute_labels</stringProp>
  22069. <stringProp name="RegexExtractor.regex">"label":"(.*?)"</stringProp>
  22070. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22071. <stringProp name="RegexExtractor.default"/>
  22072. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  22073. <stringProp name="Sample.scope">variable</stringProp>
  22074. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  22075. </RegexExtractor>
  22076. <hashTree/>
  22077. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute values" enabled="true">
  22078. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22079. <stringProp name="RegexExtractor.refname">configurable_attribute_values</stringProp>
  22080. <stringProp name="RegexExtractor.regex">"values":(\{(?:\}|.*?\}\}))</stringProp>
  22081. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22082. <stringProp name="RegexExtractor.default"/>
  22083. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  22084. <stringProp name="Sample.scope">variable</stringProp>
  22085. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  22086. </RegexExtractor>
  22087. <hashTree/>
  22088. </hashTree>
  22089. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach configurable attribute id" enabled="true">
  22090. <stringProp name="ForeachController.inputVal">configurable_attribute_ids</stringProp>
  22091. <stringProp name="ForeachController.returnVal">configurable_attribute_id</stringProp>
  22092. <boolProp name="ForeachController.useSeparator">true</boolProp>
  22093. </ForeachController>
  22094. <hashTree>
  22095. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  22096. <stringProp name="CounterConfig.start">1</stringProp>
  22097. <stringProp name="CounterConfig.end">${configurable_attribute_ids_matchNr}</stringProp>
  22098. <stringProp name="CounterConfig.incr">1</stringProp>
  22099. <stringProp name="CounterConfig.name">attribute_counter</stringProp>
  22100. <stringProp name="CounterConfig.format"/>
  22101. <boolProp name="CounterConfig.per_user">true</boolProp>
  22102. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  22103. </CounterConfig>
  22104. <hashTree/>
  22105. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process configurable attribute values" enabled="true">
  22106. <stringProp name="BeanShellSampler.query">return vars.get("configurable_attribute_values_" + vars.get("attribute_counter"));</stringProp>
  22107. <stringProp name="BeanShellSampler.filename"/>
  22108. <stringProp name="BeanShellSampler.parameters"/>
  22109. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  22110. </BeanShellSampler>
  22111. <hashTree>
  22112. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Exctract attribute values" enabled="true">
  22113. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  22114. <stringProp name="RegexExtractor.refname">attribute_${configurable_attribute_id}_values</stringProp>
  22115. <stringProp name="RegexExtractor.regex">"value_index":"(\d+)"</stringProp>
  22116. <stringProp name="RegexExtractor.template">$1$</stringProp>
  22117. <stringProp name="RegexExtractor.default"/>
  22118. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  22119. <stringProp name="Scope.variable">configurable_attribute_values_${attribute_counter}</stringProp>
  22120. </RegexExtractor>
  22121. <hashTree/>
  22122. </hashTree>
  22123. </hashTree>
  22124. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Validate" enabled="true">
  22125. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  22126. <collectionProp name="Arguments.arguments">
  22127. <elementProp name="isAjax" elementType="HTTPArgument">
  22128. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22129. <stringProp name="Argument.value">true</stringProp>
  22130. <stringProp name="Argument.metadata">=</stringProp>
  22131. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22132. <stringProp name="Argument.name">isAjax</stringProp>
  22133. <stringProp name="Argument.desc">false</stringProp>
  22134. </elementProp>
  22135. <elementProp name="form_key" elementType="HTTPArgument">
  22136. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22137. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  22138. <stringProp name="Argument.metadata">=</stringProp>
  22139. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22140. <stringProp name="Argument.name">form_key</stringProp>
  22141. <stringProp name="Argument.desc">false</stringProp>
  22142. </elementProp>
  22143. <elementProp name="product[name]" elementType="HTTPArgument">
  22144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22145. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  22146. <stringProp name="Argument.metadata">=</stringProp>
  22147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22148. <stringProp name="Argument.name">product[name]</stringProp>
  22149. <stringProp name="Argument.desc">false</stringProp>
  22150. </elementProp>
  22151. <elementProp name="product[sku]" elementType="HTTPArgument">
  22152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22153. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  22154. <stringProp name="Argument.metadata">=</stringProp>
  22155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22156. <stringProp name="Argument.name">product[sku]</stringProp>
  22157. <stringProp name="Argument.desc">false</stringProp>
  22158. </elementProp>
  22159. <elementProp name="product[price]" elementType="HTTPArgument">
  22160. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22161. <stringProp name="Argument.value">${price_new}</stringProp>
  22162. <stringProp name="Argument.metadata">=</stringProp>
  22163. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22164. <stringProp name="Argument.name">product[price]</stringProp>
  22165. <stringProp name="Argument.desc">false</stringProp>
  22166. </elementProp>
  22167. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  22168. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22169. <stringProp name="Argument.value">2</stringProp>
  22170. <stringProp name="Argument.metadata">=</stringProp>
  22171. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22172. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  22173. <stringProp name="Argument.desc">false</stringProp>
  22174. </elementProp>
  22175. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  22176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22177. <stringProp name="Argument.value">1</stringProp>
  22178. <stringProp name="Argument.metadata">=</stringProp>
  22179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22180. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  22181. <stringProp name="Argument.desc">false</stringProp>
  22182. </elementProp>
  22183. <elementProp name="product[weight]" elementType="HTTPArgument">
  22184. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22185. <stringProp name="Argument.value">3</stringProp>
  22186. <stringProp name="Argument.metadata">=</stringProp>
  22187. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22188. <stringProp name="Argument.name">product[weight]</stringProp>
  22189. <stringProp name="Argument.desc">false</stringProp>
  22190. </elementProp>
  22191. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  22192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22193. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  22194. <stringProp name="Argument.metadata">=</stringProp>
  22195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22196. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  22197. <stringProp name="Argument.desc">false</stringProp>
  22198. </elementProp>
  22199. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  22200. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22201. <stringProp name="Argument.value">${category_additional}</stringProp>
  22202. <stringProp name="Argument.metadata">=</stringProp>
  22203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22204. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  22205. <stringProp name="Argument.desc">false</stringProp>
  22206. </elementProp>
  22207. <elementProp name="product[description]" elementType="HTTPArgument">
  22208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22209. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  22210. <stringProp name="Argument.metadata">=</stringProp>
  22211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22212. <stringProp name="Argument.name">product[description]</stringProp>
  22213. <stringProp name="Argument.desc">false</stringProp>
  22214. </elementProp>
  22215. <elementProp name="product[status]" elementType="HTTPArgument">
  22216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22217. <stringProp name="Argument.value">1</stringProp>
  22218. <stringProp name="Argument.metadata">=</stringProp>
  22219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22220. <stringProp name="Argument.name">product[status]</stringProp>
  22221. <stringProp name="Argument.desc">false</stringProp>
  22222. </elementProp>
  22223. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  22224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22225. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  22226. <stringProp name="Argument.metadata">=</stringProp>
  22227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22228. <stringProp name="Argument.name">product[meta_title]</stringProp>
  22229. <stringProp name="Argument.desc">false</stringProp>
  22230. </elementProp>
  22231. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  22232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22233. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  22234. <stringProp name="Argument.metadata">=</stringProp>
  22235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22236. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  22237. <stringProp name="Argument.desc">false</stringProp>
  22238. </elementProp>
  22239. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  22240. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22241. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  22242. <stringProp name="Argument.metadata">=</stringProp>
  22243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22244. <stringProp name="Argument.name">product[meta_description]</stringProp>
  22245. <stringProp name="Argument.desc">false</stringProp>
  22246. </elementProp>
  22247. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  22248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22249. <stringProp name="Argument.value">1</stringProp>
  22250. <stringProp name="Argument.metadata">=</stringProp>
  22251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22252. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  22253. <stringProp name="Argument.desc">false</stringProp>
  22254. </elementProp>
  22255. <elementProp name="product[special_price]" elementType="HTTPArgument">
  22256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22257. <stringProp name="Argument.value">${special_price_new}</stringProp>
  22258. <stringProp name="Argument.metadata">=</stringProp>
  22259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22260. <stringProp name="Argument.name">product[special_price]</stringProp>
  22261. <stringProp name="Argument.desc">false</stringProp>
  22262. </elementProp>
  22263. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  22264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22265. <stringProp name="Argument.value"/>
  22266. <stringProp name="Argument.metadata">=</stringProp>
  22267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22268. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  22269. <stringProp name="Argument.desc">false</stringProp>
  22270. </elementProp>
  22271. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  22272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22273. <stringProp name="Argument.value"/>
  22274. <stringProp name="Argument.metadata">=</stringProp>
  22275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22276. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  22277. <stringProp name="Argument.desc">false</stringProp>
  22278. </elementProp>
  22279. <elementProp name="product[cost]" elementType="HTTPArgument">
  22280. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22281. <stringProp name="Argument.value"/>
  22282. <stringProp name="Argument.metadata">=</stringProp>
  22283. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22284. <stringProp name="Argument.name">product[cost]</stringProp>
  22285. <stringProp name="Argument.desc">false</stringProp>
  22286. </elementProp>
  22287. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  22288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22289. <stringProp name="Argument.value">1</stringProp>
  22290. <stringProp name="Argument.metadata">=</stringProp>
  22291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22292. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  22293. <stringProp name="Argument.desc">false</stringProp>
  22294. </elementProp>
  22295. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  22296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22297. <stringProp name="Argument.value">0</stringProp>
  22298. <stringProp name="Argument.metadata">=</stringProp>
  22299. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22300. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  22301. <stringProp name="Argument.desc">false</stringProp>
  22302. </elementProp>
  22303. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  22304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22305. <stringProp name="Argument.value">1</stringProp>
  22306. <stringProp name="Argument.metadata">=</stringProp>
  22307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22308. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  22309. <stringProp name="Argument.desc">false</stringProp>
  22310. </elementProp>
  22311. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  22312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22313. <stringProp name="Argument.value">1</stringProp>
  22314. <stringProp name="Argument.metadata">=</stringProp>
  22315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22316. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  22317. <stringProp name="Argument.desc">false</stringProp>
  22318. </elementProp>
  22319. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  22320. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22321. <stringProp name="Argument.value">1</stringProp>
  22322. <stringProp name="Argument.metadata">=</stringProp>
  22323. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22324. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  22325. <stringProp name="Argument.desc">false</stringProp>
  22326. </elementProp>
  22327. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  22328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22329. <stringProp name="Argument.value">1</stringProp>
  22330. <stringProp name="Argument.metadata">=</stringProp>
  22331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22332. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  22333. <stringProp name="Argument.desc">false</stringProp>
  22334. </elementProp>
  22335. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  22336. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22337. <stringProp name="Argument.value">0</stringProp>
  22338. <stringProp name="Argument.metadata">=</stringProp>
  22339. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22340. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  22341. <stringProp name="Argument.desc">false</stringProp>
  22342. </elementProp>
  22343. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  22344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22345. <stringProp name="Argument.value">0</stringProp>
  22346. <stringProp name="Argument.metadata">=</stringProp>
  22347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22348. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  22349. <stringProp name="Argument.desc">false</stringProp>
  22350. </elementProp>
  22351. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  22352. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22353. <stringProp name="Argument.value">0</stringProp>
  22354. <stringProp name="Argument.metadata">=</stringProp>
  22355. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22356. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  22357. <stringProp name="Argument.desc">false</stringProp>
  22358. </elementProp>
  22359. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  22360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22361. <stringProp name="Argument.value">1</stringProp>
  22362. <stringProp name="Argument.metadata">=</stringProp>
  22363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22364. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  22365. <stringProp name="Argument.desc">false</stringProp>
  22366. </elementProp>
  22367. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  22368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22369. <stringProp name="Argument.value">1</stringProp>
  22370. <stringProp name="Argument.metadata">=</stringProp>
  22371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22372. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  22373. <stringProp name="Argument.desc">false</stringProp>
  22374. </elementProp>
  22375. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  22376. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22377. <stringProp name="Argument.value">1</stringProp>
  22378. <stringProp name="Argument.metadata">=</stringProp>
  22379. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22380. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  22381. <stringProp name="Argument.desc">false</stringProp>
  22382. </elementProp>
  22383. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  22384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22385. <stringProp name="Argument.value">0</stringProp>
  22386. <stringProp name="Argument.metadata">=</stringProp>
  22387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22388. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  22389. <stringProp name="Argument.desc">false</stringProp>
  22390. </elementProp>
  22391. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  22392. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22393. <stringProp name="Argument.value">0</stringProp>
  22394. <stringProp name="Argument.metadata">=</stringProp>
  22395. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22396. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  22397. <stringProp name="Argument.desc">false</stringProp>
  22398. </elementProp>
  22399. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  22400. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22401. <stringProp name="Argument.value">1</stringProp>
  22402. <stringProp name="Argument.metadata">=</stringProp>
  22403. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22404. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  22405. <stringProp name="Argument.desc">false</stringProp>
  22406. </elementProp>
  22407. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  22408. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22409. <stringProp name="Argument.value">1</stringProp>
  22410. <stringProp name="Argument.metadata">=</stringProp>
  22411. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22412. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  22413. <stringProp name="Argument.desc">false</stringProp>
  22414. </elementProp>
  22415. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  22416. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22417. <stringProp name="Argument.value"/>
  22418. <stringProp name="Argument.metadata">=</stringProp>
  22419. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22420. <stringProp name="Argument.name">product[custom_design]</stringProp>
  22421. <stringProp name="Argument.desc">false</stringProp>
  22422. </elementProp>
  22423. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  22424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22425. <stringProp name="Argument.value"/>
  22426. <stringProp name="Argument.metadata">=</stringProp>
  22427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22428. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  22429. <stringProp name="Argument.desc">false</stringProp>
  22430. </elementProp>
  22431. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  22432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22433. <stringProp name="Argument.value"/>
  22434. <stringProp name="Argument.metadata">=</stringProp>
  22435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22436. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  22437. <stringProp name="Argument.desc">false</stringProp>
  22438. </elementProp>
  22439. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  22440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22441. <stringProp name="Argument.value"/>
  22442. <stringProp name="Argument.metadata">=</stringProp>
  22443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22444. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  22445. <stringProp name="Argument.desc">false</stringProp>
  22446. </elementProp>
  22447. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  22448. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22449. <stringProp name="Argument.value"/>
  22450. <stringProp name="Argument.metadata">=</stringProp>
  22451. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22452. <stringProp name="Argument.name">product[page_layout]</stringProp>
  22453. <stringProp name="Argument.desc">false</stringProp>
  22454. </elementProp>
  22455. <elementProp name="product[options_container]" elementType="HTTPArgument">
  22456. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22457. <stringProp name="Argument.value">container2</stringProp>
  22458. <stringProp name="Argument.metadata">=</stringProp>
  22459. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22460. <stringProp name="Argument.name">product[options_container]</stringProp>
  22461. <stringProp name="Argument.desc">false</stringProp>
  22462. </elementProp>
  22463. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  22464. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22465. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  22466. <stringProp name="Argument.metadata">=</stringProp>
  22467. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22468. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  22469. <stringProp name="Argument.desc">false</stringProp>
  22470. </elementProp>
  22471. <elementProp name="product[url_key]" elementType="HTTPArgument">
  22472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22473. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  22474. <stringProp name="Argument.metadata">=</stringProp>
  22475. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22476. <stringProp name="Argument.name">product[url_key]</stringProp>
  22477. </elementProp>
  22478. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  22479. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22480. <stringProp name="Argument.value">1</stringProp>
  22481. <stringProp name="Argument.metadata">=</stringProp>
  22482. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22483. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  22484. </elementProp>
  22485. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  22486. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22487. <stringProp name="Argument.value">1</stringProp>
  22488. <stringProp name="Argument.metadata">=</stringProp>
  22489. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22490. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  22491. </elementProp>
  22492. <elementProp name="product[visibility]" elementType="HTTPArgument">
  22493. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22494. <stringProp name="Argument.value">4</stringProp>
  22495. <stringProp name="Argument.metadata">=</stringProp>
  22496. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22497. <stringProp name="Argument.name">product[visibility]</stringProp>
  22498. </elementProp>
  22499. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  22500. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22501. <stringProp name="Argument.value">1</stringProp>
  22502. <stringProp name="Argument.metadata">=</stringProp>
  22503. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22504. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  22505. <stringProp name="Argument.desc">true</stringProp>
  22506. </elementProp>
  22507. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  22508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22509. <stringProp name="Argument.value">50</stringProp>
  22510. <stringProp name="Argument.metadata">=</stringProp>
  22511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22512. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  22513. <stringProp name="Argument.desc">false</stringProp>
  22514. </elementProp>
  22515. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  22516. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22517. <stringProp name="Argument.value">configurable</stringProp>
  22518. <stringProp name="Argument.metadata">=</stringProp>
  22519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22520. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  22521. <stringProp name="Argument.desc">false</stringProp>
  22522. </elementProp>
  22523. </collectionProp>
  22524. </elementProp>
  22525. <stringProp name="HTTPSampler.domain"/>
  22526. <stringProp name="HTTPSampler.port"/>
  22527. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  22528. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  22529. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  22530. <stringProp name="HTTPSampler.contentEncoding"/>
  22531. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/</stringProp>
  22532. <stringProp name="HTTPSampler.method">POST</stringProp>
  22533. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  22534. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  22535. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  22536. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  22537. <boolProp name="HTTPSampler.monitor">false</boolProp>
  22538. <stringProp name="HTTPSampler.embedded_url_re"/>
  22539. </HTTPSamplerProxy>
  22540. <hashTree>
  22541. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  22542. <boolProp name="resetInterpreter">false</boolProp>
  22543. <stringProp name="parameters"/>
  22544. <stringProp name="filename"/>
  22545. <stringProp name="script">try {
  22546. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  22547. for (int i = 1; i &lt;= attributesCount; i++) {
  22548. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  22549. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  22550. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  22551. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  22552. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  22553. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  22554. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  22555. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  22556. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  22557. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  22558. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  22559. for (int j = 1; j &lt;= valuesCount; j++) {
  22560. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  22561. ctx.getCurrentSampler().addArgument(
  22562. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  22563. "1"
  22564. );
  22565. ctx.getCurrentSampler().addArgument(
  22566. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  22567. attributeValue
  22568. );
  22569. }
  22570. }
  22571. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  22572. } catch (Exception e) {
  22573. log.error("error???", e);
  22574. }</stringProp>
  22575. </BeanShellPreProcessor>
  22576. <hashTree/>
  22577. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  22578. <collectionProp name="Asserion.test_strings">
  22579. <stringProp name="1853918323">{"error":false}</stringProp>
  22580. </collectionProp>
  22581. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  22582. <boolProp name="Assertion.assume_success">false</boolProp>
  22583. <intProp name="Assertion.test_type">2</intProp>
  22584. </ResponseAssertion>
  22585. <hashTree/>
  22586. </hashTree>
  22587. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Save" enabled="true">
  22588. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  22589. <collectionProp name="Arguments.arguments">
  22590. <elementProp name="ajax" elementType="HTTPArgument">
  22591. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22592. <stringProp name="Argument.value">true</stringProp>
  22593. <stringProp name="Argument.metadata">=</stringProp>
  22594. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22595. <stringProp name="Argument.name">ajax</stringProp>
  22596. <stringProp name="Argument.desc">false</stringProp>
  22597. </elementProp>
  22598. <elementProp name="isAjax" elementType="HTTPArgument">
  22599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22600. <stringProp name="Argument.value">true</stringProp>
  22601. <stringProp name="Argument.metadata">=</stringProp>
  22602. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22603. <stringProp name="Argument.name">isAjax</stringProp>
  22604. <stringProp name="Argument.desc">false</stringProp>
  22605. </elementProp>
  22606. <elementProp name="form_key" elementType="HTTPArgument">
  22607. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22608. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  22609. <stringProp name="Argument.metadata">=</stringProp>
  22610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22611. <stringProp name="Argument.name">form_key</stringProp>
  22612. <stringProp name="Argument.desc">false</stringProp>
  22613. </elementProp>
  22614. <elementProp name="product[name]" elementType="HTTPArgument">
  22615. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22616. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  22617. <stringProp name="Argument.metadata">=</stringProp>
  22618. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22619. <stringProp name="Argument.name">product[name]</stringProp>
  22620. <stringProp name="Argument.desc">false</stringProp>
  22621. </elementProp>
  22622. <elementProp name="product[sku]" elementType="HTTPArgument">
  22623. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22624. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  22625. <stringProp name="Argument.metadata">=</stringProp>
  22626. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22627. <stringProp name="Argument.name">product[sku]</stringProp>
  22628. <stringProp name="Argument.desc">false</stringProp>
  22629. </elementProp>
  22630. <elementProp name="product[price]" elementType="HTTPArgument">
  22631. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22632. <stringProp name="Argument.value">${price_new}</stringProp>
  22633. <stringProp name="Argument.metadata">=</stringProp>
  22634. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22635. <stringProp name="Argument.name">product[price]</stringProp>
  22636. <stringProp name="Argument.desc">false</stringProp>
  22637. </elementProp>
  22638. <elementProp name="product[tax_class_id]admin" elementType="HTTPArgument">
  22639. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22640. <stringProp name="Argument.value">2</stringProp>
  22641. <stringProp name="Argument.metadata">=</stringProp>
  22642. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22643. <stringProp name="Argument.name">product[tax_class_id]admin</stringProp>
  22644. <stringProp name="Argument.desc">false</stringProp>
  22645. </elementProp>
  22646. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  22647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22648. <stringProp name="Argument.value">1</stringProp>
  22649. <stringProp name="Argument.metadata">=</stringProp>
  22650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22651. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  22652. <stringProp name="Argument.desc">false</stringProp>
  22653. </elementProp>
  22654. <elementProp name="product[weight]" elementType="HTTPArgument">
  22655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22656. <stringProp name="Argument.value">3</stringProp>
  22657. <stringProp name="Argument.metadata">=</stringProp>
  22658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22659. <stringProp name="Argument.name">product[weight]</stringProp>
  22660. <stringProp name="Argument.desc">false</stringProp>
  22661. </elementProp>
  22662. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  22663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22664. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  22665. <stringProp name="Argument.metadata">=</stringProp>
  22666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22667. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  22668. <stringProp name="Argument.desc">false</stringProp>
  22669. </elementProp>
  22670. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  22671. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22672. <stringProp name="Argument.value">${category_additional}</stringProp>
  22673. <stringProp name="Argument.metadata">=</stringProp>
  22674. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22675. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  22676. <stringProp name="Argument.desc">false</stringProp>
  22677. </elementProp>
  22678. <elementProp name="product[description]" elementType="HTTPArgument">
  22679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22680. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  22681. <stringProp name="Argument.metadata">=</stringProp>
  22682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22683. <stringProp name="Argument.name">product[description]</stringProp>
  22684. <stringProp name="Argument.desc">false</stringProp>
  22685. </elementProp>
  22686. <elementProp name="product[status]" elementType="HTTPArgument">
  22687. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22688. <stringProp name="Argument.value">1</stringProp>
  22689. <stringProp name="Argument.metadata">=</stringProp>
  22690. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22691. <stringProp name="Argument.name">product[status]</stringProp>
  22692. <stringProp name="Argument.desc">false</stringProp>
  22693. </elementProp>
  22694. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  22695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22696. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  22697. <stringProp name="Argument.metadata">=</stringProp>
  22698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22699. <stringProp name="Argument.name">product[meta_title]</stringProp>
  22700. <stringProp name="Argument.desc">false</stringProp>
  22701. </elementProp>
  22702. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  22703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22704. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  22705. <stringProp name="Argument.metadata">=</stringProp>
  22706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22707. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  22708. <stringProp name="Argument.desc">false</stringProp>
  22709. </elementProp>
  22710. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  22711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22712. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  22713. <stringProp name="Argument.metadata">=</stringProp>
  22714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22715. <stringProp name="Argument.name">product[meta_description]</stringProp>
  22716. <stringProp name="Argument.desc">false</stringProp>
  22717. </elementProp>
  22718. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  22719. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22720. <stringProp name="Argument.value">1</stringProp>
  22721. <stringProp name="Argument.metadata">=</stringProp>
  22722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22723. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  22724. <stringProp name="Argument.desc">false</stringProp>
  22725. </elementProp>
  22726. <elementProp name="product[special_price]" elementType="HTTPArgument">
  22727. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22728. <stringProp name="Argument.value">${special_price_new}</stringProp>
  22729. <stringProp name="Argument.metadata">=</stringProp>
  22730. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22731. <stringProp name="Argument.name">product[special_price]</stringProp>
  22732. <stringProp name="Argument.desc">false</stringProp>
  22733. </elementProp>
  22734. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  22735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22736. <stringProp name="Argument.value"/>
  22737. <stringProp name="Argument.metadata">=</stringProp>
  22738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22739. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  22740. <stringProp name="Argument.desc">false</stringProp>
  22741. </elementProp>
  22742. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  22743. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22744. <stringProp name="Argument.value"/>
  22745. <stringProp name="Argument.metadata">=</stringProp>
  22746. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22747. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  22748. <stringProp name="Argument.desc">false</stringProp>
  22749. </elementProp>
  22750. <elementProp name="product[cost]" elementType="HTTPArgument">
  22751. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22752. <stringProp name="Argument.value"/>
  22753. <stringProp name="Argument.metadata">=</stringProp>
  22754. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22755. <stringProp name="Argument.name">product[cost]</stringProp>
  22756. <stringProp name="Argument.desc">false</stringProp>
  22757. </elementProp>
  22758. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  22759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22760. <stringProp name="Argument.value">1</stringProp>
  22761. <stringProp name="Argument.metadata">=</stringProp>
  22762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22763. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  22764. <stringProp name="Argument.desc">false</stringProp>
  22765. </elementProp>
  22766. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  22767. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22768. <stringProp name="Argument.value">0</stringProp>
  22769. <stringProp name="Argument.metadata">=</stringProp>
  22770. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22771. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  22772. <stringProp name="Argument.desc">false</stringProp>
  22773. </elementProp>
  22774. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  22775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22776. <stringProp name="Argument.value">1</stringProp>
  22777. <stringProp name="Argument.metadata">=</stringProp>
  22778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22779. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  22780. <stringProp name="Argument.desc">false</stringProp>
  22781. </elementProp>
  22782. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  22783. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22784. <stringProp name="Argument.value">1</stringProp>
  22785. <stringProp name="Argument.metadata">=</stringProp>
  22786. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22787. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  22788. <stringProp name="Argument.desc">false</stringProp>
  22789. </elementProp>
  22790. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  22791. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22792. <stringProp name="Argument.value">1</stringProp>
  22793. <stringProp name="Argument.metadata">=</stringProp>
  22794. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22795. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  22796. <stringProp name="Argument.desc">false</stringProp>
  22797. </elementProp>
  22798. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  22799. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22800. <stringProp name="Argument.value">1</stringProp>
  22801. <stringProp name="Argument.metadata">=</stringProp>
  22802. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22803. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  22804. <stringProp name="Argument.desc">false</stringProp>
  22805. </elementProp>
  22806. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  22807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22808. <stringProp name="Argument.value">0</stringProp>
  22809. <stringProp name="Argument.metadata">=</stringProp>
  22810. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22811. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  22812. <stringProp name="Argument.desc">false</stringProp>
  22813. </elementProp>
  22814. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  22815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22816. <stringProp name="Argument.value">0</stringProp>
  22817. <stringProp name="Argument.metadata">=</stringProp>
  22818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22819. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  22820. <stringProp name="Argument.desc">false</stringProp>
  22821. </elementProp>
  22822. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  22823. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22824. <stringProp name="Argument.value">0</stringProp>
  22825. <stringProp name="Argument.metadata">=</stringProp>
  22826. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22827. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  22828. <stringProp name="Argument.desc">false</stringProp>
  22829. </elementProp>
  22830. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  22831. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22832. <stringProp name="Argument.value">1</stringProp>
  22833. <stringProp name="Argument.metadata">=</stringProp>
  22834. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22835. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  22836. <stringProp name="Argument.desc">false</stringProp>
  22837. </elementProp>
  22838. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  22839. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22840. <stringProp name="Argument.value">1</stringProp>
  22841. <stringProp name="Argument.metadata">=</stringProp>
  22842. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22843. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  22844. <stringProp name="Argument.desc">false</stringProp>
  22845. </elementProp>
  22846. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  22847. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22848. <stringProp name="Argument.value">1</stringProp>
  22849. <stringProp name="Argument.metadata">=</stringProp>
  22850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22851. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  22852. <stringProp name="Argument.desc">false</stringProp>
  22853. </elementProp>
  22854. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  22855. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22856. <stringProp name="Argument.value">0</stringProp>
  22857. <stringProp name="Argument.metadata">=</stringProp>
  22858. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22859. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  22860. <stringProp name="Argument.desc">false</stringProp>
  22861. </elementProp>
  22862. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  22863. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22864. <stringProp name="Argument.value">0</stringProp>
  22865. <stringProp name="Argument.metadata">=</stringProp>
  22866. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22867. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  22868. <stringProp name="Argument.desc">false</stringProp>
  22869. </elementProp>
  22870. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  22871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22872. <stringProp name="Argument.value">1</stringProp>
  22873. <stringProp name="Argument.metadata">=</stringProp>
  22874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22875. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  22876. <stringProp name="Argument.desc">false</stringProp>
  22877. </elementProp>
  22878. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  22879. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22880. <stringProp name="Argument.value">1</stringProp>
  22881. <stringProp name="Argument.metadata">=</stringProp>
  22882. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22883. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  22884. <stringProp name="Argument.desc">false</stringProp>
  22885. </elementProp>
  22886. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  22887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22888. <stringProp name="Argument.value"/>
  22889. <stringProp name="Argument.metadata">=</stringProp>
  22890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22891. <stringProp name="Argument.name">product[custom_design]</stringProp>
  22892. <stringProp name="Argument.desc">false</stringProp>
  22893. </elementProp>
  22894. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  22895. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22896. <stringProp name="Argument.value"/>
  22897. <stringProp name="Argument.metadata">=</stringProp>
  22898. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22899. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  22900. <stringProp name="Argument.desc">false</stringProp>
  22901. </elementProp>
  22902. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  22903. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22904. <stringProp name="Argument.value"/>
  22905. <stringProp name="Argument.metadata">=</stringProp>
  22906. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22907. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  22908. <stringProp name="Argument.desc">false</stringProp>
  22909. </elementProp>
  22910. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  22911. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22912. <stringProp name="Argument.value"/>
  22913. <stringProp name="Argument.metadata">=</stringProp>
  22914. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22915. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  22916. <stringProp name="Argument.desc">false</stringProp>
  22917. </elementProp>
  22918. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  22919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22920. <stringProp name="Argument.value"/>
  22921. <stringProp name="Argument.metadata">=</stringProp>
  22922. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22923. <stringProp name="Argument.name">product[page_layout]</stringProp>
  22924. <stringProp name="Argument.desc">false</stringProp>
  22925. </elementProp>
  22926. <elementProp name="product[options_container]" elementType="HTTPArgument">
  22927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22928. <stringProp name="Argument.value">container2</stringProp>
  22929. <stringProp name="Argument.metadata">=</stringProp>
  22930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22931. <stringProp name="Argument.name">product[options_container]</stringProp>
  22932. <stringProp name="Argument.desc">false</stringProp>
  22933. </elementProp>
  22934. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  22935. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22936. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  22937. <stringProp name="Argument.metadata">=</stringProp>
  22938. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22939. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  22940. <stringProp name="Argument.desc">false</stringProp>
  22941. </elementProp>
  22942. <elementProp name="product[url_key]" elementType="HTTPArgument">
  22943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22944. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  22945. <stringProp name="Argument.metadata">=</stringProp>
  22946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22947. <stringProp name="Argument.name">product[url_key]</stringProp>
  22948. </elementProp>
  22949. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  22950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22951. <stringProp name="Argument.value">1</stringProp>
  22952. <stringProp name="Argument.metadata">=</stringProp>
  22953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22954. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  22955. </elementProp>
  22956. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  22957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22958. <stringProp name="Argument.value">1</stringProp>
  22959. <stringProp name="Argument.metadata">=</stringProp>
  22960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22961. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  22962. </elementProp>
  22963. <elementProp name="product[visibility]" elementType="HTTPArgument">
  22964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22965. <stringProp name="Argument.value">4</stringProp>
  22966. <stringProp name="Argument.metadata">=</stringProp>
  22967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22968. <stringProp name="Argument.name">product[visibility]</stringProp>
  22969. </elementProp>
  22970. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  22971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22972. <stringProp name="Argument.value">1</stringProp>
  22973. <stringProp name="Argument.metadata">=</stringProp>
  22974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22975. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  22976. <stringProp name="Argument.desc">true</stringProp>
  22977. </elementProp>
  22978. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  22979. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22980. <stringProp name="Argument.value">50</stringProp>
  22981. <stringProp name="Argument.metadata">=</stringProp>
  22982. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22983. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  22984. <stringProp name="Argument.desc">false</stringProp>
  22985. </elementProp>
  22986. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  22987. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  22988. <stringProp name="Argument.value">configurable</stringProp>
  22989. <stringProp name="Argument.metadata">=</stringProp>
  22990. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  22991. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  22992. <stringProp name="Argument.desc">false</stringProp>
  22993. </elementProp>
  22994. </collectionProp>
  22995. </elementProp>
  22996. <stringProp name="HTTPSampler.domain"/>
  22997. <stringProp name="HTTPSampler.port"/>
  22998. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  22999. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23000. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23001. <stringProp name="HTTPSampler.contentEncoding"/>
  23002. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/</stringProp>
  23003. <stringProp name="HTTPSampler.method">POST</stringProp>
  23004. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23005. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23006. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23007. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23008. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23009. <stringProp name="HTTPSampler.embedded_url_re"/>
  23010. </HTTPSamplerProxy>
  23011. <hashTree>
  23012. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  23013. <boolProp name="resetInterpreter">false</boolProp>
  23014. <stringProp name="parameters"/>
  23015. <stringProp name="filename"/>
  23016. <stringProp name="script">try {
  23017. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  23018. for (int i = 1; i &lt;= attributesCount; i++) {
  23019. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  23020. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  23021. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  23022. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  23023. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  23024. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  23025. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  23026. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  23027. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  23028. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  23029. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  23030. for (int j = 1; j &lt;= valuesCount; j++) {
  23031. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  23032. ctx.getCurrentSampler().addArgument(
  23033. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  23034. "1"
  23035. );
  23036. ctx.getCurrentSampler().addArgument(
  23037. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  23038. attributeValue
  23039. );
  23040. }
  23041. }
  23042. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  23043. } catch (Exception e) {
  23044. log.error("error???", e);
  23045. }</stringProp>
  23046. </BeanShellPreProcessor>
  23047. <hashTree/>
  23048. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23049. <collectionProp name="Asserion.test_strings">
  23050. <stringProp name="-583471546">You saved the product</stringProp>
  23051. </collectionProp>
  23052. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23053. <boolProp name="Assertion.assume_success">false</boolProp>
  23054. <intProp name="Assertion.test_type">2</intProp>
  23055. <stringProp name="TestPlan.comments"> if have trouble see messages-message-error </stringProp>
  23056. </ResponseAssertion>
  23057. <hashTree/>
  23058. </hashTree>
  23059. </hashTree>
  23060. </hashTree>
  23061. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  23062. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23063. <collectionProp name="Arguments.arguments"/>
  23064. </elementProp>
  23065. <stringProp name="HTTPSampler.domain"/>
  23066. <stringProp name="HTTPSampler.port"/>
  23067. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23068. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23069. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23070. <stringProp name="HTTPSampler.contentEncoding"/>
  23071. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  23072. <stringProp name="HTTPSampler.method">GET</stringProp>
  23073. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23074. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23075. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23076. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23077. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23078. <stringProp name="HTTPSampler.embedded_url_re"/>
  23079. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  23080. <hashTree>
  23081. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  23082. <boolProp name="resetInterpreter">false</boolProp>
  23083. <stringProp name="parameters"/>
  23084. <stringProp name="filename"/>
  23085. <stringProp name="script">
  23086. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  23087. if (adminUsersDistribution == 1) {
  23088. adminUserList = props.get("adminUserList");
  23089. adminUserList.add(vars.get("admin_user"));
  23090. }
  23091. </stringProp>
  23092. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  23093. <hashTree/>
  23094. </hashTree>
  23095. </hashTree>
  23096. </hashTree>
  23097. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="CSR Pool" enabled="true">
  23098. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  23099. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  23100. <boolProp name="LoopController.continue_forever">false</boolProp>
  23101. <stringProp name="LoopController.loops">${loops}</stringProp>
  23102. </elementProp>
  23103. <stringProp name="ThreadGroup.num_threads">${csrPoolUsers}</stringProp>
  23104. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  23105. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  23106. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  23107. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  23108. <stringProp name="ThreadGroup.duration"/>
  23109. <stringProp name="ThreadGroup.delay"/>
  23110. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  23111. <hashTree>
  23112. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Returns Management" enabled="true">
  23113. <intProp name="ThroughputController.style">1</intProp>
  23114. <boolProp name="ThroughputController.perThread">false</boolProp>
  23115. <intProp name="ThroughputController.maxThroughput">1</intProp>
  23116. <stringProp name="ThroughputController.percentThroughput">${adminReturnsManagementPercentage}</stringProp>
  23117. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  23118. <hashTree>
  23119. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  23120. <stringProp name="script">
  23121. var tmpLabel = vars.get("testLabel")
  23122. if (tmpLabel) {
  23123. var testLabel = " (" + tmpLabel + ")"
  23124. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  23125. if (sampler.getName().indexOf(testLabel) == -1) {
  23126. sampler.setName(sampler.getName() + testLabel);
  23127. }
  23128. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  23129. sampler.setName("SetUp - " + sampler.getName());
  23130. }
  23131. } else {
  23132. testLabel = ""
  23133. }
  23134. </stringProp>
  23135. <stringProp name="scriptLanguage">javascript</stringProp>
  23136. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  23137. <hashTree/>
  23138. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  23139. <stringProp name="BeanShellSampler.query">
  23140. vars.put("testLabel", "Admin Returns Management");
  23141. </stringProp>
  23142. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  23143. </BeanShellSampler>
  23144. <hashTree/>
  23145. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  23146. <stringProp name="script">
  23147. function getFormKeyFromResponse()
  23148. {
  23149. var url = prev.getUrlAsString(),
  23150. responseCode = prev.getResponseCode(),
  23151. formKey = null;
  23152. searchPattern = /var FORM_KEY = '(.+)'/;
  23153. if (responseCode == "200" &amp;&amp; url) {
  23154. response = prev.getResponseDataAsString();
  23155. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  23156. }
  23157. return formKey;
  23158. }
  23159. formKey = vars.get("form_key_storage");
  23160. currentFormKey = getFormKeyFromResponse();
  23161. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  23162. vars.put("form_key_storage", currentFormKey);
  23163. }
  23164. </stringProp>
  23165. <stringProp name="scriptLanguage">javascript</stringProp>
  23166. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  23167. <hashTree/>
  23168. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  23169. <stringProp name="script">
  23170. formKey = vars.get("form_key_storage");
  23171. if (formKey
  23172. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  23173. &amp;&amp; sampler.getMethod() == "POST")
  23174. {
  23175. arguments = sampler.getArguments();
  23176. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  23177. {
  23178. argument = arguments.getArgument(i);
  23179. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  23180. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  23181. argument.setValue(formKey);
  23182. }
  23183. }
  23184. }
  23185. </stringProp>
  23186. <stringProp name="scriptLanguage">javascript</stringProp>
  23187. </JSR223PreProcessor>
  23188. <hashTree/>
  23189. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  23190. <collectionProp name="CookieManager.cookies"/>
  23191. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  23192. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  23193. <hashTree/>
  23194. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  23195. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  23196. </GenericController>
  23197. <hashTree>
  23198. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  23199. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  23200. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  23201. <hashTree>
  23202. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  23203. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  23204. <stringProp name="BeanShellSampler.query">
  23205. adminUser = "none";
  23206. adminUserList = props.get("adminUserList");
  23207. adminUserListIterator = props.get("adminUserListIterator");
  23208. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  23209. if (adminUsersDistribution == 1) {
  23210. adminUser = adminUserList.poll();
  23211. } else {
  23212. if (!adminUserListIterator.hasNext()) {
  23213. adminUserListIterator = adminUserList.descendingIterator();
  23214. }
  23215. adminUser = adminUserListIterator.next();
  23216. }
  23217. if (adminUser == "none") {
  23218. SampleResult.setResponseMessage("adminUser list is empty");
  23219. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  23220. IsSuccess=false;
  23221. SampleResult.setSuccessful(false);
  23222. SampleResult.setStopThread(true);
  23223. }
  23224. vars.put("admin_user", adminUser);
  23225. </stringProp>
  23226. <stringProp name="BeanShellSampler.filename"/>
  23227. <stringProp name="BeanShellSampler.parameters"/>
  23228. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  23229. </BeanShellSampler>
  23230. <hashTree/>
  23231. </hashTree>
  23232. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  23233. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23234. <collectionProp name="Arguments.arguments"/>
  23235. </elementProp>
  23236. <stringProp name="HTTPSampler.domain"/>
  23237. <stringProp name="HTTPSampler.port"/>
  23238. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23239. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23240. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23241. <stringProp name="HTTPSampler.contentEncoding"/>
  23242. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  23243. <stringProp name="HTTPSampler.method">GET</stringProp>
  23244. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23245. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23246. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23247. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23248. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23249. <stringProp name="HTTPSampler.embedded_url_re"/>
  23250. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  23251. <hashTree>
  23252. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  23253. <collectionProp name="Asserion.test_strings">
  23254. <stringProp name="-1397214398">Welcome</stringProp>
  23255. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  23256. </collectionProp>
  23257. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23258. <boolProp name="Assertion.assume_success">false</boolProp>
  23259. <intProp name="Assertion.test_type">2</intProp>
  23260. </ResponseAssertion>
  23261. <hashTree/>
  23262. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  23263. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  23264. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  23265. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  23266. <stringProp name="RegexExtractor.template">$1$</stringProp>
  23267. <stringProp name="RegexExtractor.default"/>
  23268. <stringProp name="RegexExtractor.match_number">1</stringProp>
  23269. </RegexExtractor>
  23270. <hashTree/>
  23271. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  23272. <collectionProp name="Asserion.test_strings">
  23273. <stringProp name="2845929">^.+$</stringProp>
  23274. </collectionProp>
  23275. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23276. <boolProp name="Assertion.assume_success">false</boolProp>
  23277. <intProp name="Assertion.test_type">1</intProp>
  23278. <stringProp name="Assertion.scope">variable</stringProp>
  23279. <stringProp name="Scope.variable">admin_form_key</stringProp>
  23280. </ResponseAssertion>
  23281. <hashTree/>
  23282. </hashTree>
  23283. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  23284. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23285. <collectionProp name="Arguments.arguments">
  23286. <elementProp name="dummy" elementType="HTTPArgument">
  23287. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23288. <stringProp name="Argument.value"/>
  23289. <stringProp name="Argument.metadata">=</stringProp>
  23290. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23291. <stringProp name="Argument.name">dummy</stringProp>
  23292. </elementProp>
  23293. <elementProp name="form_key" elementType="HTTPArgument">
  23294. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23295. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  23296. <stringProp name="Argument.metadata">=</stringProp>
  23297. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23298. <stringProp name="Argument.name">form_key</stringProp>
  23299. </elementProp>
  23300. <elementProp name="login[password]" elementType="HTTPArgument">
  23301. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23302. <stringProp name="Argument.value">${admin_password}</stringProp>
  23303. <stringProp name="Argument.metadata">=</stringProp>
  23304. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23305. <stringProp name="Argument.name">login[password]</stringProp>
  23306. </elementProp>
  23307. <elementProp name="login[username]" elementType="HTTPArgument">
  23308. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23309. <stringProp name="Argument.value">${admin_user}</stringProp>
  23310. <stringProp name="Argument.metadata">=</stringProp>
  23311. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23312. <stringProp name="Argument.name">login[username]</stringProp>
  23313. </elementProp>
  23314. </collectionProp>
  23315. </elementProp>
  23316. <stringProp name="HTTPSampler.domain"/>
  23317. <stringProp name="HTTPSampler.port"/>
  23318. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23319. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23320. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23321. <stringProp name="HTTPSampler.contentEncoding"/>
  23322. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  23323. <stringProp name="HTTPSampler.method">POST</stringProp>
  23324. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23325. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23326. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23327. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23328. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  23329. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23330. <stringProp name="HTTPSampler.embedded_url_re"/>
  23331. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  23332. </HTTPSamplerProxy>
  23333. <hashTree>
  23334. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  23335. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  23336. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  23337. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  23338. <stringProp name="RegexExtractor.template">$1$</stringProp>
  23339. <stringProp name="RegexExtractor.default"/>
  23340. <stringProp name="RegexExtractor.match_number">1</stringProp>
  23341. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  23342. <hashTree/>
  23343. </hashTree>
  23344. </hashTree>
  23345. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  23346. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  23347. </GenericController>
  23348. <hashTree>
  23349. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  23350. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23351. <collectionProp name="Arguments.arguments"/>
  23352. </elementProp>
  23353. <stringProp name="HTTPSampler.domain"/>
  23354. <stringProp name="HTTPSampler.port"/>
  23355. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23356. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23357. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23358. <stringProp name="HTTPSampler.contentEncoding"/>
  23359. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  23360. <stringProp name="HTTPSampler.method">GET</stringProp>
  23361. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23362. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23363. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23364. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23365. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23366. <stringProp name="HTTPSampler.embedded_url_re"/>
  23367. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  23368. <hashTree>
  23369. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23370. <collectionProp name="Asserion.test_strings">
  23371. <stringProp name="1204796042">Create New Order</stringProp>
  23372. </collectionProp>
  23373. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23374. <boolProp name="Assertion.assume_success">false</boolProp>
  23375. <intProp name="Assertion.test_type">2</intProp>
  23376. </ResponseAssertion>
  23377. <hashTree/>
  23378. </hashTree>
  23379. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  23380. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23381. <collectionProp name="Arguments.arguments">
  23382. <elementProp name="namespace" elementType="HTTPArgument">
  23383. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23384. <stringProp name="Argument.value">sales_order_grid</stringProp>
  23385. <stringProp name="Argument.metadata">=</stringProp>
  23386. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23387. <stringProp name="Argument.name">namespace</stringProp>
  23388. </elementProp>
  23389. <elementProp name="search" elementType="HTTPArgument">
  23390. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23391. <stringProp name="Argument.value"/>
  23392. <stringProp name="Argument.metadata">=</stringProp>
  23393. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23394. <stringProp name="Argument.name">search</stringProp>
  23395. </elementProp>
  23396. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  23397. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23398. <stringProp name="Argument.value">true</stringProp>
  23399. <stringProp name="Argument.metadata">=</stringProp>
  23400. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23401. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  23402. </elementProp>
  23403. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  23404. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23405. <stringProp name="Argument.value">200</stringProp>
  23406. <stringProp name="Argument.metadata">=</stringProp>
  23407. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23408. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  23409. </elementProp>
  23410. <elementProp name="paging[current]" elementType="HTTPArgument">
  23411. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23412. <stringProp name="Argument.value">1</stringProp>
  23413. <stringProp name="Argument.metadata">=</stringProp>
  23414. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23415. <stringProp name="Argument.name">paging[current]</stringProp>
  23416. </elementProp>
  23417. <elementProp name="sorting[field]" elementType="HTTPArgument">
  23418. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23419. <stringProp name="Argument.value">increment_id</stringProp>
  23420. <stringProp name="Argument.metadata">=</stringProp>
  23421. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23422. <stringProp name="Argument.name">sorting[field]</stringProp>
  23423. </elementProp>
  23424. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  23425. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23426. <stringProp name="Argument.value">desc</stringProp>
  23427. <stringProp name="Argument.metadata">=</stringProp>
  23428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23429. <stringProp name="Argument.name">sorting[direction]</stringProp>
  23430. </elementProp>
  23431. <elementProp name="isAjax" elementType="HTTPArgument">
  23432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23433. <stringProp name="Argument.value">true</stringProp>
  23434. <stringProp name="Argument.metadata">=</stringProp>
  23435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23436. <stringProp name="Argument.name">isAjax</stringProp>
  23437. </elementProp>
  23438. <elementProp name="form_key" elementType="HTTPArgument">
  23439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23440. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  23441. <stringProp name="Argument.metadata">=</stringProp>
  23442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23443. <stringProp name="Argument.name">form_key</stringProp>
  23444. <stringProp name="Argument.desc">false</stringProp>
  23445. </elementProp>
  23446. <elementProp name="filters[status]" elementType="HTTPArgument">
  23447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23448. <stringProp name="Argument.value">pending</stringProp>
  23449. <stringProp name="Argument.metadata">=</stringProp>
  23450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23451. <stringProp name="Argument.name">filters[status]</stringProp>
  23452. <stringProp name="Argument.desc">true</stringProp>
  23453. </elementProp>
  23454. <elementProp name="_" elementType="HTTPArgument">
  23455. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23456. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  23457. <stringProp name="Argument.metadata">=</stringProp>
  23458. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23459. <stringProp name="Argument.name">_</stringProp>
  23460. </elementProp>
  23461. </collectionProp>
  23462. </elementProp>
  23463. <stringProp name="HTTPSampler.domain"/>
  23464. <stringProp name="HTTPSampler.port"/>
  23465. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23466. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23467. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23468. <stringProp name="HTTPSampler.contentEncoding"/>
  23469. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  23470. <stringProp name="HTTPSampler.method">GET</stringProp>
  23471. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23472. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23473. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23474. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23475. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23476. <stringProp name="HTTPSampler.embedded_url_re"/>
  23477. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  23478. <hashTree>
  23479. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23480. <collectionProp name="Asserion.test_strings">
  23481. <stringProp name="1637639774">totalRecords</stringProp>
  23482. </collectionProp>
  23483. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23484. <boolProp name="Assertion.assume_success">false</boolProp>
  23485. <intProp name="Assertion.test_type">2</intProp>
  23486. </ResponseAssertion>
  23487. <hashTree/>
  23488. </hashTree>
  23489. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  23490. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23491. <collectionProp name="Arguments.arguments">
  23492. <elementProp name="form_key" elementType="HTTPArgument">
  23493. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23494. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  23495. <stringProp name="Argument.metadata">=</stringProp>
  23496. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23497. <stringProp name="Argument.name">form_key</stringProp>
  23498. </elementProp>
  23499. <elementProp name="namespace" elementType="HTTPArgument">
  23500. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23501. <stringProp name="Argument.value">sales_order_grid</stringProp>
  23502. <stringProp name="Argument.metadata">=</stringProp>
  23503. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23504. <stringProp name="Argument.name">namespace</stringProp>
  23505. <stringProp name="Argument.desc">true</stringProp>
  23506. </elementProp>
  23507. <elementProp name="search" elementType="HTTPArgument">
  23508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23509. <stringProp name="Argument.value"/>
  23510. <stringProp name="Argument.metadata">=</stringProp>
  23511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23512. <stringProp name="Argument.name">search</stringProp>
  23513. <stringProp name="Argument.desc">true</stringProp>
  23514. </elementProp>
  23515. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  23516. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23517. <stringProp name="Argument.value">true</stringProp>
  23518. <stringProp name="Argument.metadata">=</stringProp>
  23519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23520. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  23521. <stringProp name="Argument.desc">true</stringProp>
  23522. </elementProp>
  23523. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  23524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23525. <stringProp name="Argument.value">200</stringProp>
  23526. <stringProp name="Argument.metadata">=</stringProp>
  23527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23528. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  23529. <stringProp name="Argument.desc">true</stringProp>
  23530. </elementProp>
  23531. <elementProp name="paging[current]" elementType="HTTPArgument">
  23532. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23533. <stringProp name="Argument.value">1</stringProp>
  23534. <stringProp name="Argument.metadata">=</stringProp>
  23535. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23536. <stringProp name="Argument.name">paging[current]</stringProp>
  23537. <stringProp name="Argument.desc">true</stringProp>
  23538. </elementProp>
  23539. <elementProp name="sorting[field]" elementType="HTTPArgument">
  23540. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23541. <stringProp name="Argument.value">increment_id</stringProp>
  23542. <stringProp name="Argument.metadata">=</stringProp>
  23543. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23544. <stringProp name="Argument.name">sorting[field]</stringProp>
  23545. <stringProp name="Argument.desc">true</stringProp>
  23546. </elementProp>
  23547. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  23548. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23549. <stringProp name="Argument.value">asc</stringProp>
  23550. <stringProp name="Argument.metadata">=</stringProp>
  23551. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23552. <stringProp name="Argument.name">sorting[direction]</stringProp>
  23553. <stringProp name="Argument.desc">true</stringProp>
  23554. </elementProp>
  23555. <elementProp name="isAjax" elementType="HTTPArgument">
  23556. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23557. <stringProp name="Argument.value">true</stringProp>
  23558. <stringProp name="Argument.metadata">=</stringProp>
  23559. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23560. <stringProp name="Argument.name">isAjax</stringProp>
  23561. <stringProp name="Argument.desc">true</stringProp>
  23562. </elementProp>
  23563. <elementProp name="filters[status]" elementType="HTTPArgument">
  23564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23565. <stringProp name="Argument.value">pending</stringProp>
  23566. <stringProp name="Argument.metadata">=</stringProp>
  23567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23568. <stringProp name="Argument.name">filters[status]</stringProp>
  23569. </elementProp>
  23570. <elementProp name="_" elementType="HTTPArgument">
  23571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23572. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  23573. <stringProp name="Argument.metadata">=</stringProp>
  23574. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23575. <stringProp name="Argument.name">_</stringProp>
  23576. </elementProp>
  23577. </collectionProp>
  23578. </elementProp>
  23579. <stringProp name="HTTPSampler.domain"/>
  23580. <stringProp name="HTTPSampler.port"/>
  23581. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23582. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23583. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23584. <stringProp name="HTTPSampler.contentEncoding"/>
  23585. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  23586. <stringProp name="HTTPSampler.method">GET</stringProp>
  23587. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23588. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23589. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23590. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23591. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23592. <stringProp name="HTTPSampler.embedded_url_re"/>
  23593. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  23594. <hashTree>
  23595. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23596. <collectionProp name="Asserion.test_strings">
  23597. <stringProp name="1637639774">totalRecords</stringProp>
  23598. </collectionProp>
  23599. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23600. <boolProp name="Assertion.assume_success">false</boolProp>
  23601. <intProp name="Assertion.test_type">2</intProp>
  23602. </ResponseAssertion>
  23603. <hashTree/>
  23604. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  23605. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  23606. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  23607. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  23608. <stringProp name="RegexExtractor.template">$1$</stringProp>
  23609. <stringProp name="RegexExtractor.default"/>
  23610. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  23611. <stringProp name="Scope.variable">simple_products</stringProp>
  23612. </RegexExtractor>
  23613. <hashTree/>
  23614. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  23615. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  23616. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  23617. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  23618. <stringProp name="RegexExtractor.template">$1$</stringProp>
  23619. <stringProp name="RegexExtractor.default"/>
  23620. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  23621. <stringProp name="Scope.variable">simple_products</stringProp>
  23622. </RegexExtractor>
  23623. <hashTree/>
  23624. </hashTree>
  23625. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  23626. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  23627. <stringProp name="BeanShellSampler.query">
  23628. import java.util.ArrayList;
  23629. import java.util.HashMap;
  23630. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  23631. import java.util.Random;
  23632. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  23633. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  23634. int clusterLength;
  23635. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  23636. if (threadsNumber == 0) {
  23637. //Number of orders for one thread
  23638. clusterLength = ordersCount;
  23639. } else {
  23640. clusterLength = Math.round(ordersCount / threadsNumber);
  23641. if (clusterLength == 0) {
  23642. clusterLength = 1;
  23643. }
  23644. }
  23645. //Current thread number starts from 0
  23646. int currentThreadNum = ctx.getThreadNum();
  23647. //Index of the current product from the cluster
  23648. Random random = new Random();
  23649. if (${seedForRandom} &gt; 0) {
  23650. random.setSeed(${seedForRandom} + ${__threadNum});
  23651. }
  23652. int iterator = random.nextInt(clusterLength);
  23653. if (iterator == 0) {
  23654. iterator = 1;
  23655. }
  23656. int i = clusterLength * currentThreadNum + iterator;
  23657. orderNumber = vars.get("order_numbers_" + i.toString());
  23658. orderId = vars.get("order_ids_" + i.toString());
  23659. vars.put("order_number", orderNumber);
  23660. vars.put("order_id", orderId);
  23661. </stringProp>
  23662. <stringProp name="BeanShellSampler.filename"/>
  23663. <stringProp name="BeanShellSampler.parameters"/>
  23664. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  23665. </BeanShellSampler>
  23666. <hashTree/>
  23667. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  23668. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23669. <collectionProp name="Arguments.arguments"/>
  23670. </elementProp>
  23671. <stringProp name="HTTPSampler.domain"/>
  23672. <stringProp name="HTTPSampler.port"/>
  23673. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23674. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23675. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23676. <stringProp name="HTTPSampler.contentEncoding"/>
  23677. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  23678. <stringProp name="HTTPSampler.method">GET</stringProp>
  23679. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23680. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23681. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23682. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23683. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23684. <stringProp name="HTTPSampler.embedded_url_re"/>
  23685. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  23686. <hashTree>
  23687. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23688. <collectionProp name="Asserion.test_strings">
  23689. <stringProp name="2103620713">#${order_number}</stringProp>
  23690. </collectionProp>
  23691. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23692. <boolProp name="Assertion.assume_success">false</boolProp>
  23693. <intProp name="Assertion.test_type">2</intProp>
  23694. </ResponseAssertion>
  23695. <hashTree/>
  23696. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  23697. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  23698. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  23699. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  23700. <stringProp name="RegexExtractor.template">$1$</stringProp>
  23701. <stringProp name="RegexExtractor.default"/>
  23702. <stringProp name="RegexExtractor.match_number">1</stringProp>
  23703. <stringProp name="Scope.variable">simple_products</stringProp>
  23704. </RegexExtractor>
  23705. <hashTree/>
  23706. </hashTree>
  23707. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  23708. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  23709. <boolProp name="IfController.evaluateAll">false</boolProp>
  23710. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  23711. <hashTree>
  23712. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  23713. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23714. <collectionProp name="Arguments.arguments"/>
  23715. </elementProp>
  23716. <stringProp name="HTTPSampler.domain"/>
  23717. <stringProp name="HTTPSampler.port"/>
  23718. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23719. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23720. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23721. <stringProp name="HTTPSampler.contentEncoding"/>
  23722. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  23723. <stringProp name="HTTPSampler.method">GET</stringProp>
  23724. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23725. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23726. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23727. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23728. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23729. <stringProp name="HTTPSampler.embedded_url_re"/>
  23730. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  23731. <hashTree>
  23732. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23733. <collectionProp name="Asserion.test_strings">
  23734. <stringProp name="-1233850814">Invoice Totals</stringProp>
  23735. </collectionProp>
  23736. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23737. <boolProp name="Assertion.assume_success">false</boolProp>
  23738. <intProp name="Assertion.test_type">2</intProp>
  23739. </ResponseAssertion>
  23740. <hashTree/>
  23741. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  23742. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  23743. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  23744. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  23745. <stringProp name="RegexExtractor.template">$1$</stringProp>
  23746. <stringProp name="RegexExtractor.default"/>
  23747. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  23748. <stringProp name="Scope.variable">simple_products</stringProp>
  23749. </RegexExtractor>
  23750. <hashTree/>
  23751. </hashTree>
  23752. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  23753. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23754. <collectionProp name="Arguments.arguments">
  23755. <elementProp name="form_key" elementType="HTTPArgument">
  23756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23757. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  23758. <stringProp name="Argument.metadata">=</stringProp>
  23759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23760. <stringProp name="Argument.name">form_key</stringProp>
  23761. <stringProp name="Argument.desc">false</stringProp>
  23762. </elementProp>
  23763. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  23764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23765. <stringProp name="Argument.value">1</stringProp>
  23766. <stringProp name="Argument.metadata">=</stringProp>
  23767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23768. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  23769. </elementProp>
  23770. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  23771. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23772. <stringProp name="Argument.value">1</stringProp>
  23773. <stringProp name="Argument.metadata">=</stringProp>
  23774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23775. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  23776. </elementProp>
  23777. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  23778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23779. <stringProp name="Argument.value">Invoiced</stringProp>
  23780. <stringProp name="Argument.metadata">=</stringProp>
  23781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23782. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  23783. </elementProp>
  23784. </collectionProp>
  23785. </elementProp>
  23786. <stringProp name="HTTPSampler.domain"/>
  23787. <stringProp name="HTTPSampler.port"/>
  23788. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23789. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23790. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23791. <stringProp name="HTTPSampler.contentEncoding"/>
  23792. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  23793. <stringProp name="HTTPSampler.method">POST</stringProp>
  23794. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23795. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23796. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23797. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23798. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23799. <stringProp name="HTTPSampler.embedded_url_re"/>
  23800. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  23801. <hashTree>
  23802. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23803. <collectionProp name="Asserion.test_strings">
  23804. <stringProp name="1740524604">The invoice has been created</stringProp>
  23805. </collectionProp>
  23806. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23807. <boolProp name="Assertion.assume_success">false</boolProp>
  23808. <intProp name="Assertion.test_type">2</intProp>
  23809. </ResponseAssertion>
  23810. <hashTree/>
  23811. </hashTree>
  23812. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Start" enabled="true">
  23813. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23814. <collectionProp name="Arguments.arguments"/>
  23815. </elementProp>
  23816. <stringProp name="HTTPSampler.domain"/>
  23817. <stringProp name="HTTPSampler.port"/>
  23818. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23819. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23820. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23821. <stringProp name="HTTPSampler.contentEncoding"/>
  23822. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/</stringProp>
  23823. <stringProp name="HTTPSampler.method">GET</stringProp>
  23824. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23825. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23826. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23827. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23828. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23829. <stringProp name="HTTPSampler.embedded_url_re"/>
  23830. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx</stringProp></HTTPSamplerProxy>
  23831. <hashTree>
  23832. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23833. <collectionProp name="Asserion.test_strings">
  23834. <stringProp name="1382627322">New Memo</stringProp>
  23835. </collectionProp>
  23836. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23837. <boolProp name="Assertion.assume_success">false</boolProp>
  23838. <intProp name="Assertion.test_type">2</intProp>
  23839. </ResponseAssertion>
  23840. <hashTree/>
  23841. </hashTree>
  23842. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Submit - Full Refund" enabled="true">
  23843. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23844. <collectionProp name="Arguments.arguments">
  23845. <elementProp name="form_key" elementType="HTTPArgument">
  23846. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23847. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  23848. <stringProp name="Argument.metadata">=</stringProp>
  23849. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23850. <stringProp name="Argument.name">form_key</stringProp>
  23851. <stringProp name="Argument.desc">false</stringProp>
  23852. </elementProp>
  23853. <elementProp name="creditmemo[items][${item_ids_1}][qty]" elementType="HTTPArgument">
  23854. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23855. <stringProp name="Argument.value">1</stringProp>
  23856. <stringProp name="Argument.metadata">=</stringProp>
  23857. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23858. <stringProp name="Argument.name">creditmemo[items][${item_ids_1}][qty]</stringProp>
  23859. </elementProp>
  23860. <elementProp name="creditmemo[items][${item_ids_2}][qty]" elementType="HTTPArgument">
  23861. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23862. <stringProp name="Argument.value">1</stringProp>
  23863. <stringProp name="Argument.metadata">=</stringProp>
  23864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23865. <stringProp name="Argument.name">creditmemo[items][${item_ids_2}][qty]</stringProp>
  23866. </elementProp>
  23867. <elementProp name="creditmemo[do_offline]" elementType="HTTPArgument">
  23868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23869. <stringProp name="Argument.value">1</stringProp>
  23870. <stringProp name="Argument.metadata">=</stringProp>
  23871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23872. <stringProp name="Argument.name">creditmemo[do_offline]</stringProp>
  23873. </elementProp>
  23874. <elementProp name="creditmemo[comment_text]" elementType="HTTPArgument">
  23875. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23876. <stringProp name="Argument.value">Credit Memo added</stringProp>
  23877. <stringProp name="Argument.metadata">=</stringProp>
  23878. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23879. <stringProp name="Argument.name">creditmemo[comment_text]</stringProp>
  23880. </elementProp>
  23881. <elementProp name="creditmemo[shipping_amount]" elementType="HTTPArgument">
  23882. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23883. <stringProp name="Argument.value">10</stringProp>
  23884. <stringProp name="Argument.metadata">=</stringProp>
  23885. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23886. <stringProp name="Argument.name">creditmemo[shipping_amount]</stringProp>
  23887. </elementProp>
  23888. <elementProp name="creditmemo[adjustment_positive]" elementType="HTTPArgument">
  23889. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23890. <stringProp name="Argument.value">0</stringProp>
  23891. <stringProp name="Argument.metadata">=</stringProp>
  23892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23893. <stringProp name="Argument.name">creditmemo[adjustment_positive]</stringProp>
  23894. </elementProp>
  23895. <elementProp name="creditmemo[adjustment_negative]" elementType="HTTPArgument">
  23896. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  23897. <stringProp name="Argument.value">0</stringProp>
  23898. <stringProp name="Argument.metadata">=</stringProp>
  23899. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  23900. <stringProp name="Argument.name">creditmemo[adjustment_negative]</stringProp>
  23901. </elementProp>
  23902. </collectionProp>
  23903. </elementProp>
  23904. <stringProp name="HTTPSampler.domain"/>
  23905. <stringProp name="HTTPSampler.port"/>
  23906. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23907. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23908. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23909. <stringProp name="HTTPSampler.contentEncoding"/>
  23910. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/</stringProp>
  23911. <stringProp name="HTTPSampler.method">POST</stringProp>
  23912. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23913. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23914. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23915. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23916. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23917. <stringProp name="HTTPSampler.embedded_url_re"/>
  23918. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_full_refund.jmx</stringProp></HTTPSamplerProxy>
  23919. <hashTree>
  23920. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  23921. <collectionProp name="Asserion.test_strings">
  23922. <stringProp name="-515117447">You created the credit memo</stringProp>
  23923. </collectionProp>
  23924. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  23925. <boolProp name="Assertion.assume_success">false</boolProp>
  23926. <intProp name="Assertion.test_type">2</intProp>
  23927. </ResponseAssertion>
  23928. <hashTree/>
  23929. </hashTree>
  23930. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Create/Process Returns - Pause" enabled="true">
  23931. <intProp name="ActionProcessor.action">1</intProp>
  23932. <intProp name="ActionProcessor.target">0</intProp>
  23933. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))}</stringProp>
  23934. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/pause.jmx</stringProp></TestAction>
  23935. <hashTree/>
  23936. </hashTree>
  23937. </hashTree>
  23938. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  23939. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  23940. <collectionProp name="Arguments.arguments"/>
  23941. </elementProp>
  23942. <stringProp name="HTTPSampler.domain"/>
  23943. <stringProp name="HTTPSampler.port"/>
  23944. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  23945. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  23946. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  23947. <stringProp name="HTTPSampler.contentEncoding"/>
  23948. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  23949. <stringProp name="HTTPSampler.method">GET</stringProp>
  23950. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  23951. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  23952. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  23953. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  23954. <boolProp name="HTTPSampler.monitor">false</boolProp>
  23955. <stringProp name="HTTPSampler.embedded_url_re"/>
  23956. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  23957. <hashTree>
  23958. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  23959. <boolProp name="resetInterpreter">false</boolProp>
  23960. <stringProp name="parameters"/>
  23961. <stringProp name="filename"/>
  23962. <stringProp name="script">
  23963. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  23964. if (adminUsersDistribution == 1) {
  23965. adminUserList = props.get("adminUserList");
  23966. adminUserList.add(vars.get("admin_user"));
  23967. }
  23968. </stringProp>
  23969. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  23970. <hashTree/>
  23971. </hashTree>
  23972. </hashTree>
  23973. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Browse Customer Grid" enabled="true">
  23974. <intProp name="ThroughputController.style">1</intProp>
  23975. <boolProp name="ThroughputController.perThread">false</boolProp>
  23976. <intProp name="ThroughputController.maxThroughput">1</intProp>
  23977. <stringProp name="ThroughputController.percentThroughput">${browseCustomerGridPercentage}</stringProp>
  23978. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  23979. <hashTree>
  23980. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  23981. <stringProp name="script">
  23982. var tmpLabel = vars.get("testLabel")
  23983. if (tmpLabel) {
  23984. var testLabel = " (" + tmpLabel + ")"
  23985. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  23986. if (sampler.getName().indexOf(testLabel) == -1) {
  23987. sampler.setName(sampler.getName() + testLabel);
  23988. }
  23989. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  23990. sampler.setName("SetUp - " + sampler.getName());
  23991. }
  23992. } else {
  23993. testLabel = ""
  23994. }
  23995. </stringProp>
  23996. <stringProp name="scriptLanguage">javascript</stringProp>
  23997. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  23998. <hashTree/>
  23999. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  24000. <stringProp name="BeanShellSampler.query">
  24001. vars.put("testLabel", "Browse Customer Grid");
  24002. </stringProp>
  24003. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  24004. </BeanShellSampler>
  24005. <hashTree/>
  24006. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  24007. <stringProp name="script">
  24008. function getFormKeyFromResponse()
  24009. {
  24010. var url = prev.getUrlAsString(),
  24011. responseCode = prev.getResponseCode(),
  24012. formKey = null;
  24013. searchPattern = /var FORM_KEY = '(.+)'/;
  24014. if (responseCode == "200" &amp;&amp; url) {
  24015. response = prev.getResponseDataAsString();
  24016. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  24017. }
  24018. return formKey;
  24019. }
  24020. formKey = vars.get("form_key_storage");
  24021. currentFormKey = getFormKeyFromResponse();
  24022. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  24023. vars.put("form_key_storage", currentFormKey);
  24024. }
  24025. </stringProp>
  24026. <stringProp name="scriptLanguage">javascript</stringProp>
  24027. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  24028. <hashTree/>
  24029. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  24030. <stringProp name="script">
  24031. formKey = vars.get("form_key_storage");
  24032. if (formKey
  24033. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  24034. &amp;&amp; sampler.getMethod() == "POST")
  24035. {
  24036. arguments = sampler.getArguments();
  24037. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  24038. {
  24039. argument = arguments.getArgument(i);
  24040. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  24041. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  24042. argument.setValue(formKey);
  24043. }
  24044. }
  24045. }
  24046. </stringProp>
  24047. <stringProp name="scriptLanguage">javascript</stringProp>
  24048. </JSR223PreProcessor>
  24049. <hashTree/>
  24050. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  24051. <collectionProp name="CookieManager.cookies"/>
  24052. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  24053. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  24054. <hashTree/>
  24055. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  24056. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  24057. </GenericController>
  24058. <hashTree>
  24059. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  24060. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  24061. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  24062. <hashTree>
  24063. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  24064. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  24065. <stringProp name="BeanShellSampler.query">
  24066. adminUser = "none";
  24067. adminUserList = props.get("adminUserList");
  24068. adminUserListIterator = props.get("adminUserListIterator");
  24069. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  24070. if (adminUsersDistribution == 1) {
  24071. adminUser = adminUserList.poll();
  24072. } else {
  24073. if (!adminUserListIterator.hasNext()) {
  24074. adminUserListIterator = adminUserList.descendingIterator();
  24075. }
  24076. adminUser = adminUserListIterator.next();
  24077. }
  24078. if (adminUser == "none") {
  24079. SampleResult.setResponseMessage("adminUser list is empty");
  24080. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  24081. IsSuccess=false;
  24082. SampleResult.setSuccessful(false);
  24083. SampleResult.setStopThread(true);
  24084. }
  24085. vars.put("admin_user", adminUser);
  24086. </stringProp>
  24087. <stringProp name="BeanShellSampler.filename"/>
  24088. <stringProp name="BeanShellSampler.parameters"/>
  24089. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  24090. </BeanShellSampler>
  24091. <hashTree/>
  24092. </hashTree>
  24093. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  24094. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24095. <collectionProp name="Arguments.arguments"/>
  24096. </elementProp>
  24097. <stringProp name="HTTPSampler.domain"/>
  24098. <stringProp name="HTTPSampler.port"/>
  24099. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24100. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24101. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24102. <stringProp name="HTTPSampler.contentEncoding"/>
  24103. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  24104. <stringProp name="HTTPSampler.method">GET</stringProp>
  24105. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24106. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24107. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24108. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24109. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24110. <stringProp name="HTTPSampler.embedded_url_re"/>
  24111. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  24112. <hashTree>
  24113. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  24114. <collectionProp name="Asserion.test_strings">
  24115. <stringProp name="-1397214398">Welcome</stringProp>
  24116. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  24117. </collectionProp>
  24118. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  24119. <boolProp name="Assertion.assume_success">false</boolProp>
  24120. <intProp name="Assertion.test_type">2</intProp>
  24121. </ResponseAssertion>
  24122. <hashTree/>
  24123. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  24124. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  24125. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  24126. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  24127. <stringProp name="RegexExtractor.template">$1$</stringProp>
  24128. <stringProp name="RegexExtractor.default"/>
  24129. <stringProp name="RegexExtractor.match_number">1</stringProp>
  24130. </RegexExtractor>
  24131. <hashTree/>
  24132. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  24133. <collectionProp name="Asserion.test_strings">
  24134. <stringProp name="2845929">^.+$</stringProp>
  24135. </collectionProp>
  24136. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  24137. <boolProp name="Assertion.assume_success">false</boolProp>
  24138. <intProp name="Assertion.test_type">1</intProp>
  24139. <stringProp name="Assertion.scope">variable</stringProp>
  24140. <stringProp name="Scope.variable">admin_form_key</stringProp>
  24141. </ResponseAssertion>
  24142. <hashTree/>
  24143. </hashTree>
  24144. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  24145. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24146. <collectionProp name="Arguments.arguments">
  24147. <elementProp name="dummy" elementType="HTTPArgument">
  24148. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24149. <stringProp name="Argument.value"/>
  24150. <stringProp name="Argument.metadata">=</stringProp>
  24151. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24152. <stringProp name="Argument.name">dummy</stringProp>
  24153. </elementProp>
  24154. <elementProp name="form_key" elementType="HTTPArgument">
  24155. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24156. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  24157. <stringProp name="Argument.metadata">=</stringProp>
  24158. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24159. <stringProp name="Argument.name">form_key</stringProp>
  24160. </elementProp>
  24161. <elementProp name="login[password]" elementType="HTTPArgument">
  24162. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24163. <stringProp name="Argument.value">${admin_password}</stringProp>
  24164. <stringProp name="Argument.metadata">=</stringProp>
  24165. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24166. <stringProp name="Argument.name">login[password]</stringProp>
  24167. </elementProp>
  24168. <elementProp name="login[username]" elementType="HTTPArgument">
  24169. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24170. <stringProp name="Argument.value">${admin_user}</stringProp>
  24171. <stringProp name="Argument.metadata">=</stringProp>
  24172. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24173. <stringProp name="Argument.name">login[username]</stringProp>
  24174. </elementProp>
  24175. </collectionProp>
  24176. </elementProp>
  24177. <stringProp name="HTTPSampler.domain"/>
  24178. <stringProp name="HTTPSampler.port"/>
  24179. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24180. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24181. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24182. <stringProp name="HTTPSampler.contentEncoding"/>
  24183. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  24184. <stringProp name="HTTPSampler.method">POST</stringProp>
  24185. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24186. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24187. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24188. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24189. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  24190. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24191. <stringProp name="HTTPSampler.embedded_url_re"/>
  24192. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  24193. </HTTPSamplerProxy>
  24194. <hashTree>
  24195. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  24196. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  24197. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  24198. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  24199. <stringProp name="RegexExtractor.template">$1$</stringProp>
  24200. <stringProp name="RegexExtractor.default"/>
  24201. <stringProp name="RegexExtractor.match_number">1</stringProp>
  24202. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  24203. <hashTree/>
  24204. </hashTree>
  24205. </hashTree>
  24206. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  24207. <stringProp name="script">
  24208. vars.put("gridEntityType" , "Customer");
  24209. pagesCount = parseInt(vars.get("customers_page_size")) || 20;
  24210. vars.put("grid_entity_page_size" , pagesCount);
  24211. vars.put("grid_namespace" , "customer_listing");
  24212. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text"));
  24213. vars.put("grid_filter_field", "name");
  24214. // set sort fields and sort directions
  24215. vars.put("grid_sort_field_1", "name");
  24216. vars.put("grid_sort_field_2", "group_id");
  24217. vars.put("grid_sort_field_3", "billing_country_id");
  24218. vars.put("grid_sort_order_1", "asc");
  24219. vars.put("grid_sort_order_2", "desc");
  24220. </stringProp>
  24221. <stringProp name="scriptLanguage">javascript</stringProp>
  24222. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_customers_grid/setup.jmx</stringProp></JSR223PostProcessor>
  24223. <hashTree/>
  24224. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  24225. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  24226. </GenericController>
  24227. <hashTree>
  24228. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  24229. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24230. <collectionProp name="Arguments.arguments">
  24231. <elementProp name="namespace" elementType="HTTPArgument">
  24232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24233. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  24234. <stringProp name="Argument.metadata">=</stringProp>
  24235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24236. <stringProp name="Argument.name">namespace</stringProp>
  24237. <stringProp name="Argument.desc">true</stringProp>
  24238. </elementProp>
  24239. <elementProp name="search" elementType="HTTPArgument">
  24240. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24241. <stringProp name="Argument.value"/>
  24242. <stringProp name="Argument.metadata">=</stringProp>
  24243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24244. <stringProp name="Argument.name">search</stringProp>
  24245. <stringProp name="Argument.desc">true</stringProp>
  24246. </elementProp>
  24247. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  24248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24249. <stringProp name="Argument.value">true</stringProp>
  24250. <stringProp name="Argument.metadata">=</stringProp>
  24251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24252. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  24253. <stringProp name="Argument.desc">true</stringProp>
  24254. </elementProp>
  24255. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  24256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24257. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  24258. <stringProp name="Argument.metadata">=</stringProp>
  24259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24260. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  24261. <stringProp name="Argument.desc">true</stringProp>
  24262. </elementProp>
  24263. <elementProp name="paging[current]" elementType="HTTPArgument">
  24264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24265. <stringProp name="Argument.value">1</stringProp>
  24266. <stringProp name="Argument.metadata">=</stringProp>
  24267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24268. <stringProp name="Argument.name">paging[current]</stringProp>
  24269. <stringProp name="Argument.desc">true</stringProp>
  24270. </elementProp>
  24271. <elementProp name="sorting[field]" elementType="HTTPArgument">
  24272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24273. <stringProp name="Argument.value">entity_id</stringProp>
  24274. <stringProp name="Argument.metadata">=</stringProp>
  24275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24276. <stringProp name="Argument.name">sorting[field]</stringProp>
  24277. <stringProp name="Argument.desc">true</stringProp>
  24278. </elementProp>
  24279. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  24280. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24281. <stringProp name="Argument.value">asc</stringProp>
  24282. <stringProp name="Argument.metadata">=</stringProp>
  24283. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24284. <stringProp name="Argument.name">sorting[direction]</stringProp>
  24285. <stringProp name="Argument.desc">true</stringProp>
  24286. </elementProp>
  24287. <elementProp name="isAjax" elementType="HTTPArgument">
  24288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24289. <stringProp name="Argument.value">true</stringProp>
  24290. <stringProp name="Argument.metadata">=</stringProp>
  24291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24292. <stringProp name="Argument.name">isAjax</stringProp>
  24293. <stringProp name="Argument.desc">true</stringProp>
  24294. </elementProp>
  24295. </collectionProp>
  24296. </elementProp>
  24297. <stringProp name="HTTPSampler.domain"/>
  24298. <stringProp name="HTTPSampler.port"/>
  24299. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24300. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24301. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24302. <stringProp name="HTTPSampler.contentEncoding"/>
  24303. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  24304. <stringProp name="HTTPSampler.method">GET</stringProp>
  24305. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24306. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24307. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24308. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24309. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24310. <stringProp name="HTTPSampler.embedded_url_re"/>
  24311. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  24312. <hashTree>
  24313. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  24314. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  24315. <stringProp name="EXPECTED_VALUE">0</stringProp>
  24316. <boolProp name="JSONVALIDATION">true</boolProp>
  24317. <boolProp name="EXPECT_NULL">false</boolProp>
  24318. <boolProp name="INVERT">true</boolProp>
  24319. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  24320. <hashTree/>
  24321. <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 total records" enabled="true">
  24322. <stringProp name="VAR">entity_total_records</stringProp>
  24323. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  24324. <stringProp name="DEFAULT"/>
  24325. <stringProp name="VARIABLE"/>
  24326. <stringProp name="SUBJECT">BODY</stringProp>
  24327. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  24328. <hashTree/>
  24329. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  24330. <stringProp name="cacheKey"/>
  24331. <stringProp name="filename"/>
  24332. <stringProp name="parameters"/>
  24333. <stringProp name="script">
  24334. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  24335. var totalsRecord = parseInt(vars.get("entity_total_records"));
  24336. var pageCount = Math.round(totalsRecord/pageSize);
  24337. vars.put("grid_pages_count", pageCount);
  24338. </stringProp>
  24339. <stringProp name="scriptLanguage">javascript</stringProp>
  24340. </JSR223PostProcessor>
  24341. <hashTree/>
  24342. </hashTree>
  24343. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  24344. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24345. <collectionProp name="Arguments.arguments">
  24346. <elementProp name="namespace" elementType="HTTPArgument">
  24347. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24348. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  24349. <stringProp name="Argument.metadata">=</stringProp>
  24350. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24351. <stringProp name="Argument.name">namespace</stringProp>
  24352. <stringProp name="Argument.desc">true</stringProp>
  24353. </elementProp>
  24354. <elementProp name="search" elementType="HTTPArgument">
  24355. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24356. <stringProp name="Argument.value"/>
  24357. <stringProp name="Argument.metadata">=</stringProp>
  24358. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24359. <stringProp name="Argument.name">search</stringProp>
  24360. <stringProp name="Argument.desc">true</stringProp>
  24361. </elementProp>
  24362. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  24363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24364. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  24365. <stringProp name="Argument.metadata">=</stringProp>
  24366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24367. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  24368. <stringProp name="Argument.desc">true</stringProp>
  24369. </elementProp>
  24370. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  24371. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24372. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  24373. <stringProp name="Argument.metadata">=</stringProp>
  24374. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24375. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  24376. <stringProp name="Argument.desc">true</stringProp>
  24377. </elementProp>
  24378. <elementProp name="paging[current]" elementType="HTTPArgument">
  24379. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24380. <stringProp name="Argument.value">1</stringProp>
  24381. <stringProp name="Argument.metadata">=</stringProp>
  24382. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24383. <stringProp name="Argument.name">paging[current]</stringProp>
  24384. <stringProp name="Argument.desc">true</stringProp>
  24385. </elementProp>
  24386. <elementProp name="sorting[field]" elementType="HTTPArgument">
  24387. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24388. <stringProp name="Argument.value">entity_id</stringProp>
  24389. <stringProp name="Argument.metadata">=</stringProp>
  24390. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24391. <stringProp name="Argument.name">sorting[field]</stringProp>
  24392. <stringProp name="Argument.desc">true</stringProp>
  24393. </elementProp>
  24394. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  24395. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24396. <stringProp name="Argument.value">asc</stringProp>
  24397. <stringProp name="Argument.metadata">=</stringProp>
  24398. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24399. <stringProp name="Argument.name">sorting[direction]</stringProp>
  24400. <stringProp name="Argument.desc">true</stringProp>
  24401. </elementProp>
  24402. <elementProp name="isAjax" elementType="HTTPArgument">
  24403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24404. <stringProp name="Argument.value">true</stringProp>
  24405. <stringProp name="Argument.metadata">=</stringProp>
  24406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24407. <stringProp name="Argument.name">isAjax</stringProp>
  24408. <stringProp name="Argument.desc">true</stringProp>
  24409. </elementProp>
  24410. </collectionProp>
  24411. </elementProp>
  24412. <stringProp name="HTTPSampler.domain"/>
  24413. <stringProp name="HTTPSampler.port"/>
  24414. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24415. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24416. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24417. <stringProp name="HTTPSampler.contentEncoding"/>
  24418. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  24419. <stringProp name="HTTPSampler.method">GET</stringProp>
  24420. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24421. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24422. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24423. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24424. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24425. <stringProp name="HTTPSampler.embedded_url_re"/>
  24426. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  24427. <hashTree>
  24428. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  24429. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  24430. <stringProp name="EXPECTED_VALUE">0</stringProp>
  24431. <boolProp name="JSONVALIDATION">true</boolProp>
  24432. <boolProp name="EXPECT_NULL">false</boolProp>
  24433. <boolProp name="INVERT">true</boolProp>
  24434. <boolProp name="ISREGEX">true</boolProp>
  24435. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  24436. <hashTree/>
  24437. <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 total records" enabled="true">
  24438. <stringProp name="VAR">entity_total_records</stringProp>
  24439. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  24440. <stringProp name="DEFAULT"/>
  24441. <stringProp name="VARIABLE"/>
  24442. <stringProp name="SUBJECT">BODY</stringProp>
  24443. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  24444. <hashTree/>
  24445. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  24446. <stringProp name="parameters"/>
  24447. <stringProp name="filename"/>
  24448. <stringProp name="script">
  24449. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  24450. var totalsRecord = parseInt(vars.get("entity_total_records"));
  24451. var pageCount = Math.round(totalsRecord/pageSize);
  24452. vars.put("grid_pages_count_filtered", pageCount);
  24453. </stringProp>
  24454. <stringProp name="scriptLanguage">javascript</stringProp>
  24455. </JSR223PostProcessor>
  24456. <hashTree/>
  24457. </hashTree>
  24458. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  24459. <stringProp name="CounterConfig.start">1</stringProp>
  24460. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  24461. <stringProp name="CounterConfig.incr">1</stringProp>
  24462. <stringProp name="CounterConfig.name">page_number</stringProp>
  24463. <stringProp name="CounterConfig.format"/>
  24464. <boolProp name="CounterConfig.per_user">true</boolProp>
  24465. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  24466. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  24467. <hashTree/>
  24468. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  24469. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24470. <collectionProp name="Arguments.arguments">
  24471. <elementProp name="namespace" elementType="HTTPArgument">
  24472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24473. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  24474. <stringProp name="Argument.metadata">=</stringProp>
  24475. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24476. <stringProp name="Argument.name">namespace</stringProp>
  24477. <stringProp name="Argument.desc">true</stringProp>
  24478. </elementProp>
  24479. <elementProp name="search" elementType="HTTPArgument">
  24480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24481. <stringProp name="Argument.value"/>
  24482. <stringProp name="Argument.metadata">=</stringProp>
  24483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24484. <stringProp name="Argument.name">search</stringProp>
  24485. <stringProp name="Argument.desc">true</stringProp>
  24486. </elementProp>
  24487. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  24488. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24489. <stringProp name="Argument.value">true</stringProp>
  24490. <stringProp name="Argument.metadata">=</stringProp>
  24491. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24492. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  24493. <stringProp name="Argument.desc">true</stringProp>
  24494. </elementProp>
  24495. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  24496. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24497. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  24498. <stringProp name="Argument.metadata">=</stringProp>
  24499. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24500. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  24501. <stringProp name="Argument.desc">true</stringProp>
  24502. </elementProp>
  24503. <elementProp name="paging[current]" elementType="HTTPArgument">
  24504. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24505. <stringProp name="Argument.value">${page_number}</stringProp>
  24506. <stringProp name="Argument.metadata">=</stringProp>
  24507. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24508. <stringProp name="Argument.name">paging[current]</stringProp>
  24509. <stringProp name="Argument.desc">true</stringProp>
  24510. </elementProp>
  24511. <elementProp name="sorting[field]" elementType="HTTPArgument">
  24512. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24513. <stringProp name="Argument.value">entity_id</stringProp>
  24514. <stringProp name="Argument.metadata">=</stringProp>
  24515. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24516. <stringProp name="Argument.name">sorting[field]</stringProp>
  24517. <stringProp name="Argument.desc">true</stringProp>
  24518. </elementProp>
  24519. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  24520. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24521. <stringProp name="Argument.value">asc</stringProp>
  24522. <stringProp name="Argument.metadata">=</stringProp>
  24523. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24524. <stringProp name="Argument.name">sorting[direction]</stringProp>
  24525. <stringProp name="Argument.desc">true</stringProp>
  24526. </elementProp>
  24527. <elementProp name="isAjax" elementType="HTTPArgument">
  24528. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24529. <stringProp name="Argument.value">true</stringProp>
  24530. <stringProp name="Argument.metadata">=</stringProp>
  24531. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24532. <stringProp name="Argument.name">isAjax</stringProp>
  24533. <stringProp name="Argument.desc">true</stringProp>
  24534. </elementProp>
  24535. </collectionProp>
  24536. </elementProp>
  24537. <stringProp name="HTTPSampler.domain"/>
  24538. <stringProp name="HTTPSampler.port"/>
  24539. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24540. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24541. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24542. <stringProp name="HTTPSampler.contentEncoding"/>
  24543. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  24544. <stringProp name="HTTPSampler.method">GET</stringProp>
  24545. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24546. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24547. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24548. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24549. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24550. <stringProp name="HTTPSampler.embedded_url_re"/>
  24551. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  24552. <hashTree>
  24553. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  24554. <collectionProp name="Asserion.test_strings">
  24555. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  24556. </collectionProp>
  24557. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  24558. <boolProp name="Assertion.assume_success">false</boolProp>
  24559. <intProp name="Assertion.test_type">2</intProp>
  24560. </ResponseAssertion>
  24561. <hashTree/>
  24562. </hashTree>
  24563. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  24564. <stringProp name="CounterConfig.start">1</stringProp>
  24565. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  24566. <stringProp name="CounterConfig.incr">1</stringProp>
  24567. <stringProp name="CounterConfig.name">page_number</stringProp>
  24568. <stringProp name="CounterConfig.format"/>
  24569. <boolProp name="CounterConfig.per_user">true</boolProp>
  24570. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  24571. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  24572. <hashTree/>
  24573. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  24574. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  24575. </TestFragmentController>
  24576. <hashTree>
  24577. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  24578. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  24579. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  24580. <boolProp name="ForeachController.useSeparator">true</boolProp>
  24581. <stringProp name="ForeachController.startIndex">0</stringProp>
  24582. <stringProp name="ForeachController.endIndex">3</stringProp>
  24583. </ForeachController>
  24584. <hashTree>
  24585. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  24586. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  24587. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  24588. <boolProp name="ForeachController.useSeparator">true</boolProp>
  24589. <stringProp name="ForeachController.startIndex">0</stringProp>
  24590. <stringProp name="ForeachController.endIndex">2</stringProp>
  24591. </ForeachController>
  24592. <hashTree>
  24593. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  24594. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24595. <collectionProp name="Arguments.arguments">
  24596. <elementProp name="namespace" elementType="HTTPArgument">
  24597. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24598. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  24599. <stringProp name="Argument.metadata">=</stringProp>
  24600. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24601. <stringProp name="Argument.name">namespace</stringProp>
  24602. <stringProp name="Argument.desc">false</stringProp>
  24603. </elementProp>
  24604. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  24605. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24606. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  24607. <stringProp name="Argument.metadata">=</stringProp>
  24608. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24609. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  24610. <stringProp name="Argument.desc">false</stringProp>
  24611. </elementProp>
  24612. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  24613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24614. <stringProp name="Argument.value">true</stringProp>
  24615. <stringProp name="Argument.metadata">=</stringProp>
  24616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24617. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  24618. <stringProp name="Argument.desc">false</stringProp>
  24619. </elementProp>
  24620. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  24621. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24622. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  24623. <stringProp name="Argument.metadata">=</stringProp>
  24624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24625. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  24626. <stringProp name="Argument.desc">false</stringProp>
  24627. </elementProp>
  24628. <elementProp name="paging[current]" elementType="HTTPArgument">
  24629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24630. <stringProp name="Argument.value">${page_number}</stringProp>
  24631. <stringProp name="Argument.metadata">=</stringProp>
  24632. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24633. <stringProp name="Argument.name">paging[current]</stringProp>
  24634. <stringProp name="Argument.desc">false</stringProp>
  24635. </elementProp>
  24636. <elementProp name="sorting[field]" elementType="HTTPArgument">
  24637. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24638. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  24639. <stringProp name="Argument.metadata">=</stringProp>
  24640. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24641. <stringProp name="Argument.name">sorting[field]</stringProp>
  24642. <stringProp name="Argument.desc">false</stringProp>
  24643. </elementProp>
  24644. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  24645. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24646. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  24647. <stringProp name="Argument.metadata">=</stringProp>
  24648. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24649. <stringProp name="Argument.name">sorting[direction]</stringProp>
  24650. <stringProp name="Argument.desc">false</stringProp>
  24651. </elementProp>
  24652. <elementProp name="isAjax" elementType="HTTPArgument">
  24653. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24654. <stringProp name="Argument.value">true</stringProp>
  24655. <stringProp name="Argument.metadata">=</stringProp>
  24656. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24657. <stringProp name="Argument.name">isAjax</stringProp>
  24658. <stringProp name="Argument.desc">false</stringProp>
  24659. </elementProp>
  24660. </collectionProp>
  24661. </elementProp>
  24662. <stringProp name="HTTPSampler.domain"/>
  24663. <stringProp name="HTTPSampler.port"/>
  24664. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24665. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24666. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24667. <stringProp name="HTTPSampler.contentEncoding"/>
  24668. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  24669. <stringProp name="HTTPSampler.method">GET</stringProp>
  24670. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24671. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24672. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24673. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24674. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24675. <stringProp name="HTTPSampler.embedded_url_re"/>
  24676. </HTTPSamplerProxy>
  24677. <hashTree>
  24678. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  24679. <collectionProp name="Asserion.test_strings">
  24680. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  24681. </collectionProp>
  24682. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  24683. <boolProp name="Assertion.assume_success">false</boolProp>
  24684. <intProp name="Assertion.test_type">2</intProp>
  24685. </ResponseAssertion>
  24686. <hashTree/>
  24687. </hashTree>
  24688. </hashTree>
  24689. </hashTree>
  24690. </hashTree>
  24691. </hashTree>
  24692. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  24693. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24694. <collectionProp name="Arguments.arguments"/>
  24695. </elementProp>
  24696. <stringProp name="HTTPSampler.domain"/>
  24697. <stringProp name="HTTPSampler.port"/>
  24698. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24699. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24700. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24701. <stringProp name="HTTPSampler.contentEncoding"/>
  24702. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  24703. <stringProp name="HTTPSampler.method">GET</stringProp>
  24704. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24705. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24706. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24707. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24708. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24709. <stringProp name="HTTPSampler.embedded_url_re"/>
  24710. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  24711. <hashTree>
  24712. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  24713. <boolProp name="resetInterpreter">false</boolProp>
  24714. <stringProp name="parameters"/>
  24715. <stringProp name="filename"/>
  24716. <stringProp name="script">
  24717. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  24718. if (adminUsersDistribution == 1) {
  24719. adminUserList = props.get("adminUserList");
  24720. adminUserList.add(vars.get("admin_user"));
  24721. }
  24722. </stringProp>
  24723. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  24724. <hashTree/>
  24725. </hashTree>
  24726. </hashTree>
  24727. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Create Order" enabled="true">
  24728. <intProp name="ThroughputController.style">1</intProp>
  24729. <boolProp name="ThroughputController.perThread">false</boolProp>
  24730. <intProp name="ThroughputController.maxThroughput">1</intProp>
  24731. <stringProp name="ThroughputController.percentThroughput">${adminCreateOrderPercentage}</stringProp>
  24732. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  24733. <hashTree>
  24734. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  24735. <stringProp name="script">
  24736. var tmpLabel = vars.get("testLabel")
  24737. if (tmpLabel) {
  24738. var testLabel = " (" + tmpLabel + ")"
  24739. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  24740. if (sampler.getName().indexOf(testLabel) == -1) {
  24741. sampler.setName(sampler.getName() + testLabel);
  24742. }
  24743. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  24744. sampler.setName("SetUp - " + sampler.getName());
  24745. }
  24746. } else {
  24747. testLabel = ""
  24748. }
  24749. </stringProp>
  24750. <stringProp name="scriptLanguage">javascript</stringProp>
  24751. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  24752. <hashTree/>
  24753. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  24754. <stringProp name="BeanShellSampler.query">
  24755. vars.put("testLabel", "Admin Create Order");
  24756. </stringProp>
  24757. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  24758. </BeanShellSampler>
  24759. <hashTree/>
  24760. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  24761. <stringProp name="script">
  24762. function getFormKeyFromResponse()
  24763. {
  24764. var url = prev.getUrlAsString(),
  24765. responseCode = prev.getResponseCode(),
  24766. formKey = null;
  24767. searchPattern = /var FORM_KEY = '(.+)'/;
  24768. if (responseCode == "200" &amp;&amp; url) {
  24769. response = prev.getResponseDataAsString();
  24770. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  24771. }
  24772. return formKey;
  24773. }
  24774. formKey = vars.get("form_key_storage");
  24775. currentFormKey = getFormKeyFromResponse();
  24776. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  24777. vars.put("form_key_storage", currentFormKey);
  24778. }
  24779. </stringProp>
  24780. <stringProp name="scriptLanguage">javascript</stringProp>
  24781. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  24782. <hashTree/>
  24783. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  24784. <stringProp name="script">
  24785. formKey = vars.get("form_key_storage");
  24786. if (formKey
  24787. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  24788. &amp;&amp; sampler.getMethod() == "POST")
  24789. {
  24790. arguments = sampler.getArguments();
  24791. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  24792. {
  24793. argument = arguments.getArgument(i);
  24794. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  24795. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  24796. argument.setValue(formKey);
  24797. }
  24798. }
  24799. }
  24800. </stringProp>
  24801. <stringProp name="scriptLanguage">javascript</stringProp>
  24802. </JSR223PreProcessor>
  24803. <hashTree/>
  24804. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  24805. <collectionProp name="CookieManager.cookies"/>
  24806. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  24807. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  24808. <hashTree/>
  24809. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  24810. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  24811. </GenericController>
  24812. <hashTree>
  24813. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  24814. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  24815. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  24816. <hashTree>
  24817. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  24818. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  24819. <stringProp name="BeanShellSampler.query">
  24820. adminUser = "none";
  24821. adminUserList = props.get("adminUserList");
  24822. adminUserListIterator = props.get("adminUserListIterator");
  24823. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  24824. if (adminUsersDistribution == 1) {
  24825. adminUser = adminUserList.poll();
  24826. } else {
  24827. if (!adminUserListIterator.hasNext()) {
  24828. adminUserListIterator = adminUserList.descendingIterator();
  24829. }
  24830. adminUser = adminUserListIterator.next();
  24831. }
  24832. if (adminUser == "none") {
  24833. SampleResult.setResponseMessage("adminUser list is empty");
  24834. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  24835. IsSuccess=false;
  24836. SampleResult.setSuccessful(false);
  24837. SampleResult.setStopThread(true);
  24838. }
  24839. vars.put("admin_user", adminUser);
  24840. </stringProp>
  24841. <stringProp name="BeanShellSampler.filename"/>
  24842. <stringProp name="BeanShellSampler.parameters"/>
  24843. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  24844. </BeanShellSampler>
  24845. <hashTree/>
  24846. </hashTree>
  24847. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  24848. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24849. <collectionProp name="Arguments.arguments"/>
  24850. </elementProp>
  24851. <stringProp name="HTTPSampler.domain"/>
  24852. <stringProp name="HTTPSampler.port"/>
  24853. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24854. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24855. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24856. <stringProp name="HTTPSampler.contentEncoding"/>
  24857. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  24858. <stringProp name="HTTPSampler.method">GET</stringProp>
  24859. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24860. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24861. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24862. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24863. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24864. <stringProp name="HTTPSampler.embedded_url_re"/>
  24865. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  24866. <hashTree>
  24867. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  24868. <collectionProp name="Asserion.test_strings">
  24869. <stringProp name="-1397214398">Welcome</stringProp>
  24870. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  24871. </collectionProp>
  24872. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  24873. <boolProp name="Assertion.assume_success">false</boolProp>
  24874. <intProp name="Assertion.test_type">2</intProp>
  24875. </ResponseAssertion>
  24876. <hashTree/>
  24877. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  24878. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  24879. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  24880. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  24881. <stringProp name="RegexExtractor.template">$1$</stringProp>
  24882. <stringProp name="RegexExtractor.default"/>
  24883. <stringProp name="RegexExtractor.match_number">1</stringProp>
  24884. </RegexExtractor>
  24885. <hashTree/>
  24886. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  24887. <collectionProp name="Asserion.test_strings">
  24888. <stringProp name="2845929">^.+$</stringProp>
  24889. </collectionProp>
  24890. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  24891. <boolProp name="Assertion.assume_success">false</boolProp>
  24892. <intProp name="Assertion.test_type">1</intProp>
  24893. <stringProp name="Assertion.scope">variable</stringProp>
  24894. <stringProp name="Scope.variable">admin_form_key</stringProp>
  24895. </ResponseAssertion>
  24896. <hashTree/>
  24897. </hashTree>
  24898. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  24899. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  24900. <collectionProp name="Arguments.arguments">
  24901. <elementProp name="dummy" elementType="HTTPArgument">
  24902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24903. <stringProp name="Argument.value"/>
  24904. <stringProp name="Argument.metadata">=</stringProp>
  24905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24906. <stringProp name="Argument.name">dummy</stringProp>
  24907. </elementProp>
  24908. <elementProp name="form_key" elementType="HTTPArgument">
  24909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24910. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  24911. <stringProp name="Argument.metadata">=</stringProp>
  24912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24913. <stringProp name="Argument.name">form_key</stringProp>
  24914. </elementProp>
  24915. <elementProp name="login[password]" elementType="HTTPArgument">
  24916. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24917. <stringProp name="Argument.value">${admin_password}</stringProp>
  24918. <stringProp name="Argument.metadata">=</stringProp>
  24919. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24920. <stringProp name="Argument.name">login[password]</stringProp>
  24921. </elementProp>
  24922. <elementProp name="login[username]" elementType="HTTPArgument">
  24923. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  24924. <stringProp name="Argument.value">${admin_user}</stringProp>
  24925. <stringProp name="Argument.metadata">=</stringProp>
  24926. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  24927. <stringProp name="Argument.name">login[username]</stringProp>
  24928. </elementProp>
  24929. </collectionProp>
  24930. </elementProp>
  24931. <stringProp name="HTTPSampler.domain"/>
  24932. <stringProp name="HTTPSampler.port"/>
  24933. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  24934. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  24935. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  24936. <stringProp name="HTTPSampler.contentEncoding"/>
  24937. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  24938. <stringProp name="HTTPSampler.method">POST</stringProp>
  24939. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  24940. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  24941. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  24942. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  24943. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  24944. <boolProp name="HTTPSampler.monitor">false</boolProp>
  24945. <stringProp name="HTTPSampler.embedded_url_re"/>
  24946. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  24947. </HTTPSamplerProxy>
  24948. <hashTree>
  24949. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  24950. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  24951. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  24952. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  24953. <stringProp name="RegexExtractor.template">$1$</stringProp>
  24954. <stringProp name="RegexExtractor.default"/>
  24955. <stringProp name="RegexExtractor.match_number">1</stringProp>
  24956. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  24957. <hashTree/>
  24958. </hashTree>
  24959. </hashTree>
  24960. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  24961. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  24962. </GenericController>
  24963. <hashTree>
  24964. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  24965. <stringProp name="scriptLanguage">javascript</stringProp>
  24966. <stringProp name="parameters"/>
  24967. <stringProp name="filename"/>
  24968. <stringProp name="cacheKey"/>
  24969. <stringProp name="script">
  24970. vars.put("alabama_region_id", props.get("alabama_region_id"));
  24971. vars.put("california_region_id", props.get("california_region_id"));
  24972. </stringProp>
  24973. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  24974. <hashTree/>
  24975. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Order" enabled="true"/>
  24976. <hashTree>
  24977. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  24978. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_order/admin_create_order.jmx</stringProp>
  24979. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  24980. import java.util.Random;
  24981. Random random = new Random();
  24982. if (${seedForRandom} &gt; 0) {
  24983. random.setSeed(${seedForRandom});
  24984. }
  24985. number = random.nextInt(props.get("configurable_products_list").size());
  24986. configurableList = props.get("configurable_products_list").get(number);
  24987. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  24988. vars.put("configurable_product_1_name", configurableList.get("title"));
  24989. vars.put("configurable_product_1_id", configurableList.get("id"));
  24990. vars.put("configurable_product_1_sku", configurableList.get("sku"));
  24991. vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
  24992. vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
  24993. number = random.nextInt(props.get("simple_products_list").size());
  24994. simpleList = props.get("simple_products_list").get(number);
  24995. vars.put("simple_product_1_url_key", simpleList.get("url_key"));
  24996. vars.put("simple_product_1_name", simpleList.get("title"));
  24997. vars.put("simple_product_1_id", simpleList.get("id"));
  24998. number1 = random.nextInt(props.get("configurable_products_list").size());
  24999. do {
  25000. number1 = random.nextInt(props.get("simple_products_list").size());
  25001. } while(number == number1);
  25002. simpleList = props.get("simple_products_list").get(number1);
  25003. vars.put("simple_product_2_url_key", simpleList.get("url_key"));
  25004. vars.put("simple_product_2_name", simpleList.get("title"));
  25005. vars.put("simple_product_2_id", simpleList.get("id"));
  25006. customers_index = 0;
  25007. if (!props.containsKey("customer_ids_index")) {
  25008. props.put("customer_ids_index", customers_index);
  25009. }
  25010. try {
  25011. customers_index = props.get("customer_ids_index");
  25012. customers_list = props.get("customer_ids_list");
  25013. if (customers_index == customers_list.size()) {
  25014. customers_index=0;
  25015. }
  25016. vars.put("customer_id", customers_list.get(customers_index));
  25017. props.put("customer_ids_index", ++customers_index);
  25018. }
  25019. catch (java.lang.Exception e) {
  25020. log.error("Caught Exception in 'Admin Create Order' thread.");
  25021. SampleResult.setStopThread(true);
  25022. }</stringProp>
  25023. <stringProp name="BeanShellSampler.filename"/>
  25024. <stringProp name="BeanShellSampler.parameters"/>
  25025. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  25026. </BeanShellSampler>
  25027. <hashTree/>
  25028. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Start Order" enabled="true">
  25029. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25030. <collectionProp name="Arguments.arguments"/>
  25031. </elementProp>
  25032. <stringProp name="HTTPSampler.domain"/>
  25033. <stringProp name="HTTPSampler.port"/>
  25034. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25035. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25036. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25037. <stringProp name="HTTPSampler.contentEncoding"/>
  25038. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/start/</stringProp>
  25039. <stringProp name="HTTPSampler.method">GET</stringProp>
  25040. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25041. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25042. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25043. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25044. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25045. <stringProp name="HTTPSampler.embedded_url_re"/>
  25046. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  25047. </HTTPSamplerProxy>
  25048. <hashTree/>
  25049. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Configurable Product Options" enabled="true"/>
  25050. <hashTree>
  25051. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  25052. <collectionProp name="HeaderManager.headers">
  25053. <elementProp name="" elementType="Header">
  25054. <stringProp name="Header.name">Content-Type</stringProp>
  25055. <stringProp name="Header.value">application/json</stringProp>
  25056. </elementProp>
  25057. <elementProp name="" elementType="Header">
  25058. <stringProp name="Header.name">Accept</stringProp>
  25059. <stringProp name="Header.value">*/*</stringProp>
  25060. </elementProp>
  25061. </collectionProp>
  25062. </HeaderManager>
  25063. <hashTree/>
  25064. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  25065. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  25066. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  25067. <collectionProp name="Arguments.arguments">
  25068. <elementProp name="" elementType="HTTPArgument">
  25069. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  25070. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  25071. <stringProp name="Argument.metadata">=</stringProp>
  25072. </elementProp>
  25073. </collectionProp>
  25074. </elementProp>
  25075. <stringProp name="HTTPSampler.domain"/>
  25076. <stringProp name="HTTPSampler.port"/>
  25077. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25078. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25079. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25080. <stringProp name="HTTPSampler.contentEncoding"/>
  25081. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  25082. <stringProp name="HTTPSampler.method">POST</stringProp>
  25083. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25084. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25085. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25086. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25087. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25088. <stringProp name="HTTPSampler.embedded_url_re"/>
  25089. </HTTPSamplerProxy>
  25090. <hashTree>
  25091. <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">
  25092. <stringProp name="VAR">admin_token</stringProp>
  25093. <stringProp name="JSONPATH">$</stringProp>
  25094. <stringProp name="DEFAULT"/>
  25095. <stringProp name="VARIABLE"/>
  25096. <stringProp name="SUBJECT">BODY</stringProp>
  25097. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  25098. <hashTree/>
  25099. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  25100. <collectionProp name="Asserion.test_strings">
  25101. <stringProp name="484395188">^.{10,}$</stringProp>
  25102. </collectionProp>
  25103. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25104. <boolProp name="Assertion.assume_success">false</boolProp>
  25105. <intProp name="Assertion.test_type">1</intProp>
  25106. <stringProp name="Assertion.scope">variable</stringProp>
  25107. <stringProp name="Scope.variable">admin_token</stringProp>
  25108. </ResponseAssertion>
  25109. <hashTree/>
  25110. </hashTree>
  25111. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  25112. <collectionProp name="HeaderManager.headers">
  25113. <elementProp name="" elementType="Header">
  25114. <stringProp name="Header.name">Authorization</stringProp>
  25115. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  25116. </elementProp>
  25117. </collectionProp>
  25118. </HeaderManager>
  25119. <hashTree/>
  25120. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Configurable Product Options" enabled="true">
  25121. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25122. <collectionProp name="Arguments.arguments"/>
  25123. </elementProp>
  25124. <stringProp name="HTTPSampler.domain"/>
  25125. <stringProp name="HTTPSampler.port"/>
  25126. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25127. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25128. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25129. <stringProp name="HTTPSampler.contentEncoding"/>
  25130. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all</stringProp>
  25131. <stringProp name="HTTPSampler.method">GET</stringProp>
  25132. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25133. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25134. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25135. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25136. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25137. <stringProp name="HTTPSampler.embedded_url_re"/>
  25138. </HTTPSamplerProxy>
  25139. <hashTree>
  25140. <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">
  25141. <stringProp name="VAR">attribute_ids</stringProp>
  25142. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  25143. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  25144. <stringProp name="VARIABLE"/>
  25145. <stringProp name="SUBJECT">BODY</stringProp>
  25146. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  25147. <hashTree/>
  25148. <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">
  25149. <stringProp name="VAR">option_values</stringProp>
  25150. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  25151. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  25152. <stringProp name="VARIABLE"/>
  25153. <stringProp name="SUBJECT">BODY</stringProp>
  25154. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  25155. <hashTree/>
  25156. </hashTree>
  25157. </hashTree>
  25158. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Products" enabled="true">
  25159. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25160. <collectionProp name="Arguments.arguments">
  25161. <elementProp name="item[${simple_product_1_id}][qty]" elementType="HTTPArgument">
  25162. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25163. <stringProp name="Argument.name">item[${simple_product_1_id}][qty]</stringProp>
  25164. <stringProp name="Argument.value">1</stringProp>
  25165. <stringProp name="Argument.metadata">=</stringProp>
  25166. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25167. </elementProp>
  25168. <elementProp name="item[${simple_product_2_id}][qty]" elementType="HTTPArgument">
  25169. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25170. <stringProp name="Argument.name">item[${simple_product_2_id}][qty]</stringProp>
  25171. <stringProp name="Argument.value">1</stringProp>
  25172. <stringProp name="Argument.metadata">=</stringProp>
  25173. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25174. </elementProp>
  25175. <elementProp name="item[${configurable_product_1_id}][qty]" elementType="HTTPArgument">
  25176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25177. <stringProp name="Argument.name">item[${configurable_product_1_id}][qty]</stringProp>
  25178. <stringProp name="Argument.value">1</stringProp>
  25179. <stringProp name="Argument.metadata">=</stringProp>
  25180. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25181. </elementProp>
  25182. <elementProp name="customer_id" elementType="HTTPArgument">
  25183. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25184. <stringProp name="Argument.name">customer_id</stringProp>
  25185. <stringProp name="Argument.value">${customer_id}</stringProp>
  25186. <stringProp name="Argument.metadata">=</stringProp>
  25187. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25188. </elementProp>
  25189. <elementProp name="store_id" elementType="HTTPArgument">
  25190. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25191. <stringProp name="Argument.name">store_id</stringProp>
  25192. <stringProp name="Argument.value">1</stringProp>
  25193. <stringProp name="Argument.metadata">=</stringProp>
  25194. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25195. </elementProp>
  25196. <elementProp name="currency_id" elementType="HTTPArgument">
  25197. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25198. <stringProp name="Argument.name">currency_id</stringProp>
  25199. <stringProp name="Argument.value"/>
  25200. <stringProp name="Argument.metadata">=</stringProp>
  25201. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25202. </elementProp>
  25203. <elementProp name="form_key" elementType="HTTPArgument">
  25204. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25205. <stringProp name="Argument.name">form_key</stringProp>
  25206. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  25207. <stringProp name="Argument.metadata">=</stringProp>
  25208. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25209. </elementProp>
  25210. <elementProp name="payment[method]" elementType="HTTPArgument">
  25211. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25212. <stringProp name="Argument.name">payment[method]</stringProp>
  25213. <stringProp name="Argument.value">checkmo</stringProp>
  25214. <stringProp name="Argument.metadata">=</stringProp>
  25215. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25216. </elementProp>
  25217. <elementProp name="reset_shipping" elementType="HTTPArgument">
  25218. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25219. <stringProp name="Argument.name">reset_shipping</stringProp>
  25220. <stringProp name="Argument.value">1</stringProp>
  25221. <stringProp name="Argument.metadata">=</stringProp>
  25222. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25223. </elementProp>
  25224. <elementProp name="json" elementType="HTTPArgument">
  25225. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25226. <stringProp name="Argument.name">json</stringProp>
  25227. <stringProp name="Argument.value">1</stringProp>
  25228. <stringProp name="Argument.metadata">=</stringProp>
  25229. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25230. </elementProp>
  25231. <elementProp name="as_js_varname" elementType="HTTPArgument">
  25232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25233. <stringProp name="Argument.name">as_js_varname</stringProp>
  25234. <stringProp name="Argument.value">iFrameResponse</stringProp>
  25235. <stringProp name="Argument.metadata">=</stringProp>
  25236. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25237. </elementProp>
  25238. <elementProp name="form_key" elementType="HTTPArgument">
  25239. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25240. <stringProp name="Argument.name">form_key</stringProp>
  25241. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  25242. <stringProp name="Argument.metadata">=</stringProp>
  25243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25244. </elementProp>
  25245. </collectionProp>
  25246. </elementProp>
  25247. <stringProp name="HTTPSampler.domain"/>
  25248. <stringProp name="HTTPSampler.port"/>
  25249. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25250. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25251. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25252. <stringProp name="HTTPSampler.contentEncoding"/>
  25253. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true</stringProp>
  25254. <stringProp name="HTTPSampler.method">POST</stringProp>
  25255. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25256. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25257. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25258. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25259. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25260. <stringProp name="HTTPSampler.embedded_url_re"/>
  25261. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  25262. </HTTPSamplerProxy>
  25263. <hashTree>
  25264. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  25265. <boolProp name="resetInterpreter">false</boolProp>
  25266. <stringProp name="parameters"/>
  25267. <stringProp name="filename"/>
  25268. <stringProp name="script">try {
  25269. attribute_ids = vars.get("attribute_ids");
  25270. option_values = vars.get("option_values");
  25271. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  25272. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  25273. attribute_ids_array = attribute_ids.split(",");
  25274. option_values_array = option_values.split(",");
  25275. args = ctx.getCurrentSampler().getArguments();
  25276. it = args.iterator();
  25277. while (it.hasNext()) {
  25278. argument = it.next();
  25279. if (argument.getStringValue().contains("${")) {
  25280. args.removeArgument(argument.getName());
  25281. }
  25282. }
  25283. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  25284. ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]);
  25285. }
  25286. } catch (Exception e) {
  25287. log.error("error???", e);
  25288. }</stringProp>
  25289. </BeanShellPreProcessor>
  25290. <hashTree/>
  25291. </hashTree>
  25292. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Collect Shipping Rates" enabled="true">
  25293. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25294. <collectionProp name="Arguments.arguments">
  25295. <elementProp name="collect_shipping_rates" elementType="HTTPArgument">
  25296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25297. <stringProp name="Argument.name">collect_shipping_rates</stringProp>
  25298. <stringProp name="Argument.value">1</stringProp>
  25299. <stringProp name="Argument.metadata">=</stringProp>
  25300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25301. </elementProp>
  25302. <elementProp name="customer_id" elementType="HTTPArgument">
  25303. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25304. <stringProp name="Argument.name">customer_id</stringProp>
  25305. <stringProp name="Argument.value">${customer_id}</stringProp>
  25306. <stringProp name="Argument.metadata">=</stringProp>
  25307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25308. </elementProp>
  25309. <elementProp name="store_id" elementType="HTTPArgument">
  25310. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25311. <stringProp name="Argument.name">store_id</stringProp>
  25312. <stringProp name="Argument.value">1</stringProp>
  25313. <stringProp name="Argument.metadata">=</stringProp>
  25314. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25315. </elementProp>
  25316. <elementProp name="currency_id" elementType="HTTPArgument">
  25317. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25318. <stringProp name="Argument.name">currency_id</stringProp>
  25319. <stringProp name="Argument.value">false</stringProp>
  25320. <stringProp name="Argument.metadata">=</stringProp>
  25321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25322. </elementProp>
  25323. <elementProp name="form_key" elementType="HTTPArgument">
  25324. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25325. <stringProp name="Argument.name">form_key</stringProp>
  25326. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  25327. <stringProp name="Argument.metadata">=</stringProp>
  25328. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25329. </elementProp>
  25330. <elementProp name="payment[method]" elementType="HTTPArgument">
  25331. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25332. <stringProp name="Argument.name">payment[method]</stringProp>
  25333. <stringProp name="Argument.value">checkmo</stringProp>
  25334. <stringProp name="Argument.metadata">=</stringProp>
  25335. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25336. </elementProp>
  25337. <elementProp name="json" elementType="HTTPArgument">
  25338. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25339. <stringProp name="Argument.name">json</stringProp>
  25340. <stringProp name="Argument.value">true</stringProp>
  25341. <stringProp name="Argument.metadata">=</stringProp>
  25342. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25343. </elementProp>
  25344. </collectionProp>
  25345. </elementProp>
  25346. <stringProp name="HTTPSampler.domain"/>
  25347. <stringProp name="HTTPSampler.port"/>
  25348. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25349. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25350. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25351. <stringProp name="HTTPSampler.contentEncoding"/>
  25352. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true</stringProp>
  25353. <stringProp name="HTTPSampler.method">POST</stringProp>
  25354. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25355. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25356. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25357. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25358. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25359. <stringProp name="HTTPSampler.embedded_url_re"/>
  25360. </HTTPSamplerProxy>
  25361. <hashTree>
  25362. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipping Method" enabled="true">
  25363. <collectionProp name="Asserion.test_strings">
  25364. <stringProp name="-1987784558">shipping_method</stringProp>
  25365. <stringProp name="818779431">Flat Rate</stringProp>
  25366. </collectionProp>
  25367. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25368. <boolProp name="Assertion.assume_success">false</boolProp>
  25369. <intProp name="Assertion.test_type">2</intProp>
  25370. </ResponseAssertion>
  25371. <hashTree/>
  25372. </hashTree>
  25373. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filled Order Page" enabled="true">
  25374. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25375. <collectionProp name="Arguments.arguments"/>
  25376. </elementProp>
  25377. <stringProp name="HTTPSampler.domain"/>
  25378. <stringProp name="HTTPSampler.port"/>
  25379. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25380. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25381. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25382. <stringProp name="HTTPSampler.contentEncoding"/>
  25383. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/index/</stringProp>
  25384. <stringProp name="HTTPSampler.method">GET</stringProp>
  25385. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25386. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25387. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25388. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25389. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25390. <stringProp name="HTTPSampler.embedded_url_re"/>
  25391. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  25392. </HTTPSamplerProxy>
  25393. <hashTree>
  25394. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Filled Order Page" enabled="true">
  25395. <collectionProp name="Asserion.test_strings">
  25396. <stringProp name="-37823069">Select from existing customer addresses</stringProp>
  25397. <stringProp name="-13185722">Submit Order</stringProp>
  25398. <stringProp name="-209419315">Items Ordered</stringProp>
  25399. </collectionProp>
  25400. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25401. <boolProp name="Assertion.assume_success">false</boolProp>
  25402. <intProp name="Assertion.test_type">2</intProp>
  25403. </ResponseAssertion>
  25404. <hashTree/>
  25405. </hashTree>
  25406. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Order" enabled="true">
  25407. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25408. <collectionProp name="Arguments.arguments">
  25409. <elementProp name="form_key" elementType="HTTPArgument">
  25410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25411. <stringProp name="Argument.name">form_key</stringProp>
  25412. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  25413. <stringProp name="Argument.metadata">=</stringProp>
  25414. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25415. </elementProp>
  25416. <elementProp name="limit" elementType="HTTPArgument">
  25417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25418. <stringProp name="Argument.name">limit</stringProp>
  25419. <stringProp name="Argument.value">20</stringProp>
  25420. <stringProp name="Argument.metadata">=</stringProp>
  25421. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25422. </elementProp>
  25423. <elementProp name="entity_id" elementType="HTTPArgument">
  25424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25425. <stringProp name="Argument.name">entity_id</stringProp>
  25426. <stringProp name="Argument.value"/>
  25427. <stringProp name="Argument.metadata">=</stringProp>
  25428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25429. </elementProp>
  25430. <elementProp name="name" elementType="HTTPArgument">
  25431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25432. <stringProp name="Argument.name">name</stringProp>
  25433. <stringProp name="Argument.value"/>
  25434. <stringProp name="Argument.metadata">=</stringProp>
  25435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25436. </elementProp>
  25437. <elementProp name="email" elementType="HTTPArgument">
  25438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25439. <stringProp name="Argument.name">email</stringProp>
  25440. <stringProp name="Argument.value"/>
  25441. <stringProp name="Argument.metadata">=</stringProp>
  25442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25443. </elementProp>
  25444. <elementProp name="Telephone" elementType="HTTPArgument">
  25445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25446. <stringProp name="Argument.name">Telephone</stringProp>
  25447. <stringProp name="Argument.value"/>
  25448. <stringProp name="Argument.metadata">=</stringProp>
  25449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25450. </elementProp>
  25451. <elementProp name="billing_postcode" elementType="HTTPArgument">
  25452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25453. <stringProp name="Argument.name">billing_postcode</stringProp>
  25454. <stringProp name="Argument.value"/>
  25455. <stringProp name="Argument.metadata">=</stringProp>
  25456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25457. </elementProp>
  25458. <elementProp name="billing_country_id" elementType="HTTPArgument">
  25459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25460. <stringProp name="Argument.name">billing_country_id</stringProp>
  25461. <stringProp name="Argument.value"/>
  25462. <stringProp name="Argument.metadata">=</stringProp>
  25463. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25464. </elementProp>
  25465. <elementProp name="billing_regione" elementType="HTTPArgument">
  25466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25467. <stringProp name="Argument.name">billing_regione</stringProp>
  25468. <stringProp name="Argument.value"/>
  25469. <stringProp name="Argument.metadata">=</stringProp>
  25470. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25471. </elementProp>
  25472. <elementProp name="store_name" elementType="HTTPArgument">
  25473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25474. <stringProp name="Argument.name">store_name</stringProp>
  25475. <stringProp name="Argument.value"/>
  25476. <stringProp name="Argument.metadata">=</stringProp>
  25477. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25478. </elementProp>
  25479. <elementProp name="page" elementType="HTTPArgument">
  25480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25481. <stringProp name="Argument.name">page</stringProp>
  25482. <stringProp name="Argument.value">1</stringProp>
  25483. <stringProp name="Argument.metadata">=</stringProp>
  25484. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25485. </elementProp>
  25486. <elementProp name="order[currency]" elementType="HTTPArgument">
  25487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25488. <stringProp name="Argument.name">order[currency]</stringProp>
  25489. <stringProp name="Argument.value">USD</stringProp>
  25490. <stringProp name="Argument.metadata">=</stringProp>
  25491. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25492. </elementProp>
  25493. <elementProp name="sku" elementType="HTTPArgument">
  25494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25495. <stringProp name="Argument.name">sku</stringProp>
  25496. <stringProp name="Argument.value"/>
  25497. <stringProp name="Argument.metadata">=</stringProp>
  25498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25499. </elementProp>
  25500. <elementProp name="qty" elementType="HTTPArgument">
  25501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25502. <stringProp name="Argument.name">qty</stringProp>
  25503. <stringProp name="Argument.value"/>
  25504. <stringProp name="Argument.metadata">=</stringProp>
  25505. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25506. </elementProp>
  25507. <elementProp name="limit" elementType="HTTPArgument">
  25508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25509. <stringProp name="Argument.name">limit</stringProp>
  25510. <stringProp name="Argument.value">20</stringProp>
  25511. <stringProp name="Argument.metadata">=</stringProp>
  25512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25513. </elementProp>
  25514. <elementProp name="entity_id" elementType="HTTPArgument">
  25515. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25516. <stringProp name="Argument.name">entity_id</stringProp>
  25517. <stringProp name="Argument.value"/>
  25518. <stringProp name="Argument.metadata">=</stringProp>
  25519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25520. </elementProp>
  25521. <elementProp name="name" elementType="HTTPArgument">
  25522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25523. <stringProp name="Argument.name">name</stringProp>
  25524. <stringProp name="Argument.value"/>
  25525. <stringProp name="Argument.metadata">=</stringProp>
  25526. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25527. </elementProp>
  25528. <elementProp name="sku" elementType="HTTPArgument">
  25529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25530. <stringProp name="Argument.name">sku</stringProp>
  25531. <stringProp name="Argument.value"/>
  25532. <stringProp name="Argument.metadata">=</stringProp>
  25533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25534. </elementProp>
  25535. <elementProp name="price[from]" elementType="HTTPArgument">
  25536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25537. <stringProp name="Argument.name">price[from]</stringProp>
  25538. <stringProp name="Argument.value"/>
  25539. <stringProp name="Argument.metadata">=</stringProp>
  25540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25541. </elementProp>
  25542. <elementProp name="price[to]" elementType="HTTPArgument">
  25543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25544. <stringProp name="Argument.name">price[to]</stringProp>
  25545. <stringProp name="Argument.value"/>
  25546. <stringProp name="Argument.metadata">=</stringProp>
  25547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25548. </elementProp>
  25549. <elementProp name="in_products" elementType="HTTPArgument">
  25550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25551. <stringProp name="Argument.name">in_products</stringProp>
  25552. <stringProp name="Argument.value"/>
  25553. <stringProp name="Argument.metadata">=</stringProp>
  25554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25555. </elementProp>
  25556. <elementProp name="page" elementType="HTTPArgument">
  25557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25558. <stringProp name="Argument.name">page</stringProp>
  25559. <stringProp name="Argument.value">1</stringProp>
  25560. <stringProp name="Argument.metadata">=</stringProp>
  25561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25562. </elementProp>
  25563. <elementProp name="coupon_code" elementType="HTTPArgument">
  25564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25565. <stringProp name="Argument.name">coupon_code</stringProp>
  25566. <stringProp name="Argument.value"/>
  25567. <stringProp name="Argument.metadata">=</stringProp>
  25568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25569. </elementProp>
  25570. <elementProp name="order[account][group_id]" elementType="HTTPArgument">
  25571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25572. <stringProp name="Argument.name">order[account][group_id]</stringProp>
  25573. <stringProp name="Argument.value">1</stringProp>
  25574. <stringProp name="Argument.metadata">=</stringProp>
  25575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25576. </elementProp>
  25577. <elementProp name="order[account][email]" elementType="HTTPArgument">
  25578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25579. <stringProp name="Argument.name">order[account][email]</stringProp>
  25580. <stringProp name="Argument.value">user_${customer_id}@example.com</stringProp>
  25581. <stringProp name="Argument.metadata">=</stringProp>
  25582. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25583. </elementProp>
  25584. <elementProp name="order[billing_address][customer_address_id]" elementType="HTTPArgument">
  25585. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25586. <stringProp name="Argument.name">order[billing_address][customer_address_id]</stringProp>
  25587. <stringProp name="Argument.value"/>
  25588. <stringProp name="Argument.metadata">=</stringProp>
  25589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25590. </elementProp>
  25591. <elementProp name="order[billing_address][prefix]" elementType="HTTPArgument">
  25592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25593. <stringProp name="Argument.name">order[billing_address][prefix]</stringProp>
  25594. <stringProp name="Argument.value"/>
  25595. <stringProp name="Argument.metadata">=</stringProp>
  25596. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25597. </elementProp>
  25598. <elementProp name="order[billing_address][firstname]" elementType="HTTPArgument">
  25599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25600. <stringProp name="Argument.name">order[billing_address][firstname]</stringProp>
  25601. <stringProp name="Argument.value">Anthony</stringProp>
  25602. <stringProp name="Argument.metadata">=</stringProp>
  25603. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25604. </elementProp>
  25605. <elementProp name="order[billing_address][middlename]" elementType="HTTPArgument">
  25606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25607. <stringProp name="Argument.name">order[billing_address][middlename]</stringProp>
  25608. <stringProp name="Argument.value"/>
  25609. <stringProp name="Argument.metadata">=</stringProp>
  25610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25611. </elementProp>
  25612. <elementProp name="order[billing_address][lastname]" elementType="HTTPArgument">
  25613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25614. <stringProp name="Argument.name">order[billing_address][lastname]</stringProp>
  25615. <stringProp name="Argument.value">Nealy</stringProp>
  25616. <stringProp name="Argument.metadata">=</stringProp>
  25617. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25618. </elementProp>
  25619. <elementProp name="order[billing_address][suffix]" elementType="HTTPArgument">
  25620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25621. <stringProp name="Argument.name">order[billing_address][suffix]</stringProp>
  25622. <stringProp name="Argument.value"/>
  25623. <stringProp name="Argument.metadata">=</stringProp>
  25624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25625. </elementProp>
  25626. <elementProp name="order[billing_address][company]" elementType="HTTPArgument">
  25627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25628. <stringProp name="Argument.name">order[billing_address][company]</stringProp>
  25629. <stringProp name="Argument.value"/>
  25630. <stringProp name="Argument.metadata">=</stringProp>
  25631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25632. </elementProp>
  25633. <elementProp name="order[billing_address][street][0]" elementType="HTTPArgument">
  25634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25635. <stringProp name="Argument.name">order[billing_address][street][0]</stringProp>
  25636. <stringProp name="Argument.value">123 Freedom Blvd. #123</stringProp>
  25637. <stringProp name="Argument.metadata">=</stringProp>
  25638. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25639. </elementProp>
  25640. <elementProp name="order[billing_address][street][1]" elementType="HTTPArgument">
  25641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25642. <stringProp name="Argument.name">order[billing_address][street][1]</stringProp>
  25643. <stringProp name="Argument.value"/>
  25644. <stringProp name="Argument.metadata">=</stringProp>
  25645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25646. </elementProp>
  25647. <elementProp name="order[billing_address][city]" elementType="HTTPArgument">
  25648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25649. <stringProp name="Argument.name">order[billing_address][city]</stringProp>
  25650. <stringProp name="Argument.value">Fayetteville</stringProp>
  25651. <stringProp name="Argument.metadata">=</stringProp>
  25652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25653. </elementProp>
  25654. <elementProp name="order[billing_address][country_id]" elementType="HTTPArgument">
  25655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25656. <stringProp name="Argument.name">order[billing_address][country_id]</stringProp>
  25657. <stringProp name="Argument.value">US</stringProp>
  25658. <stringProp name="Argument.metadata">=</stringProp>
  25659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25660. </elementProp>
  25661. <elementProp name="order[billing_address][region]" elementType="HTTPArgument">
  25662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25663. <stringProp name="Argument.name">order[billing_address][region]</stringProp>
  25664. <stringProp name="Argument.value"/>
  25665. <stringProp name="Argument.metadata">=</stringProp>
  25666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25667. </elementProp>
  25668. <elementProp name="order[billing_address][region_id]" elementType="HTTPArgument">
  25669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25670. <stringProp name="Argument.name">order[billing_address][region_id]</stringProp>
  25671. <stringProp name="Argument.value">${alabama_region_id}</stringProp>
  25672. <stringProp name="Argument.metadata">=</stringProp>
  25673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25674. </elementProp>
  25675. <elementProp name="order[billing_address][postcode]" elementType="HTTPArgument">
  25676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25677. <stringProp name="Argument.name">order[billing_address][postcode]</stringProp>
  25678. <stringProp name="Argument.value">123123</stringProp>
  25679. <stringProp name="Argument.metadata">=</stringProp>
  25680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25681. </elementProp>
  25682. <elementProp name="order[billing_address][telephone]" elementType="HTTPArgument">
  25683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25684. <stringProp name="Argument.name">order[billing_address][telephone]</stringProp>
  25685. <stringProp name="Argument.value">022-333-4455</stringProp>
  25686. <stringProp name="Argument.metadata">=</stringProp>
  25687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25688. </elementProp>
  25689. <elementProp name="order[billing_address][fax]" elementType="HTTPArgument">
  25690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25691. <stringProp name="Argument.name">order[billing_address][fax]</stringProp>
  25692. <stringProp name="Argument.value"/>
  25693. <stringProp name="Argument.metadata">=</stringProp>
  25694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25695. </elementProp>
  25696. <elementProp name="order[billing_address][vat_id]" elementType="HTTPArgument">
  25697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25698. <stringProp name="Argument.name">order[billing_address][vat_id]</stringProp>
  25699. <stringProp name="Argument.value"/>
  25700. <stringProp name="Argument.metadata">=</stringProp>
  25701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25702. </elementProp>
  25703. <elementProp name="shipping_same_as_billing" elementType="HTTPArgument">
  25704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25705. <stringProp name="Argument.name">shipping_same_as_billing</stringProp>
  25706. <stringProp name="Argument.value">on</stringProp>
  25707. <stringProp name="Argument.metadata">=</stringProp>
  25708. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25709. </elementProp>
  25710. <elementProp name="payment[method]" elementType="HTTPArgument">
  25711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25712. <stringProp name="Argument.name">payment[method]</stringProp>
  25713. <stringProp name="Argument.value">checkmo</stringProp>
  25714. <stringProp name="Argument.metadata">=</stringProp>
  25715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25716. </elementProp>
  25717. <elementProp name="order[shipping_method]" elementType="HTTPArgument">
  25718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25719. <stringProp name="Argument.name">order[shipping_method]</stringProp>
  25720. <stringProp name="Argument.value">flatrate_flatrate</stringProp>
  25721. <stringProp name="Argument.metadata">=</stringProp>
  25722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25723. </elementProp>
  25724. <elementProp name="order[comment][customer_note]" elementType="HTTPArgument">
  25725. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25726. <stringProp name="Argument.name">order[comment][customer_note]</stringProp>
  25727. <stringProp name="Argument.value"/>
  25728. <stringProp name="Argument.metadata">=</stringProp>
  25729. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25730. </elementProp>
  25731. <elementProp name="order[comment][customer_note_notify]" elementType="HTTPArgument">
  25732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25733. <stringProp name="Argument.name">order[comment][customer_note_notify]</stringProp>
  25734. <stringProp name="Argument.value">1</stringProp>
  25735. <stringProp name="Argument.metadata">=</stringProp>
  25736. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25737. </elementProp>
  25738. <elementProp name="order[send_confirmation]" elementType="HTTPArgument">
  25739. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25740. <stringProp name="Argument.name">order[send_confirmation]</stringProp>
  25741. <stringProp name="Argument.value">1</stringProp>
  25742. <stringProp name="Argument.metadata">=</stringProp>
  25743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25744. </elementProp>
  25745. </collectionProp>
  25746. </elementProp>
  25747. <stringProp name="HTTPSampler.domain"/>
  25748. <stringProp name="HTTPSampler.port"/>
  25749. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25750. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25751. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25752. <stringProp name="HTTPSampler.contentEncoding"/>
  25753. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/save/</stringProp>
  25754. <stringProp name="HTTPSampler.method">POST</stringProp>
  25755. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25756. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25757. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25758. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  25759. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25760. <stringProp name="HTTPSampler.embedded_url_re"/>
  25761. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  25762. </HTTPSamplerProxy>
  25763. <hashTree>
  25764. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Id" enabled="true">
  25765. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  25766. <stringProp name="RegexExtractor.refname">order_id</stringProp>
  25767. <stringProp name="RegexExtractor.regex">${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/</stringProp>
  25768. <stringProp name="RegexExtractor.template">$1$</stringProp>
  25769. <stringProp name="RegexExtractor.default"/>
  25770. <stringProp name="RegexExtractor.match_number">1</stringProp>
  25771. </RegexExtractor>
  25772. <hashTree/>
  25773. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 1" enabled="true">
  25774. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  25775. <stringProp name="RegexExtractor.refname">order_item_1</stringProp>
  25776. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  25777. <stringProp name="RegexExtractor.template">$1$</stringProp>
  25778. <stringProp name="RegexExtractor.default"/>
  25779. <stringProp name="RegexExtractor.match_number">1</stringProp>
  25780. </RegexExtractor>
  25781. <hashTree/>
  25782. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 2" enabled="true">
  25783. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  25784. <stringProp name="RegexExtractor.refname">order_item_2</stringProp>
  25785. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  25786. <stringProp name="RegexExtractor.template">$1$</stringProp>
  25787. <stringProp name="RegexExtractor.default"/>
  25788. <stringProp name="RegexExtractor.match_number">2</stringProp>
  25789. </RegexExtractor>
  25790. <hashTree/>
  25791. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 3" enabled="true">
  25792. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  25793. <stringProp name="RegexExtractor.refname">order_item_3</stringProp>
  25794. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  25795. <stringProp name="RegexExtractor.template">$1$</stringProp>
  25796. <stringProp name="RegexExtractor.default"/>
  25797. <stringProp name="RegexExtractor.match_number">3</stringProp>
  25798. </RegexExtractor>
  25799. <hashTree/>
  25800. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Id" enabled="true">
  25801. <collectionProp name="Asserion.test_strings">
  25802. <stringProp name="89649215">^\d+$</stringProp>
  25803. </collectionProp>
  25804. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25805. <boolProp name="Assertion.assume_success">false</boolProp>
  25806. <intProp name="Assertion.test_type">1</intProp>
  25807. <stringProp name="Assertion.scope">variable</stringProp>
  25808. <stringProp name="Scope.variable">order_id</stringProp>
  25809. </ResponseAssertion>
  25810. <hashTree/>
  25811. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 1" enabled="true">
  25812. <collectionProp name="Asserion.test_strings">
  25813. <stringProp name="89649215">^\d+$</stringProp>
  25814. </collectionProp>
  25815. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25816. <boolProp name="Assertion.assume_success">false</boolProp>
  25817. <intProp name="Assertion.test_type">1</intProp>
  25818. <stringProp name="Assertion.scope">variable</stringProp>
  25819. <stringProp name="Scope.variable">order_item_1</stringProp>
  25820. </ResponseAssertion>
  25821. <hashTree/>
  25822. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 2" enabled="true">
  25823. <collectionProp name="Asserion.test_strings">
  25824. <stringProp name="89649215">^\d+$</stringProp>
  25825. </collectionProp>
  25826. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25827. <boolProp name="Assertion.assume_success">false</boolProp>
  25828. <intProp name="Assertion.test_type">1</intProp>
  25829. <stringProp name="Assertion.scope">variable</stringProp>
  25830. <stringProp name="Scope.variable">order_item_2</stringProp>
  25831. </ResponseAssertion>
  25832. <hashTree/>
  25833. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 3" enabled="true">
  25834. <collectionProp name="Asserion.test_strings">
  25835. <stringProp name="89649215">^\d+$</stringProp>
  25836. </collectionProp>
  25837. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25838. <boolProp name="Assertion.assume_success">false</boolProp>
  25839. <intProp name="Assertion.test_type">1</intProp>
  25840. <stringProp name="Assertion.scope">variable</stringProp>
  25841. <stringProp name="Scope.variable">order_item_3</stringProp>
  25842. </ResponseAssertion>
  25843. <hashTree/>
  25844. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Created" enabled="true">
  25845. <collectionProp name="Asserion.test_strings">
  25846. <stringProp name="563107624">You created the order.</stringProp>
  25847. </collectionProp>
  25848. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25849. <boolProp name="Assertion.assume_success">false</boolProp>
  25850. <intProp name="Assertion.test_type">2</intProp>
  25851. </ResponseAssertion>
  25852. <hashTree/>
  25853. </hashTree>
  25854. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Invoice" enabled="true">
  25855. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25856. <collectionProp name="Arguments.arguments">
  25857. <elementProp name="form_key" elementType="HTTPArgument">
  25858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25859. <stringProp name="Argument.name">form_key</stringProp>
  25860. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  25861. <stringProp name="Argument.metadata">=</stringProp>
  25862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25863. </elementProp>
  25864. <elementProp name="invoice[items][${order_item_1}]" elementType="HTTPArgument">
  25865. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25866. <stringProp name="Argument.name">invoice[items][${order_item_1}]</stringProp>
  25867. <stringProp name="Argument.value">1</stringProp>
  25868. <stringProp name="Argument.metadata">=</stringProp>
  25869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25870. </elementProp>
  25871. <elementProp name="invoice[items][${order_item_2}]" elementType="HTTPArgument">
  25872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25873. <stringProp name="Argument.name">invoice[items][${order_item_2}]</stringProp>
  25874. <stringProp name="Argument.value">1</stringProp>
  25875. <stringProp name="Argument.metadata">=</stringProp>
  25876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25877. </elementProp>
  25878. <elementProp name="invoice[items][${order_item_3}]" elementType="HTTPArgument">
  25879. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25880. <stringProp name="Argument.name">invoice[items][${order_item_3}]</stringProp>
  25881. <stringProp name="Argument.value">1</stringProp>
  25882. <stringProp name="Argument.metadata">=</stringProp>
  25883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25884. </elementProp>
  25885. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  25886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25887. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  25888. <stringProp name="Argument.value"/>
  25889. <stringProp name="Argument.metadata">=</stringProp>
  25890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25891. </elementProp>
  25892. </collectionProp>
  25893. </elementProp>
  25894. <stringProp name="HTTPSampler.domain"/>
  25895. <stringProp name="HTTPSampler.port"/>
  25896. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25897. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25898. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25899. <stringProp name="HTTPSampler.contentEncoding"/>
  25900. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  25901. <stringProp name="HTTPSampler.method">POST</stringProp>
  25902. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25903. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25904. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25905. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25906. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25907. <stringProp name="HTTPSampler.embedded_url_re"/>
  25908. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  25909. </HTTPSamplerProxy>
  25910. <hashTree>
  25911. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Invoice Created" enabled="true">
  25912. <collectionProp name="Asserion.test_strings">
  25913. <stringProp name="-1878312078">The invoice has been created.</stringProp>
  25914. </collectionProp>
  25915. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25916. <boolProp name="Assertion.assume_success">false</boolProp>
  25917. <intProp name="Assertion.test_type">2</intProp>
  25918. </ResponseAssertion>
  25919. <hashTree/>
  25920. </hashTree>
  25921. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Shipment" enabled="true">
  25922. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25923. <collectionProp name="Arguments.arguments">
  25924. <elementProp name="form_key" elementType="HTTPArgument">
  25925. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25926. <stringProp name="Argument.name">form_key</stringProp>
  25927. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  25928. <stringProp name="Argument.metadata">=</stringProp>
  25929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25930. </elementProp>
  25931. <elementProp name="shipment[items][${order_item_1}]" elementType="HTTPArgument">
  25932. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25933. <stringProp name="Argument.name">shipment[items][${order_item_1}]</stringProp>
  25934. <stringProp name="Argument.value">1</stringProp>
  25935. <stringProp name="Argument.metadata">=</stringProp>
  25936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25937. </elementProp>
  25938. <elementProp name="shipment[items][${order_item_2}]" elementType="HTTPArgument">
  25939. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25940. <stringProp name="Argument.name">shipment[items][${order_item_2}]</stringProp>
  25941. <stringProp name="Argument.value">1</stringProp>
  25942. <stringProp name="Argument.metadata">=</stringProp>
  25943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25944. </elementProp>
  25945. <elementProp name="shipment[items][${order_item_3}]" elementType="HTTPArgument">
  25946. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25947. <stringProp name="Argument.name">shipment[items][${order_item_3}]</stringProp>
  25948. <stringProp name="Argument.value">1</stringProp>
  25949. <stringProp name="Argument.metadata">=</stringProp>
  25950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25951. </elementProp>
  25952. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  25953. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  25954. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  25955. <stringProp name="Argument.value"/>
  25956. <stringProp name="Argument.metadata">=</stringProp>
  25957. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  25958. </elementProp>
  25959. </collectionProp>
  25960. </elementProp>
  25961. <stringProp name="HTTPSampler.domain"/>
  25962. <stringProp name="HTTPSampler.port"/>
  25963. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25964. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25965. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25966. <stringProp name="HTTPSampler.contentEncoding"/>
  25967. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  25968. <stringProp name="HTTPSampler.method">POST</stringProp>
  25969. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  25970. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  25971. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  25972. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  25973. <boolProp name="HTTPSampler.monitor">false</boolProp>
  25974. <stringProp name="HTTPSampler.embedded_url_re"/>
  25975. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  25976. </HTTPSamplerProxy>
  25977. <hashTree>
  25978. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipment Created" enabled="true">
  25979. <collectionProp name="Asserion.test_strings">
  25980. <stringProp name="-348539683">The shipment has been created.</stringProp>
  25981. </collectionProp>
  25982. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  25983. <boolProp name="Assertion.assume_success">false</boolProp>
  25984. <intProp name="Assertion.test_type">2</intProp>
  25985. </ResponseAssertion>
  25986. <hashTree/>
  25987. </hashTree>
  25988. </hashTree>
  25989. </hashTree>
  25990. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  25991. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  25992. <collectionProp name="Arguments.arguments"/>
  25993. </elementProp>
  25994. <stringProp name="HTTPSampler.domain"/>
  25995. <stringProp name="HTTPSampler.port"/>
  25996. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  25997. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  25998. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  25999. <stringProp name="HTTPSampler.contentEncoding"/>
  26000. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  26001. <stringProp name="HTTPSampler.method">GET</stringProp>
  26002. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26003. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26004. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26005. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26006. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26007. <stringProp name="HTTPSampler.embedded_url_re"/>
  26008. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  26009. <hashTree>
  26010. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  26011. <boolProp name="resetInterpreter">false</boolProp>
  26012. <stringProp name="parameters"/>
  26013. <stringProp name="filename"/>
  26014. <stringProp name="script">
  26015. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  26016. if (adminUsersDistribution == 1) {
  26017. adminUserList = props.get("adminUserList");
  26018. adminUserList.add(vars.get("admin_user"));
  26019. }
  26020. </stringProp>
  26021. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  26022. <hashTree/>
  26023. </hashTree>
  26024. </hashTree>
  26025. </hashTree>
  26026. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="API Pool" enabled="true">
  26027. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  26028. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  26029. <boolProp name="LoopController.continue_forever">false</boolProp>
  26030. <stringProp name="LoopController.loops">${loops}</stringProp>
  26031. </elementProp>
  26032. <stringProp name="ThreadGroup.num_threads">${apiPoolUsers}</stringProp>
  26033. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  26034. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  26035. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  26036. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  26037. <stringProp name="ThreadGroup.duration"/>
  26038. <stringProp name="ThreadGroup.delay"/>
  26039. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  26040. <hashTree>
  26041. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API" enabled="true">
  26042. <intProp name="ThroughputController.style">1</intProp>
  26043. <boolProp name="ThroughputController.perThread">false</boolProp>
  26044. <intProp name="ThroughputController.maxThroughput">1</intProp>
  26045. <stringProp name="ThroughputController.percentThroughput">${apiBasePercentage}</stringProp>
  26046. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  26047. <hashTree>
  26048. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  26049. <stringProp name="script">
  26050. var tmpLabel = vars.get("testLabel")
  26051. if (tmpLabel) {
  26052. var testLabel = " (" + tmpLabel + ")"
  26053. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  26054. if (sampler.getName().indexOf(testLabel) == -1) {
  26055. sampler.setName(sampler.getName() + testLabel);
  26056. }
  26057. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  26058. sampler.setName("SetUp - " + sampler.getName());
  26059. }
  26060. } else {
  26061. testLabel = ""
  26062. }
  26063. </stringProp>
  26064. <stringProp name="scriptLanguage">javascript</stringProp>
  26065. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  26066. <hashTree/>
  26067. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  26068. <stringProp name="BeanShellSampler.query">
  26069. vars.put("testLabel", "API");
  26070. </stringProp>
  26071. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  26072. </BeanShellSampler>
  26073. <hashTree/>
  26074. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  26075. <collectionProp name="HeaderManager.headers">
  26076. <elementProp name="" elementType="Header">
  26077. <stringProp name="Header.name">Content-Type</stringProp>
  26078. <stringProp name="Header.value">application/json</stringProp>
  26079. </elementProp>
  26080. <elementProp name="" elementType="Header">
  26081. <stringProp name="Header.name">Accept</stringProp>
  26082. <stringProp name="Header.value">*/*</stringProp>
  26083. </elementProp>
  26084. </collectionProp>
  26085. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  26086. <hashTree/>
  26087. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  26088. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26089. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26090. <collectionProp name="Arguments.arguments">
  26091. <elementProp name="" elementType="HTTPArgument">
  26092. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26093. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  26094. <stringProp name="Argument.metadata">=</stringProp>
  26095. </elementProp>
  26096. </collectionProp>
  26097. </elementProp>
  26098. <stringProp name="HTTPSampler.domain"/>
  26099. <stringProp name="HTTPSampler.port"/>
  26100. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26101. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26102. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26103. <stringProp name="HTTPSampler.contentEncoding"/>
  26104. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  26105. <stringProp name="HTTPSampler.method">POST</stringProp>
  26106. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26107. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26108. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26109. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26110. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26111. <stringProp name="HTTPSampler.embedded_url_re"/>
  26112. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  26113. <hashTree>
  26114. <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">
  26115. <stringProp name="VAR">admin_token</stringProp>
  26116. <stringProp name="JSONPATH">$</stringProp>
  26117. <stringProp name="DEFAULT"/>
  26118. <stringProp name="VARIABLE"/>
  26119. <stringProp name="SUBJECT">BODY</stringProp>
  26120. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  26121. <hashTree/>
  26122. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  26123. <collectionProp name="Asserion.test_strings">
  26124. <stringProp name="484395188">^.{10,}$</stringProp>
  26125. </collectionProp>
  26126. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26127. <boolProp name="Assertion.assume_success">false</boolProp>
  26128. <intProp name="Assertion.test_type">1</intProp>
  26129. <stringProp name="Assertion.scope">variable</stringProp>
  26130. <stringProp name="Scope.variable">admin_token</stringProp>
  26131. </ResponseAssertion>
  26132. <hashTree/>
  26133. </hashTree>
  26134. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  26135. <collectionProp name="HeaderManager.headers">
  26136. <elementProp name="" elementType="Header">
  26137. <stringProp name="Header.name">Authorization</stringProp>
  26138. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  26139. </elementProp>
  26140. </collectionProp>
  26141. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  26142. <hashTree/>
  26143. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Create Customer" enabled="true">
  26144. <intProp name="ThroughputController.style">1</intProp>
  26145. <boolProp name="ThroughputController.perThread">false</boolProp>
  26146. <intProp name="ThroughputController.maxThroughput">1</intProp>
  26147. <stringProp name="ThroughputController.percentThroughput">100</stringProp>
  26148. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  26149. <hashTree>
  26150. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  26151. <stringProp name="script">
  26152. var tmpLabel = vars.get("testLabel")
  26153. if (tmpLabel) {
  26154. var testLabel = " (" + tmpLabel + ")"
  26155. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  26156. if (sampler.getName().indexOf(testLabel) == -1) {
  26157. sampler.setName(sampler.getName() + testLabel);
  26158. }
  26159. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  26160. sampler.setName("SetUp - " + sampler.getName());
  26161. }
  26162. } else {
  26163. testLabel = ""
  26164. }
  26165. </stringProp>
  26166. <stringProp name="scriptLanguage">javascript</stringProp>
  26167. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  26168. <hashTree/>
  26169. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  26170. <stringProp name="BeanShellSampler.query">
  26171. vars.put("testLabel", "API Create Customer");
  26172. </stringProp>
  26173. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  26174. </BeanShellSampler>
  26175. <hashTree/>
  26176. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create customer" enabled="true">
  26177. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26178. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26179. <collectionProp name="Arguments.arguments">
  26180. <elementProp name="" elementType="HTTPArgument">
  26181. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26182. <stringProp name="Argument.value">{&#xD;
  26183. "customer": {&#xD;
  26184. &#xD;
  26185. "email": "customer_${__time()}-${__threadNum}-${__Random(1,1000000)}@example.com",&#xD;
  26186. "firstname": "test_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  26187. "lastname": "Doe"&#xD;
  26188. },&#xD;
  26189. "password": "test@123"&#xD;
  26190. }</stringProp>
  26191. <stringProp name="Argument.metadata">=</stringProp>
  26192. </elementProp>
  26193. </collectionProp>
  26194. </elementProp>
  26195. <stringProp name="HTTPSampler.domain"/>
  26196. <stringProp name="HTTPSampler.port"/>
  26197. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26198. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26199. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26200. <stringProp name="HTTPSampler.contentEncoding"/>
  26201. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers</stringProp>
  26202. <stringProp name="HTTPSampler.method">POST</stringProp>
  26203. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26204. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26205. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26206. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26207. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26208. <stringProp name="HTTPSampler.embedded_url_re"/>
  26209. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_customer.jmx</stringProp></HTTPSamplerProxy>
  26210. <hashTree>
  26211. <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 customer id" enabled="true">
  26212. <stringProp name="VAR">customer_id</stringProp>
  26213. <stringProp name="JSONPATH">$.id</stringProp>
  26214. <stringProp name="DEFAULT"/>
  26215. <stringProp name="VARIABLE"/>
  26216. <stringProp name="SUBJECT">BODY</stringProp>
  26217. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  26218. <hashTree/>
  26219. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer id not null" enabled="true">
  26220. <collectionProp name="Asserion.test_strings">
  26221. <stringProp name="89649215">^\d+$</stringProp>
  26222. </collectionProp>
  26223. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26224. <boolProp name="Assertion.assume_success">false</boolProp>
  26225. <intProp name="Assertion.test_type">1</intProp>
  26226. <stringProp name="Assertion.scope">variable</stringProp>
  26227. <stringProp name="Scope.variable">customer_id</stringProp>
  26228. </ResponseAssertion>
  26229. <hashTree/>
  26230. </hashTree>
  26231. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check customer" enabled="true">
  26232. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  26233. <collectionProp name="Arguments.arguments"/>
  26234. </elementProp>
  26235. <stringProp name="HTTPSampler.domain"/>
  26236. <stringProp name="HTTPSampler.port"/>
  26237. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26238. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26239. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26240. <stringProp name="HTTPSampler.contentEncoding"/>
  26241. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/${customer_id}</stringProp>
  26242. <stringProp name="HTTPSampler.method">GET</stringProp>
  26243. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26244. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26245. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26246. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26247. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26248. <stringProp name="HTTPSampler.embedded_url_re"/>
  26249. <stringProp name="TestPlan.comments">tool/fragments/ce/api/check_customer.jmx</stringProp></HTTPSamplerProxy>
  26250. <hashTree>
  26251. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  26252. <stringProp name="JSON_PATH">$.id</stringProp>
  26253. <stringProp name="EXPECTED_VALUE">${customer_id}</stringProp>
  26254. <boolProp name="JSONVALIDATION">true</boolProp>
  26255. <boolProp name="EXPECT_NULL">false</boolProp>
  26256. <boolProp name="INVERT">false</boolProp>
  26257. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  26258. <hashTree/>
  26259. </hashTree>
  26260. </hashTree>
  26261. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Catalog Browsing" enabled="true">
  26262. <intProp name="ThroughputController.style">1</intProp>
  26263. <boolProp name="ThroughputController.perThread">false</boolProp>
  26264. <intProp name="ThroughputController.maxThroughput">1</intProp>
  26265. <stringProp name="ThroughputController.percentThroughput">100</stringProp>
  26266. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  26267. <hashTree>
  26268. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  26269. <stringProp name="script">
  26270. var tmpLabel = vars.get("testLabel")
  26271. if (tmpLabel) {
  26272. var testLabel = " (" + tmpLabel + ")"
  26273. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  26274. if (sampler.getName().indexOf(testLabel) == -1) {
  26275. sampler.setName(sampler.getName() + testLabel);
  26276. }
  26277. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  26278. sampler.setName("SetUp - " + sampler.getName());
  26279. }
  26280. } else {
  26281. testLabel = ""
  26282. }
  26283. </stringProp>
  26284. <stringProp name="scriptLanguage">javascript</stringProp>
  26285. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  26286. <hashTree/>
  26287. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  26288. <stringProp name="BeanShellSampler.query">
  26289. vars.put("testLabel", "API Catalog Browsing");
  26290. </stringProp>
  26291. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  26292. </BeanShellSampler>
  26293. <hashTree/>
  26294. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get categories" enabled="true">
  26295. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  26296. <collectionProp name="Arguments.arguments"/>
  26297. </elementProp>
  26298. <stringProp name="HTTPSampler.domain"/>
  26299. <stringProp name="HTTPSampler.port"/>
  26300. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26301. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26302. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26303. <stringProp name="HTTPSampler.contentEncoding"/>
  26304. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
  26305. <stringProp name="HTTPSampler.method">GET</stringProp>
  26306. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26307. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26308. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26309. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26310. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26311. <stringProp name="HTTPSampler.embedded_url_re"/>
  26312. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_categories.jmx</stringProp></HTTPSamplerProxy>
  26313. <hashTree>
  26314. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  26315. <collectionProp name="Asserion.test_strings">
  26316. <stringProp name="-1294635157">errors</stringProp>
  26317. </collectionProp>
  26318. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26319. <boolProp name="Assertion.assume_success">false</boolProp>
  26320. <intProp name="Assertion.test_type">6</intProp>
  26321. <stringProp name="Assertion.scope">variable</stringProp>
  26322. <stringProp name="Scope.variable"/>
  26323. </ResponseAssertion>
  26324. <hashTree/>
  26325. <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 search category id" enabled="true">
  26326. <stringProp name="VAR">search_category_id</stringProp>
  26327. <stringProp name="JSONPATH">$.id</stringProp>
  26328. <stringProp name="DEFAULT"/>
  26329. <stringProp name="VARIABLE"/>
  26330. <stringProp name="SUBJECT">BODY</stringProp>
  26331. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  26332. <hashTree/>
  26333. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert search category id is not null" enabled="true">
  26334. <collectionProp name="Asserion.test_strings">
  26335. <stringProp name="89649215">^\d+$</stringProp>
  26336. </collectionProp>
  26337. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26338. <boolProp name="Assertion.assume_success">false</boolProp>
  26339. <intProp name="Assertion.test_type">1</intProp>
  26340. <stringProp name="Assertion.scope">variable</stringProp>
  26341. <stringProp name="Scope.variable">search_category_id</stringProp>
  26342. </ResponseAssertion>
  26343. <hashTree/>
  26344. </hashTree>
  26345. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get category" enabled="true">
  26346. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  26347. <collectionProp name="Arguments.arguments"/>
  26348. </elementProp>
  26349. <stringProp name="HTTPSampler.domain"/>
  26350. <stringProp name="HTTPSampler.port"/>
  26351. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26352. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26353. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26354. <stringProp name="HTTPSampler.contentEncoding"/>
  26355. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories/${search_category_id}</stringProp>
  26356. <stringProp name="HTTPSampler.method">GET</stringProp>
  26357. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26358. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26359. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26360. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26361. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26362. <stringProp name="HTTPSampler.embedded_url_re"/>
  26363. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_category.jmx</stringProp></HTTPSamplerProxy>
  26364. <hashTree>
  26365. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  26366. <collectionProp name="Asserion.test_strings">
  26367. <stringProp name="-1294635157">errors</stringProp>
  26368. </collectionProp>
  26369. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26370. <boolProp name="Assertion.assume_success">false</boolProp>
  26371. <intProp name="Assertion.test_type">6</intProp>
  26372. <stringProp name="Assertion.scope">variable</stringProp>
  26373. <stringProp name="Scope.variable"/>
  26374. </ResponseAssertion>
  26375. <hashTree/>
  26376. </hashTree>
  26377. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get products" enabled="true">
  26378. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  26379. <collectionProp name="Arguments.arguments">
  26380. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  26381. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  26382. <stringProp name="Argument.value">20</stringProp>
  26383. <stringProp name="Argument.metadata">=</stringProp>
  26384. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  26385. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  26386. <stringProp name="Argument.desc">true</stringProp>
  26387. </elementProp>
  26388. <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
  26389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  26390. <stringProp name="Argument.value">1</stringProp>
  26391. <stringProp name="Argument.metadata">=</stringProp>
  26392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  26393. <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
  26394. <stringProp name="Argument.desc">true</stringProp>
  26395. </elementProp>
  26396. </collectionProp>
  26397. </elementProp>
  26398. <stringProp name="HTTPSampler.domain"/>
  26399. <stringProp name="HTTPSampler.port"/>
  26400. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26401. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26402. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26403. <stringProp name="HTTPSampler.contentEncoding"/>
  26404. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  26405. <stringProp name="HTTPSampler.method">GET</stringProp>
  26406. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26407. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26408. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26409. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26410. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26411. <stringProp name="HTTPSampler.embedded_url_re"/>
  26412. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_products.jmx</stringProp></HTTPSamplerProxy>
  26413. <hashTree>
  26414. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  26415. <collectionProp name="Asserion.test_strings">
  26416. <stringProp name="-1294635157">errors</stringProp>
  26417. </collectionProp>
  26418. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26419. <boolProp name="Assertion.assume_success">false</boolProp>
  26420. <intProp name="Assertion.test_type">6</intProp>
  26421. <stringProp name="Assertion.scope">variable</stringProp>
  26422. <stringProp name="Scope.variable"/>
  26423. </ResponseAssertion>
  26424. <hashTree/>
  26425. </hashTree>
  26426. </hashTree>
  26427. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Search" enabled="true">
  26428. <intProp name="ThroughputController.style">1</intProp>
  26429. <boolProp name="ThroughputController.perThread">false</boolProp>
  26430. <intProp name="ThroughputController.maxThroughput">1</intProp>
  26431. <stringProp name="ThroughputController.percentThroughput">100</stringProp>
  26432. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  26433. <hashTree>
  26434. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  26435. <stringProp name="script">
  26436. var tmpLabel = vars.get("testLabel")
  26437. if (tmpLabel) {
  26438. var testLabel = " (" + tmpLabel + ")"
  26439. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  26440. if (sampler.getName().indexOf(testLabel) == -1) {
  26441. sampler.setName(sampler.getName() + testLabel);
  26442. }
  26443. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  26444. sampler.setName("SetUp - " + sampler.getName());
  26445. }
  26446. } else {
  26447. testLabel = ""
  26448. }
  26449. </stringProp>
  26450. <stringProp name="scriptLanguage">javascript</stringProp>
  26451. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  26452. <hashTree/>
  26453. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  26454. <stringProp name="BeanShellSampler.query">
  26455. vars.put("testLabel", "API Search");
  26456. </stringProp>
  26457. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  26458. </BeanShellSampler>
  26459. <hashTree/>
  26460. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search for simple product on frontend" enabled="true">
  26461. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  26462. <collectionProp name="Arguments.arguments">
  26463. <elementProp name="searchCriteria[request_name]" elementType="HTTPArgument">
  26464. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  26465. <stringProp name="Argument.value">quick_search_container</stringProp>
  26466. <stringProp name="Argument.metadata">=</stringProp>
  26467. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  26468. <stringProp name="Argument.name">searchCriteria[request_name]</stringProp>
  26469. </elementProp>
  26470. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  26471. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  26472. <stringProp name="Argument.value">search_term</stringProp>
  26473. <stringProp name="Argument.metadata">=</stringProp>
  26474. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  26475. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  26476. </elementProp>
  26477. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  26478. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  26479. <stringProp name="Argument.value">Simple</stringProp>
  26480. <stringProp name="Argument.metadata">=</stringProp>
  26481. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  26482. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  26483. </elementProp>
  26484. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  26485. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  26486. <stringProp name="Argument.value">20</stringProp>
  26487. <stringProp name="Argument.metadata">=</stringProp>
  26488. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  26489. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  26490. </elementProp>
  26491. <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
  26492. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  26493. <stringProp name="Argument.value">1</stringProp>
  26494. <stringProp name="Argument.metadata">=</stringProp>
  26495. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  26496. <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
  26497. </elementProp>
  26498. </collectionProp>
  26499. </elementProp>
  26500. <stringProp name="HTTPSampler.domain"/>
  26501. <stringProp name="HTTPSampler.port"/>
  26502. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26503. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26504. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26505. <stringProp name="HTTPSampler.contentEncoding"/>
  26506. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/search</stringProp>
  26507. <stringProp name="HTTPSampler.method">GET</stringProp>
  26508. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26509. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26510. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26511. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26512. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26513. <stringProp name="HTTPSampler.embedded_url_re"/>
  26514. <stringProp name="TestPlan.comments">tool/fragments/ce/api/search_for_product_frontend.jmx</stringProp></HTTPSamplerProxy>
  26515. <hashTree>
  26516. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert results are present" enabled="true">
  26517. <stringProp name="JSON_PATH">$.total_count</stringProp>
  26518. <stringProp name="EXPECTED_VALUE">0</stringProp>
  26519. <boolProp name="JSONVALIDATION">true</boolProp>
  26520. <boolProp name="EXPECT_NULL">false</boolProp>
  26521. <boolProp name="INVERT">true</boolProp>
  26522. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  26523. <hashTree/>
  26524. <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 search product id" enabled="true">
  26525. <stringProp name="VAR">search_product_id</stringProp>
  26526. <stringProp name="JSONPATH">$.items[0].id</stringProp>
  26527. <stringProp name="DEFAULT"/>
  26528. <stringProp name="VARIABLE"/>
  26529. <stringProp name="SUBJECT">BODY</stringProp>
  26530. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  26531. <hashTree/>
  26532. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert search product id is not null" enabled="true">
  26533. <collectionProp name="Asserion.test_strings">
  26534. <stringProp name="89649215">^\d+$</stringProp>
  26535. </collectionProp>
  26536. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26537. <boolProp name="Assertion.assume_success">false</boolProp>
  26538. <intProp name="Assertion.test_type">1</intProp>
  26539. <stringProp name="Assertion.scope">variable</stringProp>
  26540. <stringProp name="Scope.variable">search_product_id</stringProp>
  26541. </ResponseAssertion>
  26542. <hashTree/>
  26543. </hashTree>
  26544. </hashTree>
  26545. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Checkout" enabled="true">
  26546. <intProp name="ThroughputController.style">1</intProp>
  26547. <boolProp name="ThroughputController.perThread">false</boolProp>
  26548. <intProp name="ThroughputController.maxThroughput">1</intProp>
  26549. <stringProp name="ThroughputController.percentThroughput">100</stringProp>
  26550. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  26551. <hashTree>
  26552. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  26553. <stringProp name="script">
  26554. var tmpLabel = vars.get("testLabel")
  26555. if (tmpLabel) {
  26556. var testLabel = " (" + tmpLabel + ")"
  26557. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  26558. if (sampler.getName().indexOf(testLabel) == -1) {
  26559. sampler.setName(sampler.getName() + testLabel);
  26560. }
  26561. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  26562. sampler.setName("SetUp - " + sampler.getName());
  26563. }
  26564. } else {
  26565. testLabel = ""
  26566. }
  26567. </stringProp>
  26568. <stringProp name="scriptLanguage">javascript</stringProp>
  26569. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  26570. <hashTree/>
  26571. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  26572. <stringProp name="BeanShellSampler.query">
  26573. vars.put("testLabel", "API Checkout");
  26574. </stringProp>
  26575. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  26576. </BeanShellSampler>
  26577. <hashTree/>
  26578. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  26579. <stringProp name="scriptLanguage">javascript</stringProp>
  26580. <stringProp name="parameters"/>
  26581. <stringProp name="filename"/>
  26582. <stringProp name="cacheKey"/>
  26583. <stringProp name="script">
  26584. vars.put("alabama_region_id", props.get("alabama_region_id"));
  26585. vars.put("california_region_id", props.get("california_region_id"));
  26586. </stringProp>
  26587. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  26588. <hashTree/>
  26589. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  26590. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  26591. <stringProp name="BeanShellSampler.query">
  26592. import java.util.Random;
  26593. Random random = new Random();
  26594. if (${seedForRandom} &gt; 0) {
  26595. random.setSeed(${seedForRandom} + ${__threadNum});
  26596. }
  26597. vars.putObject("randomIntGenerator", random);
  26598. </stringProp>
  26599. <stringProp name="BeanShellSampler.filename"/>
  26600. <stringProp name="BeanShellSampler.parameters"/>
  26601. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  26602. </BeanShellSampler>
  26603. <hashTree/>
  26604. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  26605. <stringProp name="BeanShellSampler.query">
  26606. import java.util.Random;
  26607. Random random = vars.getObject("randomIntGenerator");
  26608. number = random.nextInt(props.get("simple_products_list").size());
  26609. product = props.get("simple_products_list").get(number);
  26610. vars.put("product_url_key", product.get("url_key"));
  26611. vars.put("product_id", product.get("id"));
  26612. vars.put("product_name", product.get("title"));
  26613. vars.put("product_uenc", product.get("uenc"));
  26614. vars.put("product_sku", product.get("sku"));
  26615. </stringProp>
  26616. <stringProp name="BeanShellSampler.filename"/>
  26617. <stringProp name="BeanShellSampler.parameters"/>
  26618. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  26619. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  26620. <hashTree/>
  26621. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create quote" enabled="true">
  26622. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  26623. <collectionProp name="Arguments.arguments"/>
  26624. </elementProp>
  26625. <stringProp name="HTTPSampler.domain"/>
  26626. <stringProp name="HTTPSampler.port"/>
  26627. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26628. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26629. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26630. <stringProp name="HTTPSampler.contentEncoding"/>
  26631. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts</stringProp>
  26632. <stringProp name="HTTPSampler.method">POST</stringProp>
  26633. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26634. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26635. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26636. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26637. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26638. <stringProp name="HTTPSampler.embedded_url_re"/>
  26639. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_quote.jmx</stringProp></HTTPSamplerProxy>
  26640. <hashTree>
  26641. <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">
  26642. <stringProp name="VAR">quote_id</stringProp>
  26643. <stringProp name="JSONPATH">$</stringProp>
  26644. <stringProp name="DEFAULT"/>
  26645. <stringProp name="VARIABLE"/>
  26646. <stringProp name="SUBJECT">BODY</stringProp>
  26647. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  26648. <hashTree/>
  26649. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  26650. <collectionProp name="Asserion.test_strings">
  26651. <stringProp name="89649215">^\d+$</stringProp>
  26652. </collectionProp>
  26653. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26654. <boolProp name="Assertion.assume_success">false</boolProp>
  26655. <intProp name="Assertion.test_type">1</intProp>
  26656. <stringProp name="Assertion.scope">variable</stringProp>
  26657. <stringProp name="Scope.variable">quote_id</stringProp>
  26658. </ResponseAssertion>
  26659. <hashTree/>
  26660. </hashTree>
  26661. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add product to quote" enabled="true">
  26662. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26663. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26664. <collectionProp name="Arguments.arguments">
  26665. <elementProp name="" elementType="HTTPArgument">
  26666. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26667. <stringProp name="Argument.value">{&#xD;
  26668. "cartItem": {&#xD;
  26669. "sku": "${product_sku}",&#xD;
  26670. "qty":"1",&#xD;
  26671. "quote_id":"${quote_id}"&#xD;
  26672. }&#xD;
  26673. }&#xD;
  26674. </stringProp>
  26675. <stringProp name="Argument.metadata">=</stringProp>
  26676. </elementProp>
  26677. </collectionProp>
  26678. </elementProp>
  26679. <stringProp name="HTTPSampler.domain"/>
  26680. <stringProp name="HTTPSampler.port"/>
  26681. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26682. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26683. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26684. <stringProp name="HTTPSampler.contentEncoding"/>
  26685. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/${quote_id}/items</stringProp>
  26686. <stringProp name="HTTPSampler.method">POST</stringProp>
  26687. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26688. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26689. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26690. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26691. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26692. <stringProp name="HTTPSampler.embedded_url_re"/>
  26693. <stringProp name="TestPlan.comments">tool/fragments/ce/api/add_product_to_quote_hardwired_sku.jmx</stringProp>
  26694. </HTTPSamplerProxy>
  26695. <hashTree>
  26696. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  26697. <stringProp name="JSON_PATH">$.sku</stringProp>
  26698. <stringProp name="EXPECTED_VALUE">${product_sku}</stringProp>
  26699. <boolProp name="JSONVALIDATION">true</boolProp>
  26700. <boolProp name="EXPECT_NULL">false</boolProp>
  26701. <boolProp name="INVERT">false</boolProp>
  26702. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  26703. <hashTree/>
  26704. </hashTree>
  26705. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check products in quote" enabled="true">
  26706. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  26707. <collectionProp name="Arguments.arguments"/>
  26708. </elementProp>
  26709. <stringProp name="HTTPSampler.domain"/>
  26710. <stringProp name="HTTPSampler.port"/>
  26711. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26712. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26713. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26714. <stringProp name="HTTPSampler.contentEncoding"/>
  26715. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/${quote_id}/items</stringProp>
  26716. <stringProp name="HTTPSampler.method">GET</stringProp>
  26717. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26718. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26719. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26720. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26721. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26722. <stringProp name="HTTPSampler.embedded_url_re"/>
  26723. <stringProp name="TestPlan.comments">tool/fragments/ce/api/check_product_in_quote_hardwired_sku.jmx</stringProp></HTTPSamplerProxy>
  26724. <hashTree>
  26725. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  26726. <stringProp name="JSON_PATH">$[0].sku</stringProp>
  26727. <stringProp name="EXPECTED_VALUE">${product_sku}</stringProp>
  26728. <boolProp name="JSONVALIDATION">true</boolProp>
  26729. <boolProp name="EXPECT_NULL">false</boolProp>
  26730. <boolProp name="INVERT">false</boolProp>
  26731. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  26732. <hashTree/>
  26733. </hashTree>
  26734. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guest Cart" enabled="true">
  26735. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26736. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26737. <collectionProp name="Arguments.arguments">
  26738. <elementProp name="" elementType="HTTPArgument">
  26739. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26740. <stringProp name="Argument.value"/>
  26741. <stringProp name="Argument.metadata">=</stringProp>
  26742. </elementProp>
  26743. </collectionProp>
  26744. </elementProp>
  26745. <stringProp name="HTTPSampler.domain"/>
  26746. <stringProp name="HTTPSampler.port"/>
  26747. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26748. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26749. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26750. <stringProp name="HTTPSampler.contentEncoding"/>
  26751. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/</stringProp>
  26752. <stringProp name="HTTPSampler.method">POST</stringProp>
  26753. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26754. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26755. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26756. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26757. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26758. <stringProp name="HTTPSampler.embedded_url_re"/>
  26759. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_guest_cart.jmx</stringProp></HTTPSamplerProxy>
  26760. <hashTree>
  26761. <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">
  26762. <stringProp name="VAR">cart_id</stringProp>
  26763. <stringProp name="JSONPATH">$</stringProp>
  26764. <stringProp name="DEFAULT"/>
  26765. <stringProp name="VARIABLE"/>
  26766. <stringProp name="SUBJECT">BODY</stringProp>
  26767. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  26768. <hashTree/>
  26769. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Guest Cart Id extracted" enabled="true">
  26770. <collectionProp name="Asserion.test_strings">
  26771. <stringProp name="2845929">^.+$</stringProp>
  26772. </collectionProp>
  26773. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26774. <boolProp name="Assertion.assume_success">false</boolProp>
  26775. <intProp name="Assertion.test_type">1</intProp>
  26776. <stringProp name="Assertion.scope">variable</stringProp>
  26777. <stringProp name="Scope.variable">cart_id</stringProp>
  26778. </ResponseAssertion>
  26779. <hashTree/>
  26780. </hashTree>
  26781. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add product to Guest Cart" enabled="true">
  26782. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26783. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26784. <collectionProp name="Arguments.arguments">
  26785. <elementProp name="" elementType="HTTPArgument">
  26786. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26787. <stringProp name="Argument.value">{&#xD;
  26788. "cartItem": {&#xD;
  26789. "sku": "${product_sku}",&#xD;
  26790. "qty":"1",&#xD;
  26791. "quote_id":"${cart_id}"&#xD;
  26792. }&#xD;
  26793. }&#xD;
  26794. </stringProp>
  26795. <stringProp name="Argument.metadata">=</stringProp>
  26796. </elementProp>
  26797. </collectionProp>
  26798. </elementProp>
  26799. <stringProp name="HTTPSampler.domain"/>
  26800. <stringProp name="HTTPSampler.port"/>
  26801. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26802. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26803. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26804. <stringProp name="HTTPSampler.contentEncoding"/>
  26805. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/items</stringProp>
  26806. <stringProp name="HTTPSampler.method">POST</stringProp>
  26807. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26808. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26809. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26810. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26811. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26812. <stringProp name="HTTPSampler.embedded_url_re"/>
  26813. <stringProp name="TestPlan.comments">tool/fragments/ce/api/add_product_to_guest_cart_hardwired_sku.jmx</stringProp></HTTPSamplerProxy>
  26814. <hashTree>
  26815. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  26816. <stringProp name="JSON_PATH">$.quote_id</stringProp>
  26817. <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
  26818. <boolProp name="JSONVALIDATION">true</boolProp>
  26819. <boolProp name="EXPECT_NULL">false</boolProp>
  26820. <boolProp name="INVERT">false</boolProp>
  26821. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  26822. <hashTree/>
  26823. </hashTree>
  26824. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Gift Message to Guest Cart" enabled="true">
  26825. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26826. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26827. <collectionProp name="Arguments.arguments">
  26828. <elementProp name="" elementType="HTTPArgument">
  26829. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26830. <stringProp name="Argument.value">{&#xD;
  26831. "sender": "John Doe",&#xD;
  26832. "recipient": "Jane Roe",&#xD;
  26833. "giftMessage": "Gift Message Text"&#xD;
  26834. }&#xD;
  26835. </stringProp>
  26836. <stringProp name="Argument.metadata">=</stringProp>
  26837. </elementProp>
  26838. </collectionProp>
  26839. </elementProp>
  26840. <stringProp name="HTTPSampler.domain"/>
  26841. <stringProp name="HTTPSampler.port"/>
  26842. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26843. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26844. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26845. <stringProp name="HTTPSampler.contentEncoding"/>
  26846. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/gift-message</stringProp>
  26847. <stringProp name="HTTPSampler.method">POST</stringProp>
  26848. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26849. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26850. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26851. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26852. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26853. <stringProp name="HTTPSampler.embedded_url_re"/>
  26854. <stringProp name="TestPlan.comments">tool/fragments/ce/api/add_gift_message_to_guest_cart.jmx</stringProp></HTTPSamplerProxy>
  26855. <hashTree>
  26856. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  26857. <stringProp name="JSON_PATH">$</stringProp>
  26858. <stringProp name="EXPECTED_VALUE">true</stringProp>
  26859. <boolProp name="JSONVALIDATION">true</boolProp>
  26860. <boolProp name="EXPECT_NULL">false</boolProp>
  26861. <boolProp name="INVERT">false</boolProp>
  26862. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  26863. <hashTree/>
  26864. </hashTree>
  26865. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  26866. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26867. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26868. <collectionProp name="Arguments.arguments">
  26869. <elementProp name="" elementType="HTTPArgument">
  26870. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26871. <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
  26872. <stringProp name="Argument.metadata">=</stringProp>
  26873. </elementProp>
  26874. </collectionProp>
  26875. </elementProp>
  26876. <stringProp name="HTTPSampler.domain"/>
  26877. <stringProp name="HTTPSampler.port"/>
  26878. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26879. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26880. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26881. <stringProp name="HTTPSampler.contentEncoding"/>
  26882. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</stringProp>
  26883. <stringProp name="HTTPSampler.method">POST</stringProp>
  26884. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26885. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26886. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26887. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26888. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26889. <stringProp name="HTTPSampler.embedded_url_re"/>
  26890. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp></HTTPSamplerProxy>
  26891. <hashTree>
  26892. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  26893. <collectionProp name="HeaderManager.headers">
  26894. <elementProp name="" elementType="Header">
  26895. <stringProp name="Header.name">Referer</stringProp>
  26896. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  26897. </elementProp>
  26898. <elementProp name="Content-Type" elementType="Header">
  26899. <stringProp name="Header.name">Content-Type</stringProp>
  26900. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  26901. </elementProp>
  26902. <elementProp name="X-Requested-With" elementType="Header">
  26903. <stringProp name="Header.name">X-Requested-With</stringProp>
  26904. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  26905. </elementProp>
  26906. <elementProp name="Accept" elementType="Header">
  26907. <stringProp name="Header.name">Accept</stringProp>
  26908. <stringProp name="Header.value">application/json</stringProp>
  26909. </elementProp>
  26910. </collectionProp>
  26911. </HeaderManager>
  26912. <hashTree/>
  26913. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  26914. <collectionProp name="Asserion.test_strings">
  26915. <stringProp name="-1224567411">"available":true</stringProp>
  26916. </collectionProp>
  26917. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26918. <boolProp name="Assertion.assume_success">false</boolProp>
  26919. <intProp name="Assertion.test_type">2</intProp>
  26920. </ResponseAssertion>
  26921. <hashTree/>
  26922. </hashTree>
  26923. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  26924. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26925. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26926. <collectionProp name="Arguments.arguments">
  26927. <elementProp name="" elementType="HTTPArgument">
  26928. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26929. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","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>
  26930. <stringProp name="Argument.metadata">=</stringProp>
  26931. </elementProp>
  26932. </collectionProp>
  26933. </elementProp>
  26934. <stringProp name="HTTPSampler.domain"/>
  26935. <stringProp name="HTTPSampler.port"/>
  26936. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26937. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26938. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26939. <stringProp name="HTTPSampler.contentEncoding"/>
  26940. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</stringProp>
  26941. <stringProp name="HTTPSampler.method">POST</stringProp>
  26942. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  26943. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  26944. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  26945. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  26946. <boolProp name="HTTPSampler.monitor">false</boolProp>
  26947. <stringProp name="HTTPSampler.embedded_url_re"/>
  26948. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
  26949. <hashTree>
  26950. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  26951. <collectionProp name="HeaderManager.headers">
  26952. <elementProp name="" elementType="Header">
  26953. <stringProp name="Header.name">Referer</stringProp>
  26954. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  26955. </elementProp>
  26956. <elementProp name="Content-Type" elementType="Header">
  26957. <stringProp name="Header.name">Content-Type</stringProp>
  26958. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  26959. </elementProp>
  26960. <elementProp name="X-Requested-With" elementType="Header">
  26961. <stringProp name="Header.name">X-Requested-With</stringProp>
  26962. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  26963. </elementProp>
  26964. <elementProp name="Accept" elementType="Header">
  26965. <stringProp name="Header.name">Accept</stringProp>
  26966. <stringProp name="Header.value">application/json</stringProp>
  26967. </elementProp>
  26968. </collectionProp>
  26969. </HeaderManager>
  26970. <hashTree/>
  26971. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  26972. <collectionProp name="Asserion.test_strings">
  26973. <stringProp name="-1494218646">{"payment_methods":</stringProp>
  26974. </collectionProp>
  26975. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  26976. <boolProp name="Assertion.assume_success">false</boolProp>
  26977. <intProp name="Assertion.test_type">2</intProp>
  26978. </ResponseAssertion>
  26979. <hashTree/>
  26980. </hashTree>
  26981. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  26982. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  26983. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  26984. <collectionProp name="Arguments.arguments">
  26985. <elementProp name="" elementType="HTTPArgument">
  26986. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  26987. <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname","save_in_address_book":0}}</stringProp>
  26988. <stringProp name="Argument.metadata">=</stringProp>
  26989. </elementProp>
  26990. </collectionProp>
  26991. </elementProp>
  26992. <stringProp name="HTTPSampler.domain"/>
  26993. <stringProp name="HTTPSampler.port"/>
  26994. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  26995. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  26996. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  26997. <stringProp name="HTTPSampler.contentEncoding"/>
  26998. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</stringProp>
  26999. <stringProp name="HTTPSampler.method">POST</stringProp>
  27000. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27001. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27002. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27003. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27004. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27005. <stringProp name="HTTPSampler.embedded_url_re"/>
  27006. <stringProp name="TestPlan.comments">tool/fragments/ce/api/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
  27007. <hashTree>
  27008. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  27009. <collectionProp name="Asserion.test_strings">
  27010. <stringProp name="-297987887">"[0-9]+"</stringProp>
  27011. </collectionProp>
  27012. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27013. <boolProp name="Assertion.assume_success">false</boolProp>
  27014. <intProp name="Assertion.test_type">2</intProp>
  27015. </ResponseAssertion>
  27016. <hashTree/>
  27017. <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">
  27018. <stringProp name="VAR">order_id</stringProp>
  27019. <stringProp name="JSONPATH">$</stringProp>
  27020. <stringProp name="DEFAULT"/>
  27021. <stringProp name="VARIABLE"/>
  27022. <stringProp name="SUBJECT">BODY</stringProp>
  27023. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  27024. <hashTree/>
  27025. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  27026. <collectionProp name="Asserion.test_strings">
  27027. <stringProp name="89649215">^\d+$</stringProp>
  27028. </collectionProp>
  27029. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27030. <boolProp name="Assertion.assume_success">false</boolProp>
  27031. <intProp name="Assertion.test_type">1</intProp>
  27032. <stringProp name="Assertion.scope">variable</stringProp>
  27033. <stringProp name="Scope.variable">order_id</stringProp>
  27034. </ResponseAssertion>
  27035. <hashTree/>
  27036. </hashTree>
  27037. </hashTree>
  27038. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Product Management" enabled="true">
  27039. <intProp name="ThroughputController.style">1</intProp>
  27040. <boolProp name="ThroughputController.perThread">false</boolProp>
  27041. <intProp name="ThroughputController.maxThroughput">1</intProp>
  27042. <stringProp name="ThroughputController.percentThroughput">100</stringProp>
  27043. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  27044. <hashTree>
  27045. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  27046. <stringProp name="script">
  27047. var tmpLabel = vars.get("testLabel")
  27048. if (tmpLabel) {
  27049. var testLabel = " (" + tmpLabel + ")"
  27050. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  27051. if (sampler.getName().indexOf(testLabel) == -1) {
  27052. sampler.setName(sampler.getName() + testLabel);
  27053. }
  27054. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  27055. sampler.setName("SetUp - " + sampler.getName());
  27056. }
  27057. } else {
  27058. testLabel = ""
  27059. }
  27060. </stringProp>
  27061. <stringProp name="scriptLanguage">javascript</stringProp>
  27062. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  27063. <hashTree/>
  27064. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  27065. <stringProp name="BeanShellSampler.query">
  27066. vars.put("testLabel", "API Product Management");
  27067. </stringProp>
  27068. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27069. </BeanShellSampler>
  27070. <hashTree/>
  27071. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create product" enabled="true">
  27072. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27073. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27074. <collectionProp name="Arguments.arguments">
  27075. <elementProp name="" elementType="HTTPArgument">
  27076. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  27077. <stringProp name="Argument.value">{&#xD;
  27078. "product": {&#xD;
  27079. "sku": "psku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  27080. "name": "Product_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  27081. "attributeSetId": 4&#xD;
  27082. }&#xD;
  27083. }</stringProp>
  27084. <stringProp name="Argument.metadata">=</stringProp>
  27085. </elementProp>
  27086. </collectionProp>
  27087. </elementProp>
  27088. <stringProp name="HTTPSampler.domain"/>
  27089. <stringProp name="HTTPSampler.port"/>
  27090. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27091. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27092. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27093. <stringProp name="HTTPSampler.contentEncoding"/>
  27094. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  27095. <stringProp name="HTTPSampler.method">POST</stringProp>
  27096. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27097. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27098. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27099. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27100. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27101. <stringProp name="HTTPSampler.embedded_url_re"/>
  27102. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_product_no_custom_attributes.jmx</stringProp></HTTPSamplerProxy>
  27103. <hashTree>
  27104. <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 product id" enabled="true">
  27105. <stringProp name="VAR">simple_product_id</stringProp>
  27106. <stringProp name="JSONPATH">$.id</stringProp>
  27107. <stringProp name="DEFAULT"/>
  27108. <stringProp name="VARIABLE"/>
  27109. <stringProp name="SUBJECT">BODY</stringProp>
  27110. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  27111. <hashTree/>
  27112. <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 product sku" enabled="true">
  27113. <stringProp name="VAR">simple_product_sku</stringProp>
  27114. <stringProp name="JSONPATH">$.sku</stringProp>
  27115. <stringProp name="DEFAULT"/>
  27116. <stringProp name="VARIABLE"/>
  27117. <stringProp name="SUBJECT">BODY</stringProp>
  27118. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  27119. <hashTree/>
  27120. <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 stock item id" enabled="true">
  27121. <stringProp name="VAR">simple_stock_item_id</stringProp>
  27122. <stringProp name="JSONPATH">$.extension_attributes.stock_item.item_id</stringProp>
  27123. <stringProp name="DEFAULT"/>
  27124. <stringProp name="VARIABLE"/>
  27125. <stringProp name="SUBJECT">BODY</stringProp>
  27126. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  27127. <hashTree/>
  27128. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product id not null" enabled="true">
  27129. <collectionProp name="Asserion.test_strings">
  27130. <stringProp name="89649215">^\d+$</stringProp>
  27131. </collectionProp>
  27132. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27133. <boolProp name="Assertion.assume_success">false</boolProp>
  27134. <intProp name="Assertion.test_type">1</intProp>
  27135. <stringProp name="Assertion.scope">variable</stringProp>
  27136. <stringProp name="Scope.variable">simple_product_id</stringProp>
  27137. </ResponseAssertion>
  27138. <hashTree/>
  27139. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product sku not null" enabled="true">
  27140. <collectionProp name="Asserion.test_strings">
  27141. <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
  27142. </collectionProp>
  27143. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27144. <boolProp name="Assertion.assume_success">false</boolProp>
  27145. <intProp name="Assertion.test_type">1</intProp>
  27146. <stringProp name="Assertion.scope">variable</stringProp>
  27147. <stringProp name="Scope.variable">simple_product_sku</stringProp>
  27148. </ResponseAssertion>
  27149. <hashTree/>
  27150. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert stock item id not null" enabled="true">
  27151. <collectionProp name="Asserion.test_strings">
  27152. <stringProp name="89649215">^\d+$</stringProp>
  27153. </collectionProp>
  27154. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27155. <boolProp name="Assertion.assume_success">false</boolProp>
  27156. <intProp name="Assertion.test_type">1</intProp>
  27157. <stringProp name="Assertion.scope">variable</stringProp>
  27158. <stringProp name="Scope.variable">simple_stock_item_id</stringProp>
  27159. </ResponseAssertion>
  27160. <hashTree/>
  27161. </hashTree>
  27162. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update product stock info" enabled="true">
  27163. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27164. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27165. <collectionProp name="Arguments.arguments">
  27166. <elementProp name="" elementType="HTTPArgument">
  27167. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  27168. <stringProp name="Argument.value">{&#xD;
  27169. "stock_item": { &#xD;
  27170. "manage_stock": 1, &#xD;
  27171. "is_in_stock": 1,&#xD;
  27172. "qty": ${simple_product_id}&#xD;
  27173. }&#xD;
  27174. }</stringProp>
  27175. <stringProp name="Argument.metadata">=</stringProp>
  27176. </elementProp>
  27177. </collectionProp>
  27178. </elementProp>
  27179. <stringProp name="HTTPSampler.domain"/>
  27180. <stringProp name="HTTPSampler.port"/>
  27181. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27182. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27183. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27184. <stringProp name="HTTPSampler.contentEncoding"/>
  27185. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}/stockItems/${simple_stock_item_id}</stringProp>
  27186. <stringProp name="HTTPSampler.method">PUT</stringProp>
  27187. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27188. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27189. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27190. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27191. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27192. <stringProp name="HTTPSampler.embedded_url_re"/>
  27193. <stringProp name="TestPlan.comments">tool/fragments/ce/api/update_product_stock_info.jmx</stringProp></HTTPSamplerProxy>
  27194. <hashTree>
  27195. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  27196. <stringProp name="JSON_PATH">$</stringProp>
  27197. <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
  27198. <boolProp name="JSONVALIDATION">true</boolProp>
  27199. <boolProp name="EXPECT_NULL">false</boolProp>
  27200. <boolProp name="INVERT">false</boolProp>
  27201. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27202. <hashTree/>
  27203. </hashTree>
  27204. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check product" enabled="true">
  27205. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27206. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27207. <collectionProp name="Arguments.arguments">
  27208. <elementProp name="" elementType="HTTPArgument">
  27209. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  27210. <stringProp name="Argument.value"/>
  27211. <stringProp name="Argument.metadata">=</stringProp>
  27212. </elementProp>
  27213. </collectionProp>
  27214. </elementProp>
  27215. <stringProp name="HTTPSampler.domain"/>
  27216. <stringProp name="HTTPSampler.port"/>
  27217. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27218. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27219. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27220. <stringProp name="HTTPSampler.contentEncoding"/>
  27221. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}</stringProp>
  27222. <stringProp name="HTTPSampler.method">GET</stringProp>
  27223. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27224. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27225. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27226. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27227. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27228. <stringProp name="HTTPSampler.embedded_url_re"/>
  27229. <stringProp name="TestPlan.comments">tool/fragments/ce/api/check_product.jmx</stringProp></HTTPSamplerProxy>
  27230. <hashTree>
  27231. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product sku" enabled="true">
  27232. <stringProp name="JSON_PATH">$.sku</stringProp>
  27233. <stringProp name="EXPECTED_VALUE">${simple_product_sku}</stringProp>
  27234. <boolProp name="JSONVALIDATION">true</boolProp>
  27235. <boolProp name="EXPECT_NULL">false</boolProp>
  27236. <boolProp name="INVERT">false</boolProp>
  27237. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27238. <hashTree/>
  27239. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product id" enabled="true">
  27240. <stringProp name="JSON_PATH">$.id</stringProp>
  27241. <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
  27242. <boolProp name="JSONVALIDATION">true</boolProp>
  27243. <boolProp name="EXPECT_NULL">false</boolProp>
  27244. <boolProp name="INVERT">false</boolProp>
  27245. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27246. <hashTree/>
  27247. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert stock item id" enabled="true">
  27248. <stringProp name="JSON_PATH">$.extension_attributes.stock_item.item_id</stringProp>
  27249. <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
  27250. <boolProp name="JSONVALIDATION">true</boolProp>
  27251. <boolProp name="EXPECT_NULL">false</boolProp>
  27252. <boolProp name="INVERT">false</boolProp>
  27253. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27254. <hashTree/>
  27255. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert updated quantity" enabled="true">
  27256. <stringProp name="JSON_PATH">$.extension_attributes.stock_item.qty</stringProp>
  27257. <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
  27258. <boolProp name="JSONVALIDATION">true</boolProp>
  27259. <boolProp name="EXPECT_NULL">false</boolProp>
  27260. <boolProp name="INVERT">false</boolProp>
  27261. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27262. <hashTree/>
  27263. </hashTree>
  27264. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create product with extensible data objects" enabled="true">
  27265. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27266. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27267. <collectionProp name="Arguments.arguments">
  27268. <elementProp name="" elementType="HTTPArgument">
  27269. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  27270. <stringProp name="Argument.value">{&#xD;
  27271. "product": {&#xD;
  27272. "sku": "apsku-test-${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  27273. "name": "Extensible_Product_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  27274. "visibility": "4",&#xD;
  27275. "type_id": "simple",&#xD;
  27276. "price": "3.62",&#xD;
  27277. "status": "1",&#xD;
  27278. "attribute_set_id": "4",&#xD;
  27279. "custom_attributes": [&#xD;
  27280. {&#xD;
  27281. "attribute_code": "cost",&#xD;
  27282. "value": ""&#xD;
  27283. },&#xD;
  27284. {&#xD;
  27285. "attribute_code": "description",&#xD;
  27286. "value": "Description"&#xD;
  27287. }&#xD;
  27288. ],&#xD;
  27289. "extension_attributes":{&#xD;
  27290. "stock_item":{&#xD;
  27291. "manage_stock": 1, &#xD;
  27292. "is_in_stock": 1,&#xD;
  27293. "qty":"100"&#xD;
  27294. }&#xD;
  27295. } ,&#xD;
  27296. "media_gallery_entries":&#xD;
  27297. [{&#xD;
  27298. "id": null,&#xD;
  27299. "label":"test_label_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  27300. "position":1,&#xD;
  27301. "disabled":0,&#xD;
  27302. "media_type":"image",&#xD;
  27303. "types":["image"],&#xD;
  27304. "content":{&#xD;
  27305. "base64_encoded_data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABgAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iioLy8t9Ps5bu7lWKCIZd26KKaTbshpX0RPRXN/8J/4V/6DVv8Ak3+FH/Cf+Ff+g1b/AJN/hXR9SxP/AD7l9zNPYVf5X9x0lFc3/wAJ/wCFf+g1b/k3+FH/AAn/AIV/6DVv+Tf4UfUsT/z7l9zD2FX+V/cdJRXN/wDCf+Ff+g1b/k3+FH/Cf+Ff+g1b/k3+FH1LE/8APuX3MPYVf5X9x0lFc3/wn/hX/oNW/wCTf4Uf8J/4V/6DVv8Ak3+FH1LE/wDPuX3MPYVf5X9x0lFVdP1G01WyS8sZ1nt3JCyL0ODg/qKtVzyi4u0lZmbTTswrm/H3/Iiav/1x/wDZhXSVzfj7/kRNX/64/wDswrowf+80/wDEvzNKH8WPqj5voorB1zS7OLT7m7SHE5YNu3HqWGeM471+kYutOhSdSEU7Jt3dtF20f6H1FacqcHJK9vO36M3qKzTa6foqPdxwlWxswrFi2T0AJ9aRdVmjkT7XYSW8TsFEm8MAT0yB0qfrcafu1tJeV2l2u7K3zsL2yjpPR+V3+NjTorPn1GVbt7a1s2uJIwDJ84ULnpyaik1SWTTrp47Z0uIQRJGzAFOPvZ70Sx1GLau9L9H03SdrNrsgdeCuu3k+hq0VR0ma4msImuIih2LtYvuLjA+b2zV6uijUVWmprqaQkpxUl1PoP4Xf8iBYf78v/oxq7GuO+F3/ACIFh/vy/wDoxq7GvzTMf98q/wCJ/mfLYn+NP1YVzfj7/kRNX/64/wDswrpK5vx9/wAiJq//AFx/9mFRg/8Aeaf+JfmTQ/ix9UfN9ZniD/kB3H/Af/QhWnTZI45kKSIroeqsMg1+l4mk61GdNfaTX3o+pqw54Sj3Rma/GXsI3BcLFMruU+8F5yR+dUZ4tOeNFOq3tx5jACNZg5J+mK6PrUMdrbxPvjgiR/7yoAa48TgPa1HNW1STvfp2s1+JjVw/PJy017mbe/YTqTB7iWzuQgPmhtocfjwajiupbjTtTieUXCxRsqTKMb8qePwrYlghnAE0UcgHQOoP86ckaRoERFVR/CowKbwU3UclJJO+19brqr203vvoHsJczd7J3/H8PmVNJnhm063WOVHZIkDhTkqcd/yNXajighg3eTFHHu67FAz+VSV2UIShTjGe67G9NOMUpbn0H8Lv+RAsP9+X/wBGNXY1x3wu/wCRAsP9+X/0Y1djX5tmP++Vf8T/ADPl8T/Gn6sK5vx9/wAiJq//AFx/9mFdJXN+Pv8AkRNX/wCuP/swqMH/ALzT/wAS/Mmh/Fj6o+b6KKK/Uj60KKKKACiiigAooooA+g/hd/yIFh/vy/8Aoxq7GuO+F3/IgWH+/L/6Mauxr8wzH/fKv+J/mfKYn+NP1YVzfj7/AJETV/8Arj/7MK6Sub8ff8iJq/8A1x/9mFRg/wDeaf8AiX5k0P4sfVHzfRRRX6kfWhRRRQAUUUUAFFFFAH0H8Lv+RAsP9+X/ANGNXY1x3wu/5ECw/wB+X/0Y1djX5hmP++Vf8T/M+UxP8afqwqC8s7fULOW0u4llglGHRujCp6K5E2ndGKdtUc3/AMIB4V/6Atv+bf40f8IB4V/6Atv+bf410lFdH13E/wDPyX3s09vV/mf3nN/8IB4V/wCgLb/m3+NH/CAeFf8AoC2/5t/jXSUUfXcT/wA/Jfew9vV/mf3nN/8ACAeFf+gLb/m3+NH/AAgHhX/oC2/5t/jXSUUfXcT/AM/Jfew9vV/mf3nN/wDCAeFf+gLb/m3+NH/CAeFf+gLb/m3+NdJRR9dxP/PyX3sPb1f5n95V0/TrTSrJLOxgWC3QkrGvQZOT+pq1RRXPKTk7yd2Zttu7P//Z",&#xD;
  27306. "type": "image/jpeg",&#xD;
  27307. "name": "test_image_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}.jpeg"&#xD;
  27308. }&#xD;
  27309. }&#xD;
  27310. ]&#xD;
  27311. }&#xD;
  27312. }</stringProp>
  27313. <stringProp name="Argument.metadata">=</stringProp>
  27314. </elementProp>
  27315. </collectionProp>
  27316. </elementProp>
  27317. <stringProp name="HTTPSampler.domain"/>
  27318. <stringProp name="HTTPSampler.port"/>
  27319. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27320. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27321. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27322. <stringProp name="HTTPSampler.contentEncoding"/>
  27323. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  27324. <stringProp name="HTTPSampler.method">POST</stringProp>
  27325. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27326. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27327. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27328. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27329. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27330. <stringProp name="HTTPSampler.embedded_url_re"/>
  27331. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_product_with_extensible_data_objects.jmx</stringProp></HTTPSamplerProxy>
  27332. <hashTree>
  27333. <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 product id" enabled="true">
  27334. <stringProp name="VAR">simple_product_id</stringProp>
  27335. <stringProp name="JSONPATH">$.id</stringProp>
  27336. <stringProp name="DEFAULT"/>
  27337. <stringProp name="VARIABLE"/>
  27338. <stringProp name="SUBJECT">BODY</stringProp>
  27339. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  27340. <hashTree/>
  27341. <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 product sku" enabled="true">
  27342. <stringProp name="VAR">simple_product_sku</stringProp>
  27343. <stringProp name="JSONPATH">$.sku</stringProp>
  27344. <stringProp name="DEFAULT"/>
  27345. <stringProp name="VARIABLE"/>
  27346. <stringProp name="SUBJECT">BODY</stringProp>
  27347. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  27348. <hashTree/>
  27349. <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 stock item id" enabled="true">
  27350. <stringProp name="VAR">simple_stock_item_id</stringProp>
  27351. <stringProp name="JSONPATH">$.extension_attributes.stock_item.item_id</stringProp>
  27352. <stringProp name="DEFAULT"/>
  27353. <stringProp name="VARIABLE"/>
  27354. <stringProp name="SUBJECT">BODY</stringProp>
  27355. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  27356. <hashTree/>
  27357. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product id not null" enabled="true">
  27358. <collectionProp name="Asserion.test_strings">
  27359. <stringProp name="89649215">^\d+$</stringProp>
  27360. </collectionProp>
  27361. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27362. <boolProp name="Assertion.assume_success">false</boolProp>
  27363. <intProp name="Assertion.test_type">1</intProp>
  27364. <stringProp name="Assertion.scope">variable</stringProp>
  27365. <stringProp name="Scope.variable">simple_product_id</stringProp>
  27366. </ResponseAssertion>
  27367. <hashTree/>
  27368. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert product sku not null" enabled="true">
  27369. <collectionProp name="Asserion.test_strings">
  27370. <stringProp name="484395188">^[a-z0-9-]+$</stringProp>
  27371. </collectionProp>
  27372. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27373. <boolProp name="Assertion.assume_success">false</boolProp>
  27374. <intProp name="Assertion.test_type">1</intProp>
  27375. <stringProp name="Assertion.scope">variable</stringProp>
  27376. <stringProp name="Scope.variable">simple_product_sku</stringProp>
  27377. </ResponseAssertion>
  27378. <hashTree/>
  27379. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert stock item id not null" enabled="true">
  27380. <collectionProp name="Asserion.test_strings">
  27381. <stringProp name="89649215">^\d+$</stringProp>
  27382. </collectionProp>
  27383. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27384. <boolProp name="Assertion.assume_success">false</boolProp>
  27385. <intProp name="Assertion.test_type">1</intProp>
  27386. <stringProp name="Assertion.scope">variable</stringProp>
  27387. <stringProp name="Scope.variable">simple_stock_item_id</stringProp>
  27388. </ResponseAssertion>
  27389. <hashTree/>
  27390. </hashTree>
  27391. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check product with extensible data objects" enabled="true">
  27392. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27393. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27394. <collectionProp name="Arguments.arguments">
  27395. <elementProp name="" elementType="HTTPArgument">
  27396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  27397. <stringProp name="Argument.value"/>
  27398. <stringProp name="Argument.metadata">=</stringProp>
  27399. </elementProp>
  27400. </collectionProp>
  27401. </elementProp>
  27402. <stringProp name="HTTPSampler.domain"/>
  27403. <stringProp name="HTTPSampler.port"/>
  27404. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27405. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27406. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27407. <stringProp name="HTTPSampler.contentEncoding"/>
  27408. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/${simple_product_sku}</stringProp>
  27409. <stringProp name="HTTPSampler.method">GET</stringProp>
  27410. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27411. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27412. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27413. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27414. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27415. <stringProp name="HTTPSampler.embedded_url_re"/>
  27416. <stringProp name="TestPlan.comments">tool/fragments/ce/api/check_product_with_extensible_data_objects.jmx</stringProp></HTTPSamplerProxy>
  27417. <hashTree>
  27418. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product sku" enabled="true">
  27419. <stringProp name="JSON_PATH">$.sku</stringProp>
  27420. <stringProp name="EXPECTED_VALUE">${simple_product_sku}</stringProp>
  27421. <boolProp name="JSONVALIDATION">true</boolProp>
  27422. <boolProp name="EXPECT_NULL">false</boolProp>
  27423. <boolProp name="INVERT">false</boolProp>
  27424. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27425. <hashTree/>
  27426. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product id" enabled="true">
  27427. <stringProp name="JSON_PATH">$.id</stringProp>
  27428. <stringProp name="EXPECTED_VALUE">${simple_product_id}</stringProp>
  27429. <boolProp name="JSONVALIDATION">true</boolProp>
  27430. <boolProp name="EXPECT_NULL">false</boolProp>
  27431. <boolProp name="INVERT">false</boolProp>
  27432. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27433. <hashTree/>
  27434. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert stock item id" enabled="true">
  27435. <stringProp name="JSON_PATH">$.extension_attributes.stock_item.item_id</stringProp>
  27436. <stringProp name="EXPECTED_VALUE">${simple_stock_item_id}</stringProp>
  27437. <boolProp name="JSONVALIDATION">true</boolProp>
  27438. <boolProp name="EXPECT_NULL">false</boolProp>
  27439. <boolProp name="INVERT">false</boolProp>
  27440. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27441. <hashTree/>
  27442. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert updated quantity" enabled="true">
  27443. <stringProp name="JSON_PATH">$.extension_attributes.stock_item.qty</stringProp>
  27444. <stringProp name="EXPECTED_VALUE">100</stringProp>
  27445. <boolProp name="JSONVALIDATION">true</boolProp>
  27446. <boolProp name="EXPECT_NULL">false</boolProp>
  27447. <boolProp name="INVERT">false</boolProp>
  27448. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  27449. <hashTree/>
  27450. </hashTree>
  27451. </hashTree>
  27452. </hashTree>
  27453. </hashTree>
  27454. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="GraphQL Pool" enabled="true">
  27455. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  27456. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  27457. <boolProp name="LoopController.continue_forever">false</boolProp>
  27458. <stringProp name="LoopController.loops">${loops}</stringProp>
  27459. </elementProp>
  27460. <stringProp name="ThreadGroup.num_threads">${graphQLPoolUsers}</stringProp>
  27461. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  27462. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  27463. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  27464. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  27465. <stringProp name="ThreadGroup.duration"/>
  27466. <stringProp name="ThreadGroup.delay"/>
  27467. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  27468. <hashTree>
  27469. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get List of Products by category_id" enabled="true">
  27470. <intProp name="ThroughputController.style">1</intProp>
  27471. <boolProp name="ThroughputController.perThread">false</boolProp>
  27472. <intProp name="ThroughputController.maxThroughput">1</intProp>
  27473. <stringProp name="ThroughputController.percentThroughput">${graphqlGetListOfProductsByCategoryIdPercentage}</stringProp>
  27474. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  27475. <hashTree>
  27476. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  27477. <stringProp name="script">
  27478. var tmpLabel = vars.get("testLabel")
  27479. if (tmpLabel) {
  27480. var testLabel = " (" + tmpLabel + ")"
  27481. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  27482. if (sampler.getName().indexOf(testLabel) == -1) {
  27483. sampler.setName(sampler.getName() + testLabel);
  27484. }
  27485. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  27486. sampler.setName("SetUp - " + sampler.getName());
  27487. }
  27488. } else {
  27489. testLabel = ""
  27490. }
  27491. </stringProp>
  27492. <stringProp name="scriptLanguage">javascript</stringProp>
  27493. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  27494. <hashTree/>
  27495. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  27496. <stringProp name="BeanShellSampler.query">
  27497. vars.put("testLabel", "GraphQL Get List of Products by category_id");
  27498. </stringProp>
  27499. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27500. </BeanShellSampler>
  27501. <hashTree/>
  27502. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  27503. <collectionProp name="HeaderManager.headers">
  27504. <elementProp name="" elementType="Header">
  27505. <stringProp name="Header.name">Content-Type</stringProp>
  27506. <stringProp name="Header.value">application/json</stringProp>
  27507. </elementProp>
  27508. <elementProp name="" elementType="Header">
  27509. <stringProp name="Header.name">Accept</stringProp>
  27510. <stringProp name="Header.value">*/*</stringProp>
  27511. </elementProp>
  27512. </collectionProp>
  27513. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  27514. <hashTree/>
  27515. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  27516. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  27517. <stringProp name="BeanShellSampler.query">
  27518. import java.util.Random;
  27519. Random random = new Random();
  27520. if (${seedForRandom} &gt; 0) {
  27521. random.setSeed(${seedForRandom} + ${__threadNum});
  27522. }
  27523. vars.putObject("randomIntGenerator", random);
  27524. </stringProp>
  27525. <stringProp name="BeanShellSampler.filename"/>
  27526. <stringProp name="BeanShellSampler.parameters"/>
  27527. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27528. </BeanShellSampler>
  27529. <hashTree/>
  27530. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  27531. <stringProp name="scriptLanguage">javascript</stringProp>
  27532. <stringProp name="parameters"/>
  27533. <stringProp name="filename"/>
  27534. <stringProp name="cacheKey"/>
  27535. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  27536. var categories = props.get("categories");
  27537. number = random.nextInt(categories.length);
  27538. vars.put("category_url_key", categories[number].url_key);
  27539. vars.put("category_name", categories[number].name);
  27540. vars.put("category_id", categories[number].id);
  27541. vars.putObject("category", categories[number]);
  27542. </stringProp>
  27543. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  27544. <hashTree/>
  27545. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  27546. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27547. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27548. <collectionProp name="Arguments.arguments">
  27549. <elementProp name="" elementType="HTTPArgument">
  27550. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  27551. <stringProp name="Argument.value">{"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"}</stringProp>
  27552. <stringProp name="Argument.metadata">=</stringProp>
  27553. </elementProp>
  27554. </collectionProp>
  27555. </elementProp>
  27556. <stringProp name="HTTPSampler.domain"/>
  27557. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  27558. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27559. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27560. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27561. <stringProp name="HTTPSampler.contentEncoding"/>
  27562. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  27563. <stringProp name="HTTPSampler.method">POST</stringProp>
  27564. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27565. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27566. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27567. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27568. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27569. <stringProp name="HTTPSampler.embedded_url_re"/>
  27570. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx</stringProp>
  27571. </HTTPSamplerProxy>
  27572. <hashTree>
  27573. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  27574. <collectionProp name="Asserion.test_strings">
  27575. <stringProp name="1201352014">"name":"${category_name}","id":${category_id},</stringProp>
  27576. </collectionProp>
  27577. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27578. <boolProp name="Assertion.assume_success">false</boolProp>
  27579. <intProp name="Assertion.test_type">2</intProp>
  27580. </ResponseAssertion>
  27581. <hashTree/>
  27582. </hashTree>
  27583. </hashTree>
  27584. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Simple Product Details by product_url_key" enabled="true">
  27585. <intProp name="ThroughputController.style">1</intProp>
  27586. <boolProp name="ThroughputController.perThread">false</boolProp>
  27587. <intProp name="ThroughputController.maxThroughput">1</intProp>
  27588. <stringProp name="ThroughputController.percentThroughput">${graphqlGetSimpleProductDetailsByProductUrlKeyPercentage}</stringProp>
  27589. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  27590. <hashTree>
  27591. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  27592. <stringProp name="script">
  27593. var tmpLabel = vars.get("testLabel")
  27594. if (tmpLabel) {
  27595. var testLabel = " (" + tmpLabel + ")"
  27596. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  27597. if (sampler.getName().indexOf(testLabel) == -1) {
  27598. sampler.setName(sampler.getName() + testLabel);
  27599. }
  27600. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  27601. sampler.setName("SetUp - " + sampler.getName());
  27602. }
  27603. } else {
  27604. testLabel = ""
  27605. }
  27606. </stringProp>
  27607. <stringProp name="scriptLanguage">javascript</stringProp>
  27608. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  27609. <hashTree/>
  27610. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  27611. <stringProp name="BeanShellSampler.query">
  27612. vars.put("testLabel", "GraphQL Get Simple Product Details by product_url_key");
  27613. </stringProp>
  27614. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27615. </BeanShellSampler>
  27616. <hashTree/>
  27617. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  27618. <collectionProp name="HeaderManager.headers">
  27619. <elementProp name="" elementType="Header">
  27620. <stringProp name="Header.name">Content-Type</stringProp>
  27621. <stringProp name="Header.value">application/json</stringProp>
  27622. </elementProp>
  27623. <elementProp name="" elementType="Header">
  27624. <stringProp name="Header.name">Accept</stringProp>
  27625. <stringProp name="Header.value">*/*</stringProp>
  27626. </elementProp>
  27627. </collectionProp>
  27628. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  27629. <hashTree/>
  27630. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  27631. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  27632. <stringProp name="BeanShellSampler.query">
  27633. import java.util.Random;
  27634. Random random = new Random();
  27635. if (${seedForRandom} &gt; 0) {
  27636. random.setSeed(${seedForRandom} + ${__threadNum});
  27637. }
  27638. vars.putObject("randomIntGenerator", random);
  27639. </stringProp>
  27640. <stringProp name="BeanShellSampler.filename"/>
  27641. <stringProp name="BeanShellSampler.parameters"/>
  27642. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27643. </BeanShellSampler>
  27644. <hashTree/>
  27645. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  27646. <stringProp name="BeanShellSampler.query">
  27647. import java.util.Random;
  27648. Random random = vars.getObject("randomIntGenerator");
  27649. number = random.nextInt(props.get("simple_products_list").size());
  27650. product = props.get("simple_products_list").get(number);
  27651. vars.put("product_url_key", product.get("url_key"));
  27652. vars.put("product_id", product.get("id"));
  27653. vars.put("product_name", product.get("title"));
  27654. vars.put("product_uenc", product.get("uenc"));
  27655. vars.put("product_sku", product.get("sku"));
  27656. </stringProp>
  27657. <stringProp name="BeanShellSampler.filename"/>
  27658. <stringProp name="BeanShellSampler.parameters"/>
  27659. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27660. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  27661. <hashTree/>
  27662. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Simple Product Details by product_url_key" enabled="true">
  27663. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27664. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27665. <collectionProp name="Arguments.arguments">
  27666. <elementProp name="" elementType="HTTPArgument">
  27667. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  27668. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  27669. <stringProp name="Argument.metadata">=</stringProp>
  27670. </elementProp>
  27671. </collectionProp>
  27672. </elementProp>
  27673. <stringProp name="HTTPSampler.domain"/>
  27674. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  27675. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27676. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27677. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27678. <stringProp name="HTTPSampler.contentEncoding"/>
  27679. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  27680. <stringProp name="HTTPSampler.method">POST</stringProp>
  27681. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27682. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27683. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27684. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27685. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27686. <stringProp name="HTTPSampler.embedded_url_re"/>
  27687. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  27688. </HTTPSamplerProxy>
  27689. <hashTree>
  27690. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  27691. <collectionProp name="Asserion.test_strings">
  27692. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  27693. </collectionProp>
  27694. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27695. <boolProp name="Assertion.assume_success">false</boolProp>
  27696. <intProp name="Assertion.test_type">2</intProp>
  27697. </ResponseAssertion>
  27698. <hashTree/>
  27699. </hashTree>
  27700. </hashTree>
  27701. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Simple Product Details by name" enabled="true">
  27702. <intProp name="ThroughputController.style">1</intProp>
  27703. <boolProp name="ThroughputController.perThread">false</boolProp>
  27704. <intProp name="ThroughputController.maxThroughput">1</intProp>
  27705. <stringProp name="ThroughputController.percentThroughput">${graphqlGetSimpleProductDetailsByNamePercentage}</stringProp>
  27706. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  27707. <hashTree>
  27708. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  27709. <stringProp name="script">
  27710. var tmpLabel = vars.get("testLabel")
  27711. if (tmpLabel) {
  27712. var testLabel = " (" + tmpLabel + ")"
  27713. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  27714. if (sampler.getName().indexOf(testLabel) == -1) {
  27715. sampler.setName(sampler.getName() + testLabel);
  27716. }
  27717. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  27718. sampler.setName("SetUp - " + sampler.getName());
  27719. }
  27720. } else {
  27721. testLabel = ""
  27722. }
  27723. </stringProp>
  27724. <stringProp name="scriptLanguage">javascript</stringProp>
  27725. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  27726. <hashTree/>
  27727. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  27728. <stringProp name="BeanShellSampler.query">
  27729. vars.put("testLabel", "GraphQL Get Simple Product Details by name");
  27730. </stringProp>
  27731. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27732. </BeanShellSampler>
  27733. <hashTree/>
  27734. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  27735. <collectionProp name="HeaderManager.headers">
  27736. <elementProp name="" elementType="Header">
  27737. <stringProp name="Header.name">Content-Type</stringProp>
  27738. <stringProp name="Header.value">application/json</stringProp>
  27739. </elementProp>
  27740. <elementProp name="" elementType="Header">
  27741. <stringProp name="Header.name">Accept</stringProp>
  27742. <stringProp name="Header.value">*/*</stringProp>
  27743. </elementProp>
  27744. </collectionProp>
  27745. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  27746. <hashTree/>
  27747. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  27748. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  27749. <stringProp name="BeanShellSampler.query">
  27750. import java.util.Random;
  27751. Random random = new Random();
  27752. if (${seedForRandom} &gt; 0) {
  27753. random.setSeed(${seedForRandom} + ${__threadNum});
  27754. }
  27755. vars.putObject("randomIntGenerator", random);
  27756. </stringProp>
  27757. <stringProp name="BeanShellSampler.filename"/>
  27758. <stringProp name="BeanShellSampler.parameters"/>
  27759. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27760. </BeanShellSampler>
  27761. <hashTree/>
  27762. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  27763. <stringProp name="BeanShellSampler.query">
  27764. import java.util.Random;
  27765. Random random = vars.getObject("randomIntGenerator");
  27766. number = random.nextInt(props.get("simple_products_list").size());
  27767. product = props.get("simple_products_list").get(number);
  27768. vars.put("product_url_key", product.get("url_key"));
  27769. vars.put("product_id", product.get("id"));
  27770. vars.put("product_name", product.get("title"));
  27771. vars.put("product_uenc", product.get("uenc"));
  27772. vars.put("product_sku", product.get("sku"));
  27773. </stringProp>
  27774. <stringProp name="BeanShellSampler.filename"/>
  27775. <stringProp name="BeanShellSampler.parameters"/>
  27776. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27777. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  27778. <hashTree/>
  27779. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Simple Product Details by name" enabled="true">
  27780. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27781. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27782. <collectionProp name="Arguments.arguments">
  27783. <elementProp name="" elementType="HTTPArgument">
  27784. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  27785. <stringProp name="Argument.value">{"query":"query productDetail($product_sku: String, $onServer: Boolean!) {\n productDetail: products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetail"}</stringProp>
  27786. <stringProp name="Argument.metadata">=</stringProp>
  27787. </elementProp>
  27788. </collectionProp>
  27789. </elementProp>
  27790. <stringProp name="HTTPSampler.domain"/>
  27791. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  27792. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27793. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27794. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27795. <stringProp name="HTTPSampler.contentEncoding"/>
  27796. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  27797. <stringProp name="HTTPSampler.method">POST</stringProp>
  27798. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27799. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27800. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27801. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27802. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27803. <stringProp name="HTTPSampler.embedded_url_re"/>
  27804. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_name.jmx</stringProp>
  27805. </HTTPSamplerProxy>
  27806. <hashTree>
  27807. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  27808. <collectionProp name="Asserion.test_strings">
  27809. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  27810. </collectionProp>
  27811. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27812. <boolProp name="Assertion.assume_success">false</boolProp>
  27813. <intProp name="Assertion.test_type">2</intProp>
  27814. </ResponseAssertion>
  27815. <hashTree/>
  27816. </hashTree>
  27817. </hashTree>
  27818. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Configurable Product Detail by product_url_key" enabled="true">
  27819. <intProp name="ThroughputController.style">1</intProp>
  27820. <boolProp name="ThroughputController.perThread">false</boolProp>
  27821. <intProp name="ThroughputController.maxThroughput">1</intProp>
  27822. <stringProp name="ThroughputController.percentThroughput">${graphqlGetConfigurableProductDetailsByProductUrlKeyPercentage}</stringProp>
  27823. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  27824. <hashTree>
  27825. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  27826. <stringProp name="script">
  27827. var tmpLabel = vars.get("testLabel")
  27828. if (tmpLabel) {
  27829. var testLabel = " (" + tmpLabel + ")"
  27830. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  27831. if (sampler.getName().indexOf(testLabel) == -1) {
  27832. sampler.setName(sampler.getName() + testLabel);
  27833. }
  27834. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  27835. sampler.setName("SetUp - " + sampler.getName());
  27836. }
  27837. } else {
  27838. testLabel = ""
  27839. }
  27840. </stringProp>
  27841. <stringProp name="scriptLanguage">javascript</stringProp>
  27842. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  27843. <hashTree/>
  27844. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  27845. <stringProp name="BeanShellSampler.query">
  27846. vars.put("testLabel", "GraphQL Get Configurable Product Detail by product_url_key");
  27847. </stringProp>
  27848. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27849. </BeanShellSampler>
  27850. <hashTree/>
  27851. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  27852. <collectionProp name="HeaderManager.headers">
  27853. <elementProp name="" elementType="Header">
  27854. <stringProp name="Header.name">Content-Type</stringProp>
  27855. <stringProp name="Header.value">application/json</stringProp>
  27856. </elementProp>
  27857. <elementProp name="" elementType="Header">
  27858. <stringProp name="Header.name">Accept</stringProp>
  27859. <stringProp name="Header.value">*/*</stringProp>
  27860. </elementProp>
  27861. </collectionProp>
  27862. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  27863. <hashTree/>
  27864. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  27865. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  27866. <stringProp name="BeanShellSampler.query">
  27867. import java.util.Random;
  27868. Random random = new Random();
  27869. if (${seedForRandom} &gt; 0) {
  27870. random.setSeed(${seedForRandom} + ${__threadNum});
  27871. }
  27872. vars.putObject("randomIntGenerator", random);
  27873. </stringProp>
  27874. <stringProp name="BeanShellSampler.filename"/>
  27875. <stringProp name="BeanShellSampler.parameters"/>
  27876. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27877. </BeanShellSampler>
  27878. <hashTree/>
  27879. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  27880. <stringProp name="BeanShellSampler.query">
  27881. import java.util.Random;
  27882. Random random = vars.getObject("randomIntGenerator");
  27883. number = random.nextInt(props.get("configurable_products_list").size());
  27884. product = props.get("configurable_products_list").get(number);
  27885. vars.put("product_url_key", product.get("url_key"));
  27886. vars.put("product_id", product.get("id"));
  27887. vars.put("product_name", product.get("title"));
  27888. vars.put("product_uenc", product.get("uenc"));
  27889. vars.put("product_sku", product.get("sku"));
  27890. </stringProp>
  27891. <stringProp name="BeanShellSampler.filename"/>
  27892. <stringProp name="BeanShellSampler.parameters"/>
  27893. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27894. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  27895. <hashTree/>
  27896. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by product_url_key" enabled="true">
  27897. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  27898. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  27899. <collectionProp name="Arguments.arguments">
  27900. <elementProp name="" elementType="HTTPArgument">
  27901. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  27902. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  27903. <stringProp name="Argument.metadata">=</stringProp>
  27904. </elementProp>
  27905. </collectionProp>
  27906. </elementProp>
  27907. <stringProp name="HTTPSampler.domain"/>
  27908. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  27909. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  27910. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  27911. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  27912. <stringProp name="HTTPSampler.contentEncoding"/>
  27913. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  27914. <stringProp name="HTTPSampler.method">POST</stringProp>
  27915. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  27916. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  27917. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  27918. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  27919. <boolProp name="HTTPSampler.monitor">false</boolProp>
  27920. <stringProp name="HTTPSampler.embedded_url_re"/>
  27921. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  27922. </HTTPSamplerProxy>
  27923. <hashTree>
  27924. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  27925. <collectionProp name="Asserion.test_strings">
  27926. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  27927. </collectionProp>
  27928. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  27929. <boolProp name="Assertion.assume_success">false</boolProp>
  27930. <intProp name="Assertion.test_type">2</intProp>
  27931. </ResponseAssertion>
  27932. <hashTree/>
  27933. </hashTree>
  27934. </hashTree>
  27935. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Configurable Product Detail by name" enabled="true">
  27936. <intProp name="ThroughputController.style">1</intProp>
  27937. <boolProp name="ThroughputController.perThread">false</boolProp>
  27938. <intProp name="ThroughputController.maxThroughput">1</intProp>
  27939. <stringProp name="ThroughputController.percentThroughput">${graphqlGetConfigurableProductDetailsByNamePercentage}</stringProp>
  27940. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  27941. <hashTree>
  27942. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  27943. <stringProp name="script">
  27944. var tmpLabel = vars.get("testLabel")
  27945. if (tmpLabel) {
  27946. var testLabel = " (" + tmpLabel + ")"
  27947. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  27948. if (sampler.getName().indexOf(testLabel) == -1) {
  27949. sampler.setName(sampler.getName() + testLabel);
  27950. }
  27951. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  27952. sampler.setName("SetUp - " + sampler.getName());
  27953. }
  27954. } else {
  27955. testLabel = ""
  27956. }
  27957. </stringProp>
  27958. <stringProp name="scriptLanguage">javascript</stringProp>
  27959. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  27960. <hashTree/>
  27961. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  27962. <stringProp name="BeanShellSampler.query">
  27963. vars.put("testLabel", "GraphQL Get Configurable Product Detail by name");
  27964. </stringProp>
  27965. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27966. </BeanShellSampler>
  27967. <hashTree/>
  27968. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  27969. <collectionProp name="HeaderManager.headers">
  27970. <elementProp name="" elementType="Header">
  27971. <stringProp name="Header.name">Content-Type</stringProp>
  27972. <stringProp name="Header.value">application/json</stringProp>
  27973. </elementProp>
  27974. <elementProp name="" elementType="Header">
  27975. <stringProp name="Header.name">Accept</stringProp>
  27976. <stringProp name="Header.value">*/*</stringProp>
  27977. </elementProp>
  27978. </collectionProp>
  27979. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  27980. <hashTree/>
  27981. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  27982. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  27983. <stringProp name="BeanShellSampler.query">
  27984. import java.util.Random;
  27985. Random random = new Random();
  27986. if (${seedForRandom} &gt; 0) {
  27987. random.setSeed(${seedForRandom} + ${__threadNum});
  27988. }
  27989. vars.putObject("randomIntGenerator", random);
  27990. </stringProp>
  27991. <stringProp name="BeanShellSampler.filename"/>
  27992. <stringProp name="BeanShellSampler.parameters"/>
  27993. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  27994. </BeanShellSampler>
  27995. <hashTree/>
  27996. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  27997. <stringProp name="BeanShellSampler.query">
  27998. import java.util.Random;
  27999. Random random = vars.getObject("randomIntGenerator");
  28000. number = random.nextInt(props.get("configurable_products_list").size());
  28001. product = props.get("configurable_products_list").get(number);
  28002. vars.put("product_url_key", product.get("url_key"));
  28003. vars.put("product_id", product.get("id"));
  28004. vars.put("product_name", product.get("title"));
  28005. vars.put("product_uenc", product.get("uenc"));
  28006. vars.put("product_sku", product.get("sku"));
  28007. </stringProp>
  28008. <stringProp name="BeanShellSampler.filename"/>
  28009. <stringProp name="BeanShellSampler.parameters"/>
  28010. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28011. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  28012. <hashTree/>
  28013. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  28014. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28015. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28016. <collectionProp name="Arguments.arguments">
  28017. <elementProp name="" elementType="HTTPArgument">
  28018. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28019. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  28020. <stringProp name="Argument.metadata">=</stringProp>
  28021. </elementProp>
  28022. </collectionProp>
  28023. </elementProp>
  28024. <stringProp name="HTTPSampler.domain"/>
  28025. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28026. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28027. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28028. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28029. <stringProp name="HTTPSampler.contentEncoding"/>
  28030. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28031. <stringProp name="HTTPSampler.method">POST</stringProp>
  28032. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28033. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28034. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28035. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28036. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28037. <stringProp name="HTTPSampler.embedded_url_re"/>
  28038. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  28039. </HTTPSamplerProxy>
  28040. <hashTree>
  28041. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  28042. <collectionProp name="Asserion.test_strings">
  28043. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  28044. </collectionProp>
  28045. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  28046. <boolProp name="Assertion.assume_success">false</boolProp>
  28047. <intProp name="Assertion.test_type">2</intProp>
  28048. </ResponseAssertion>
  28049. <hashTree/>
  28050. </hashTree>
  28051. </hashTree>
  28052. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Product Search by text and category_id" enabled="true">
  28053. <intProp name="ThroughputController.style">1</intProp>
  28054. <boolProp name="ThroughputController.perThread">false</boolProp>
  28055. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28056. <stringProp name="ThroughputController.percentThroughput">${graphqlGetProductSearchByTextAndCategoryIdPercentage}</stringProp>
  28057. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28058. <hashTree>
  28059. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28060. <stringProp name="script">
  28061. var tmpLabel = vars.get("testLabel")
  28062. if (tmpLabel) {
  28063. var testLabel = " (" + tmpLabel + ")"
  28064. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28065. if (sampler.getName().indexOf(testLabel) == -1) {
  28066. sampler.setName(sampler.getName() + testLabel);
  28067. }
  28068. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28069. sampler.setName("SetUp - " + sampler.getName());
  28070. }
  28071. } else {
  28072. testLabel = ""
  28073. }
  28074. </stringProp>
  28075. <stringProp name="scriptLanguage">javascript</stringProp>
  28076. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28077. <hashTree/>
  28078. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28079. <stringProp name="BeanShellSampler.query">
  28080. vars.put("testLabel", "GraphQL Get Product Search by text and category_id");
  28081. </stringProp>
  28082. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28083. </BeanShellSampler>
  28084. <hashTree/>
  28085. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28086. <collectionProp name="HeaderManager.headers">
  28087. <elementProp name="" elementType="Header">
  28088. <stringProp name="Header.name">Content-Type</stringProp>
  28089. <stringProp name="Header.value">application/json</stringProp>
  28090. </elementProp>
  28091. <elementProp name="" elementType="Header">
  28092. <stringProp name="Header.name">Accept</stringProp>
  28093. <stringProp name="Header.value">*/*</stringProp>
  28094. </elementProp>
  28095. </collectionProp>
  28096. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28097. <hashTree/>
  28098. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  28099. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  28100. <stringProp name="BeanShellSampler.query">
  28101. import java.util.Random;
  28102. Random random = new Random();
  28103. if (${seedForRandom} &gt; 0) {
  28104. random.setSeed(${seedForRandom} + ${__threadNum});
  28105. }
  28106. vars.putObject("randomIntGenerator", random);
  28107. </stringProp>
  28108. <stringProp name="BeanShellSampler.filename"/>
  28109. <stringProp name="BeanShellSampler.parameters"/>
  28110. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28111. </BeanShellSampler>
  28112. <hashTree/>
  28113. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  28114. <stringProp name="scriptLanguage">javascript</stringProp>
  28115. <stringProp name="parameters"/>
  28116. <stringProp name="filename"/>
  28117. <stringProp name="cacheKey"/>
  28118. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  28119. var categories = props.get("categories");
  28120. number = random.nextInt(categories.length);
  28121. vars.put("category_url_key", categories[number].url_key);
  28122. vars.put("category_name", categories[number].name);
  28123. vars.put("category_id", categories[number].id);
  28124. vars.putObject("category", categories[number]);
  28125. </stringProp>
  28126. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  28127. <hashTree/>
  28128. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Product Search by text and category_id" enabled="true">
  28129. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28130. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28131. <collectionProp name="Arguments.arguments">
  28132. <elementProp name="" elementType="HTTPArgument">
  28133. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28134. <stringProp name="Argument.value">{"query":"query productSearch($inputText: String!, $categoryId: String) {\n products(\n pageSize:12\n search: $inputText, filter: { category_id: { eq: $categoryId } }, sort: {name: ASC}) {\n items {\n id\n name\n small_image {\n label\n url\n }\n url_key\n price {\n regularPrice {\n amount {\n value\n currency\n }\n }\n }\n }\n total_count\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n }\n }\n }\n}","variables":{"inputText":"Product","categoryId":"${category_id}"},"operationName":"productSearch"}</stringProp>
  28135. <stringProp name="Argument.metadata">=</stringProp>
  28136. </elementProp>
  28137. </collectionProp>
  28138. </elementProp>
  28139. <stringProp name="HTTPSampler.domain"/>
  28140. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28141. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28142. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28143. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28144. <stringProp name="HTTPSampler.contentEncoding"/>
  28145. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28146. <stringProp name="HTTPSampler.method">POST</stringProp>
  28147. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28148. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28149. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28150. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28151. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28152. <stringProp name="HTTPSampler.embedded_url_re"/>
  28153. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_product_search_by_text_and_category_id.jmx</stringProp>
  28154. </HTTPSamplerProxy>
  28155. <hashTree>
  28156. <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 total_count" enabled="true">
  28157. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  28158. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  28159. <stringProp name="DEFAULT"/>
  28160. <stringProp name="VARIABLE"/>
  28161. <stringProp name="SUBJECT">BODY</stringProp>
  28162. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  28163. <hashTree/>
  28164. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  28165. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  28166. if (totalCount == null) {
  28167. Failure = true;
  28168. FailureMessage = "Not Expected \"totalCount\" to be null";
  28169. } else {
  28170. if (Integer.parseInt(totalCount) &lt; 1) {
  28171. Failure = true;
  28172. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  28173. } else {
  28174. Failure = false;
  28175. }
  28176. }
  28177. </stringProp>
  28178. <stringProp name="BeanShellAssertion.filename"/>
  28179. <stringProp name="BeanShellAssertion.parameters"/>
  28180. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  28181. </BeanShellAssertion>
  28182. <hashTree/>
  28183. </hashTree>
  28184. </hashTree>
  28185. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Category List by category_id" enabled="true">
  28186. <intProp name="ThroughputController.style">1</intProp>
  28187. <boolProp name="ThroughputController.perThread">false</boolProp>
  28188. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28189. <stringProp name="ThroughputController.percentThroughput">${graphqlGetCategoryListByCategoryIdPercentage}</stringProp>
  28190. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28191. <hashTree>
  28192. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28193. <stringProp name="script">
  28194. var tmpLabel = vars.get("testLabel")
  28195. if (tmpLabel) {
  28196. var testLabel = " (" + tmpLabel + ")"
  28197. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28198. if (sampler.getName().indexOf(testLabel) == -1) {
  28199. sampler.setName(sampler.getName() + testLabel);
  28200. }
  28201. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28202. sampler.setName("SetUp - " + sampler.getName());
  28203. }
  28204. } else {
  28205. testLabel = ""
  28206. }
  28207. </stringProp>
  28208. <stringProp name="scriptLanguage">javascript</stringProp>
  28209. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28210. <hashTree/>
  28211. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28212. <stringProp name="BeanShellSampler.query">
  28213. vars.put("testLabel", "GraphQL Get Category List by category_id");
  28214. </stringProp>
  28215. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28216. </BeanShellSampler>
  28217. <hashTree/>
  28218. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28219. <collectionProp name="HeaderManager.headers">
  28220. <elementProp name="" elementType="Header">
  28221. <stringProp name="Header.name">Content-Type</stringProp>
  28222. <stringProp name="Header.value">application/json</stringProp>
  28223. </elementProp>
  28224. <elementProp name="" elementType="Header">
  28225. <stringProp name="Header.name">Accept</stringProp>
  28226. <stringProp name="Header.value">*/*</stringProp>
  28227. </elementProp>
  28228. </collectionProp>
  28229. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28230. <hashTree/>
  28231. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  28232. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  28233. <stringProp name="BeanShellSampler.query">
  28234. import java.util.Random;
  28235. Random random = new Random();
  28236. if (${seedForRandom} &gt; 0) {
  28237. random.setSeed(${seedForRandom} + ${__threadNum});
  28238. }
  28239. vars.putObject("randomIntGenerator", random);
  28240. </stringProp>
  28241. <stringProp name="BeanShellSampler.filename"/>
  28242. <stringProp name="BeanShellSampler.parameters"/>
  28243. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28244. </BeanShellSampler>
  28245. <hashTree/>
  28246. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  28247. <stringProp name="scriptLanguage">javascript</stringProp>
  28248. <stringProp name="parameters"/>
  28249. <stringProp name="filename"/>
  28250. <stringProp name="cacheKey"/>
  28251. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  28252. var categories = props.get("categories");
  28253. number = random.nextInt(categories.length);
  28254. vars.put("category_url_key", categories[number].url_key);
  28255. vars.put("category_name", categories[number].name);
  28256. vars.put("category_id", categories[number].id);
  28257. vars.putObject("category", categories[number]);
  28258. </stringProp>
  28259. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  28260. <hashTree/>
  28261. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List by category_id" enabled="true">
  28262. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28263. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28264. <collectionProp name="Arguments.arguments">
  28265. <elementProp name="" elementType="HTTPArgument">
  28266. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28267. <stringProp name="Argument.value">
  28268. {"query":"query categoryList($id: Int!) {\n category(id: $id) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}","variables":{"id":${category_id}},"operationName":"categoryList"}
  28269. </stringProp>
  28270. <stringProp name="Argument.metadata">=</stringProp>
  28271. </elementProp>
  28272. </collectionProp>
  28273. </elementProp>
  28274. <stringProp name="HTTPSampler.domain"/>
  28275. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28276. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28277. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28278. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28279. <stringProp name="HTTPSampler.contentEncoding"/>
  28280. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28281. <stringProp name="HTTPSampler.method">POST</stringProp>
  28282. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28283. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28284. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28285. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28286. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28287. <stringProp name="HTTPSampler.embedded_url_re"/>
  28288. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_category_list_by_category_id.jmx</stringProp></HTTPSamplerProxy>
  28289. <hashTree>
  28290. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert found categories" enabled="true">
  28291. <stringProp name="scriptLanguage">javascript</stringProp>
  28292. <stringProp name="parameters"/>
  28293. <stringProp name="filename"/>
  28294. <stringProp name="cacheKey"/>
  28295. <stringProp name="script">var category = vars.getObject("category");
  28296. var response = JSON.parse(prev.getResponseDataAsString());
  28297. assertCategoryId(category, response);
  28298. assertCategoryChildren(category, response);
  28299. function assertCategoryId(category, response) {
  28300. if (response.data == undefined || response.data.category == undefined || response.data.category.id != category.id) {
  28301. AssertionResult.setFailureMessage("Cannot find category with id \"" + category.id + "\"");
  28302. AssertionResult.setFailure(true);
  28303. }
  28304. }
  28305. function assertCategoryChildren(category, response) {
  28306. foundCategory = response.data &amp;&amp; response.data.category ? response.data.category : null;
  28307. if (foundCategory) {
  28308. var childrenFound = foundCategory.children.map(function (c) {return parseInt(c.id)});
  28309. var children = category.children.map(function (c) {return parseInt(c)});
  28310. if (JSON.stringify(children.sort()) != JSON.stringify(childrenFound.sort())) {
  28311. AssertionResult.setFailureMessage("Cannot math children categories \"" + JSON.stringify(children) + "\" for to found one: \"" + JSON.stringify(childrenFound) + "\"");
  28312. AssertionResult.setFailure(true);
  28313. }
  28314. }
  28315. }
  28316. </stringProp>
  28317. </JSR223Assertion>
  28318. <hashTree/>
  28319. </hashTree>
  28320. </hashTree>
  28321. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Category List by category_url_key" enabled="true">
  28322. <intProp name="ThroughputController.style">1</intProp>
  28323. <boolProp name="ThroughputController.perThread">false</boolProp>
  28324. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28325. <stringProp name="ThroughputController.percentThroughput">${graphqlGetCategoryListByCategoryIdPercentage}</stringProp>
  28326. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28327. <hashTree>
  28328. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28329. <stringProp name="script">
  28330. var tmpLabel = vars.get("testLabel")
  28331. if (tmpLabel) {
  28332. var testLabel = " (" + tmpLabel + ")"
  28333. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28334. if (sampler.getName().indexOf(testLabel) == -1) {
  28335. sampler.setName(sampler.getName() + testLabel);
  28336. }
  28337. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28338. sampler.setName("SetUp - " + sampler.getName());
  28339. }
  28340. } else {
  28341. testLabel = ""
  28342. }
  28343. </stringProp>
  28344. <stringProp name="scriptLanguage">javascript</stringProp>
  28345. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28346. <hashTree/>
  28347. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28348. <stringProp name="BeanShellSampler.query">
  28349. vars.put("testLabel", "GraphQL Get Category List by category_url_key");
  28350. </stringProp>
  28351. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28352. </BeanShellSampler>
  28353. <hashTree/>
  28354. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28355. <collectionProp name="HeaderManager.headers">
  28356. <elementProp name="" elementType="Header">
  28357. <stringProp name="Header.name">Content-Type</stringProp>
  28358. <stringProp name="Header.value">application/json</stringProp>
  28359. </elementProp>
  28360. <elementProp name="" elementType="Header">
  28361. <stringProp name="Header.name">Accept</stringProp>
  28362. <stringProp name="Header.value">*/*</stringProp>
  28363. </elementProp>
  28364. </collectionProp>
  28365. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28366. <hashTree/>
  28367. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  28368. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  28369. <stringProp name="BeanShellSampler.query">
  28370. import java.util.Random;
  28371. Random random = new Random();
  28372. if (${seedForRandom} &gt; 0) {
  28373. random.setSeed(${seedForRandom} + ${__threadNum});
  28374. }
  28375. vars.putObject("randomIntGenerator", random);
  28376. </stringProp>
  28377. <stringProp name="BeanShellSampler.filename"/>
  28378. <stringProp name="BeanShellSampler.parameters"/>
  28379. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28380. </BeanShellSampler>
  28381. <hashTree/>
  28382. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  28383. <stringProp name="scriptLanguage">javascript</stringProp>
  28384. <stringProp name="parameters"/>
  28385. <stringProp name="filename"/>
  28386. <stringProp name="cacheKey"/>
  28387. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  28388. var categories = props.get("categories");
  28389. number = random.nextInt(categories.length);
  28390. vars.put("category_url_key", categories[number].url_key);
  28391. vars.put("category_name", categories[number].name);
  28392. vars.put("category_id", categories[number].id);
  28393. vars.putObject("category", categories[number]);
  28394. </stringProp>
  28395. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  28396. <hashTree/>
  28397. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List by category_url_key" enabled="true">
  28398. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28399. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28400. <collectionProp name="Arguments.arguments">
  28401. <elementProp name="" elementType="HTTPArgument">
  28402. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28403. <stringProp name="Argument.value">{"query" : "{\n categoryList(filters:{url_key: {in: [\"${category_url_key}\"]}}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"}</stringProp>
  28404. <stringProp name="Argument.metadata">=</stringProp>
  28405. </elementProp>
  28406. </collectionProp>
  28407. </elementProp>
  28408. <stringProp name="HTTPSampler.domain"/>
  28409. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28410. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28411. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28412. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28413. <stringProp name="HTTPSampler.contentEncoding"/>
  28414. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28415. <stringProp name="HTTPSampler.method">POST</stringProp>
  28416. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28417. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28418. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28419. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28420. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28421. <stringProp name="HTTPSampler.embedded_url_re"/>
  28422. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_category_list_by_category_url_key.jmx</stringProp>
  28423. </HTTPSamplerProxy>
  28424. <hashTree>
  28425. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert found categories" enabled="true">
  28426. <stringProp name="scriptLanguage">javascript</stringProp>
  28427. <stringProp name="parameters"/>
  28428. <stringProp name="filename"/>
  28429. <stringProp name="cacheKey"/>
  28430. <stringProp name="script">var category = vars.getObject("category");
  28431. var response = JSON.parse(prev.getResponseDataAsString());
  28432. assertCategoryId(category, response);
  28433. assertCategoryChildren(category, response);
  28434. function assertCategoryId(category, response) {
  28435. if (response.data == undefined || response.data.categoryList == undefined || response.data.categoryList[0].id != category.id) {
  28436. AssertionResult.setFailureMessage("Cannot find category with id \"" + category.id + "\"");
  28437. AssertionResult.setFailure(true);
  28438. }
  28439. }
  28440. function assertCategoryChildren(category, response) {
  28441. foundCategory = response.data &amp;&amp; response.data.categoryList ? response.data.categoryList[0] : null;
  28442. if (foundCategory) {
  28443. var childrenFound = foundCategory.children.map(function (c) {return parseInt(c.id)});
  28444. var children = category.children.map(function (c) {return parseInt(c)});
  28445. if (JSON.stringify(children.sort()) != JSON.stringify(childrenFound.sort())) {
  28446. AssertionResult.setFailureMessage("Cannot math children categories \"" + JSON.stringify(children) + "\" for to found one: \"" + JSON.stringify(childrenFound) + "\"");
  28447. AssertionResult.setFailure(true);
  28448. }
  28449. }
  28450. }
  28451. </stringProp>
  28452. </JSR223Assertion>
  28453. <hashTree/>
  28454. </hashTree>
  28455. </hashTree>
  28456. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Multiple Categories" enabled="true">
  28457. <intProp name="ThroughputController.style">1</intProp>
  28458. <boolProp name="ThroughputController.perThread">false</boolProp>
  28459. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28460. <stringProp name="ThroughputController.percentThroughput">${graphqlGetCategoryListByCategoryIdPercentage}</stringProp>
  28461. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28462. <hashTree>
  28463. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28464. <stringProp name="script">
  28465. var tmpLabel = vars.get("testLabel")
  28466. if (tmpLabel) {
  28467. var testLabel = " (" + tmpLabel + ")"
  28468. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28469. if (sampler.getName().indexOf(testLabel) == -1) {
  28470. sampler.setName(sampler.getName() + testLabel);
  28471. }
  28472. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28473. sampler.setName("SetUp - " + sampler.getName());
  28474. }
  28475. } else {
  28476. testLabel = ""
  28477. }
  28478. </stringProp>
  28479. <stringProp name="scriptLanguage">javascript</stringProp>
  28480. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28481. <hashTree/>
  28482. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28483. <stringProp name="BeanShellSampler.query">
  28484. vars.put("testLabel", "GraphQL Get Multiple Categories");
  28485. </stringProp>
  28486. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28487. </BeanShellSampler>
  28488. <hashTree/>
  28489. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28490. <collectionProp name="HeaderManager.headers">
  28491. <elementProp name="" elementType="Header">
  28492. <stringProp name="Header.name">Content-Type</stringProp>
  28493. <stringProp name="Header.value">application/json</stringProp>
  28494. </elementProp>
  28495. <elementProp name="" elementType="Header">
  28496. <stringProp name="Header.name">Accept</stringProp>
  28497. <stringProp name="Header.value">*/*</stringProp>
  28498. </elementProp>
  28499. </collectionProp>
  28500. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28501. <hashTree/>
  28502. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  28503. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  28504. <stringProp name="BeanShellSampler.query">
  28505. import java.util.Random;
  28506. Random random = new Random();
  28507. if (${seedForRandom} &gt; 0) {
  28508. random.setSeed(${seedForRandom} + ${__threadNum});
  28509. }
  28510. vars.putObject("randomIntGenerator", random);
  28511. </stringProp>
  28512. <stringProp name="BeanShellSampler.filename"/>
  28513. <stringProp name="BeanShellSampler.parameters"/>
  28514. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28515. </BeanShellSampler>
  28516. <hashTree/>
  28517. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  28518. <stringProp name="scriptLanguage">javascript</stringProp>
  28519. <stringProp name="parameters"/>
  28520. <stringProp name="filename"/>
  28521. <stringProp name="cacheKey"/>
  28522. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  28523. var categories = props.get("categories");
  28524. var numbers = [];
  28525. var sanity = 0;
  28526. for(var i = 0; i &lt; 4; i++){
  28527. sanity++;
  28528. if(sanity &gt; 100){
  28529. break;
  28530. }
  28531. var number = random.nextInt(categories.length)
  28532. if(numbers.indexOf(number) &gt;= 0){
  28533. i--;
  28534. continue;
  28535. }
  28536. numbers.push(number);
  28537. }
  28538. vars.put("category_id_1", categories[numbers[0]].id);
  28539. vars.put("category_id_2", categories[numbers[1]].id);
  28540. vars.put("category_id_3", categories[numbers[2]].id);
  28541. vars.put("category_id_4", categories[numbers[3]].id);
  28542. </stringProp>
  28543. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_multiple_categories_setup.jmx</stringProp>
  28544. </JSR223Sampler>
  28545. <hashTree/>
  28546. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get multiple categories by ID" enabled="true">
  28547. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28548. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28549. <collectionProp name="Arguments.arguments">
  28550. <elementProp name="" elementType="HTTPArgument">
  28551. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28552. <stringProp name="Argument.value">{"query" : "{\n categoryList(filters:{ids: {in: [\"${category_id_1}\", \"${category_id_2}\", \"${category_id_3}\", \"${category_id_4}\"]}}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"}</stringProp>
  28553. <stringProp name="Argument.metadata">=</stringProp>
  28554. </elementProp>
  28555. </collectionProp>
  28556. </elementProp>
  28557. <stringProp name="HTTPSampler.domain"/>
  28558. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28559. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28560. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28561. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28562. <stringProp name="HTTPSampler.contentEncoding"/>
  28563. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28564. <stringProp name="HTTPSampler.method">POST</stringProp>
  28565. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28566. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28567. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28568. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28569. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28570. <stringProp name="HTTPSampler.embedded_url_re"/>
  28571. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_multiple_categories_by_id.jmx</stringProp>
  28572. </HTTPSamplerProxy>
  28573. <hashTree>
  28574. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert category count" enabled="true">
  28575. <stringProp name="scriptLanguage">javascript</stringProp>
  28576. <stringProp name="parameters"/>
  28577. <stringProp name="filename"/>
  28578. <stringProp name="cacheKey"/>
  28579. <stringProp name="script">var response = JSON.parse(prev.getResponseDataAsString());
  28580. if(response.data == undefined || response.data.categoryList == undefined){
  28581. AssertionResult.setFailureMessage("CategoryList results are empty.");
  28582. AssertionResult.setFailure(true);
  28583. }
  28584. if(response.data.categoryList.length !== 4){
  28585. AssertionResult.setFailureMessage("CategoryList query expected to find 4 categories. " + response.data.categoryList.length + " returned.");
  28586. AssertionResult.setFailure(true);
  28587. }
  28588. </stringProp>
  28589. </JSR223Assertion>
  28590. <hashTree/>
  28591. </hashTree>
  28592. </hashTree>
  28593. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Categories Query: Get Multiple Categories By Id" enabled="true">
  28594. <intProp name="ThroughputController.style">1</intProp>
  28595. <boolProp name="ThroughputController.perThread">false</boolProp>
  28596. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28597. <stringProp name="ThroughputController.percentThroughput">${graphqlGetCategoryListByCategoryIdPercentage}</stringProp>
  28598. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28599. <hashTree>
  28600. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28601. <stringProp name="script">
  28602. var tmpLabel = vars.get("testLabel")
  28603. if (tmpLabel) {
  28604. var testLabel = " (" + tmpLabel + ")"
  28605. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28606. if (sampler.getName().indexOf(testLabel) == -1) {
  28607. sampler.setName(sampler.getName() + testLabel);
  28608. }
  28609. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28610. sampler.setName("SetUp - " + sampler.getName());
  28611. }
  28612. } else {
  28613. testLabel = ""
  28614. }
  28615. </stringProp>
  28616. <stringProp name="scriptLanguage">javascript</stringProp>
  28617. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28618. <hashTree/>
  28619. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28620. <stringProp name="BeanShellSampler.query">
  28621. vars.put("testLabel", "GraphQL Categories Query: Get Multiple Categories By Id");
  28622. </stringProp>
  28623. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28624. </BeanShellSampler>
  28625. <hashTree/>
  28626. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28627. <collectionProp name="HeaderManager.headers">
  28628. <elementProp name="" elementType="Header">
  28629. <stringProp name="Header.name">Content-Type</stringProp>
  28630. <stringProp name="Header.value">application/json</stringProp>
  28631. </elementProp>
  28632. <elementProp name="" elementType="Header">
  28633. <stringProp name="Header.name">Accept</stringProp>
  28634. <stringProp name="Header.value">*/*</stringProp>
  28635. </elementProp>
  28636. </collectionProp>
  28637. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28638. <hashTree/>
  28639. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  28640. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  28641. <stringProp name="BeanShellSampler.query">
  28642. import java.util.Random;
  28643. Random random = new Random();
  28644. if (${seedForRandom} &gt; 0) {
  28645. random.setSeed(${seedForRandom} + ${__threadNum});
  28646. }
  28647. vars.putObject("randomIntGenerator", random);
  28648. </stringProp>
  28649. <stringProp name="BeanShellSampler.filename"/>
  28650. <stringProp name="BeanShellSampler.parameters"/>
  28651. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28652. </BeanShellSampler>
  28653. <hashTree/>
  28654. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  28655. <stringProp name="scriptLanguage">javascript</stringProp>
  28656. <stringProp name="parameters"/>
  28657. <stringProp name="filename"/>
  28658. <stringProp name="cacheKey"/>
  28659. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  28660. var categories = props.get("categories");
  28661. var numbers = [];
  28662. var sanity = 0;
  28663. for(var i = 0; i &lt; 4; i++){
  28664. sanity++;
  28665. if(sanity &gt; 100){
  28666. break;
  28667. }
  28668. var number = random.nextInt(categories.length)
  28669. if(numbers.indexOf(number) &gt;= 0){
  28670. i--;
  28671. continue;
  28672. }
  28673. numbers.push(number);
  28674. }
  28675. vars.put("category_id_1", categories[numbers[0]].id);
  28676. vars.put("category_id_2", categories[numbers[1]].id);
  28677. vars.put("category_id_3", categories[numbers[2]].id);
  28678. vars.put("category_id_4", categories[numbers[3]].id);
  28679. </stringProp>
  28680. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_multiple_categories_setup.jmx</stringProp>
  28681. </JSR223Sampler>
  28682. <hashTree/>
  28683. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[categories query] Get multiple categories by ID" enabled="true">
  28684. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28685. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28686. <collectionProp name="Arguments.arguments">
  28687. <elementProp name="" elementType="HTTPArgument">
  28688. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28689. <stringProp name="Argument.value">{"query" : "{\n categories(filters:{ids: {in: [\"${category_id_1}\", \"${category_id_2}\", \"${category_id_3}\", \"${category_id_4}\"]}}) {\n total_count\n page_info {\n total_pages\n current_page\n page_size\n }\n items{\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n }\n}"}</stringProp>
  28690. <stringProp name="Argument.metadata">=</stringProp>
  28691. </elementProp>
  28692. </collectionProp>
  28693. </elementProp>
  28694. <stringProp name="HTTPSampler.domain"/>
  28695. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28696. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28697. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28698. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28699. <stringProp name="HTTPSampler.contentEncoding"/>
  28700. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28701. <stringProp name="HTTPSampler.method">POST</stringProp>
  28702. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28703. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28704. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28705. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28706. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28707. <stringProp name="HTTPSampler.embedded_url_re"/>
  28708. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/categories_query_get_multiple_categories_by_id.jmx</stringProp>
  28709. </HTTPSamplerProxy>
  28710. <hashTree>
  28711. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert category count" enabled="true">
  28712. <stringProp name="scriptLanguage">javascript</stringProp>
  28713. <stringProp name="parameters"/>
  28714. <stringProp name="filename"/>
  28715. <stringProp name="cacheKey"/>
  28716. <stringProp name="script">var response = JSON.parse(prev.getResponseDataAsString());
  28717. if(response.data == undefined || response.data.categories == undefined){
  28718. AssertionResult.setFailureMessage("Categories result is empty.");
  28719. AssertionResult.setFailure(true);
  28720. }
  28721. if(response.data.categories.items.length !== 4){
  28722. AssertionResult.setFailureMessage("Categories query expected to find 4 categories. " + response.data.categories.items.length + " returned.");
  28723. AssertionResult.setFailure(true);
  28724. }
  28725. </stringProp>
  28726. </JSR223Assertion>
  28727. <hashTree/>
  28728. </hashTree>
  28729. </hashTree>
  28730. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Categories Query: Get Many Categories with Pagination" enabled="true">
  28731. <intProp name="ThroughputController.style">1</intProp>
  28732. <boolProp name="ThroughputController.perThread">false</boolProp>
  28733. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28734. <stringProp name="ThroughputController.percentThroughput">${graphqlGetCategoryListByCategoryIdPercentage}</stringProp>
  28735. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28736. <hashTree>
  28737. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28738. <stringProp name="script">
  28739. var tmpLabel = vars.get("testLabel")
  28740. if (tmpLabel) {
  28741. var testLabel = " (" + tmpLabel + ")"
  28742. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28743. if (sampler.getName().indexOf(testLabel) == -1) {
  28744. sampler.setName(sampler.getName() + testLabel);
  28745. }
  28746. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28747. sampler.setName("SetUp - " + sampler.getName());
  28748. }
  28749. } else {
  28750. testLabel = ""
  28751. }
  28752. </stringProp>
  28753. <stringProp name="scriptLanguage">javascript</stringProp>
  28754. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28755. <hashTree/>
  28756. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28757. <stringProp name="BeanShellSampler.query">
  28758. vars.put("testLabel", "GraphQL Categories Query: Get Many Categories with Pagination");
  28759. </stringProp>
  28760. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28761. </BeanShellSampler>
  28762. <hashTree/>
  28763. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28764. <collectionProp name="HeaderManager.headers">
  28765. <elementProp name="" elementType="Header">
  28766. <stringProp name="Header.name">Content-Type</stringProp>
  28767. <stringProp name="Header.value">application/json</stringProp>
  28768. </elementProp>
  28769. <elementProp name="" elementType="Header">
  28770. <stringProp name="Header.name">Accept</stringProp>
  28771. <stringProp name="Header.value">*/*</stringProp>
  28772. </elementProp>
  28773. </collectionProp>
  28774. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28775. <hashTree/>
  28776. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="[categories query] Get many categories by name" enabled="true">
  28777. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28778. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28779. <collectionProp name="Arguments.arguments">
  28780. <elementProp name="" elementType="HTTPArgument">
  28781. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28782. <stringProp name="Argument.value">{"query" : "{\n categories(filters:{name: {match: \"Category\"}}) {\n total_count\n page_info {\n total_pages\n current_page\n page_size\n }\n items{\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n }\n}"}</stringProp>
  28783. <stringProp name="Argument.metadata">=</stringProp>
  28784. </elementProp>
  28785. </collectionProp>
  28786. </elementProp>
  28787. <stringProp name="HTTPSampler.domain"/>
  28788. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28789. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28790. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28791. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28792. <stringProp name="HTTPSampler.contentEncoding"/>
  28793. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28794. <stringProp name="HTTPSampler.method">POST</stringProp>
  28795. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28796. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28797. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28798. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28799. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28800. <stringProp name="HTTPSampler.embedded_url_re"/>
  28801. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/categories_query_get_many_categories_by_name_match.jmx</stringProp>
  28802. </HTTPSamplerProxy>
  28803. <hashTree>
  28804. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert category count" enabled="true">
  28805. <stringProp name="scriptLanguage">javascript</stringProp>
  28806. <stringProp name="parameters"/>
  28807. <stringProp name="filename"/>
  28808. <stringProp name="cacheKey"/>
  28809. <stringProp name="script">var response = JSON.parse(prev.getResponseDataAsString());
  28810. if(response.data == undefined || response.data.categories == undefined){
  28811. AssertionResult.setFailureMessage("Categories result is empty.");
  28812. AssertionResult.setFailure(true);
  28813. }
  28814. if(response.data.categories.items.length != 20){
  28815. AssertionResult.setFailureMessage("Categories query expected to find 20 categories. " + response.data.categories.items.length + " returned.");
  28816. AssertionResult.setFailure(true);
  28817. }
  28818. </stringProp>
  28819. </JSR223Assertion>
  28820. <hashTree/>
  28821. </hashTree>
  28822. </hashTree>
  28823. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Url Info by url_key" enabled="true">
  28824. <intProp name="ThroughputController.style">1</intProp>
  28825. <boolProp name="ThroughputController.perThread">false</boolProp>
  28826. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28827. <stringProp name="ThroughputController.percentThroughput">${graphqlUrlInfoByUrlKeyPercentage}</stringProp>
  28828. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28829. <hashTree>
  28830. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28831. <stringProp name="script">
  28832. var tmpLabel = vars.get("testLabel")
  28833. if (tmpLabel) {
  28834. var testLabel = " (" + tmpLabel + ")"
  28835. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28836. if (sampler.getName().indexOf(testLabel) == -1) {
  28837. sampler.setName(sampler.getName() + testLabel);
  28838. }
  28839. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28840. sampler.setName("SetUp - " + sampler.getName());
  28841. }
  28842. } else {
  28843. testLabel = ""
  28844. }
  28845. </stringProp>
  28846. <stringProp name="scriptLanguage">javascript</stringProp>
  28847. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28848. <hashTree/>
  28849. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28850. <stringProp name="BeanShellSampler.query">
  28851. vars.put("testLabel", "GraphQL Get Url Info by url_key");
  28852. </stringProp>
  28853. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28854. </BeanShellSampler>
  28855. <hashTree/>
  28856. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28857. <collectionProp name="HeaderManager.headers">
  28858. <elementProp name="" elementType="Header">
  28859. <stringProp name="Header.name">Content-Type</stringProp>
  28860. <stringProp name="Header.value">application/json</stringProp>
  28861. </elementProp>
  28862. <elementProp name="" elementType="Header">
  28863. <stringProp name="Header.name">Accept</stringProp>
  28864. <stringProp name="Header.value">*/*</stringProp>
  28865. </elementProp>
  28866. </collectionProp>
  28867. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28868. <hashTree/>
  28869. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  28870. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  28871. <stringProp name="BeanShellSampler.query">
  28872. import java.util.Random;
  28873. Random random = new Random();
  28874. if (${seedForRandom} &gt; 0) {
  28875. random.setSeed(${seedForRandom} + ${__threadNum});
  28876. }
  28877. vars.putObject("randomIntGenerator", random);
  28878. </stringProp>
  28879. <stringProp name="BeanShellSampler.filename"/>
  28880. <stringProp name="BeanShellSampler.parameters"/>
  28881. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28882. </BeanShellSampler>
  28883. <hashTree/>
  28884. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  28885. <stringProp name="scriptLanguage">javascript</stringProp>
  28886. <stringProp name="parameters"/>
  28887. <stringProp name="filename"/>
  28888. <stringProp name="cacheKey"/>
  28889. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  28890. var categories = props.get("categories");
  28891. number = random.nextInt(categories.length);
  28892. vars.put("category_url_key", categories[number].url_key);
  28893. vars.put("category_name", categories[number].name);
  28894. vars.put("category_id", categories[number].id);
  28895. vars.putObject("category", categories[number]);
  28896. </stringProp>
  28897. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  28898. <hashTree/>
  28899. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Url Info by url_key" enabled="true">
  28900. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  28901. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  28902. <collectionProp name="Arguments.arguments">
  28903. <elementProp name="" elementType="HTTPArgument">
  28904. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  28905. <stringProp name="Argument.value">&#xD;
  28906. {"query":"query resolveUrl($urlKey: String!) {\n urlResolver(url: $urlKey) {\n type\n id\n }\n}","variables":{"urlKey":"${category_url_key}${url_suffix}"},"operationName":"resolveUrl"}&#xD;
  28907. </stringProp>
  28908. <stringProp name="Argument.metadata">=</stringProp>
  28909. </elementProp>
  28910. </collectionProp>
  28911. </elementProp>
  28912. <stringProp name="HTTPSampler.domain"/>
  28913. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  28914. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  28915. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  28916. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  28917. <stringProp name="HTTPSampler.contentEncoding"/>
  28918. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  28919. <stringProp name="HTTPSampler.method">POST</stringProp>
  28920. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  28921. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  28922. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  28923. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  28924. <boolProp name="HTTPSampler.monitor">false</boolProp>
  28925. <stringProp name="HTTPSampler.embedded_url_re"/>
  28926. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_url_info_by_url_key.jmx</stringProp></HTTPSamplerProxy>
  28927. <hashTree>
  28928. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  28929. <collectionProp name="Asserion.test_strings">
  28930. <stringProp name="-1062388959">{"type":"CATEGORY","id":${category_id}}</stringProp>
  28931. </collectionProp>
  28932. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  28933. <boolProp name="Assertion.assume_success">false</boolProp>
  28934. <intProp name="Assertion.test_type">2</intProp>
  28935. </ResponseAssertion>
  28936. <hashTree/>
  28937. </hashTree>
  28938. </hashTree>
  28939. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Cms Page by id" enabled="true">
  28940. <intProp name="ThroughputController.style">1</intProp>
  28941. <boolProp name="ThroughputController.perThread">false</boolProp>
  28942. <intProp name="ThroughputController.maxThroughput">1</intProp>
  28943. <stringProp name="ThroughputController.percentThroughput">${graphqlGetCmsPageByIdPercentage}</stringProp>
  28944. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  28945. <hashTree>
  28946. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  28947. <stringProp name="script">
  28948. var tmpLabel = vars.get("testLabel")
  28949. if (tmpLabel) {
  28950. var testLabel = " (" + tmpLabel + ")"
  28951. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  28952. if (sampler.getName().indexOf(testLabel) == -1) {
  28953. sampler.setName(sampler.getName() + testLabel);
  28954. }
  28955. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  28956. sampler.setName("SetUp - " + sampler.getName());
  28957. }
  28958. } else {
  28959. testLabel = ""
  28960. }
  28961. </stringProp>
  28962. <stringProp name="scriptLanguage">javascript</stringProp>
  28963. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  28964. <hashTree/>
  28965. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  28966. <stringProp name="BeanShellSampler.query">
  28967. vars.put("testLabel", "GraphQL Get Cms Page by id");
  28968. </stringProp>
  28969. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28970. </BeanShellSampler>
  28971. <hashTree/>
  28972. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  28973. <collectionProp name="HeaderManager.headers">
  28974. <elementProp name="" elementType="Header">
  28975. <stringProp name="Header.name">Content-Type</stringProp>
  28976. <stringProp name="Header.value">application/json</stringProp>
  28977. </elementProp>
  28978. <elementProp name="" elementType="Header">
  28979. <stringProp name="Header.name">Accept</stringProp>
  28980. <stringProp name="Header.value">*/*</stringProp>
  28981. </elementProp>
  28982. </collectionProp>
  28983. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  28984. <hashTree/>
  28985. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  28986. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  28987. <stringProp name="BeanShellSampler.query">
  28988. import java.util.Random;
  28989. Random random = new Random();
  28990. if (${seedForRandom} &gt; 0) {
  28991. random.setSeed(${seedForRandom} + ${__threadNum});
  28992. }
  28993. vars.putObject("randomIntGenerator", random);
  28994. </stringProp>
  28995. <stringProp name="BeanShellSampler.filename"/>
  28996. <stringProp name="BeanShellSampler.parameters"/>
  28997. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  28998. </BeanShellSampler>
  28999. <hashTree/>
  29000. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare CMS Page" enabled="true">
  29001. <stringProp name="scriptLanguage">javascript</stringProp>
  29002. <stringProp name="parameters"/>
  29003. <stringProp name="filename"/>
  29004. <stringProp name="cacheKey"/>
  29005. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  29006. var cmsPages = props.get("cms_pages");
  29007. var number = random.nextInt(cmsPages.length);
  29008. vars.put("cms_page_id", cmsPages[number].id);
  29009. </stringProp>
  29010. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/prepare_cms_page.jmx</stringProp></JSR223Sampler>
  29011. <hashTree/>
  29012. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cms Page by id" enabled="true">
  29013. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29014. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29015. <collectionProp name="Arguments.arguments">
  29016. <elementProp name="" elementType="HTTPArgument">
  29017. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29018. <stringProp name="Argument.value">
  29019. {"query":"query getCmsPage($id: Int!, $onServer: Boolean!) {\n cmsPage(id: $id) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"id":${cms_page_id},"onServer":false},"operationName":"getCmsPage"}
  29020. </stringProp>
  29021. <stringProp name="Argument.metadata">=</stringProp>
  29022. </elementProp>
  29023. </collectionProp>
  29024. </elementProp>
  29025. <stringProp name="HTTPSampler.domain"/>
  29026. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29027. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29028. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29029. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29030. <stringProp name="HTTPSampler.contentEncoding"/>
  29031. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29032. <stringProp name="HTTPSampler.method">POST</stringProp>
  29033. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29034. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29035. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29036. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29037. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29038. <stringProp name="HTTPSampler.embedded_url_re"/>
  29039. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_get_cms_page_by_id.jmx</stringProp></HTTPSamplerProxy>
  29040. <hashTree>
  29041. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  29042. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  29043. <stringProp name="EXPECTED_VALUE">${cms_page_id}</stringProp>
  29044. <boolProp name="JSONVALIDATION">false</boolProp>
  29045. <boolProp name="EXPECT_NULL">false</boolProp>
  29046. <boolProp name="INVERT">false</boolProp>
  29047. <boolProp name="ISREGEX">false</boolProp>
  29048. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  29049. <hashTree/>
  29050. </hashTree>
  29051. </hashTree>
  29052. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Navigation Menu by category_id" enabled="true">
  29053. <intProp name="ThroughputController.style">1</intProp>
  29054. <boolProp name="ThroughputController.perThread">false</boolProp>
  29055. <intProp name="ThroughputController.maxThroughput">1</intProp>
  29056. <stringProp name="ThroughputController.percentThroughput">${graphqlGetNavigationMenuByCategoryIdPercentage}</stringProp>
  29057. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  29058. <hashTree>
  29059. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  29060. <stringProp name="script">
  29061. var tmpLabel = vars.get("testLabel")
  29062. if (tmpLabel) {
  29063. var testLabel = " (" + tmpLabel + ")"
  29064. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  29065. if (sampler.getName().indexOf(testLabel) == -1) {
  29066. sampler.setName(sampler.getName() + testLabel);
  29067. }
  29068. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  29069. sampler.setName("SetUp - " + sampler.getName());
  29070. }
  29071. } else {
  29072. testLabel = ""
  29073. }
  29074. </stringProp>
  29075. <stringProp name="scriptLanguage">javascript</stringProp>
  29076. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  29077. <hashTree/>
  29078. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  29079. <stringProp name="BeanShellSampler.query">
  29080. vars.put("testLabel", "GraphQL Get Navigation Menu by category_id");
  29081. </stringProp>
  29082. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29083. </BeanShellSampler>
  29084. <hashTree/>
  29085. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  29086. <collectionProp name="HeaderManager.headers">
  29087. <elementProp name="" elementType="Header">
  29088. <stringProp name="Header.name">Content-Type</stringProp>
  29089. <stringProp name="Header.value">application/json</stringProp>
  29090. </elementProp>
  29091. <elementProp name="" elementType="Header">
  29092. <stringProp name="Header.name">Accept</stringProp>
  29093. <stringProp name="Header.value">*/*</stringProp>
  29094. </elementProp>
  29095. </collectionProp>
  29096. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  29097. <hashTree/>
  29098. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  29099. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  29100. <stringProp name="BeanShellSampler.query">
  29101. import java.util.Random;
  29102. Random random = new Random();
  29103. if (${seedForRandom} &gt; 0) {
  29104. random.setSeed(${seedForRandom} + ${__threadNum});
  29105. }
  29106. vars.putObject("randomIntGenerator", random);
  29107. </stringProp>
  29108. <stringProp name="BeanShellSampler.filename"/>
  29109. <stringProp name="BeanShellSampler.parameters"/>
  29110. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29111. </BeanShellSampler>
  29112. <hashTree/>
  29113. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  29114. <stringProp name="scriptLanguage">javascript</stringProp>
  29115. <stringProp name="parameters"/>
  29116. <stringProp name="filename"/>
  29117. <stringProp name="cacheKey"/>
  29118. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  29119. var categories = props.get("categories");
  29120. number = random.nextInt(categories.length);
  29121. vars.put("category_url_key", categories[number].url_key);
  29122. vars.put("category_name", categories[number].name);
  29123. vars.put("category_id", categories[number].id);
  29124. vars.putObject("category", categories[number]);
  29125. </stringProp>
  29126. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  29127. <hashTree/>
  29128. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Navigation Menu by category_id" enabled="true">
  29129. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29130. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29131. <collectionProp name="Arguments.arguments">
  29132. <elementProp name="" elementType="HTTPArgument">
  29133. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29134. <stringProp name="Argument.value">{"query":"query navigationMenu($id: Int!) {\n category(id: $id) {\n id\n name\n product_count\n path\n children {\n id\n name\n position\n level\n url_key\n url_path\n product_count\n children_count\n path\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}","variables":{"id":${category_id}},"operationName":"navigationMenu"}</stringProp>
  29135. <stringProp name="Argument.metadata">=</stringProp>
  29136. </elementProp>
  29137. </collectionProp>
  29138. </elementProp>
  29139. <stringProp name="HTTPSampler.domain"/>
  29140. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29141. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29142. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29143. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29144. <stringProp name="HTTPSampler.contentEncoding"/>
  29145. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29146. <stringProp name="HTTPSampler.method">POST</stringProp>
  29147. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29148. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29149. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29150. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29151. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29152. <stringProp name="HTTPSampler.embedded_url_re"/>
  29153. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_navigation_menu_by_category_id.jmx</stringProp>
  29154. </HTTPSamplerProxy>
  29155. <hashTree>
  29156. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29157. <collectionProp name="Asserion.test_strings">
  29158. <stringProp name="1201352014">"id":${category_id},"name":"${category_name}","product_count"</stringProp>
  29159. </collectionProp>
  29160. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29161. <boolProp name="Assertion.assume_success">false</boolProp>
  29162. <intProp name="Assertion.test_type">2</intProp>
  29163. </ResponseAssertion>
  29164. <hashTree/>
  29165. </hashTree>
  29166. </hashTree>
  29167. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Create Empty Cart" enabled="true">
  29168. <intProp name="ThroughputController.style">1</intProp>
  29169. <boolProp name="ThroughputController.perThread">false</boolProp>
  29170. <intProp name="ThroughputController.maxThroughput">1</intProp>
  29171. <stringProp name="ThroughputController.percentThroughput">${graphqlCreateEmptyCartPercentage}</stringProp>
  29172. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  29173. <hashTree>
  29174. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  29175. <stringProp name="script">
  29176. var tmpLabel = vars.get("testLabel")
  29177. if (tmpLabel) {
  29178. var testLabel = " (" + tmpLabel + ")"
  29179. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  29180. if (sampler.getName().indexOf(testLabel) == -1) {
  29181. sampler.setName(sampler.getName() + testLabel);
  29182. }
  29183. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  29184. sampler.setName("SetUp - " + sampler.getName());
  29185. }
  29186. } else {
  29187. testLabel = ""
  29188. }
  29189. </stringProp>
  29190. <stringProp name="scriptLanguage">javascript</stringProp>
  29191. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  29192. <hashTree/>
  29193. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  29194. <stringProp name="BeanShellSampler.query">
  29195. vars.put("testLabel", "GraphQL Create Empty Cart");
  29196. </stringProp>
  29197. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29198. </BeanShellSampler>
  29199. <hashTree/>
  29200. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  29201. <collectionProp name="HeaderManager.headers">
  29202. <elementProp name="" elementType="Header">
  29203. <stringProp name="Header.name">Content-Type</stringProp>
  29204. <stringProp name="Header.value">application/json</stringProp>
  29205. </elementProp>
  29206. <elementProp name="" elementType="Header">
  29207. <stringProp name="Header.name">Accept</stringProp>
  29208. <stringProp name="Header.value">*/*</stringProp>
  29209. </elementProp>
  29210. </collectionProp>
  29211. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  29212. <hashTree/>
  29213. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  29214. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  29215. <stringProp name="BeanShellSampler.query">
  29216. import java.util.Random;
  29217. Random random = new Random();
  29218. if (${seedForRandom} &gt; 0) {
  29219. random.setSeed(${seedForRandom} + ${__threadNum});
  29220. }
  29221. vars.putObject("randomIntGenerator", random);
  29222. </stringProp>
  29223. <stringProp name="BeanShellSampler.filename"/>
  29224. <stringProp name="BeanShellSampler.parameters"/>
  29225. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29226. </BeanShellSampler>
  29227. <hashTree/>
  29228. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  29229. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29230. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29231. <collectionProp name="Arguments.arguments">
  29232. <elementProp name="" elementType="HTTPArgument">
  29233. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29234. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  29235. <stringProp name="Argument.metadata">=</stringProp>
  29236. </elementProp>
  29237. </collectionProp>
  29238. </elementProp>
  29239. <stringProp name="HTTPSampler.domain"/>
  29240. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29241. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29242. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29243. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29244. <stringProp name="HTTPSampler.contentEncoding"/>
  29245. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29246. <stringProp name="HTTPSampler.method">POST</stringProp>
  29247. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29248. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29249. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29250. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29251. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29252. <stringProp name="HTTPSampler.embedded_url_re"/>
  29253. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  29254. </HTTPSamplerProxy>
  29255. <hashTree>
  29256. <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">
  29257. <stringProp name="VAR">quote_id</stringProp>
  29258. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  29259. <stringProp name="DEFAULT"/>
  29260. <stringProp name="VARIABLE"/>
  29261. <stringProp name="SUBJECT">BODY</stringProp>
  29262. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  29263. <hashTree/>
  29264. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29265. <collectionProp name="Asserion.test_strings">
  29266. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  29267. </collectionProp>
  29268. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29269. <boolProp name="Assertion.assume_success">false</boolProp>
  29270. <intProp name="Assertion.test_type">2</intProp>
  29271. </ResponseAssertion>
  29272. <hashTree/>
  29273. </hashTree>
  29274. </hashTree>
  29275. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Empty Cart" enabled="true">
  29276. <intProp name="ThroughputController.style">1</intProp>
  29277. <boolProp name="ThroughputController.perThread">false</boolProp>
  29278. <intProp name="ThroughputController.maxThroughput">1</intProp>
  29279. <stringProp name="ThroughputController.percentThroughput">${graphqlGetEmptyCartPercentage}</stringProp>
  29280. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  29281. <hashTree>
  29282. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  29283. <stringProp name="script">
  29284. var tmpLabel = vars.get("testLabel")
  29285. if (tmpLabel) {
  29286. var testLabel = " (" + tmpLabel + ")"
  29287. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  29288. if (sampler.getName().indexOf(testLabel) == -1) {
  29289. sampler.setName(sampler.getName() + testLabel);
  29290. }
  29291. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  29292. sampler.setName("SetUp - " + sampler.getName());
  29293. }
  29294. } else {
  29295. testLabel = ""
  29296. }
  29297. </stringProp>
  29298. <stringProp name="scriptLanguage">javascript</stringProp>
  29299. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  29300. <hashTree/>
  29301. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  29302. <stringProp name="BeanShellSampler.query">
  29303. vars.put("testLabel", "GraphQL Get Empty Cart");
  29304. </stringProp>
  29305. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29306. </BeanShellSampler>
  29307. <hashTree/>
  29308. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  29309. <collectionProp name="HeaderManager.headers">
  29310. <elementProp name="" elementType="Header">
  29311. <stringProp name="Header.name">Content-Type</stringProp>
  29312. <stringProp name="Header.value">application/json</stringProp>
  29313. </elementProp>
  29314. <elementProp name="" elementType="Header">
  29315. <stringProp name="Header.name">Accept</stringProp>
  29316. <stringProp name="Header.value">*/*</stringProp>
  29317. </elementProp>
  29318. </collectionProp>
  29319. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  29320. <hashTree/>
  29321. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  29322. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  29323. <stringProp name="BeanShellSampler.query">
  29324. import java.util.Random;
  29325. Random random = new Random();
  29326. if (${seedForRandom} &gt; 0) {
  29327. random.setSeed(${seedForRandom} + ${__threadNum});
  29328. }
  29329. vars.putObject("randomIntGenerator", random);
  29330. </stringProp>
  29331. <stringProp name="BeanShellSampler.filename"/>
  29332. <stringProp name="BeanShellSampler.parameters"/>
  29333. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29334. </BeanShellSampler>
  29335. <hashTree/>
  29336. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  29337. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29338. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29339. <collectionProp name="Arguments.arguments">
  29340. <elementProp name="" elementType="HTTPArgument">
  29341. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29342. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  29343. <stringProp name="Argument.metadata">=</stringProp>
  29344. </elementProp>
  29345. </collectionProp>
  29346. </elementProp>
  29347. <stringProp name="HTTPSampler.domain"/>
  29348. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29349. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29350. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29351. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29352. <stringProp name="HTTPSampler.contentEncoding"/>
  29353. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29354. <stringProp name="HTTPSampler.method">POST</stringProp>
  29355. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29356. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29357. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29358. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29359. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29360. <stringProp name="HTTPSampler.embedded_url_re"/>
  29361. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  29362. </HTTPSamplerProxy>
  29363. <hashTree>
  29364. <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">
  29365. <stringProp name="VAR">quote_id</stringProp>
  29366. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  29367. <stringProp name="DEFAULT"/>
  29368. <stringProp name="VARIABLE"/>
  29369. <stringProp name="SUBJECT">BODY</stringProp>
  29370. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  29371. <hashTree/>
  29372. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29373. <collectionProp name="Asserion.test_strings">
  29374. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  29375. </collectionProp>
  29376. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29377. <boolProp name="Assertion.assume_success">false</boolProp>
  29378. <intProp name="Assertion.test_type">2</intProp>
  29379. </ResponseAssertion>
  29380. <hashTree/>
  29381. </hashTree>
  29382. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  29383. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29384. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29385. <collectionProp name="Arguments.arguments">
  29386. <elementProp name="" elementType="HTTPArgument">
  29387. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29388. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  29389. <stringProp name="Argument.metadata">=</stringProp>
  29390. </elementProp>
  29391. </collectionProp>
  29392. </elementProp>
  29393. <stringProp name="HTTPSampler.domain"/>
  29394. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29395. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29396. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29397. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29398. <stringProp name="HTTPSampler.contentEncoding"/>
  29399. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29400. <stringProp name="HTTPSampler.method">POST</stringProp>
  29401. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29402. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29403. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29404. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29405. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29406. <stringProp name="HTTPSampler.embedded_url_re"/>
  29407. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  29408. </HTTPSamplerProxy>
  29409. <hashTree>
  29410. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29411. <collectionProp name="Asserion.test_strings">
  29412. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  29413. </collectionProp>
  29414. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29415. <boolProp name="Assertion.assume_success">false</boolProp>
  29416. <intProp name="Assertion.test_type">8</intProp>
  29417. </ResponseAssertion>
  29418. <hashTree/>
  29419. </hashTree>
  29420. </hashTree>
  29421. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Set Shipping Address On Cart" enabled="true">
  29422. <intProp name="ThroughputController.style">1</intProp>
  29423. <boolProp name="ThroughputController.perThread">false</boolProp>
  29424. <intProp name="ThroughputController.maxThroughput">1</intProp>
  29425. <stringProp name="ThroughputController.percentThroughput">${graphqlSetShippingAddressOnCartPercentage}</stringProp>
  29426. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  29427. <hashTree>
  29428. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  29429. <stringProp name="script">
  29430. var tmpLabel = vars.get("testLabel")
  29431. if (tmpLabel) {
  29432. var testLabel = " (" + tmpLabel + ")"
  29433. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  29434. if (sampler.getName().indexOf(testLabel) == -1) {
  29435. sampler.setName(sampler.getName() + testLabel);
  29436. }
  29437. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  29438. sampler.setName("SetUp - " + sampler.getName());
  29439. }
  29440. } else {
  29441. testLabel = ""
  29442. }
  29443. </stringProp>
  29444. <stringProp name="scriptLanguage">javascript</stringProp>
  29445. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  29446. <hashTree/>
  29447. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  29448. <stringProp name="BeanShellSampler.query">
  29449. vars.put("testLabel", "GraphQL Set Shipping Address On Cart");
  29450. </stringProp>
  29451. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29452. </BeanShellSampler>
  29453. <hashTree/>
  29454. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  29455. <collectionProp name="HeaderManager.headers">
  29456. <elementProp name="" elementType="Header">
  29457. <stringProp name="Header.name">Content-Type</stringProp>
  29458. <stringProp name="Header.value">application/json</stringProp>
  29459. </elementProp>
  29460. <elementProp name="" elementType="Header">
  29461. <stringProp name="Header.name">Accept</stringProp>
  29462. <stringProp name="Header.value">*/*</stringProp>
  29463. </elementProp>
  29464. </collectionProp>
  29465. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  29466. <hashTree/>
  29467. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  29468. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  29469. <stringProp name="BeanShellSampler.query">
  29470. import java.util.Random;
  29471. Random random = new Random();
  29472. if (${seedForRandom} &gt; 0) {
  29473. random.setSeed(${seedForRandom} + ${__threadNum});
  29474. }
  29475. vars.putObject("randomIntGenerator", random);
  29476. </stringProp>
  29477. <stringProp name="BeanShellSampler.filename"/>
  29478. <stringProp name="BeanShellSampler.parameters"/>
  29479. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29480. </BeanShellSampler>
  29481. <hashTree/>
  29482. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  29483. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29484. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29485. <collectionProp name="Arguments.arguments">
  29486. <elementProp name="" elementType="HTTPArgument">
  29487. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29488. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  29489. <stringProp name="Argument.metadata">=</stringProp>
  29490. </elementProp>
  29491. </collectionProp>
  29492. </elementProp>
  29493. <stringProp name="HTTPSampler.domain"/>
  29494. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29495. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29496. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29497. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29498. <stringProp name="HTTPSampler.contentEncoding"/>
  29499. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29500. <stringProp name="HTTPSampler.method">POST</stringProp>
  29501. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29502. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29503. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29504. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29505. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29506. <stringProp name="HTTPSampler.embedded_url_re"/>
  29507. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  29508. </HTTPSamplerProxy>
  29509. <hashTree>
  29510. <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">
  29511. <stringProp name="VAR">quote_id</stringProp>
  29512. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  29513. <stringProp name="DEFAULT"/>
  29514. <stringProp name="VARIABLE"/>
  29515. <stringProp name="SUBJECT">BODY</stringProp>
  29516. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  29517. <hashTree/>
  29518. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29519. <collectionProp name="Asserion.test_strings">
  29520. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  29521. </collectionProp>
  29522. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29523. <boolProp name="Assertion.assume_success">false</boolProp>
  29524. <intProp name="Assertion.test_type">2</intProp>
  29525. </ResponseAssertion>
  29526. <hashTree/>
  29527. </hashTree>
  29528. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  29529. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29530. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29531. <collectionProp name="Arguments.arguments">
  29532. <elementProp name="" elementType="HTTPArgument">
  29533. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29534. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  29535. <stringProp name="Argument.metadata">=</stringProp>
  29536. </elementProp>
  29537. </collectionProp>
  29538. </elementProp>
  29539. <stringProp name="HTTPSampler.domain"/>
  29540. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29541. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29542. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29543. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29544. <stringProp name="HTTPSampler.contentEncoding"/>
  29545. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29546. <stringProp name="HTTPSampler.method">POST</stringProp>
  29547. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29548. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29549. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29550. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29551. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29552. <stringProp name="HTTPSampler.embedded_url_re"/>
  29553. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  29554. </HTTPSamplerProxy>
  29555. <hashTree>
  29556. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29557. <collectionProp name="Asserion.test_strings">
  29558. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  29559. </collectionProp>
  29560. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29561. <boolProp name="Assertion.assume_success">false</boolProp>
  29562. <intProp name="Assertion.test_type">8</intProp>
  29563. </ResponseAssertion>
  29564. <hashTree/>
  29565. </hashTree>
  29566. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Address On Cart" enabled="true">
  29567. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29568. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29569. <collectionProp name="Arguments.arguments">
  29570. <elementProp name="" elementType="HTTPArgument">
  29571. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29572. <stringProp name="Argument.value">{"query":"mutation {\n setShippingAddressesOnCart(\n input: {\n cart_id: \"${quote_id}\"\n shipping_addresses: [\n {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n ]\n }\n ) {\n cart {\n shipping_addresses {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  29573. <stringProp name="Argument.metadata">=</stringProp>
  29574. </elementProp>
  29575. </collectionProp>
  29576. </elementProp>
  29577. <stringProp name="HTTPSampler.domain"/>
  29578. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29579. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29580. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29581. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29582. <stringProp name="HTTPSampler.contentEncoding"/>
  29583. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29584. <stringProp name="HTTPSampler.method">POST</stringProp>
  29585. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29586. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29587. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29588. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29589. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29590. <stringProp name="HTTPSampler.embedded_url_re"/>
  29591. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_shipping_address_on_cart.jmx</stringProp>
  29592. </HTTPSamplerProxy>
  29593. <hashTree>
  29594. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29595. <collectionProp name="Asserion.test_strings">
  29596. <stringProp name="-1671866339">{"data":{"setShippingAddressesOnCart":{"cart":{"shipping_addresses":[{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}]}}}}</stringProp>
  29597. </collectionProp>
  29598. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29599. <boolProp name="Assertion.assume_success">false</boolProp>
  29600. <intProp name="Assertion.test_type">8</intProp>
  29601. </ResponseAssertion>
  29602. <hashTree/>
  29603. </hashTree>
  29604. </hashTree>
  29605. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Set Billing Address On Cart" enabled="true">
  29606. <intProp name="ThroughputController.style">1</intProp>
  29607. <boolProp name="ThroughputController.perThread">false</boolProp>
  29608. <intProp name="ThroughputController.maxThroughput">1</intProp>
  29609. <stringProp name="ThroughputController.percentThroughput">${graphqlSetBillingAddressOnCartPercentage}</stringProp>
  29610. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  29611. <hashTree>
  29612. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  29613. <stringProp name="script">
  29614. var tmpLabel = vars.get("testLabel")
  29615. if (tmpLabel) {
  29616. var testLabel = " (" + tmpLabel + ")"
  29617. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  29618. if (sampler.getName().indexOf(testLabel) == -1) {
  29619. sampler.setName(sampler.getName() + testLabel);
  29620. }
  29621. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  29622. sampler.setName("SetUp - " + sampler.getName());
  29623. }
  29624. } else {
  29625. testLabel = ""
  29626. }
  29627. </stringProp>
  29628. <stringProp name="scriptLanguage">javascript</stringProp>
  29629. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  29630. <hashTree/>
  29631. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  29632. <stringProp name="BeanShellSampler.query">
  29633. vars.put("testLabel", "GraphQL Set Billing Address On Cart");
  29634. </stringProp>
  29635. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29636. </BeanShellSampler>
  29637. <hashTree/>
  29638. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  29639. <collectionProp name="HeaderManager.headers">
  29640. <elementProp name="" elementType="Header">
  29641. <stringProp name="Header.name">Content-Type</stringProp>
  29642. <stringProp name="Header.value">application/json</stringProp>
  29643. </elementProp>
  29644. <elementProp name="" elementType="Header">
  29645. <stringProp name="Header.name">Accept</stringProp>
  29646. <stringProp name="Header.value">*/*</stringProp>
  29647. </elementProp>
  29648. </collectionProp>
  29649. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  29650. <hashTree/>
  29651. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  29652. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  29653. <stringProp name="BeanShellSampler.query">
  29654. import java.util.Random;
  29655. Random random = new Random();
  29656. if (${seedForRandom} &gt; 0) {
  29657. random.setSeed(${seedForRandom} + ${__threadNum});
  29658. }
  29659. vars.putObject("randomIntGenerator", random);
  29660. </stringProp>
  29661. <stringProp name="BeanShellSampler.filename"/>
  29662. <stringProp name="BeanShellSampler.parameters"/>
  29663. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29664. </BeanShellSampler>
  29665. <hashTree/>
  29666. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  29667. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29668. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29669. <collectionProp name="Arguments.arguments">
  29670. <elementProp name="" elementType="HTTPArgument">
  29671. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29672. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  29673. <stringProp name="Argument.metadata">=</stringProp>
  29674. </elementProp>
  29675. </collectionProp>
  29676. </elementProp>
  29677. <stringProp name="HTTPSampler.domain"/>
  29678. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29679. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29680. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29681. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29682. <stringProp name="HTTPSampler.contentEncoding"/>
  29683. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29684. <stringProp name="HTTPSampler.method">POST</stringProp>
  29685. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29686. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29687. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29688. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29689. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29690. <stringProp name="HTTPSampler.embedded_url_re"/>
  29691. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  29692. </HTTPSamplerProxy>
  29693. <hashTree>
  29694. <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">
  29695. <stringProp name="VAR">quote_id</stringProp>
  29696. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  29697. <stringProp name="DEFAULT"/>
  29698. <stringProp name="VARIABLE"/>
  29699. <stringProp name="SUBJECT">BODY</stringProp>
  29700. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  29701. <hashTree/>
  29702. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29703. <collectionProp name="Asserion.test_strings">
  29704. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  29705. </collectionProp>
  29706. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29707. <boolProp name="Assertion.assume_success">false</boolProp>
  29708. <intProp name="Assertion.test_type">2</intProp>
  29709. </ResponseAssertion>
  29710. <hashTree/>
  29711. </hashTree>
  29712. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  29713. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29714. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29715. <collectionProp name="Arguments.arguments">
  29716. <elementProp name="" elementType="HTTPArgument">
  29717. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29718. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  29719. <stringProp name="Argument.metadata">=</stringProp>
  29720. </elementProp>
  29721. </collectionProp>
  29722. </elementProp>
  29723. <stringProp name="HTTPSampler.domain"/>
  29724. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29725. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29726. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29727. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29728. <stringProp name="HTTPSampler.contentEncoding"/>
  29729. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29730. <stringProp name="HTTPSampler.method">POST</stringProp>
  29731. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29732. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29733. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29734. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29735. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29736. <stringProp name="HTTPSampler.embedded_url_re"/>
  29737. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  29738. </HTTPSamplerProxy>
  29739. <hashTree>
  29740. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29741. <collectionProp name="Asserion.test_strings">
  29742. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  29743. </collectionProp>
  29744. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29745. <boolProp name="Assertion.assume_success">false</boolProp>
  29746. <intProp name="Assertion.test_type">8</intProp>
  29747. </ResponseAssertion>
  29748. <hashTree/>
  29749. </hashTree>
  29750. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Billing Address On Cart" enabled="true">
  29751. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29752. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29753. <collectionProp name="Arguments.arguments">
  29754. <elementProp name="" elementType="HTTPArgument">
  29755. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29756. <stringProp name="Argument.value">{"query":"mutation {\n setBillingAddressOnCart(\n input: {\n cart_id: \"${quote_id}\"\n billing_address: {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n }\n ) {\n cart {\n billing_address {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  29757. <stringProp name="Argument.metadata">=</stringProp>
  29758. </elementProp>
  29759. </collectionProp>
  29760. </elementProp>
  29761. <stringProp name="HTTPSampler.domain"/>
  29762. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29763. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29764. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29765. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29766. <stringProp name="HTTPSampler.contentEncoding"/>
  29767. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29768. <stringProp name="HTTPSampler.method">POST</stringProp>
  29769. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29770. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29771. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29772. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29773. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29774. <stringProp name="HTTPSampler.embedded_url_re"/>
  29775. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_billing_address_on_cart.jmx</stringProp>
  29776. </HTTPSamplerProxy>
  29777. <hashTree>
  29778. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29779. <collectionProp name="Asserion.test_strings">
  29780. <stringProp name="1147076914">{"data":{"setBillingAddressOnCart":{"cart":{"billing_address":{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}}}}}</stringProp>
  29781. </collectionProp>
  29782. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29783. <boolProp name="Assertion.assume_success">false</boolProp>
  29784. <intProp name="Assertion.test_type">8</intProp>
  29785. </ResponseAssertion>
  29786. <hashTree/>
  29787. </hashTree>
  29788. </hashTree>
  29789. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Add Simple Product To Cart" enabled="true">
  29790. <intProp name="ThroughputController.style">1</intProp>
  29791. <boolProp name="ThroughputController.perThread">false</boolProp>
  29792. <intProp name="ThroughputController.maxThroughput">1</intProp>
  29793. <stringProp name="ThroughputController.percentThroughput">${graphqlAddSimpleProductToCartPercentage}</stringProp>
  29794. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  29795. <hashTree>
  29796. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  29797. <stringProp name="script">
  29798. var tmpLabel = vars.get("testLabel")
  29799. if (tmpLabel) {
  29800. var testLabel = " (" + tmpLabel + ")"
  29801. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  29802. if (sampler.getName().indexOf(testLabel) == -1) {
  29803. sampler.setName(sampler.getName() + testLabel);
  29804. }
  29805. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  29806. sampler.setName("SetUp - " + sampler.getName());
  29807. }
  29808. } else {
  29809. testLabel = ""
  29810. }
  29811. </stringProp>
  29812. <stringProp name="scriptLanguage">javascript</stringProp>
  29813. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  29814. <hashTree/>
  29815. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  29816. <stringProp name="BeanShellSampler.query">
  29817. vars.put("testLabel", "GraphQL Add Simple Product To Cart");
  29818. </stringProp>
  29819. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29820. </BeanShellSampler>
  29821. <hashTree/>
  29822. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  29823. <collectionProp name="HeaderManager.headers">
  29824. <elementProp name="" elementType="Header">
  29825. <stringProp name="Header.name">Content-Type</stringProp>
  29826. <stringProp name="Header.value">application/json</stringProp>
  29827. </elementProp>
  29828. <elementProp name="" elementType="Header">
  29829. <stringProp name="Header.name">Accept</stringProp>
  29830. <stringProp name="Header.value">*/*</stringProp>
  29831. </elementProp>
  29832. </collectionProp>
  29833. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  29834. <hashTree/>
  29835. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  29836. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  29837. <stringProp name="BeanShellSampler.query">
  29838. import java.util.Random;
  29839. Random random = new Random();
  29840. if (${seedForRandom} &gt; 0) {
  29841. random.setSeed(${seedForRandom} + ${__threadNum});
  29842. }
  29843. vars.putObject("randomIntGenerator", random);
  29844. </stringProp>
  29845. <stringProp name="BeanShellSampler.filename"/>
  29846. <stringProp name="BeanShellSampler.parameters"/>
  29847. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29848. </BeanShellSampler>
  29849. <hashTree/>
  29850. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  29851. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29852. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29853. <collectionProp name="Arguments.arguments">
  29854. <elementProp name="" elementType="HTTPArgument">
  29855. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29856. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  29857. <stringProp name="Argument.metadata">=</stringProp>
  29858. </elementProp>
  29859. </collectionProp>
  29860. </elementProp>
  29861. <stringProp name="HTTPSampler.domain"/>
  29862. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29863. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29864. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29865. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29866. <stringProp name="HTTPSampler.contentEncoding"/>
  29867. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29868. <stringProp name="HTTPSampler.method">POST</stringProp>
  29869. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29870. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29871. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29872. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29873. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29874. <stringProp name="HTTPSampler.embedded_url_re"/>
  29875. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  29876. </HTTPSamplerProxy>
  29877. <hashTree>
  29878. <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">
  29879. <stringProp name="VAR">quote_id</stringProp>
  29880. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  29881. <stringProp name="DEFAULT"/>
  29882. <stringProp name="VARIABLE"/>
  29883. <stringProp name="SUBJECT">BODY</stringProp>
  29884. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  29885. <hashTree/>
  29886. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29887. <collectionProp name="Asserion.test_strings">
  29888. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  29889. </collectionProp>
  29890. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29891. <boolProp name="Assertion.assume_success">false</boolProp>
  29892. <intProp name="Assertion.test_type">2</intProp>
  29893. </ResponseAssertion>
  29894. <hashTree/>
  29895. </hashTree>
  29896. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  29897. <stringProp name="BeanShellSampler.query">
  29898. import java.util.Random;
  29899. Random random = vars.getObject("randomIntGenerator");
  29900. number = random.nextInt(props.get("simple_products_list").size());
  29901. product = props.get("simple_products_list").get(number);
  29902. vars.put("product_url_key", product.get("url_key"));
  29903. vars.put("product_id", product.get("id"));
  29904. vars.put("product_name", product.get("title"));
  29905. vars.put("product_uenc", product.get("uenc"));
  29906. vars.put("product_sku", product.get("sku"));
  29907. </stringProp>
  29908. <stringProp name="BeanShellSampler.filename"/>
  29909. <stringProp name="BeanShellSampler.parameters"/>
  29910. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29911. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  29912. <hashTree/>
  29913. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Simple Product To Cart" enabled="true">
  29914. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  29915. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  29916. <collectionProp name="Arguments.arguments">
  29917. <elementProp name="" elementType="HTTPArgument">
  29918. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  29919. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  29920. <stringProp name="Argument.metadata">=</stringProp>
  29921. </elementProp>
  29922. </collectionProp>
  29923. </elementProp>
  29924. <stringProp name="HTTPSampler.domain"/>
  29925. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  29926. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  29927. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  29928. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  29929. <stringProp name="HTTPSampler.contentEncoding"/>
  29930. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  29931. <stringProp name="HTTPSampler.method">POST</stringProp>
  29932. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  29933. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  29934. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  29935. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  29936. <boolProp name="HTTPSampler.monitor">false</boolProp>
  29937. <stringProp name="HTTPSampler.embedded_url_re"/>
  29938. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  29939. </HTTPSamplerProxy>
  29940. <hashTree>
  29941. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  29942. <collectionProp name="Asserion.test_strings">
  29943. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  29944. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  29945. </collectionProp>
  29946. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  29947. <boolProp name="Assertion.assume_success">false</boolProp>
  29948. <intProp name="Assertion.test_type">2</intProp>
  29949. </ResponseAssertion>
  29950. <hashTree/>
  29951. </hashTree>
  29952. </hashTree>
  29953. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Add Configurable Product To Cart" enabled="true">
  29954. <intProp name="ThroughputController.style">1</intProp>
  29955. <boolProp name="ThroughputController.perThread">false</boolProp>
  29956. <intProp name="ThroughputController.maxThroughput">1</intProp>
  29957. <stringProp name="ThroughputController.percentThroughput">${graphqlAddConfigurableProductToCartPercentage}</stringProp>
  29958. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  29959. <hashTree>
  29960. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  29961. <stringProp name="script">
  29962. var tmpLabel = vars.get("testLabel")
  29963. if (tmpLabel) {
  29964. var testLabel = " (" + tmpLabel + ")"
  29965. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  29966. if (sampler.getName().indexOf(testLabel) == -1) {
  29967. sampler.setName(sampler.getName() + testLabel);
  29968. }
  29969. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  29970. sampler.setName("SetUp - " + sampler.getName());
  29971. }
  29972. } else {
  29973. testLabel = ""
  29974. }
  29975. </stringProp>
  29976. <stringProp name="scriptLanguage">javascript</stringProp>
  29977. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  29978. <hashTree/>
  29979. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  29980. <stringProp name="BeanShellSampler.query">
  29981. vars.put("testLabel", "GraphQL Add Configurable Product To Cart");
  29982. </stringProp>
  29983. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  29984. </BeanShellSampler>
  29985. <hashTree/>
  29986. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  29987. <collectionProp name="HeaderManager.headers">
  29988. <elementProp name="" elementType="Header">
  29989. <stringProp name="Header.name">Content-Type</stringProp>
  29990. <stringProp name="Header.value">application/json</stringProp>
  29991. </elementProp>
  29992. <elementProp name="" elementType="Header">
  29993. <stringProp name="Header.name">Accept</stringProp>
  29994. <stringProp name="Header.value">*/*</stringProp>
  29995. </elementProp>
  29996. </collectionProp>
  29997. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  29998. <hashTree/>
  29999. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  30000. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  30001. <stringProp name="BeanShellSampler.query">
  30002. import java.util.Random;
  30003. Random random = new Random();
  30004. if (${seedForRandom} &gt; 0) {
  30005. random.setSeed(${seedForRandom} + ${__threadNum});
  30006. }
  30007. vars.putObject("randomIntGenerator", random);
  30008. </stringProp>
  30009. <stringProp name="BeanShellSampler.filename"/>
  30010. <stringProp name="BeanShellSampler.parameters"/>
  30011. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30012. </BeanShellSampler>
  30013. <hashTree/>
  30014. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  30015. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30016. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30017. <collectionProp name="Arguments.arguments">
  30018. <elementProp name="" elementType="HTTPArgument">
  30019. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30020. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  30021. <stringProp name="Argument.metadata">=</stringProp>
  30022. </elementProp>
  30023. </collectionProp>
  30024. </elementProp>
  30025. <stringProp name="HTTPSampler.domain"/>
  30026. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30027. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30028. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30029. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30030. <stringProp name="HTTPSampler.contentEncoding"/>
  30031. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30032. <stringProp name="HTTPSampler.method">POST</stringProp>
  30033. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30034. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30035. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30036. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30037. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30038. <stringProp name="HTTPSampler.embedded_url_re"/>
  30039. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  30040. </HTTPSamplerProxy>
  30041. <hashTree>
  30042. <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">
  30043. <stringProp name="VAR">quote_id</stringProp>
  30044. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  30045. <stringProp name="DEFAULT"/>
  30046. <stringProp name="VARIABLE"/>
  30047. <stringProp name="SUBJECT">BODY</stringProp>
  30048. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30049. <hashTree/>
  30050. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30051. <collectionProp name="Asserion.test_strings">
  30052. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  30053. </collectionProp>
  30054. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30055. <boolProp name="Assertion.assume_success">false</boolProp>
  30056. <intProp name="Assertion.test_type">2</intProp>
  30057. </ResponseAssertion>
  30058. <hashTree/>
  30059. </hashTree>
  30060. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  30061. <stringProp name="BeanShellSampler.query">
  30062. import java.util.Random;
  30063. Random random = vars.getObject("randomIntGenerator");
  30064. number = random.nextInt(props.get("configurable_products_list").size());
  30065. product = props.get("configurable_products_list").get(number);
  30066. vars.put("product_url_key", product.get("url_key"));
  30067. vars.put("product_id", product.get("id"));
  30068. vars.put("product_name", product.get("title"));
  30069. vars.put("product_uenc", product.get("uenc"));
  30070. vars.put("product_sku", product.get("sku"));
  30071. </stringProp>
  30072. <stringProp name="BeanShellSampler.filename"/>
  30073. <stringProp name="BeanShellSampler.parameters"/>
  30074. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30075. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  30076. <hashTree/>
  30077. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  30078. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30079. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30080. <collectionProp name="Arguments.arguments">
  30081. <elementProp name="" elementType="HTTPArgument">
  30082. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30083. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  30084. <stringProp name="Argument.metadata">=</stringProp>
  30085. </elementProp>
  30086. </collectionProp>
  30087. </elementProp>
  30088. <stringProp name="HTTPSampler.domain"/>
  30089. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30090. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30091. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30092. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30093. <stringProp name="HTTPSampler.contentEncoding"/>
  30094. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30095. <stringProp name="HTTPSampler.method">POST</stringProp>
  30096. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30097. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30098. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30099. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30100. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30101. <stringProp name="HTTPSampler.embedded_url_re"/>
  30102. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  30103. </HTTPSamplerProxy>
  30104. <hashTree>
  30105. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30106. <collectionProp name="Asserion.test_strings">
  30107. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  30108. </collectionProp>
  30109. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30110. <boolProp name="Assertion.assume_success">false</boolProp>
  30111. <intProp name="Assertion.test_type">2</intProp>
  30112. </ResponseAssertion>
  30113. <hashTree/>
  30114. <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 Configurable Product option" enabled="true">
  30115. <stringProp name="VAR">product_option</stringProp>
  30116. <stringProp name="JSONPATH">$.data.products.items[0].variants[0].product.sku</stringProp>
  30117. <stringProp name="DEFAULT"/>
  30118. <stringProp name="VARIABLE"/>
  30119. <stringProp name="SUBJECT">BODY</stringProp>
  30120. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30121. <hashTree/>
  30122. </hashTree>
  30123. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Configurable Product To Cart" enabled="true">
  30124. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30125. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30126. <collectionProp name="Arguments.arguments">
  30127. <elementProp name="" elementType="HTTPArgument">
  30128. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30129. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30130. <stringProp name="Argument.metadata">=</stringProp>
  30131. </elementProp>
  30132. </collectionProp>
  30133. </elementProp>
  30134. <stringProp name="HTTPSampler.domain"/>
  30135. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30136. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30137. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30138. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30139. <stringProp name="HTTPSampler.contentEncoding"/>
  30140. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30141. <stringProp name="HTTPSampler.method">POST</stringProp>
  30142. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30143. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30144. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30145. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30146. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30147. <stringProp name="HTTPSampler.embedded_url_re"/>
  30148. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx</stringProp>
  30149. </HTTPSamplerProxy>
  30150. <hashTree>
  30151. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30152. <collectionProp name="Asserion.test_strings">
  30153. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  30154. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  30155. </collectionProp>
  30156. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30157. <boolProp name="Assertion.assume_success">false</boolProp>
  30158. <intProp name="Assertion.test_type">2</intProp>
  30159. </ResponseAssertion>
  30160. <hashTree/>
  30161. </hashTree>
  30162. </hashTree>
  30163. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Update Simple Product Qty In Cart" enabled="true">
  30164. <intProp name="ThroughputController.style">1</intProp>
  30165. <boolProp name="ThroughputController.perThread">false</boolProp>
  30166. <intProp name="ThroughputController.maxThroughput">1</intProp>
  30167. <stringProp name="ThroughputController.percentThroughput">${graphqlUpdateSimpleProductQtyInCartPercentage}</stringProp>
  30168. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  30169. <hashTree>
  30170. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  30171. <stringProp name="script">
  30172. var tmpLabel = vars.get("testLabel")
  30173. if (tmpLabel) {
  30174. var testLabel = " (" + tmpLabel + ")"
  30175. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  30176. if (sampler.getName().indexOf(testLabel) == -1) {
  30177. sampler.setName(sampler.getName() + testLabel);
  30178. }
  30179. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  30180. sampler.setName("SetUp - " + sampler.getName());
  30181. }
  30182. } else {
  30183. testLabel = ""
  30184. }
  30185. </stringProp>
  30186. <stringProp name="scriptLanguage">javascript</stringProp>
  30187. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  30188. <hashTree/>
  30189. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  30190. <stringProp name="BeanShellSampler.query">
  30191. vars.put("testLabel", "GraphQL Update Simple Product Qty In Cart");
  30192. </stringProp>
  30193. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30194. </BeanShellSampler>
  30195. <hashTree/>
  30196. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  30197. <collectionProp name="HeaderManager.headers">
  30198. <elementProp name="" elementType="Header">
  30199. <stringProp name="Header.name">Content-Type</stringProp>
  30200. <stringProp name="Header.value">application/json</stringProp>
  30201. </elementProp>
  30202. <elementProp name="" elementType="Header">
  30203. <stringProp name="Header.name">Accept</stringProp>
  30204. <stringProp name="Header.value">*/*</stringProp>
  30205. </elementProp>
  30206. </collectionProp>
  30207. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  30208. <hashTree/>
  30209. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  30210. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  30211. <stringProp name="BeanShellSampler.query">
  30212. import java.util.Random;
  30213. Random random = new Random();
  30214. if (${seedForRandom} &gt; 0) {
  30215. random.setSeed(${seedForRandom} + ${__threadNum});
  30216. }
  30217. vars.putObject("randomIntGenerator", random);
  30218. </stringProp>
  30219. <stringProp name="BeanShellSampler.filename"/>
  30220. <stringProp name="BeanShellSampler.parameters"/>
  30221. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30222. </BeanShellSampler>
  30223. <hashTree/>
  30224. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  30225. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30226. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30227. <collectionProp name="Arguments.arguments">
  30228. <elementProp name="" elementType="HTTPArgument">
  30229. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30230. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  30231. <stringProp name="Argument.metadata">=</stringProp>
  30232. </elementProp>
  30233. </collectionProp>
  30234. </elementProp>
  30235. <stringProp name="HTTPSampler.domain"/>
  30236. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30237. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30238. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30239. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30240. <stringProp name="HTTPSampler.contentEncoding"/>
  30241. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30242. <stringProp name="HTTPSampler.method">POST</stringProp>
  30243. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30244. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30245. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30246. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30247. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30248. <stringProp name="HTTPSampler.embedded_url_re"/>
  30249. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  30250. </HTTPSamplerProxy>
  30251. <hashTree>
  30252. <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">
  30253. <stringProp name="VAR">quote_id</stringProp>
  30254. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  30255. <stringProp name="DEFAULT"/>
  30256. <stringProp name="VARIABLE"/>
  30257. <stringProp name="SUBJECT">BODY</stringProp>
  30258. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30259. <hashTree/>
  30260. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30261. <collectionProp name="Asserion.test_strings">
  30262. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  30263. </collectionProp>
  30264. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30265. <boolProp name="Assertion.assume_success">false</boolProp>
  30266. <intProp name="Assertion.test_type">2</intProp>
  30267. </ResponseAssertion>
  30268. <hashTree/>
  30269. </hashTree>
  30270. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  30271. <stringProp name="BeanShellSampler.query">
  30272. import java.util.Random;
  30273. Random random = vars.getObject("randomIntGenerator");
  30274. number = random.nextInt(props.get("simple_products_list").size());
  30275. product = props.get("simple_products_list").get(number);
  30276. vars.put("product_url_key", product.get("url_key"));
  30277. vars.put("product_id", product.get("id"));
  30278. vars.put("product_name", product.get("title"));
  30279. vars.put("product_uenc", product.get("uenc"));
  30280. vars.put("product_sku", product.get("sku"));
  30281. </stringProp>
  30282. <stringProp name="BeanShellSampler.filename"/>
  30283. <stringProp name="BeanShellSampler.parameters"/>
  30284. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30285. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  30286. <hashTree/>
  30287. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Simple Product To Cart" enabled="true">
  30288. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30289. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30290. <collectionProp name="Arguments.arguments">
  30291. <elementProp name="" elementType="HTTPArgument">
  30292. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30293. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30294. <stringProp name="Argument.metadata">=</stringProp>
  30295. </elementProp>
  30296. </collectionProp>
  30297. </elementProp>
  30298. <stringProp name="HTTPSampler.domain"/>
  30299. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30300. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30301. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30302. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30303. <stringProp name="HTTPSampler.contentEncoding"/>
  30304. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30305. <stringProp name="HTTPSampler.method">POST</stringProp>
  30306. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30307. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30308. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30309. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30310. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30311. <stringProp name="HTTPSampler.embedded_url_re"/>
  30312. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  30313. </HTTPSamplerProxy>
  30314. <hashTree>
  30315. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30316. <collectionProp name="Asserion.test_strings">
  30317. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  30318. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  30319. </collectionProp>
  30320. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30321. <boolProp name="Assertion.assume_success">false</boolProp>
  30322. <intProp name="Assertion.test_type">2</intProp>
  30323. </ResponseAssertion>
  30324. <hashTree/>
  30325. </hashTree>
  30326. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart" enabled="true">
  30327. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30328. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30329. <collectionProp name="Arguments.arguments">
  30330. <elementProp name="" elementType="HTTPArgument">
  30331. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30332. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30333. <stringProp name="Argument.metadata">=</stringProp>
  30334. </elementProp>
  30335. </collectionProp>
  30336. </elementProp>
  30337. <stringProp name="HTTPSampler.domain"/>
  30338. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30339. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30340. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30341. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30342. <stringProp name="HTTPSampler.contentEncoding"/>
  30343. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30344. <stringProp name="HTTPSampler.method">POST</stringProp>
  30345. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30346. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30347. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30348. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30349. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30350. <stringProp name="HTTPSampler.embedded_url_re"/>
  30351. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_cart.jmx</stringProp>
  30352. </HTTPSamplerProxy>
  30353. <hashTree>
  30354. <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 item id" enabled="true">
  30355. <stringProp name="VAR">item_id</stringProp>
  30356. <stringProp name="JSONPATH">$.data.cart.items[0].id</stringProp>
  30357. <stringProp name="DEFAULT"/>
  30358. <stringProp name="VARIABLE"/>
  30359. <stringProp name="SUBJECT">BODY</stringProp>
  30360. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30361. <hashTree/>
  30362. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30363. <collectionProp name="Asserion.test_strings">
  30364. <stringProp name="-1486007127">{"data":{"cart":{"items":</stringProp>
  30365. </collectionProp>
  30366. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30367. <boolProp name="Assertion.assume_success">false</boolProp>
  30368. <intProp name="Assertion.test_type">2</intProp>
  30369. </ResponseAssertion>
  30370. <hashTree/>
  30371. </hashTree>
  30372. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update Simple Product qty In Cart" enabled="true">
  30373. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30374. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30375. <collectionProp name="Arguments.arguments">
  30376. <elementProp name="" elementType="HTTPArgument">
  30377. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30378. <stringProp name="Argument.value">{"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30379. <stringProp name="Argument.metadata">=</stringProp>
  30380. </elementProp>
  30381. </collectionProp>
  30382. </elementProp>
  30383. <stringProp name="HTTPSampler.domain"/>
  30384. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30385. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30386. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30387. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30388. <stringProp name="HTTPSampler.contentEncoding"/>
  30389. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30390. <stringProp name="HTTPSampler.method">POST</stringProp>
  30391. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30392. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30393. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30394. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30395. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30396. <stringProp name="HTTPSampler.embedded_url_re"/>
  30397. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/update_simple_product_qty_in_cart.jmx</stringProp>
  30398. </HTTPSamplerProxy>
  30399. <hashTree>
  30400. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30401. <collectionProp name="Asserion.test_strings">
  30402. <stringProp name="664196114">{"data":{"updateCartItems":{"cart":{"items":[{"id":"${item_id}","quantity":5}]}}}}</stringProp>
  30403. </collectionProp>
  30404. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30405. <boolProp name="Assertion.assume_success">false</boolProp>
  30406. <intProp name="Assertion.test_type">8</intProp>
  30407. </ResponseAssertion>
  30408. <hashTree/>
  30409. </hashTree>
  30410. </hashTree>
  30411. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Update Configurable Product Qty In Cart" enabled="true">
  30412. <intProp name="ThroughputController.style">1</intProp>
  30413. <boolProp name="ThroughputController.perThread">false</boolProp>
  30414. <intProp name="ThroughputController.maxThroughput">1</intProp>
  30415. <stringProp name="ThroughputController.percentThroughput">${graphqlUpdateConfigurableProductQtyInCartPercentage}</stringProp>
  30416. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  30417. <hashTree>
  30418. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  30419. <stringProp name="script">
  30420. var tmpLabel = vars.get("testLabel")
  30421. if (tmpLabel) {
  30422. var testLabel = " (" + tmpLabel + ")"
  30423. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  30424. if (sampler.getName().indexOf(testLabel) == -1) {
  30425. sampler.setName(sampler.getName() + testLabel);
  30426. }
  30427. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  30428. sampler.setName("SetUp - " + sampler.getName());
  30429. }
  30430. } else {
  30431. testLabel = ""
  30432. }
  30433. </stringProp>
  30434. <stringProp name="scriptLanguage">javascript</stringProp>
  30435. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  30436. <hashTree/>
  30437. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  30438. <stringProp name="BeanShellSampler.query">
  30439. vars.put("testLabel", "GraphQL Update Configurable Product Qty In Cart");
  30440. </stringProp>
  30441. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30442. </BeanShellSampler>
  30443. <hashTree/>
  30444. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  30445. <collectionProp name="HeaderManager.headers">
  30446. <elementProp name="" elementType="Header">
  30447. <stringProp name="Header.name">Content-Type</stringProp>
  30448. <stringProp name="Header.value">application/json</stringProp>
  30449. </elementProp>
  30450. <elementProp name="" elementType="Header">
  30451. <stringProp name="Header.name">Accept</stringProp>
  30452. <stringProp name="Header.value">*/*</stringProp>
  30453. </elementProp>
  30454. </collectionProp>
  30455. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  30456. <hashTree/>
  30457. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  30458. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  30459. <stringProp name="BeanShellSampler.query">
  30460. import java.util.Random;
  30461. Random random = new Random();
  30462. if (${seedForRandom} &gt; 0) {
  30463. random.setSeed(${seedForRandom} + ${__threadNum});
  30464. }
  30465. vars.putObject("randomIntGenerator", random);
  30466. </stringProp>
  30467. <stringProp name="BeanShellSampler.filename"/>
  30468. <stringProp name="BeanShellSampler.parameters"/>
  30469. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30470. </BeanShellSampler>
  30471. <hashTree/>
  30472. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  30473. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30474. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30475. <collectionProp name="Arguments.arguments">
  30476. <elementProp name="" elementType="HTTPArgument">
  30477. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30478. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  30479. <stringProp name="Argument.metadata">=</stringProp>
  30480. </elementProp>
  30481. </collectionProp>
  30482. </elementProp>
  30483. <stringProp name="HTTPSampler.domain"/>
  30484. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30485. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30486. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30487. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30488. <stringProp name="HTTPSampler.contentEncoding"/>
  30489. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30490. <stringProp name="HTTPSampler.method">POST</stringProp>
  30491. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30492. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30493. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30494. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30495. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30496. <stringProp name="HTTPSampler.embedded_url_re"/>
  30497. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  30498. </HTTPSamplerProxy>
  30499. <hashTree>
  30500. <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">
  30501. <stringProp name="VAR">quote_id</stringProp>
  30502. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  30503. <stringProp name="DEFAULT"/>
  30504. <stringProp name="VARIABLE"/>
  30505. <stringProp name="SUBJECT">BODY</stringProp>
  30506. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30507. <hashTree/>
  30508. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30509. <collectionProp name="Asserion.test_strings">
  30510. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  30511. </collectionProp>
  30512. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30513. <boolProp name="Assertion.assume_success">false</boolProp>
  30514. <intProp name="Assertion.test_type">2</intProp>
  30515. </ResponseAssertion>
  30516. <hashTree/>
  30517. </hashTree>
  30518. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  30519. <stringProp name="BeanShellSampler.query">
  30520. import java.util.Random;
  30521. Random random = vars.getObject("randomIntGenerator");
  30522. number = random.nextInt(props.get("configurable_products_list").size());
  30523. product = props.get("configurable_products_list").get(number);
  30524. vars.put("product_url_key", product.get("url_key"));
  30525. vars.put("product_id", product.get("id"));
  30526. vars.put("product_name", product.get("title"));
  30527. vars.put("product_uenc", product.get("uenc"));
  30528. vars.put("product_sku", product.get("sku"));
  30529. </stringProp>
  30530. <stringProp name="BeanShellSampler.filename"/>
  30531. <stringProp name="BeanShellSampler.parameters"/>
  30532. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30533. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  30534. <hashTree/>
  30535. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  30536. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30537. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30538. <collectionProp name="Arguments.arguments">
  30539. <elementProp name="" elementType="HTTPArgument">
  30540. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30541. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  30542. <stringProp name="Argument.metadata">=</stringProp>
  30543. </elementProp>
  30544. </collectionProp>
  30545. </elementProp>
  30546. <stringProp name="HTTPSampler.domain"/>
  30547. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30548. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30549. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30550. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30551. <stringProp name="HTTPSampler.contentEncoding"/>
  30552. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30553. <stringProp name="HTTPSampler.method">POST</stringProp>
  30554. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30555. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30556. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30557. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30558. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30559. <stringProp name="HTTPSampler.embedded_url_re"/>
  30560. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  30561. </HTTPSamplerProxy>
  30562. <hashTree>
  30563. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30564. <collectionProp name="Asserion.test_strings">
  30565. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  30566. </collectionProp>
  30567. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30568. <boolProp name="Assertion.assume_success">false</boolProp>
  30569. <intProp name="Assertion.test_type">2</intProp>
  30570. </ResponseAssertion>
  30571. <hashTree/>
  30572. <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 Configurable Product option" enabled="true">
  30573. <stringProp name="VAR">product_option</stringProp>
  30574. <stringProp name="JSONPATH">$.data.products.items[0].variants[0].product.sku</stringProp>
  30575. <stringProp name="DEFAULT"/>
  30576. <stringProp name="VARIABLE"/>
  30577. <stringProp name="SUBJECT">BODY</stringProp>
  30578. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30579. <hashTree/>
  30580. </hashTree>
  30581. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Configurable Product To Cart" enabled="true">
  30582. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30583. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30584. <collectionProp name="Arguments.arguments">
  30585. <elementProp name="" elementType="HTTPArgument">
  30586. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30587. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30588. <stringProp name="Argument.metadata">=</stringProp>
  30589. </elementProp>
  30590. </collectionProp>
  30591. </elementProp>
  30592. <stringProp name="HTTPSampler.domain"/>
  30593. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30594. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30595. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30596. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30597. <stringProp name="HTTPSampler.contentEncoding"/>
  30598. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30599. <stringProp name="HTTPSampler.method">POST</stringProp>
  30600. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30601. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30602. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30603. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30604. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30605. <stringProp name="HTTPSampler.embedded_url_re"/>
  30606. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx</stringProp>
  30607. </HTTPSamplerProxy>
  30608. <hashTree>
  30609. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30610. <collectionProp name="Asserion.test_strings">
  30611. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  30612. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  30613. </collectionProp>
  30614. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30615. <boolProp name="Assertion.assume_success">false</boolProp>
  30616. <intProp name="Assertion.test_type">2</intProp>
  30617. </ResponseAssertion>
  30618. <hashTree/>
  30619. </hashTree>
  30620. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart" enabled="true">
  30621. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30622. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30623. <collectionProp name="Arguments.arguments">
  30624. <elementProp name="" elementType="HTTPArgument">
  30625. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30626. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30627. <stringProp name="Argument.metadata">=</stringProp>
  30628. </elementProp>
  30629. </collectionProp>
  30630. </elementProp>
  30631. <stringProp name="HTTPSampler.domain"/>
  30632. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30633. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30634. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30635. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30636. <stringProp name="HTTPSampler.contentEncoding"/>
  30637. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30638. <stringProp name="HTTPSampler.method">POST</stringProp>
  30639. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30640. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30641. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30642. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30643. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30644. <stringProp name="HTTPSampler.embedded_url_re"/>
  30645. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_cart.jmx</stringProp>
  30646. </HTTPSamplerProxy>
  30647. <hashTree>
  30648. <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 item id" enabled="true">
  30649. <stringProp name="VAR">item_id</stringProp>
  30650. <stringProp name="JSONPATH">$.data.cart.items[0].id</stringProp>
  30651. <stringProp name="DEFAULT"/>
  30652. <stringProp name="VARIABLE"/>
  30653. <stringProp name="SUBJECT">BODY</stringProp>
  30654. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30655. <hashTree/>
  30656. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30657. <collectionProp name="Asserion.test_strings">
  30658. <stringProp name="-1486007127">{"data":{"cart":{"items":</stringProp>
  30659. </collectionProp>
  30660. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30661. <boolProp name="Assertion.assume_success">false</boolProp>
  30662. <intProp name="Assertion.test_type">2</intProp>
  30663. </ResponseAssertion>
  30664. <hashTree/>
  30665. </hashTree>
  30666. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update Configurable Product qty In Cart" enabled="true">
  30667. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30668. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30669. <collectionProp name="Arguments.arguments">
  30670. <elementProp name="" elementType="HTTPArgument">
  30671. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30672. <stringProp name="Argument.value">{"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30673. <stringProp name="Argument.metadata">=</stringProp>
  30674. </elementProp>
  30675. </collectionProp>
  30676. </elementProp>
  30677. <stringProp name="HTTPSampler.domain"/>
  30678. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30679. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30680. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30681. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30682. <stringProp name="HTTPSampler.contentEncoding"/>
  30683. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30684. <stringProp name="HTTPSampler.method">POST</stringProp>
  30685. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30686. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30687. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30688. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30689. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30690. <stringProp name="HTTPSampler.embedded_url_re"/>
  30691. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/update_configurable_product_qty_in_cart.jmx</stringProp>
  30692. </HTTPSamplerProxy>
  30693. <hashTree>
  30694. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30695. <collectionProp name="Asserion.test_strings">
  30696. <stringProp name="664196114">{"data":{"updateCartItems":{"cart":{"items":[{"id":"${item_id}","quantity":5}]}}}}</stringProp>
  30697. </collectionProp>
  30698. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30699. <boolProp name="Assertion.assume_success">false</boolProp>
  30700. <intProp name="Assertion.test_type">8</intProp>
  30701. </ResponseAssertion>
  30702. <hashTree/>
  30703. </hashTree>
  30704. </hashTree>
  30705. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Update Simple Product Qty In Cart with Prices" enabled="true">
  30706. <intProp name="ThroughputController.style">1</intProp>
  30707. <boolProp name="ThroughputController.perThread">false</boolProp>
  30708. <intProp name="ThroughputController.maxThroughput">1</intProp>
  30709. <stringProp name="ThroughputController.percentThroughput">${graphqlUpdateSimpleProductQtyInCartWithPricesPercentage}</stringProp>
  30710. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  30711. <hashTree>
  30712. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  30713. <stringProp name="script">
  30714. var tmpLabel = vars.get("testLabel")
  30715. if (tmpLabel) {
  30716. var testLabel = " (" + tmpLabel + ")"
  30717. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  30718. if (sampler.getName().indexOf(testLabel) == -1) {
  30719. sampler.setName(sampler.getName() + testLabel);
  30720. }
  30721. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  30722. sampler.setName("SetUp - " + sampler.getName());
  30723. }
  30724. } else {
  30725. testLabel = ""
  30726. }
  30727. </stringProp>
  30728. <stringProp name="scriptLanguage">javascript</stringProp>
  30729. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  30730. <hashTree/>
  30731. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  30732. <stringProp name="BeanShellSampler.query">
  30733. vars.put("testLabel", "GraphQL Update Simple Product Qty In Cart with Prices");
  30734. </stringProp>
  30735. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30736. </BeanShellSampler>
  30737. <hashTree/>
  30738. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  30739. <collectionProp name="HeaderManager.headers">
  30740. <elementProp name="" elementType="Header">
  30741. <stringProp name="Header.name">Content-Type</stringProp>
  30742. <stringProp name="Header.value">application/json</stringProp>
  30743. </elementProp>
  30744. <elementProp name="" elementType="Header">
  30745. <stringProp name="Header.name">Accept</stringProp>
  30746. <stringProp name="Header.value">*/*</stringProp>
  30747. </elementProp>
  30748. </collectionProp>
  30749. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  30750. <hashTree/>
  30751. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  30752. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  30753. <stringProp name="BeanShellSampler.query">
  30754. import java.util.Random;
  30755. Random random = new Random();
  30756. if (${seedForRandom} &gt; 0) {
  30757. random.setSeed(${seedForRandom} + ${__threadNum});
  30758. }
  30759. vars.putObject("randomIntGenerator", random);
  30760. </stringProp>
  30761. <stringProp name="BeanShellSampler.filename"/>
  30762. <stringProp name="BeanShellSampler.parameters"/>
  30763. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30764. </BeanShellSampler>
  30765. <hashTree/>
  30766. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  30767. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30768. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30769. <collectionProp name="Arguments.arguments">
  30770. <elementProp name="" elementType="HTTPArgument">
  30771. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30772. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  30773. <stringProp name="Argument.metadata">=</stringProp>
  30774. </elementProp>
  30775. </collectionProp>
  30776. </elementProp>
  30777. <stringProp name="HTTPSampler.domain"/>
  30778. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30779. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30780. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30781. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30782. <stringProp name="HTTPSampler.contentEncoding"/>
  30783. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30784. <stringProp name="HTTPSampler.method">POST</stringProp>
  30785. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30786. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30787. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30788. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30789. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30790. <stringProp name="HTTPSampler.embedded_url_re"/>
  30791. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  30792. </HTTPSamplerProxy>
  30793. <hashTree>
  30794. <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">
  30795. <stringProp name="VAR">quote_id</stringProp>
  30796. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  30797. <stringProp name="DEFAULT"/>
  30798. <stringProp name="VARIABLE"/>
  30799. <stringProp name="SUBJECT">BODY</stringProp>
  30800. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30801. <hashTree/>
  30802. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30803. <collectionProp name="Asserion.test_strings">
  30804. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  30805. </collectionProp>
  30806. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30807. <boolProp name="Assertion.assume_success">false</boolProp>
  30808. <intProp name="Assertion.test_type">2</intProp>
  30809. </ResponseAssertion>
  30810. <hashTree/>
  30811. </hashTree>
  30812. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  30813. <stringProp name="BeanShellSampler.query">
  30814. import java.util.Random;
  30815. Random random = vars.getObject("randomIntGenerator");
  30816. number = random.nextInt(props.get("simple_products_list").size());
  30817. product = props.get("simple_products_list").get(number);
  30818. vars.put("product_url_key", product.get("url_key"));
  30819. vars.put("product_id", product.get("id"));
  30820. vars.put("product_name", product.get("title"));
  30821. vars.put("product_uenc", product.get("uenc"));
  30822. vars.put("product_sku", product.get("sku"));
  30823. </stringProp>
  30824. <stringProp name="BeanShellSampler.filename"/>
  30825. <stringProp name="BeanShellSampler.parameters"/>
  30826. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30827. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  30828. <hashTree/>
  30829. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Simple Product To Cart With Prices" enabled="true">
  30830. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30831. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30832. <collectionProp name="Arguments.arguments">
  30833. <elementProp name="" elementType="HTTPArgument">
  30834. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30835. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}\n","variables":null}</stringProp>
  30836. <stringProp name="Argument.metadata">=</stringProp>
  30837. </elementProp>
  30838. </collectionProp>
  30839. </elementProp>
  30840. <stringProp name="HTTPSampler.domain"/>
  30841. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30842. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30843. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30844. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30845. <stringProp name="HTTPSampler.contentEncoding"/>
  30846. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30847. <stringProp name="HTTPSampler.method">POST</stringProp>
  30848. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30849. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30850. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30851. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30852. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30853. <stringProp name="HTTPSampler.embedded_url_re"/>
  30854. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart_with_prices.jmx</stringProp>
  30855. </HTTPSamplerProxy>
  30856. <hashTree>
  30857. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30858. <collectionProp name="Asserion.test_strings">
  30859. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  30860. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  30861. </collectionProp>
  30862. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30863. <boolProp name="Assertion.assume_success">false</boolProp>
  30864. <intProp name="Assertion.test_type">2</intProp>
  30865. </ResponseAssertion>
  30866. <hashTree/>
  30867. </hashTree>
  30868. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart With Prices" enabled="true">
  30869. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30870. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30871. <collectionProp name="Arguments.arguments">
  30872. <elementProp name="" elementType="HTTPArgument">
  30873. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30874. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n row_total_including_tax{\n value\n }\n total_item_discount{value}\n discounts{\n amount{value}\n label\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  30875. <stringProp name="Argument.metadata">=</stringProp>
  30876. </elementProp>
  30877. </collectionProp>
  30878. </elementProp>
  30879. <stringProp name="HTTPSampler.domain"/>
  30880. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30881. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30882. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30883. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30884. <stringProp name="HTTPSampler.contentEncoding"/>
  30885. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30886. <stringProp name="HTTPSampler.method">POST</stringProp>
  30887. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30888. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30889. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30890. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30891. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30892. <stringProp name="HTTPSampler.embedded_url_re"/>
  30893. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_cart_with_prices.jmx</stringProp>
  30894. </HTTPSamplerProxy>
  30895. <hashTree>
  30896. <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 item id" enabled="true">
  30897. <stringProp name="VAR">item_id</stringProp>
  30898. <stringProp name="JSONPATH">$.data.cart.items[0].id</stringProp>
  30899. <stringProp name="DEFAULT"/>
  30900. <stringProp name="VARIABLE"/>
  30901. <stringProp name="SUBJECT">BODY</stringProp>
  30902. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  30903. <hashTree/>
  30904. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30905. <collectionProp name="Asserion.test_strings">
  30906. <stringProp name="-1486007127">{"data":{"cart":{"items":</stringProp>
  30907. </collectionProp>
  30908. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30909. <boolProp name="Assertion.assume_success">false</boolProp>
  30910. <intProp name="Assertion.test_type">2</intProp>
  30911. </ResponseAssertion>
  30912. <hashTree/>
  30913. </hashTree>
  30914. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update Simple Product qty In Cart With Prices" enabled="true">
  30915. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  30916. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  30917. <collectionProp name="Arguments.arguments">
  30918. <elementProp name="" elementType="HTTPArgument">
  30919. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  30920. <stringProp name="Argument.value">{"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  30921. <stringProp name="Argument.metadata">=</stringProp>
  30922. </elementProp>
  30923. </collectionProp>
  30924. </elementProp>
  30925. <stringProp name="HTTPSampler.domain"/>
  30926. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  30927. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  30928. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  30929. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  30930. <stringProp name="HTTPSampler.contentEncoding"/>
  30931. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  30932. <stringProp name="HTTPSampler.method">POST</stringProp>
  30933. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  30934. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  30935. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  30936. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  30937. <boolProp name="HTTPSampler.monitor">false</boolProp>
  30938. <stringProp name="HTTPSampler.embedded_url_re"/>
  30939. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/update_simple_product_qty_in_cart_with_prices.jmx</stringProp>
  30940. </HTTPSamplerProxy>
  30941. <hashTree>
  30942. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  30943. <collectionProp name="Asserion.test_strings">
  30944. <stringProp name="1421843282">"quantity":5</stringProp>
  30945. <stringProp name="675049292">"id":"${item_id}"</stringProp>
  30946. </collectionProp>
  30947. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  30948. <boolProp name="Assertion.assume_success">false</boolProp>
  30949. <intProp name="Assertion.test_type">2</intProp>
  30950. </ResponseAssertion>
  30951. <hashTree/>
  30952. </hashTree>
  30953. </hashTree>
  30954. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Update Configurable Product Qty In Cart with Prices" enabled="true">
  30955. <intProp name="ThroughputController.style">1</intProp>
  30956. <boolProp name="ThroughputController.perThread">false</boolProp>
  30957. <intProp name="ThroughputController.maxThroughput">1</intProp>
  30958. <stringProp name="ThroughputController.percentThroughput">${graphqlUpdateConfigurableProductQtyInCartWithPricesPercentage}</stringProp>
  30959. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  30960. <hashTree>
  30961. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  30962. <stringProp name="script">
  30963. var tmpLabel = vars.get("testLabel")
  30964. if (tmpLabel) {
  30965. var testLabel = " (" + tmpLabel + ")"
  30966. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  30967. if (sampler.getName().indexOf(testLabel) == -1) {
  30968. sampler.setName(sampler.getName() + testLabel);
  30969. }
  30970. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  30971. sampler.setName("SetUp - " + sampler.getName());
  30972. }
  30973. } else {
  30974. testLabel = ""
  30975. }
  30976. </stringProp>
  30977. <stringProp name="scriptLanguage">javascript</stringProp>
  30978. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  30979. <hashTree/>
  30980. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  30981. <stringProp name="BeanShellSampler.query">
  30982. vars.put("testLabel", "GraphQL Update Configurable Product Qty In Cart with Prices");
  30983. </stringProp>
  30984. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  30985. </BeanShellSampler>
  30986. <hashTree/>
  30987. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  30988. <collectionProp name="HeaderManager.headers">
  30989. <elementProp name="" elementType="Header">
  30990. <stringProp name="Header.name">Content-Type</stringProp>
  30991. <stringProp name="Header.value">application/json</stringProp>
  30992. </elementProp>
  30993. <elementProp name="" elementType="Header">
  30994. <stringProp name="Header.name">Accept</stringProp>
  30995. <stringProp name="Header.value">*/*</stringProp>
  30996. </elementProp>
  30997. </collectionProp>
  30998. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  30999. <hashTree/>
  31000. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  31001. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  31002. <stringProp name="BeanShellSampler.query">
  31003. import java.util.Random;
  31004. Random random = new Random();
  31005. if (${seedForRandom} &gt; 0) {
  31006. random.setSeed(${seedForRandom} + ${__threadNum});
  31007. }
  31008. vars.putObject("randomIntGenerator", random);
  31009. </stringProp>
  31010. <stringProp name="BeanShellSampler.filename"/>
  31011. <stringProp name="BeanShellSampler.parameters"/>
  31012. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31013. </BeanShellSampler>
  31014. <hashTree/>
  31015. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  31016. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31017. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31018. <collectionProp name="Arguments.arguments">
  31019. <elementProp name="" elementType="HTTPArgument">
  31020. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31021. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  31022. <stringProp name="Argument.metadata">=</stringProp>
  31023. </elementProp>
  31024. </collectionProp>
  31025. </elementProp>
  31026. <stringProp name="HTTPSampler.domain"/>
  31027. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31028. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31029. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31030. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31031. <stringProp name="HTTPSampler.contentEncoding"/>
  31032. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31033. <stringProp name="HTTPSampler.method">POST</stringProp>
  31034. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31035. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31036. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31037. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31038. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31039. <stringProp name="HTTPSampler.embedded_url_re"/>
  31040. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  31041. </HTTPSamplerProxy>
  31042. <hashTree>
  31043. <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">
  31044. <stringProp name="VAR">quote_id</stringProp>
  31045. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  31046. <stringProp name="DEFAULT"/>
  31047. <stringProp name="VARIABLE"/>
  31048. <stringProp name="SUBJECT">BODY</stringProp>
  31049. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31050. <hashTree/>
  31051. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31052. <collectionProp name="Asserion.test_strings">
  31053. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  31054. </collectionProp>
  31055. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31056. <boolProp name="Assertion.assume_success">false</boolProp>
  31057. <intProp name="Assertion.test_type">2</intProp>
  31058. </ResponseAssertion>
  31059. <hashTree/>
  31060. </hashTree>
  31061. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  31062. <stringProp name="BeanShellSampler.query">
  31063. import java.util.Random;
  31064. Random random = vars.getObject("randomIntGenerator");
  31065. number = random.nextInt(props.get("configurable_products_list").size());
  31066. product = props.get("configurable_products_list").get(number);
  31067. vars.put("product_url_key", product.get("url_key"));
  31068. vars.put("product_id", product.get("id"));
  31069. vars.put("product_name", product.get("title"));
  31070. vars.put("product_uenc", product.get("uenc"));
  31071. vars.put("product_sku", product.get("sku"));
  31072. </stringProp>
  31073. <stringProp name="BeanShellSampler.filename"/>
  31074. <stringProp name="BeanShellSampler.parameters"/>
  31075. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31076. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  31077. <hashTree/>
  31078. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  31079. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31080. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31081. <collectionProp name="Arguments.arguments">
  31082. <elementProp name="" elementType="HTTPArgument">
  31083. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31084. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  31085. <stringProp name="Argument.metadata">=</stringProp>
  31086. </elementProp>
  31087. </collectionProp>
  31088. </elementProp>
  31089. <stringProp name="HTTPSampler.domain"/>
  31090. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31091. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31092. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31093. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31094. <stringProp name="HTTPSampler.contentEncoding"/>
  31095. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31096. <stringProp name="HTTPSampler.method">POST</stringProp>
  31097. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31098. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31099. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31100. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31101. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31102. <stringProp name="HTTPSampler.embedded_url_re"/>
  31103. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  31104. </HTTPSamplerProxy>
  31105. <hashTree>
  31106. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31107. <collectionProp name="Asserion.test_strings">
  31108. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  31109. </collectionProp>
  31110. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31111. <boolProp name="Assertion.assume_success">false</boolProp>
  31112. <intProp name="Assertion.test_type">2</intProp>
  31113. </ResponseAssertion>
  31114. <hashTree/>
  31115. <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 Configurable Product option" enabled="true">
  31116. <stringProp name="VAR">product_option</stringProp>
  31117. <stringProp name="JSONPATH">$.data.products.items[0].variants[0].product.sku</stringProp>
  31118. <stringProp name="DEFAULT"/>
  31119. <stringProp name="VARIABLE"/>
  31120. <stringProp name="SUBJECT">BODY</stringProp>
  31121. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31122. <hashTree/>
  31123. </hashTree>
  31124. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Configurable Product To Cart With Prices" enabled="true">
  31125. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31126. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31127. <collectionProp name="Arguments.arguments">
  31128. <elementProp name="" elementType="HTTPArgument">
  31129. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31130. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}\n","variables":null}</stringProp>
  31131. <stringProp name="Argument.metadata">=</stringProp>
  31132. </elementProp>
  31133. </collectionProp>
  31134. </elementProp>
  31135. <stringProp name="HTTPSampler.domain"/>
  31136. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31137. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31138. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31139. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31140. <stringProp name="HTTPSampler.contentEncoding"/>
  31141. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31142. <stringProp name="HTTPSampler.method">POST</stringProp>
  31143. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31144. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31145. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31146. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31147. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31148. <stringProp name="HTTPSampler.embedded_url_re"/>
  31149. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart_with_prices.jmx</stringProp>
  31150. </HTTPSamplerProxy>
  31151. <hashTree>
  31152. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31153. <collectionProp name="Asserion.test_strings">
  31154. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  31155. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  31156. </collectionProp>
  31157. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31158. <boolProp name="Assertion.assume_success">false</boolProp>
  31159. <intProp name="Assertion.test_type">2</intProp>
  31160. </ResponseAssertion>
  31161. <hashTree/>
  31162. </hashTree>
  31163. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart With Prices" enabled="true">
  31164. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31165. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31166. <collectionProp name="Arguments.arguments">
  31167. <elementProp name="" elementType="HTTPArgument">
  31168. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31169. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n row_total_including_tax{\n value\n }\n total_item_discount{value}\n discounts{\n amount{value}\n label\n }\n }\n product {\n sku\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  31170. <stringProp name="Argument.metadata">=</stringProp>
  31171. </elementProp>
  31172. </collectionProp>
  31173. </elementProp>
  31174. <stringProp name="HTTPSampler.domain"/>
  31175. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31176. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31177. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31178. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31179. <stringProp name="HTTPSampler.contentEncoding"/>
  31180. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31181. <stringProp name="HTTPSampler.method">POST</stringProp>
  31182. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31183. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31184. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31185. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31186. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31187. <stringProp name="HTTPSampler.embedded_url_re"/>
  31188. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_cart_with_prices.jmx</stringProp>
  31189. </HTTPSamplerProxy>
  31190. <hashTree>
  31191. <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 item id" enabled="true">
  31192. <stringProp name="VAR">item_id</stringProp>
  31193. <stringProp name="JSONPATH">$.data.cart.items[0].id</stringProp>
  31194. <stringProp name="DEFAULT"/>
  31195. <stringProp name="VARIABLE"/>
  31196. <stringProp name="SUBJECT">BODY</stringProp>
  31197. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31198. <hashTree/>
  31199. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31200. <collectionProp name="Asserion.test_strings">
  31201. <stringProp name="-1486007127">{"data":{"cart":{"items":</stringProp>
  31202. </collectionProp>
  31203. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31204. <boolProp name="Assertion.assume_success">false</boolProp>
  31205. <intProp name="Assertion.test_type">2</intProp>
  31206. </ResponseAssertion>
  31207. <hashTree/>
  31208. </hashTree>
  31209. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Update Configurable Product qty In Cart With Prices" enabled="true">
  31210. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31211. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31212. <collectionProp name="Arguments.arguments">
  31213. <elementProp name="" elementType="HTTPArgument">
  31214. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31215. <stringProp name="Argument.value">{"query":"mutation {\n updateCartItems(input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n cart_item_id: ${item_id}\n quantity: 5\n }\n ]\n }) {\n cart {\n items {\n id\n quantity\n prices {\n row_total{\n value\n }\n total_item_discount {\n currency\n value\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n row_total_including_tax{\n value\n }\n }\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n prices {\n applied_taxes {\n amount {\n currency\n value\n }\n label\n }\n discounts {\n amount {\n currency\n value\n }\n label\n }\n grand_total {\n currency\n value\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31216. <stringProp name="Argument.metadata">=</stringProp>
  31217. </elementProp>
  31218. </collectionProp>
  31219. </elementProp>
  31220. <stringProp name="HTTPSampler.domain"/>
  31221. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31222. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31223. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31224. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31225. <stringProp name="HTTPSampler.contentEncoding"/>
  31226. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31227. <stringProp name="HTTPSampler.method">POST</stringProp>
  31228. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31229. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31230. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31231. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31232. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31233. <stringProp name="HTTPSampler.embedded_url_re"/>
  31234. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/update_configurable_product_qty_in_cart_with_prices.jmx</stringProp>
  31235. </HTTPSamplerProxy>
  31236. <hashTree>
  31237. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31238. <collectionProp name="Asserion.test_strings">
  31239. <stringProp name="1421843282">"quantity":5</stringProp>
  31240. <stringProp name="675049292">"id":"${item_id}"</stringProp>
  31241. </collectionProp>
  31242. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31243. <boolProp name="Assertion.assume_success">false</boolProp>
  31244. <intProp name="Assertion.test_type">2</intProp>
  31245. </ResponseAssertion>
  31246. <hashTree/>
  31247. </hashTree>
  31248. </hashTree>
  31249. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Remove Simple Product From Cart" enabled="true">
  31250. <intProp name="ThroughputController.style">1</intProp>
  31251. <boolProp name="ThroughputController.perThread">false</boolProp>
  31252. <intProp name="ThroughputController.maxThroughput">1</intProp>
  31253. <stringProp name="ThroughputController.percentThroughput">${graphqlRemoveSimpleProductFromCartPercentage}</stringProp>
  31254. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  31255. <hashTree>
  31256. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  31257. <stringProp name="script">
  31258. var tmpLabel = vars.get("testLabel")
  31259. if (tmpLabel) {
  31260. var testLabel = " (" + tmpLabel + ")"
  31261. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  31262. if (sampler.getName().indexOf(testLabel) == -1) {
  31263. sampler.setName(sampler.getName() + testLabel);
  31264. }
  31265. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  31266. sampler.setName("SetUp - " + sampler.getName());
  31267. }
  31268. } else {
  31269. testLabel = ""
  31270. }
  31271. </stringProp>
  31272. <stringProp name="scriptLanguage">javascript</stringProp>
  31273. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  31274. <hashTree/>
  31275. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  31276. <stringProp name="BeanShellSampler.query">
  31277. vars.put("testLabel", "GraphQL Remove Simple Product From Cart");
  31278. </stringProp>
  31279. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31280. </BeanShellSampler>
  31281. <hashTree/>
  31282. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  31283. <collectionProp name="HeaderManager.headers">
  31284. <elementProp name="" elementType="Header">
  31285. <stringProp name="Header.name">Content-Type</stringProp>
  31286. <stringProp name="Header.value">application/json</stringProp>
  31287. </elementProp>
  31288. <elementProp name="" elementType="Header">
  31289. <stringProp name="Header.name">Accept</stringProp>
  31290. <stringProp name="Header.value">*/*</stringProp>
  31291. </elementProp>
  31292. </collectionProp>
  31293. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  31294. <hashTree/>
  31295. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  31296. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  31297. <stringProp name="BeanShellSampler.query">
  31298. import java.util.Random;
  31299. Random random = new Random();
  31300. if (${seedForRandom} &gt; 0) {
  31301. random.setSeed(${seedForRandom} + ${__threadNum});
  31302. }
  31303. vars.putObject("randomIntGenerator", random);
  31304. </stringProp>
  31305. <stringProp name="BeanShellSampler.filename"/>
  31306. <stringProp name="BeanShellSampler.parameters"/>
  31307. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31308. </BeanShellSampler>
  31309. <hashTree/>
  31310. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  31311. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31312. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31313. <collectionProp name="Arguments.arguments">
  31314. <elementProp name="" elementType="HTTPArgument">
  31315. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31316. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  31317. <stringProp name="Argument.metadata">=</stringProp>
  31318. </elementProp>
  31319. </collectionProp>
  31320. </elementProp>
  31321. <stringProp name="HTTPSampler.domain"/>
  31322. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31323. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31324. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31325. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31326. <stringProp name="HTTPSampler.contentEncoding"/>
  31327. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31328. <stringProp name="HTTPSampler.method">POST</stringProp>
  31329. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31330. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31331. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31332. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31333. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31334. <stringProp name="HTTPSampler.embedded_url_re"/>
  31335. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  31336. </HTTPSamplerProxy>
  31337. <hashTree>
  31338. <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">
  31339. <stringProp name="VAR">quote_id</stringProp>
  31340. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  31341. <stringProp name="DEFAULT"/>
  31342. <stringProp name="VARIABLE"/>
  31343. <stringProp name="SUBJECT">BODY</stringProp>
  31344. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31345. <hashTree/>
  31346. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31347. <collectionProp name="Asserion.test_strings">
  31348. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  31349. </collectionProp>
  31350. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31351. <boolProp name="Assertion.assume_success">false</boolProp>
  31352. <intProp name="Assertion.test_type">2</intProp>
  31353. </ResponseAssertion>
  31354. <hashTree/>
  31355. </hashTree>
  31356. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  31357. <stringProp name="BeanShellSampler.query">
  31358. import java.util.Random;
  31359. Random random = vars.getObject("randomIntGenerator");
  31360. number = random.nextInt(props.get("simple_products_list").size());
  31361. product = props.get("simple_products_list").get(number);
  31362. vars.put("product_url_key", product.get("url_key"));
  31363. vars.put("product_id", product.get("id"));
  31364. vars.put("product_name", product.get("title"));
  31365. vars.put("product_uenc", product.get("uenc"));
  31366. vars.put("product_sku", product.get("sku"));
  31367. </stringProp>
  31368. <stringProp name="BeanShellSampler.filename"/>
  31369. <stringProp name="BeanShellSampler.parameters"/>
  31370. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31371. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  31372. <hashTree/>
  31373. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Simple Product To Cart" enabled="true">
  31374. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31375. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31376. <collectionProp name="Arguments.arguments">
  31377. <elementProp name="" elementType="HTTPArgument">
  31378. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31379. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31380. <stringProp name="Argument.metadata">=</stringProp>
  31381. </elementProp>
  31382. </collectionProp>
  31383. </elementProp>
  31384. <stringProp name="HTTPSampler.domain"/>
  31385. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31386. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31387. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31388. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31389. <stringProp name="HTTPSampler.contentEncoding"/>
  31390. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31391. <stringProp name="HTTPSampler.method">POST</stringProp>
  31392. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31393. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31394. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31395. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31396. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31397. <stringProp name="HTTPSampler.embedded_url_re"/>
  31398. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  31399. </HTTPSamplerProxy>
  31400. <hashTree>
  31401. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31402. <collectionProp name="Asserion.test_strings">
  31403. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  31404. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  31405. </collectionProp>
  31406. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31407. <boolProp name="Assertion.assume_success">false</boolProp>
  31408. <intProp name="Assertion.test_type">2</intProp>
  31409. </ResponseAssertion>
  31410. <hashTree/>
  31411. </hashTree>
  31412. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart" enabled="true">
  31413. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31414. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31415. <collectionProp name="Arguments.arguments">
  31416. <elementProp name="" elementType="HTTPArgument">
  31417. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31418. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31419. <stringProp name="Argument.metadata">=</stringProp>
  31420. </elementProp>
  31421. </collectionProp>
  31422. </elementProp>
  31423. <stringProp name="HTTPSampler.domain"/>
  31424. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31425. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31426. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31427. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31428. <stringProp name="HTTPSampler.contentEncoding"/>
  31429. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31430. <stringProp name="HTTPSampler.method">POST</stringProp>
  31431. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31432. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31433. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31434. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31435. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31436. <stringProp name="HTTPSampler.embedded_url_re"/>
  31437. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_cart.jmx</stringProp>
  31438. </HTTPSamplerProxy>
  31439. <hashTree>
  31440. <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 item id" enabled="true">
  31441. <stringProp name="VAR">item_id</stringProp>
  31442. <stringProp name="JSONPATH">$.data.cart.items[0].id</stringProp>
  31443. <stringProp name="DEFAULT"/>
  31444. <stringProp name="VARIABLE"/>
  31445. <stringProp name="SUBJECT">BODY</stringProp>
  31446. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31447. <hashTree/>
  31448. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31449. <collectionProp name="Asserion.test_strings">
  31450. <stringProp name="-1486007127">{"data":{"cart":{"items":</stringProp>
  31451. </collectionProp>
  31452. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31453. <boolProp name="Assertion.assume_success">false</boolProp>
  31454. <intProp name="Assertion.test_type">2</intProp>
  31455. </ResponseAssertion>
  31456. <hashTree/>
  31457. </hashTree>
  31458. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Remove Simple Product From Cart" enabled="true">
  31459. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31460. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31461. <collectionProp name="Arguments.arguments">
  31462. <elementProp name="" elementType="HTTPArgument">
  31463. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31464. <stringProp name="Argument.value">{"query":"mutation {\n removeItemFromCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_item_id: ${item_id}\n }\n ) {\n cart {\n items {\n quantity\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31465. <stringProp name="Argument.metadata">=</stringProp>
  31466. </elementProp>
  31467. </collectionProp>
  31468. </elementProp>
  31469. <stringProp name="HTTPSampler.domain"/>
  31470. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31471. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31472. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31473. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31474. <stringProp name="HTTPSampler.contentEncoding"/>
  31475. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31476. <stringProp name="HTTPSampler.method">POST</stringProp>
  31477. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31478. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31479. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31480. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31481. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31482. <stringProp name="HTTPSampler.embedded_url_re"/>
  31483. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/remove_simple_product_from_cart.jmx</stringProp>
  31484. </HTTPSamplerProxy>
  31485. <hashTree>
  31486. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31487. <collectionProp name="Asserion.test_strings">
  31488. <stringProp name="1452665323">{"data":{"removeItemFromCart":{"cart":{"items":[]}}}}</stringProp>
  31489. </collectionProp>
  31490. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31491. <boolProp name="Assertion.assume_success">false</boolProp>
  31492. <intProp name="Assertion.test_type">8</intProp>
  31493. </ResponseAssertion>
  31494. <hashTree/>
  31495. </hashTree>
  31496. </hashTree>
  31497. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Remove Configurable Product From Cart" enabled="true">
  31498. <intProp name="ThroughputController.style">1</intProp>
  31499. <boolProp name="ThroughputController.perThread">false</boolProp>
  31500. <intProp name="ThroughputController.maxThroughput">1</intProp>
  31501. <stringProp name="ThroughputController.percentThroughput">${graphqlRemoveConfigurableProductFromCartPercentage}</stringProp>
  31502. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  31503. <hashTree>
  31504. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  31505. <stringProp name="script">
  31506. var tmpLabel = vars.get("testLabel")
  31507. if (tmpLabel) {
  31508. var testLabel = " (" + tmpLabel + ")"
  31509. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  31510. if (sampler.getName().indexOf(testLabel) == -1) {
  31511. sampler.setName(sampler.getName() + testLabel);
  31512. }
  31513. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  31514. sampler.setName("SetUp - " + sampler.getName());
  31515. }
  31516. } else {
  31517. testLabel = ""
  31518. }
  31519. </stringProp>
  31520. <stringProp name="scriptLanguage">javascript</stringProp>
  31521. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  31522. <hashTree/>
  31523. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  31524. <stringProp name="BeanShellSampler.query">
  31525. vars.put("testLabel", "GraphQL Remove Configurable Product From Cart");
  31526. </stringProp>
  31527. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31528. </BeanShellSampler>
  31529. <hashTree/>
  31530. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  31531. <collectionProp name="HeaderManager.headers">
  31532. <elementProp name="" elementType="Header">
  31533. <stringProp name="Header.name">Content-Type</stringProp>
  31534. <stringProp name="Header.value">application/json</stringProp>
  31535. </elementProp>
  31536. <elementProp name="" elementType="Header">
  31537. <stringProp name="Header.name">Accept</stringProp>
  31538. <stringProp name="Header.value">*/*</stringProp>
  31539. </elementProp>
  31540. </collectionProp>
  31541. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  31542. <hashTree/>
  31543. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  31544. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  31545. <stringProp name="BeanShellSampler.query">
  31546. import java.util.Random;
  31547. Random random = new Random();
  31548. if (${seedForRandom} &gt; 0) {
  31549. random.setSeed(${seedForRandom} + ${__threadNum});
  31550. }
  31551. vars.putObject("randomIntGenerator", random);
  31552. </stringProp>
  31553. <stringProp name="BeanShellSampler.filename"/>
  31554. <stringProp name="BeanShellSampler.parameters"/>
  31555. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31556. </BeanShellSampler>
  31557. <hashTree/>
  31558. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  31559. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31560. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31561. <collectionProp name="Arguments.arguments">
  31562. <elementProp name="" elementType="HTTPArgument">
  31563. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31564. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  31565. <stringProp name="Argument.metadata">=</stringProp>
  31566. </elementProp>
  31567. </collectionProp>
  31568. </elementProp>
  31569. <stringProp name="HTTPSampler.domain"/>
  31570. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31571. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31572. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31573. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31574. <stringProp name="HTTPSampler.contentEncoding"/>
  31575. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31576. <stringProp name="HTTPSampler.method">POST</stringProp>
  31577. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31578. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31579. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31580. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31581. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31582. <stringProp name="HTTPSampler.embedded_url_re"/>
  31583. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  31584. </HTTPSamplerProxy>
  31585. <hashTree>
  31586. <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">
  31587. <stringProp name="VAR">quote_id</stringProp>
  31588. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  31589. <stringProp name="DEFAULT"/>
  31590. <stringProp name="VARIABLE"/>
  31591. <stringProp name="SUBJECT">BODY</stringProp>
  31592. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31593. <hashTree/>
  31594. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31595. <collectionProp name="Asserion.test_strings">
  31596. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  31597. </collectionProp>
  31598. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31599. <boolProp name="Assertion.assume_success">false</boolProp>
  31600. <intProp name="Assertion.test_type">2</intProp>
  31601. </ResponseAssertion>
  31602. <hashTree/>
  31603. </hashTree>
  31604. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  31605. <stringProp name="BeanShellSampler.query">
  31606. import java.util.Random;
  31607. Random random = vars.getObject("randomIntGenerator");
  31608. number = random.nextInt(props.get("configurable_products_list").size());
  31609. product = props.get("configurable_products_list").get(number);
  31610. vars.put("product_url_key", product.get("url_key"));
  31611. vars.put("product_id", product.get("id"));
  31612. vars.put("product_name", product.get("title"));
  31613. vars.put("product_uenc", product.get("uenc"));
  31614. vars.put("product_sku", product.get("sku"));
  31615. </stringProp>
  31616. <stringProp name="BeanShellSampler.filename"/>
  31617. <stringProp name="BeanShellSampler.parameters"/>
  31618. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31619. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  31620. <hashTree/>
  31621. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  31622. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31623. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31624. <collectionProp name="Arguments.arguments">
  31625. <elementProp name="" elementType="HTTPArgument">
  31626. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31627. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  31628. <stringProp name="Argument.metadata">=</stringProp>
  31629. </elementProp>
  31630. </collectionProp>
  31631. </elementProp>
  31632. <stringProp name="HTTPSampler.domain"/>
  31633. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31634. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31635. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31636. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31637. <stringProp name="HTTPSampler.contentEncoding"/>
  31638. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31639. <stringProp name="HTTPSampler.method">POST</stringProp>
  31640. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31641. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31642. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31643. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31644. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31645. <stringProp name="HTTPSampler.embedded_url_re"/>
  31646. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  31647. </HTTPSamplerProxy>
  31648. <hashTree>
  31649. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31650. <collectionProp name="Asserion.test_strings">
  31651. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  31652. </collectionProp>
  31653. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31654. <boolProp name="Assertion.assume_success">false</boolProp>
  31655. <intProp name="Assertion.test_type">2</intProp>
  31656. </ResponseAssertion>
  31657. <hashTree/>
  31658. <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 Configurable Product option" enabled="true">
  31659. <stringProp name="VAR">product_option</stringProp>
  31660. <stringProp name="JSONPATH">$.data.products.items[0].variants[0].product.sku</stringProp>
  31661. <stringProp name="DEFAULT"/>
  31662. <stringProp name="VARIABLE"/>
  31663. <stringProp name="SUBJECT">BODY</stringProp>
  31664. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31665. <hashTree/>
  31666. </hashTree>
  31667. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Configurable Product To Cart" enabled="true">
  31668. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31669. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31670. <collectionProp name="Arguments.arguments">
  31671. <elementProp name="" elementType="HTTPArgument">
  31672. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31673. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31674. <stringProp name="Argument.metadata">=</stringProp>
  31675. </elementProp>
  31676. </collectionProp>
  31677. </elementProp>
  31678. <stringProp name="HTTPSampler.domain"/>
  31679. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31680. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31681. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31682. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31683. <stringProp name="HTTPSampler.contentEncoding"/>
  31684. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31685. <stringProp name="HTTPSampler.method">POST</stringProp>
  31686. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31687. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31688. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31689. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31690. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31691. <stringProp name="HTTPSampler.embedded_url_re"/>
  31692. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx</stringProp>
  31693. </HTTPSamplerProxy>
  31694. <hashTree>
  31695. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31696. <collectionProp name="Asserion.test_strings">
  31697. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  31698. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  31699. </collectionProp>
  31700. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31701. <boolProp name="Assertion.assume_success">false</boolProp>
  31702. <intProp name="Assertion.test_type">2</intProp>
  31703. </ResponseAssertion>
  31704. <hashTree/>
  31705. </hashTree>
  31706. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart" enabled="true">
  31707. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31708. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31709. <collectionProp name="Arguments.arguments">
  31710. <elementProp name="" elementType="HTTPArgument">
  31711. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31712. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31713. <stringProp name="Argument.metadata">=</stringProp>
  31714. </elementProp>
  31715. </collectionProp>
  31716. </elementProp>
  31717. <stringProp name="HTTPSampler.domain"/>
  31718. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31719. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31720. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31721. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31722. <stringProp name="HTTPSampler.contentEncoding"/>
  31723. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31724. <stringProp name="HTTPSampler.method">POST</stringProp>
  31725. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31726. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31727. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31728. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31729. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31730. <stringProp name="HTTPSampler.embedded_url_re"/>
  31731. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_cart.jmx</stringProp>
  31732. </HTTPSamplerProxy>
  31733. <hashTree>
  31734. <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 item id" enabled="true">
  31735. <stringProp name="VAR">item_id</stringProp>
  31736. <stringProp name="JSONPATH">$.data.cart.items[0].id</stringProp>
  31737. <stringProp name="DEFAULT"/>
  31738. <stringProp name="VARIABLE"/>
  31739. <stringProp name="SUBJECT">BODY</stringProp>
  31740. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31741. <hashTree/>
  31742. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31743. <collectionProp name="Asserion.test_strings">
  31744. <stringProp name="-1486007127">{"data":{"cart":{"items":</stringProp>
  31745. </collectionProp>
  31746. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31747. <boolProp name="Assertion.assume_success">false</boolProp>
  31748. <intProp name="Assertion.test_type">2</intProp>
  31749. </ResponseAssertion>
  31750. <hashTree/>
  31751. </hashTree>
  31752. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Remove Configurable Product From Cart" enabled="true">
  31753. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31754. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31755. <collectionProp name="Arguments.arguments">
  31756. <elementProp name="" elementType="HTTPArgument">
  31757. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31758. <stringProp name="Argument.value">{"query":"mutation {\n removeItemFromCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_item_id: ${item_id}\n }\n ) {\n cart {\n items {\n quantity\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31759. <stringProp name="Argument.metadata">=</stringProp>
  31760. </elementProp>
  31761. </collectionProp>
  31762. </elementProp>
  31763. <stringProp name="HTTPSampler.domain"/>
  31764. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31765. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31766. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31767. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31768. <stringProp name="HTTPSampler.contentEncoding"/>
  31769. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31770. <stringProp name="HTTPSampler.method">POST</stringProp>
  31771. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31772. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31773. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31774. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31775. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31776. <stringProp name="HTTPSampler.embedded_url_re"/>
  31777. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/remove_configurable_product_from_cart.jmx</stringProp>
  31778. </HTTPSamplerProxy>
  31779. <hashTree>
  31780. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31781. <collectionProp name="Asserion.test_strings">
  31782. <stringProp name="1452665323">{"data":{"removeItemFromCart":{"cart":{"items":[]}}}}</stringProp>
  31783. </collectionProp>
  31784. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31785. <boolProp name="Assertion.assume_success">false</boolProp>
  31786. <intProp name="Assertion.test_type">8</intProp>
  31787. </ResponseAssertion>
  31788. <hashTree/>
  31789. </hashTree>
  31790. </hashTree>
  31791. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Apply Coupon To Cart" enabled="true">
  31792. <intProp name="ThroughputController.style">1</intProp>
  31793. <boolProp name="ThroughputController.perThread">false</boolProp>
  31794. <intProp name="ThroughputController.maxThroughput">1</intProp>
  31795. <stringProp name="ThroughputController.percentThroughput">${graphqlApplyCouponToCartPercentage}</stringProp>
  31796. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  31797. <hashTree>
  31798. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  31799. <stringProp name="script">
  31800. var tmpLabel = vars.get("testLabel")
  31801. if (tmpLabel) {
  31802. var testLabel = " (" + tmpLabel + ")"
  31803. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  31804. if (sampler.getName().indexOf(testLabel) == -1) {
  31805. sampler.setName(sampler.getName() + testLabel);
  31806. }
  31807. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  31808. sampler.setName("SetUp - " + sampler.getName());
  31809. }
  31810. } else {
  31811. testLabel = ""
  31812. }
  31813. </stringProp>
  31814. <stringProp name="scriptLanguage">javascript</stringProp>
  31815. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  31816. <hashTree/>
  31817. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  31818. <stringProp name="BeanShellSampler.query">
  31819. vars.put("testLabel", "GraphQL Apply Coupon To Cart");
  31820. </stringProp>
  31821. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31822. </BeanShellSampler>
  31823. <hashTree/>
  31824. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  31825. <collectionProp name="HeaderManager.headers">
  31826. <elementProp name="" elementType="Header">
  31827. <stringProp name="Header.name">Content-Type</stringProp>
  31828. <stringProp name="Header.value">application/json</stringProp>
  31829. </elementProp>
  31830. <elementProp name="" elementType="Header">
  31831. <stringProp name="Header.name">Accept</stringProp>
  31832. <stringProp name="Header.value">*/*</stringProp>
  31833. </elementProp>
  31834. </collectionProp>
  31835. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  31836. <hashTree/>
  31837. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  31838. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  31839. <stringProp name="BeanShellSampler.query">
  31840. import java.util.Random;
  31841. Random random = new Random();
  31842. if (${seedForRandom} &gt; 0) {
  31843. random.setSeed(${seedForRandom} + ${__threadNum});
  31844. }
  31845. vars.putObject("randomIntGenerator", random);
  31846. </stringProp>
  31847. <stringProp name="BeanShellSampler.filename"/>
  31848. <stringProp name="BeanShellSampler.parameters"/>
  31849. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31850. </BeanShellSampler>
  31851. <hashTree/>
  31852. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  31853. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31854. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31855. <collectionProp name="Arguments.arguments">
  31856. <elementProp name="" elementType="HTTPArgument">
  31857. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31858. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  31859. <stringProp name="Argument.metadata">=</stringProp>
  31860. </elementProp>
  31861. </collectionProp>
  31862. </elementProp>
  31863. <stringProp name="HTTPSampler.domain"/>
  31864. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31865. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31866. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31867. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31868. <stringProp name="HTTPSampler.contentEncoding"/>
  31869. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31870. <stringProp name="HTTPSampler.method">POST</stringProp>
  31871. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31872. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31873. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31874. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31875. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31876. <stringProp name="HTTPSampler.embedded_url_re"/>
  31877. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  31878. </HTTPSamplerProxy>
  31879. <hashTree>
  31880. <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">
  31881. <stringProp name="VAR">quote_id</stringProp>
  31882. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  31883. <stringProp name="DEFAULT"/>
  31884. <stringProp name="VARIABLE"/>
  31885. <stringProp name="SUBJECT">BODY</stringProp>
  31886. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  31887. <hashTree/>
  31888. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31889. <collectionProp name="Asserion.test_strings">
  31890. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  31891. </collectionProp>
  31892. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31893. <boolProp name="Assertion.assume_success">false</boolProp>
  31894. <intProp name="Assertion.test_type">2</intProp>
  31895. </ResponseAssertion>
  31896. <hashTree/>
  31897. </hashTree>
  31898. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  31899. <stringProp name="BeanShellSampler.query">
  31900. import java.util.Random;
  31901. Random random = vars.getObject("randomIntGenerator");
  31902. number = random.nextInt(props.get("simple_products_list").size());
  31903. product = props.get("simple_products_list").get(number);
  31904. vars.put("product_url_key", product.get("url_key"));
  31905. vars.put("product_id", product.get("id"));
  31906. vars.put("product_name", product.get("title"));
  31907. vars.put("product_uenc", product.get("uenc"));
  31908. vars.put("product_sku", product.get("sku"));
  31909. </stringProp>
  31910. <stringProp name="BeanShellSampler.filename"/>
  31911. <stringProp name="BeanShellSampler.parameters"/>
  31912. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  31913. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  31914. <hashTree/>
  31915. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Simple Product To Cart" enabled="true">
  31916. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31917. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31918. <collectionProp name="Arguments.arguments">
  31919. <elementProp name="" elementType="HTTPArgument">
  31920. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31921. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31922. <stringProp name="Argument.metadata">=</stringProp>
  31923. </elementProp>
  31924. </collectionProp>
  31925. </elementProp>
  31926. <stringProp name="HTTPSampler.domain"/>
  31927. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31928. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31929. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31930. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31931. <stringProp name="HTTPSampler.contentEncoding"/>
  31932. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31933. <stringProp name="HTTPSampler.method">POST</stringProp>
  31934. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31935. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31936. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31937. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31938. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31939. <stringProp name="HTTPSampler.embedded_url_re"/>
  31940. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  31941. </HTTPSamplerProxy>
  31942. <hashTree>
  31943. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31944. <collectionProp name="Asserion.test_strings">
  31945. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  31946. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  31947. </collectionProp>
  31948. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  31949. <boolProp name="Assertion.assume_success">false</boolProp>
  31950. <intProp name="Assertion.test_type">2</intProp>
  31951. </ResponseAssertion>
  31952. <hashTree/>
  31953. </hashTree>
  31954. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Coupon Code Data" enabled="true">
  31955. <stringProp name="scriptLanguage">javascript</stringProp>
  31956. <stringProp name="parameters"/>
  31957. <stringProp name="filename"/>
  31958. <stringProp name="cacheKey"/>
  31959. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  31960. var coupons = props.get("coupon_codes");
  31961. number = random.nextInt(coupons.length);
  31962. vars.put("coupon_code", coupons[number].code);
  31963. </stringProp>
  31964. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_coupon_code_setup.jmx</stringProp>
  31965. </JSR223Sampler>
  31966. <hashTree/>
  31967. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Apply Coupon To Cart" enabled="true">
  31968. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  31969. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  31970. <collectionProp name="Arguments.arguments">
  31971. <elementProp name="" elementType="HTTPArgument">
  31972. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  31973. <stringProp name="Argument.value">{"query":"mutation {\n applyCouponToCart(input: {cart_id: \"${quote_id}\", coupon_code: \"${coupon_code}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  31974. <stringProp name="Argument.metadata">=</stringProp>
  31975. </elementProp>
  31976. </collectionProp>
  31977. </elementProp>
  31978. <stringProp name="HTTPSampler.domain"/>
  31979. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  31980. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  31981. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  31982. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  31983. <stringProp name="HTTPSampler.contentEncoding"/>
  31984. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  31985. <stringProp name="HTTPSampler.method">POST</stringProp>
  31986. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  31987. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  31988. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  31989. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  31990. <boolProp name="HTTPSampler.monitor">false</boolProp>
  31991. <stringProp name="HTTPSampler.embedded_url_re"/>
  31992. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/apply_coupon_to_cart.jmx</stringProp>
  31993. </HTTPSamplerProxy>
  31994. <hashTree>
  31995. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  31996. <collectionProp name="Asserion.test_strings">
  31997. <stringProp name="1026466978">{"data":{"applyCouponToCart":{"cart":{"applied_coupon":{"code":"${coupon_code}"}}}}}</stringProp>
  31998. </collectionProp>
  31999. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32000. <boolProp name="Assertion.assume_success">false</boolProp>
  32001. <intProp name="Assertion.test_type">8</intProp>
  32002. </ResponseAssertion>
  32003. <hashTree/>
  32004. </hashTree>
  32005. </hashTree>
  32006. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Remove Coupon From Cart" enabled="true">
  32007. <intProp name="ThroughputController.style">1</intProp>
  32008. <boolProp name="ThroughputController.perThread">false</boolProp>
  32009. <intProp name="ThroughputController.maxThroughput">1</intProp>
  32010. <stringProp name="ThroughputController.percentThroughput">${graphqlRemoveCouponFromCartPercentage}</stringProp>
  32011. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  32012. <hashTree>
  32013. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  32014. <stringProp name="script">
  32015. var tmpLabel = vars.get("testLabel")
  32016. if (tmpLabel) {
  32017. var testLabel = " (" + tmpLabel + ")"
  32018. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  32019. if (sampler.getName().indexOf(testLabel) == -1) {
  32020. sampler.setName(sampler.getName() + testLabel);
  32021. }
  32022. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  32023. sampler.setName("SetUp - " + sampler.getName());
  32024. }
  32025. } else {
  32026. testLabel = ""
  32027. }
  32028. </stringProp>
  32029. <stringProp name="scriptLanguage">javascript</stringProp>
  32030. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  32031. <hashTree/>
  32032. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  32033. <stringProp name="BeanShellSampler.query">
  32034. vars.put("testLabel", "GraphQL Remove Coupon From Cart");
  32035. </stringProp>
  32036. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32037. </BeanShellSampler>
  32038. <hashTree/>
  32039. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  32040. <collectionProp name="HeaderManager.headers">
  32041. <elementProp name="" elementType="Header">
  32042. <stringProp name="Header.name">Content-Type</stringProp>
  32043. <stringProp name="Header.value">application/json</stringProp>
  32044. </elementProp>
  32045. <elementProp name="" elementType="Header">
  32046. <stringProp name="Header.name">Accept</stringProp>
  32047. <stringProp name="Header.value">*/*</stringProp>
  32048. </elementProp>
  32049. </collectionProp>
  32050. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  32051. <hashTree/>
  32052. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  32053. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  32054. <stringProp name="BeanShellSampler.query">
  32055. import java.util.Random;
  32056. Random random = new Random();
  32057. if (${seedForRandom} &gt; 0) {
  32058. random.setSeed(${seedForRandom} + ${__threadNum});
  32059. }
  32060. vars.putObject("randomIntGenerator", random);
  32061. </stringProp>
  32062. <stringProp name="BeanShellSampler.filename"/>
  32063. <stringProp name="BeanShellSampler.parameters"/>
  32064. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32065. </BeanShellSampler>
  32066. <hashTree/>
  32067. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  32068. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32069. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32070. <collectionProp name="Arguments.arguments">
  32071. <elementProp name="" elementType="HTTPArgument">
  32072. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32073. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  32074. <stringProp name="Argument.metadata">=</stringProp>
  32075. </elementProp>
  32076. </collectionProp>
  32077. </elementProp>
  32078. <stringProp name="HTTPSampler.domain"/>
  32079. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32080. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32081. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32082. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32083. <stringProp name="HTTPSampler.contentEncoding"/>
  32084. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32085. <stringProp name="HTTPSampler.method">POST</stringProp>
  32086. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32087. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32088. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32089. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32090. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32091. <stringProp name="HTTPSampler.embedded_url_re"/>
  32092. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  32093. </HTTPSamplerProxy>
  32094. <hashTree>
  32095. <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">
  32096. <stringProp name="VAR">quote_id</stringProp>
  32097. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  32098. <stringProp name="DEFAULT"/>
  32099. <stringProp name="VARIABLE"/>
  32100. <stringProp name="SUBJECT">BODY</stringProp>
  32101. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  32102. <hashTree/>
  32103. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32104. <collectionProp name="Asserion.test_strings">
  32105. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  32106. </collectionProp>
  32107. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32108. <boolProp name="Assertion.assume_success">false</boolProp>
  32109. <intProp name="Assertion.test_type">2</intProp>
  32110. </ResponseAssertion>
  32111. <hashTree/>
  32112. </hashTree>
  32113. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  32114. <stringProp name="BeanShellSampler.query">
  32115. import java.util.Random;
  32116. Random random = vars.getObject("randomIntGenerator");
  32117. number = random.nextInt(props.get("simple_products_list").size());
  32118. product = props.get("simple_products_list").get(number);
  32119. vars.put("product_url_key", product.get("url_key"));
  32120. vars.put("product_id", product.get("id"));
  32121. vars.put("product_name", product.get("title"));
  32122. vars.put("product_uenc", product.get("uenc"));
  32123. vars.put("product_sku", product.get("sku"));
  32124. </stringProp>
  32125. <stringProp name="BeanShellSampler.filename"/>
  32126. <stringProp name="BeanShellSampler.parameters"/>
  32127. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32128. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  32129. <hashTree/>
  32130. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Simple Product To Cart" enabled="true">
  32131. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32132. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32133. <collectionProp name="Arguments.arguments">
  32134. <elementProp name="" elementType="HTTPArgument">
  32135. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32136. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  32137. <stringProp name="Argument.metadata">=</stringProp>
  32138. </elementProp>
  32139. </collectionProp>
  32140. </elementProp>
  32141. <stringProp name="HTTPSampler.domain"/>
  32142. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32143. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32144. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32145. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32146. <stringProp name="HTTPSampler.contentEncoding"/>
  32147. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32148. <stringProp name="HTTPSampler.method">POST</stringProp>
  32149. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32150. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32151. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32152. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32153. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32154. <stringProp name="HTTPSampler.embedded_url_re"/>
  32155. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  32156. </HTTPSamplerProxy>
  32157. <hashTree>
  32158. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32159. <collectionProp name="Asserion.test_strings">
  32160. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  32161. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  32162. </collectionProp>
  32163. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32164. <boolProp name="Assertion.assume_success">false</boolProp>
  32165. <intProp name="Assertion.test_type">2</intProp>
  32166. </ResponseAssertion>
  32167. <hashTree/>
  32168. </hashTree>
  32169. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Coupon Code Data" enabled="true">
  32170. <stringProp name="scriptLanguage">javascript</stringProp>
  32171. <stringProp name="parameters"/>
  32172. <stringProp name="filename"/>
  32173. <stringProp name="cacheKey"/>
  32174. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  32175. var coupons = props.get("coupon_codes");
  32176. number = random.nextInt(coupons.length);
  32177. vars.put("coupon_code", coupons[number].code);
  32178. </stringProp>
  32179. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_coupon_code_setup.jmx</stringProp>
  32180. </JSR223Sampler>
  32181. <hashTree/>
  32182. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Apply Coupon To Cart" enabled="true">
  32183. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32184. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32185. <collectionProp name="Arguments.arguments">
  32186. <elementProp name="" elementType="HTTPArgument">
  32187. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32188. <stringProp name="Argument.value">{"query":"mutation {\n applyCouponToCart(input: {cart_id: \"${quote_id}\", coupon_code: \"${coupon_code}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  32189. <stringProp name="Argument.metadata">=</stringProp>
  32190. </elementProp>
  32191. </collectionProp>
  32192. </elementProp>
  32193. <stringProp name="HTTPSampler.domain"/>
  32194. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32195. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32196. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32197. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32198. <stringProp name="HTTPSampler.contentEncoding"/>
  32199. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32200. <stringProp name="HTTPSampler.method">POST</stringProp>
  32201. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32202. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32203. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32204. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32205. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32206. <stringProp name="HTTPSampler.embedded_url_re"/>
  32207. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/apply_coupon_to_cart.jmx</stringProp>
  32208. </HTTPSamplerProxy>
  32209. <hashTree>
  32210. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32211. <collectionProp name="Asserion.test_strings">
  32212. <stringProp name="1026466978">{"data":{"applyCouponToCart":{"cart":{"applied_coupon":{"code":"${coupon_code}"}}}}}</stringProp>
  32213. </collectionProp>
  32214. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32215. <boolProp name="Assertion.assume_success">false</boolProp>
  32216. <intProp name="Assertion.test_type">8</intProp>
  32217. </ResponseAssertion>
  32218. <hashTree/>
  32219. </hashTree>
  32220. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Remove Coupon From Cart" enabled="true">
  32221. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32222. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32223. <collectionProp name="Arguments.arguments">
  32224. <elementProp name="" elementType="HTTPArgument">
  32225. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32226. <stringProp name="Argument.value">{"query":"mutation {\n removeCouponFromCart(input: {cart_id: \"${quote_id}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  32227. <stringProp name="Argument.metadata">=</stringProp>
  32228. </elementProp>
  32229. </collectionProp>
  32230. </elementProp>
  32231. <stringProp name="HTTPSampler.domain"/>
  32232. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32233. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32234. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32235. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32236. <stringProp name="HTTPSampler.contentEncoding"/>
  32237. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32238. <stringProp name="HTTPSampler.method">POST</stringProp>
  32239. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32240. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32241. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32242. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32243. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32244. <stringProp name="HTTPSampler.embedded_url_re"/>
  32245. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/remove_coupon_from_cart.jmx</stringProp>
  32246. </HTTPSamplerProxy>
  32247. <hashTree>
  32248. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32249. <collectionProp name="Asserion.test_strings">
  32250. <stringProp name="-76201335">{"data":{"removeCouponFromCart":{"cart":{"applied_coupon":null}}}}</stringProp>
  32251. </collectionProp>
  32252. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32253. <boolProp name="Assertion.assume_success">false</boolProp>
  32254. <intProp name="Assertion.test_type">8</intProp>
  32255. </ResponseAssertion>
  32256. <hashTree/>
  32257. </hashTree>
  32258. </hashTree>
  32259. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Catalog Browsing By Guest" enabled="true">
  32260. <intProp name="ThroughputController.style">1</intProp>
  32261. <boolProp name="ThroughputController.perThread">false</boolProp>
  32262. <intProp name="ThroughputController.maxThroughput">1</intProp>
  32263. <stringProp name="ThroughputController.percentThroughput">${graphqlCatalogBrowsingByGuestPercentage}</stringProp>
  32264. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  32265. <hashTree>
  32266. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  32267. <stringProp name="script">
  32268. var tmpLabel = vars.get("testLabel")
  32269. if (tmpLabel) {
  32270. var testLabel = " (" + tmpLabel + ")"
  32271. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  32272. if (sampler.getName().indexOf(testLabel) == -1) {
  32273. sampler.setName(sampler.getName() + testLabel);
  32274. }
  32275. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  32276. sampler.setName("SetUp - " + sampler.getName());
  32277. }
  32278. } else {
  32279. testLabel = ""
  32280. }
  32281. </stringProp>
  32282. <stringProp name="scriptLanguage">javascript</stringProp>
  32283. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  32284. <hashTree/>
  32285. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  32286. <stringProp name="BeanShellSampler.query">
  32287. vars.put("testLabel", "GraphQL Catalog Browsing By Guest");
  32288. </stringProp>
  32289. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32290. </BeanShellSampler>
  32291. <hashTree/>
  32292. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  32293. <collectionProp name="HeaderManager.headers">
  32294. <elementProp name="" elementType="Header">
  32295. <stringProp name="Header.name">Content-Type</stringProp>
  32296. <stringProp name="Header.value">application/json</stringProp>
  32297. </elementProp>
  32298. <elementProp name="" elementType="Header">
  32299. <stringProp name="Header.name">Accept</stringProp>
  32300. <stringProp name="Header.value">*/*</stringProp>
  32301. </elementProp>
  32302. </collectionProp>
  32303. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  32304. <hashTree/>
  32305. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  32306. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  32307. <stringProp name="BeanShellSampler.query">
  32308. import java.util.Random;
  32309. Random random = new Random();
  32310. if (${seedForRandom} &gt; 0) {
  32311. random.setSeed(${seedForRandom} + ${__threadNum});
  32312. }
  32313. vars.putObject("randomIntGenerator", random);
  32314. </stringProp>
  32315. <stringProp name="BeanShellSampler.filename"/>
  32316. <stringProp name="BeanShellSampler.parameters"/>
  32317. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32318. </BeanShellSampler>
  32319. <hashTree/>
  32320. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  32321. <stringProp name="scriptLanguage">javascript</stringProp>
  32322. <stringProp name="parameters"/>
  32323. <stringProp name="filename"/>
  32324. <stringProp name="cacheKey"/>
  32325. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  32326. var categories = props.get("categories");
  32327. number = random.nextInt(categories.length);
  32328. vars.put("category_url_key", categories[number].url_key);
  32329. vars.put("category_name", categories[number].name);
  32330. vars.put("category_id", categories[number].id);
  32331. vars.putObject("category", categories[number]);
  32332. </stringProp>
  32333. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  32334. <hashTree/>
  32335. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Navigation Menu by category_id" enabled="true">
  32336. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32337. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32338. <collectionProp name="Arguments.arguments">
  32339. <elementProp name="" elementType="HTTPArgument">
  32340. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32341. <stringProp name="Argument.value">{"query":"query navigationMenu($id: Int!) {\n category(id: $id) {\n id\n name\n product_count\n path\n children {\n id\n name\n position\n level\n url_key\n url_path\n product_count\n children_count\n path\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}","variables":{"id":${category_id}},"operationName":"navigationMenu"}</stringProp>
  32342. <stringProp name="Argument.metadata">=</stringProp>
  32343. </elementProp>
  32344. </collectionProp>
  32345. </elementProp>
  32346. <stringProp name="HTTPSampler.domain"/>
  32347. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32348. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32349. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32350. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32351. <stringProp name="HTTPSampler.contentEncoding"/>
  32352. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32353. <stringProp name="HTTPSampler.method">POST</stringProp>
  32354. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32355. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32356. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32357. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32358. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32359. <stringProp name="HTTPSampler.embedded_url_re"/>
  32360. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_navigation_menu_by_category_id.jmx</stringProp>
  32361. </HTTPSamplerProxy>
  32362. <hashTree>
  32363. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32364. <collectionProp name="Asserion.test_strings">
  32365. <stringProp name="1201352014">"id":${category_id},"name":"${category_name}","product_count"</stringProp>
  32366. </collectionProp>
  32367. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32368. <boolProp name="Assertion.assume_success">false</boolProp>
  32369. <intProp name="Assertion.test_type">2</intProp>
  32370. </ResponseAssertion>
  32371. <hashTree/>
  32372. </hashTree>
  32373. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Product Search by text and category_id" enabled="true">
  32374. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32375. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32376. <collectionProp name="Arguments.arguments">
  32377. <elementProp name="" elementType="HTTPArgument">
  32378. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32379. <stringProp name="Argument.value">{"query":"query productSearch($inputText: String!, $categoryId: String) {\n products(\n pageSize:12\n search: $inputText, filter: { category_id: { eq: $categoryId } }, sort: {name: ASC}) {\n items {\n id\n name\n small_image {\n label\n url\n }\n url_key\n price {\n regularPrice {\n amount {\n value\n currency\n }\n }\n }\n }\n total_count\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n }\n }\n }\n}","variables":{"inputText":"Product","categoryId":"${category_id}"},"operationName":"productSearch"}</stringProp>
  32380. <stringProp name="Argument.metadata">=</stringProp>
  32381. </elementProp>
  32382. </collectionProp>
  32383. </elementProp>
  32384. <stringProp name="HTTPSampler.domain"/>
  32385. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32386. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32387. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32388. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32389. <stringProp name="HTTPSampler.contentEncoding"/>
  32390. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32391. <stringProp name="HTTPSampler.method">POST</stringProp>
  32392. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32393. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32394. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32395. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32396. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32397. <stringProp name="HTTPSampler.embedded_url_re"/>
  32398. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_product_search_by_text_and_category_id.jmx</stringProp>
  32399. </HTTPSamplerProxy>
  32400. <hashTree>
  32401. <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 total_count" enabled="true">
  32402. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  32403. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  32404. <stringProp name="DEFAULT"/>
  32405. <stringProp name="VARIABLE"/>
  32406. <stringProp name="SUBJECT">BODY</stringProp>
  32407. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  32408. <hashTree/>
  32409. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  32410. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  32411. if (totalCount == null) {
  32412. Failure = true;
  32413. FailureMessage = "Not Expected \"totalCount\" to be null";
  32414. } else {
  32415. if (Integer.parseInt(totalCount) &lt; 1) {
  32416. Failure = true;
  32417. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  32418. } else {
  32419. Failure = false;
  32420. }
  32421. }
  32422. </stringProp>
  32423. <stringProp name="BeanShellAssertion.filename"/>
  32424. <stringProp name="BeanShellAssertion.parameters"/>
  32425. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  32426. </BeanShellAssertion>
  32427. <hashTree/>
  32428. </hashTree>
  32429. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Url Info by url_key" enabled="true">
  32430. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32431. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32432. <collectionProp name="Arguments.arguments">
  32433. <elementProp name="" elementType="HTTPArgument">
  32434. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32435. <stringProp name="Argument.value">&#xD;
  32436. {"query":"query resolveUrl($urlKey: String!) {\n urlResolver(url: $urlKey) {\n type\n id\n }\n}","variables":{"urlKey":"${category_url_key}${url_suffix}"},"operationName":"resolveUrl"}&#xD;
  32437. </stringProp>
  32438. <stringProp name="Argument.metadata">=</stringProp>
  32439. </elementProp>
  32440. </collectionProp>
  32441. </elementProp>
  32442. <stringProp name="HTTPSampler.domain"/>
  32443. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32444. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32445. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32446. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32447. <stringProp name="HTTPSampler.contentEncoding"/>
  32448. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32449. <stringProp name="HTTPSampler.method">POST</stringProp>
  32450. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32451. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32452. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32453. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32454. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32455. <stringProp name="HTTPSampler.embedded_url_re"/>
  32456. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_url_info_by_url_key.jmx</stringProp></HTTPSamplerProxy>
  32457. <hashTree>
  32458. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32459. <collectionProp name="Asserion.test_strings">
  32460. <stringProp name="-1062388959">{"type":"CATEGORY","id":${category_id}}</stringProp>
  32461. </collectionProp>
  32462. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32463. <boolProp name="Assertion.assume_success">false</boolProp>
  32464. <intProp name="Assertion.test_type">2</intProp>
  32465. </ResponseAssertion>
  32466. <hashTree/>
  32467. </hashTree>
  32468. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  32469. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32470. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32471. <collectionProp name="Arguments.arguments">
  32472. <elementProp name="" elementType="HTTPArgument">
  32473. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32474. <stringProp name="Argument.value">{"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"}</stringProp>
  32475. <stringProp name="Argument.metadata">=</stringProp>
  32476. </elementProp>
  32477. </collectionProp>
  32478. </elementProp>
  32479. <stringProp name="HTTPSampler.domain"/>
  32480. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32481. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32482. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32483. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32484. <stringProp name="HTTPSampler.contentEncoding"/>
  32485. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32486. <stringProp name="HTTPSampler.method">POST</stringProp>
  32487. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32488. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32489. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32490. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32491. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32492. <stringProp name="HTTPSampler.embedded_url_re"/>
  32493. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx</stringProp>
  32494. </HTTPSamplerProxy>
  32495. <hashTree>
  32496. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32497. <collectionProp name="Asserion.test_strings">
  32498. <stringProp name="1201352014">"name":"${category_name}","id":${category_id},</stringProp>
  32499. </collectionProp>
  32500. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32501. <boolProp name="Assertion.assume_success">false</boolProp>
  32502. <intProp name="Assertion.test_type">2</intProp>
  32503. </ResponseAssertion>
  32504. <hashTree/>
  32505. </hashTree>
  32506. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  32507. <stringProp name="BeanShellSampler.query">
  32508. import java.util.Random;
  32509. Random random = vars.getObject("randomIntGenerator");
  32510. number = random.nextInt(props.get("configurable_products_list").size());
  32511. product = props.get("configurable_products_list").get(number);
  32512. vars.put("product_url_key", product.get("url_key"));
  32513. vars.put("product_id", product.get("id"));
  32514. vars.put("product_name", product.get("title"));
  32515. vars.put("product_uenc", product.get("uenc"));
  32516. vars.put("product_sku", product.get("sku"));
  32517. </stringProp>
  32518. <stringProp name="BeanShellSampler.filename"/>
  32519. <stringProp name="BeanShellSampler.parameters"/>
  32520. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32521. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  32522. <hashTree/>
  32523. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  32524. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32525. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32526. <collectionProp name="Arguments.arguments">
  32527. <elementProp name="" elementType="HTTPArgument">
  32528. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32529. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  32530. <stringProp name="Argument.metadata">=</stringProp>
  32531. </elementProp>
  32532. </collectionProp>
  32533. </elementProp>
  32534. <stringProp name="HTTPSampler.domain"/>
  32535. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32536. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32537. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32538. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32539. <stringProp name="HTTPSampler.contentEncoding"/>
  32540. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32541. <stringProp name="HTTPSampler.method">POST</stringProp>
  32542. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32543. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32544. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32545. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32546. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32547. <stringProp name="HTTPSampler.embedded_url_re"/>
  32548. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  32549. </HTTPSamplerProxy>
  32550. <hashTree>
  32551. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32552. <collectionProp name="Asserion.test_strings">
  32553. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  32554. </collectionProp>
  32555. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32556. <boolProp name="Assertion.assume_success">false</boolProp>
  32557. <intProp name="Assertion.test_type">2</intProp>
  32558. </ResponseAssertion>
  32559. <hashTree/>
  32560. </hashTree>
  32561. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by product_url_key" enabled="true">
  32562. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32563. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32564. <collectionProp name="Arguments.arguments">
  32565. <elementProp name="" elementType="HTTPArgument">
  32566. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32567. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  32568. <stringProp name="Argument.metadata">=</stringProp>
  32569. </elementProp>
  32570. </collectionProp>
  32571. </elementProp>
  32572. <stringProp name="HTTPSampler.domain"/>
  32573. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32574. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32575. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32576. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32577. <stringProp name="HTTPSampler.contentEncoding"/>
  32578. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32579. <stringProp name="HTTPSampler.method">POST</stringProp>
  32580. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32581. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32582. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32583. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32584. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32585. <stringProp name="HTTPSampler.embedded_url_re"/>
  32586. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  32587. </HTTPSamplerProxy>
  32588. <hashTree>
  32589. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32590. <collectionProp name="Asserion.test_strings">
  32591. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  32592. </collectionProp>
  32593. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32594. <boolProp name="Assertion.assume_success">false</boolProp>
  32595. <intProp name="Assertion.test_type">2</intProp>
  32596. </ResponseAssertion>
  32597. <hashTree/>
  32598. </hashTree>
  32599. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  32600. <stringProp name="BeanShellSampler.query">
  32601. import java.util.Random;
  32602. Random random = vars.getObject("randomIntGenerator");
  32603. number = random.nextInt(props.get("simple_products_list").size());
  32604. product = props.get("simple_products_list").get(number);
  32605. vars.put("product_url_key", product.get("url_key"));
  32606. vars.put("product_id", product.get("id"));
  32607. vars.put("product_name", product.get("title"));
  32608. vars.put("product_uenc", product.get("uenc"));
  32609. vars.put("product_sku", product.get("sku"));
  32610. </stringProp>
  32611. <stringProp name="BeanShellSampler.filename"/>
  32612. <stringProp name="BeanShellSampler.parameters"/>
  32613. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32614. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  32615. <hashTree/>
  32616. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Simple Product Details by name" enabled="true">
  32617. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32618. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32619. <collectionProp name="Arguments.arguments">
  32620. <elementProp name="" elementType="HTTPArgument">
  32621. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32622. <stringProp name="Argument.value">{"query":"query productDetail($product_sku: String, $onServer: Boolean!) {\n productDetail: products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetail"}</stringProp>
  32623. <stringProp name="Argument.metadata">=</stringProp>
  32624. </elementProp>
  32625. </collectionProp>
  32626. </elementProp>
  32627. <stringProp name="HTTPSampler.domain"/>
  32628. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32629. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32630. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32631. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32632. <stringProp name="HTTPSampler.contentEncoding"/>
  32633. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32634. <stringProp name="HTTPSampler.method">POST</stringProp>
  32635. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32636. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32637. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32638. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32639. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32640. <stringProp name="HTTPSampler.embedded_url_re"/>
  32641. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_name.jmx</stringProp>
  32642. </HTTPSamplerProxy>
  32643. <hashTree>
  32644. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32645. <collectionProp name="Asserion.test_strings">
  32646. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  32647. </collectionProp>
  32648. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32649. <boolProp name="Assertion.assume_success">false</boolProp>
  32650. <intProp name="Assertion.test_type">2</intProp>
  32651. </ResponseAssertion>
  32652. <hashTree/>
  32653. </hashTree>
  32654. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Simple Product Details by product_url_key" enabled="true">
  32655. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32656. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32657. <collectionProp name="Arguments.arguments">
  32658. <elementProp name="" elementType="HTTPArgument">
  32659. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32660. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  32661. <stringProp name="Argument.metadata">=</stringProp>
  32662. </elementProp>
  32663. </collectionProp>
  32664. </elementProp>
  32665. <stringProp name="HTTPSampler.domain"/>
  32666. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32667. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32668. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32669. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32670. <stringProp name="HTTPSampler.contentEncoding"/>
  32671. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32672. <stringProp name="HTTPSampler.method">POST</stringProp>
  32673. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32674. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32675. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32676. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32677. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32678. <stringProp name="HTTPSampler.embedded_url_re"/>
  32679. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  32680. </HTTPSamplerProxy>
  32681. <hashTree>
  32682. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32683. <collectionProp name="Asserion.test_strings">
  32684. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  32685. </collectionProp>
  32686. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32687. <boolProp name="Assertion.assume_success">false</boolProp>
  32688. <intProp name="Assertion.test_type">2</intProp>
  32689. </ResponseAssertion>
  32690. <hashTree/>
  32691. </hashTree>
  32692. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare CMS Page" enabled="true">
  32693. <stringProp name="scriptLanguage">javascript</stringProp>
  32694. <stringProp name="parameters"/>
  32695. <stringProp name="filename"/>
  32696. <stringProp name="cacheKey"/>
  32697. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  32698. var cmsPages = props.get("cms_pages");
  32699. var number = random.nextInt(cmsPages.length);
  32700. vars.put("cms_page_id", cmsPages[number].id);
  32701. </stringProp>
  32702. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/prepare_cms_page.jmx</stringProp></JSR223Sampler>
  32703. <hashTree/>
  32704. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cms Page by id" enabled="true">
  32705. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32706. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32707. <collectionProp name="Arguments.arguments">
  32708. <elementProp name="" elementType="HTTPArgument">
  32709. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32710. <stringProp name="Argument.value">
  32711. {"query":"query getCmsPage($id: Int!, $onServer: Boolean!) {\n cmsPage(id: $id) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"id":${cms_page_id},"onServer":false},"operationName":"getCmsPage"}
  32712. </stringProp>
  32713. <stringProp name="Argument.metadata">=</stringProp>
  32714. </elementProp>
  32715. </collectionProp>
  32716. </elementProp>
  32717. <stringProp name="HTTPSampler.domain"/>
  32718. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32719. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32720. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32721. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32722. <stringProp name="HTTPSampler.contentEncoding"/>
  32723. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32724. <stringProp name="HTTPSampler.method">POST</stringProp>
  32725. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32726. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32727. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32728. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32729. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32730. <stringProp name="HTTPSampler.embedded_url_re"/>
  32731. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_get_cms_page_by_id.jmx</stringProp></HTTPSamplerProxy>
  32732. <hashTree>
  32733. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  32734. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  32735. <stringProp name="EXPECTED_VALUE">${cms_page_id}</stringProp>
  32736. <boolProp name="JSONVALIDATION">false</boolProp>
  32737. <boolProp name="EXPECT_NULL">false</boolProp>
  32738. <boolProp name="INVERT">false</boolProp>
  32739. <boolProp name="ISREGEX">false</boolProp>
  32740. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  32741. <hashTree/>
  32742. </hashTree>
  32743. </hashTree>
  32744. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Checkout By Guest" enabled="true">
  32745. <intProp name="ThroughputController.style">1</intProp>
  32746. <boolProp name="ThroughputController.perThread">false</boolProp>
  32747. <intProp name="ThroughputController.maxThroughput">1</intProp>
  32748. <stringProp name="ThroughputController.percentThroughput">${graphqlCheckoutByGuestPercentage}</stringProp>
  32749. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  32750. <hashTree>
  32751. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  32752. <stringProp name="script">
  32753. var tmpLabel = vars.get("testLabel")
  32754. if (tmpLabel) {
  32755. var testLabel = " (" + tmpLabel + ")"
  32756. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  32757. if (sampler.getName().indexOf(testLabel) == -1) {
  32758. sampler.setName(sampler.getName() + testLabel);
  32759. }
  32760. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  32761. sampler.setName("SetUp - " + sampler.getName());
  32762. }
  32763. } else {
  32764. testLabel = ""
  32765. }
  32766. </stringProp>
  32767. <stringProp name="scriptLanguage">javascript</stringProp>
  32768. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  32769. <hashTree/>
  32770. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  32771. <stringProp name="BeanShellSampler.query">
  32772. vars.put("testLabel", "GraphQL Checkout By Guest");
  32773. </stringProp>
  32774. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32775. </BeanShellSampler>
  32776. <hashTree/>
  32777. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  32778. <collectionProp name="HeaderManager.headers">
  32779. <elementProp name="" elementType="Header">
  32780. <stringProp name="Header.name">Content-Type</stringProp>
  32781. <stringProp name="Header.value">application/json</stringProp>
  32782. </elementProp>
  32783. <elementProp name="" elementType="Header">
  32784. <stringProp name="Header.name">Accept</stringProp>
  32785. <stringProp name="Header.value">*/*</stringProp>
  32786. </elementProp>
  32787. </collectionProp>
  32788. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  32789. <hashTree/>
  32790. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  32791. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  32792. <stringProp name="BeanShellSampler.query">
  32793. import java.util.Random;
  32794. Random random = new Random();
  32795. if (${seedForRandom} &gt; 0) {
  32796. random.setSeed(${seedForRandom} + ${__threadNum});
  32797. }
  32798. vars.putObject("randomIntGenerator", random);
  32799. </stringProp>
  32800. <stringProp name="BeanShellSampler.filename"/>
  32801. <stringProp name="BeanShellSampler.parameters"/>
  32802. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32803. </BeanShellSampler>
  32804. <hashTree/>
  32805. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  32806. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32807. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32808. <collectionProp name="Arguments.arguments">
  32809. <elementProp name="" elementType="HTTPArgument">
  32810. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32811. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  32812. <stringProp name="Argument.metadata">=</stringProp>
  32813. </elementProp>
  32814. </collectionProp>
  32815. </elementProp>
  32816. <stringProp name="HTTPSampler.domain"/>
  32817. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32818. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32819. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32820. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32821. <stringProp name="HTTPSampler.contentEncoding"/>
  32822. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32823. <stringProp name="HTTPSampler.method">POST</stringProp>
  32824. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32825. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32826. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32827. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32828. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32829. <stringProp name="HTTPSampler.embedded_url_re"/>
  32830. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  32831. </HTTPSamplerProxy>
  32832. <hashTree>
  32833. <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">
  32834. <stringProp name="VAR">quote_id</stringProp>
  32835. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  32836. <stringProp name="DEFAULT"/>
  32837. <stringProp name="VARIABLE"/>
  32838. <stringProp name="SUBJECT">BODY</stringProp>
  32839. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  32840. <hashTree/>
  32841. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32842. <collectionProp name="Asserion.test_strings">
  32843. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  32844. </collectionProp>
  32845. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32846. <boolProp name="Assertion.assume_success">false</boolProp>
  32847. <intProp name="Assertion.test_type">2</intProp>
  32848. </ResponseAssertion>
  32849. <hashTree/>
  32850. </hashTree>
  32851. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  32852. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32853. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32854. <collectionProp name="Arguments.arguments">
  32855. <elementProp name="" elementType="HTTPArgument">
  32856. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32857. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  32858. <stringProp name="Argument.metadata">=</stringProp>
  32859. </elementProp>
  32860. </collectionProp>
  32861. </elementProp>
  32862. <stringProp name="HTTPSampler.domain"/>
  32863. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32864. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32865. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32866. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32867. <stringProp name="HTTPSampler.contentEncoding"/>
  32868. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32869. <stringProp name="HTTPSampler.method">POST</stringProp>
  32870. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32871. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32872. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32873. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32874. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32875. <stringProp name="HTTPSampler.embedded_url_re"/>
  32876. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  32877. </HTTPSamplerProxy>
  32878. <hashTree>
  32879. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32880. <collectionProp name="Asserion.test_strings">
  32881. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  32882. </collectionProp>
  32883. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32884. <boolProp name="Assertion.assume_success">false</boolProp>
  32885. <intProp name="Assertion.test_type">8</intProp>
  32886. </ResponseAssertion>
  32887. <hashTree/>
  32888. </hashTree>
  32889. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  32890. <stringProp name="BeanShellSampler.query">
  32891. import java.util.Random;
  32892. Random random = vars.getObject("randomIntGenerator");
  32893. number = random.nextInt(props.get("configurable_products_list").size());
  32894. product = props.get("configurable_products_list").get(number);
  32895. vars.put("product_url_key", product.get("url_key"));
  32896. vars.put("product_id", product.get("id"));
  32897. vars.put("product_name", product.get("title"));
  32898. vars.put("product_uenc", product.get("uenc"));
  32899. vars.put("product_sku", product.get("sku"));
  32900. </stringProp>
  32901. <stringProp name="BeanShellSampler.filename"/>
  32902. <stringProp name="BeanShellSampler.parameters"/>
  32903. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  32904. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  32905. <hashTree/>
  32906. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  32907. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32908. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32909. <collectionProp name="Arguments.arguments">
  32910. <elementProp name="" elementType="HTTPArgument">
  32911. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32912. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  32913. <stringProp name="Argument.metadata">=</stringProp>
  32914. </elementProp>
  32915. </collectionProp>
  32916. </elementProp>
  32917. <stringProp name="HTTPSampler.domain"/>
  32918. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32919. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32920. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32921. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32922. <stringProp name="HTTPSampler.contentEncoding"/>
  32923. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32924. <stringProp name="HTTPSampler.method">POST</stringProp>
  32925. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32926. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32927. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32928. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32929. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32930. <stringProp name="HTTPSampler.embedded_url_re"/>
  32931. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  32932. </HTTPSamplerProxy>
  32933. <hashTree>
  32934. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32935. <collectionProp name="Asserion.test_strings">
  32936. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  32937. </collectionProp>
  32938. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32939. <boolProp name="Assertion.assume_success">false</boolProp>
  32940. <intProp name="Assertion.test_type">2</intProp>
  32941. </ResponseAssertion>
  32942. <hashTree/>
  32943. <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 Configurable Product option" enabled="true">
  32944. <stringProp name="VAR">product_option</stringProp>
  32945. <stringProp name="JSONPATH">$.data.products.items[0].variants[0].product.sku</stringProp>
  32946. <stringProp name="DEFAULT"/>
  32947. <stringProp name="VARIABLE"/>
  32948. <stringProp name="SUBJECT">BODY</stringProp>
  32949. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  32950. <hashTree/>
  32951. </hashTree>
  32952. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Configurable Product To Cart" enabled="true">
  32953. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  32954. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  32955. <collectionProp name="Arguments.arguments">
  32956. <elementProp name="" elementType="HTTPArgument">
  32957. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  32958. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  32959. <stringProp name="Argument.metadata">=</stringProp>
  32960. </elementProp>
  32961. </collectionProp>
  32962. </elementProp>
  32963. <stringProp name="HTTPSampler.domain"/>
  32964. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  32965. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  32966. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  32967. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  32968. <stringProp name="HTTPSampler.contentEncoding"/>
  32969. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  32970. <stringProp name="HTTPSampler.method">POST</stringProp>
  32971. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  32972. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  32973. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  32974. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  32975. <boolProp name="HTTPSampler.monitor">false</boolProp>
  32976. <stringProp name="HTTPSampler.embedded_url_re"/>
  32977. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx</stringProp>
  32978. </HTTPSamplerProxy>
  32979. <hashTree>
  32980. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  32981. <collectionProp name="Asserion.test_strings">
  32982. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  32983. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  32984. </collectionProp>
  32985. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  32986. <boolProp name="Assertion.assume_success">false</boolProp>
  32987. <intProp name="Assertion.test_type">2</intProp>
  32988. </ResponseAssertion>
  32989. <hashTree/>
  32990. </hashTree>
  32991. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  32992. <stringProp name="BeanShellSampler.query">
  32993. import java.util.Random;
  32994. Random random = vars.getObject("randomIntGenerator");
  32995. number = random.nextInt(props.get("simple_products_list").size());
  32996. product = props.get("simple_products_list").get(number);
  32997. vars.put("product_url_key", product.get("url_key"));
  32998. vars.put("product_id", product.get("id"));
  32999. vars.put("product_name", product.get("title"));
  33000. vars.put("product_uenc", product.get("uenc"));
  33001. vars.put("product_sku", product.get("sku"));
  33002. </stringProp>
  33003. <stringProp name="BeanShellSampler.filename"/>
  33004. <stringProp name="BeanShellSampler.parameters"/>
  33005. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33006. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  33007. <hashTree/>
  33008. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Simple Product To Cart" enabled="true">
  33009. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33010. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33011. <collectionProp name="Arguments.arguments">
  33012. <elementProp name="" elementType="HTTPArgument">
  33013. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33014. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33015. <stringProp name="Argument.metadata">=</stringProp>
  33016. </elementProp>
  33017. </collectionProp>
  33018. </elementProp>
  33019. <stringProp name="HTTPSampler.domain"/>
  33020. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33021. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33022. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33023. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33024. <stringProp name="HTTPSampler.contentEncoding"/>
  33025. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33026. <stringProp name="HTTPSampler.method">POST</stringProp>
  33027. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33028. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33029. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33030. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33031. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33032. <stringProp name="HTTPSampler.embedded_url_re"/>
  33033. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  33034. </HTTPSamplerProxy>
  33035. <hashTree>
  33036. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33037. <collectionProp name="Asserion.test_strings">
  33038. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  33039. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  33040. </collectionProp>
  33041. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33042. <boolProp name="Assertion.assume_success">false</boolProp>
  33043. <intProp name="Assertion.test_type">2</intProp>
  33044. </ResponseAssertion>
  33045. <hashTree/>
  33046. </hashTree>
  33047. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Billing Address On Cart" enabled="true">
  33048. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33049. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33050. <collectionProp name="Arguments.arguments">
  33051. <elementProp name="" elementType="HTTPArgument">
  33052. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33053. <stringProp name="Argument.value">{"query":"mutation {\n setBillingAddressOnCart(\n input: {\n cart_id: \"${quote_id}\"\n billing_address: {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n }\n ) {\n cart {\n billing_address {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33054. <stringProp name="Argument.metadata">=</stringProp>
  33055. </elementProp>
  33056. </collectionProp>
  33057. </elementProp>
  33058. <stringProp name="HTTPSampler.domain"/>
  33059. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33060. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33061. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33062. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33063. <stringProp name="HTTPSampler.contentEncoding"/>
  33064. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33065. <stringProp name="HTTPSampler.method">POST</stringProp>
  33066. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33067. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33068. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33069. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33070. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33071. <stringProp name="HTTPSampler.embedded_url_re"/>
  33072. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_billing_address_on_cart.jmx</stringProp>
  33073. </HTTPSamplerProxy>
  33074. <hashTree>
  33075. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33076. <collectionProp name="Asserion.test_strings">
  33077. <stringProp name="1147076914">{"data":{"setBillingAddressOnCart":{"cart":{"billing_address":{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}}}}}</stringProp>
  33078. </collectionProp>
  33079. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33080. <boolProp name="Assertion.assume_success">false</boolProp>
  33081. <intProp name="Assertion.test_type">8</intProp>
  33082. </ResponseAssertion>
  33083. <hashTree/>
  33084. </hashTree>
  33085. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Address On Cart" enabled="true">
  33086. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33087. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33088. <collectionProp name="Arguments.arguments">
  33089. <elementProp name="" elementType="HTTPArgument">
  33090. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33091. <stringProp name="Argument.value">{"query":"mutation {\n setShippingAddressesOnCart(\n input: {\n cart_id: \"${quote_id}\"\n shipping_addresses: [\n {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n ]\n }\n ) {\n cart {\n shipping_addresses {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33092. <stringProp name="Argument.metadata">=</stringProp>
  33093. </elementProp>
  33094. </collectionProp>
  33095. </elementProp>
  33096. <stringProp name="HTTPSampler.domain"/>
  33097. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33098. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33099. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33100. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33101. <stringProp name="HTTPSampler.contentEncoding"/>
  33102. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33103. <stringProp name="HTTPSampler.method">POST</stringProp>
  33104. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33105. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33106. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33107. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33108. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33109. <stringProp name="HTTPSampler.embedded_url_re"/>
  33110. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_shipping_address_on_cart.jmx</stringProp>
  33111. </HTTPSamplerProxy>
  33112. <hashTree>
  33113. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33114. <collectionProp name="Asserion.test_strings">
  33115. <stringProp name="-1671866339">{"data":{"setShippingAddressesOnCart":{"cart":{"shipping_addresses":[{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}]}}}}</stringProp>
  33116. </collectionProp>
  33117. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33118. <boolProp name="Assertion.assume_success">false</boolProp>
  33119. <intProp name="Assertion.test_type">8</intProp>
  33120. </ResponseAssertion>
  33121. <hashTree/>
  33122. </hashTree>
  33123. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Payment Method On Cart" enabled="true">
  33124. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33125. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33126. <collectionProp name="Arguments.arguments">
  33127. <elementProp name="" elementType="HTTPArgument">
  33128. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33129. <stringProp name="Argument.value">{"query":"mutation {\n setPaymentMethodOnCart(input: {\n cart_id: \"${quote_id}\", \n payment_method: {\n code: \"checkmo\"\n }\n }) {\n cart {\n selected_payment_method {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33130. <stringProp name="Argument.metadata">=</stringProp>
  33131. </elementProp>
  33132. </collectionProp>
  33133. </elementProp>
  33134. <stringProp name="HTTPSampler.domain"/>
  33135. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33136. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33137. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33138. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33139. <stringProp name="HTTPSampler.contentEncoding"/>
  33140. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33141. <stringProp name="HTTPSampler.method">POST</stringProp>
  33142. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33143. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33144. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33145. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33146. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33147. <stringProp name="HTTPSampler.embedded_url_re"/>
  33148. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_payment_method_on_cart.jmx</stringProp>
  33149. </HTTPSamplerProxy>
  33150. <hashTree>
  33151. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33152. <collectionProp name="Asserion.test_strings">
  33153. <stringProp name="-1830199373">{"data":{"setPaymentMethodOnCart":{"cart":{"selected_payment_method":{"code":"checkmo"}}}}}</stringProp>
  33154. </collectionProp>
  33155. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33156. <boolProp name="Assertion.assume_success">false</boolProp>
  33157. <intProp name="Assertion.test_type">8</intProp>
  33158. </ResponseAssertion>
  33159. <hashTree/>
  33160. </hashTree>
  33161. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Current Shipping Address" enabled="true">
  33162. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33163. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33164. <collectionProp name="Arguments.arguments">
  33165. <elementProp name="" elementType="HTTPArgument">
  33166. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33167. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n shipping_addresses {\n postcode\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33168. <stringProp name="Argument.metadata">=</stringProp>
  33169. </elementProp>
  33170. </collectionProp>
  33171. </elementProp>
  33172. <stringProp name="HTTPSampler.domain"/>
  33173. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33174. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33175. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33176. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33177. <stringProp name="HTTPSampler.contentEncoding"/>
  33178. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33179. <stringProp name="HTTPSampler.method">POST</stringProp>
  33180. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33181. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33182. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33183. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33184. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33185. <stringProp name="HTTPSampler.embedded_url_re"/>
  33186. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_current_shipping_address.jmx</stringProp>
  33187. </HTTPSamplerProxy>
  33188. <hashTree/>
  33189. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Method On Cart" enabled="true">
  33190. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33191. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33192. <collectionProp name="Arguments.arguments">
  33193. <elementProp name="" elementType="HTTPArgument">
  33194. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33195. <stringProp name="Argument.value">{"query":"mutation {\n setShippingMethodsOnCart(input: \n {\n cart_id: \"${quote_id}\", \n shipping_methods: [{\n carrier_code: \"flatrate\"\n method_code: \"flatrate\"\n }]\n }) {\n cart {\n shipping_addresses {\n selected_shipping_method {\n carrier_code\n method_code\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33196. <stringProp name="Argument.metadata">=</stringProp>
  33197. </elementProp>
  33198. </collectionProp>
  33199. </elementProp>
  33200. <stringProp name="HTTPSampler.domain"/>
  33201. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33202. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33203. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33204. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33205. <stringProp name="HTTPSampler.contentEncoding"/>
  33206. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33207. <stringProp name="HTTPSampler.method">POST</stringProp>
  33208. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33209. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33210. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33211. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33212. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33213. <stringProp name="HTTPSampler.embedded_url_re"/>
  33214. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_shipping_method_on_cart.jmx</stringProp>
  33215. </HTTPSamplerProxy>
  33216. <hashTree>
  33217. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33218. <collectionProp name="Asserion.test_strings">
  33219. <stringProp name="644143859">{"data":{"setShippingMethodsOnCart":{"cart":{"shipping_addresses":[{"selected_shipping_method":{"carrier_code":"flatrate","method_code":"flatrate"}}]}}}}</stringProp>
  33220. </collectionProp>
  33221. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33222. <boolProp name="Assertion.assume_success">false</boolProp>
  33223. <intProp name="Assertion.test_type">8</intProp>
  33224. </ResponseAssertion>
  33225. <hashTree/>
  33226. </hashTree>
  33227. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Coupon Code Data" enabled="true">
  33228. <stringProp name="scriptLanguage">javascript</stringProp>
  33229. <stringProp name="parameters"/>
  33230. <stringProp name="filename"/>
  33231. <stringProp name="cacheKey"/>
  33232. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  33233. var coupons = props.get("coupon_codes");
  33234. number = random.nextInt(coupons.length);
  33235. vars.put("coupon_code", coupons[number].code);
  33236. </stringProp>
  33237. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_coupon_code_setup.jmx</stringProp>
  33238. </JSR223Sampler>
  33239. <hashTree/>
  33240. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Apply Coupon To Cart" enabled="true">
  33241. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33242. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33243. <collectionProp name="Arguments.arguments">
  33244. <elementProp name="" elementType="HTTPArgument">
  33245. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33246. <stringProp name="Argument.value">{"query":"mutation {\n applyCouponToCart(input: {cart_id: \"${quote_id}\", coupon_code: \"${coupon_code}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33247. <stringProp name="Argument.metadata">=</stringProp>
  33248. </elementProp>
  33249. </collectionProp>
  33250. </elementProp>
  33251. <stringProp name="HTTPSampler.domain"/>
  33252. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33253. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33254. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33255. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33256. <stringProp name="HTTPSampler.contentEncoding"/>
  33257. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33258. <stringProp name="HTTPSampler.method">POST</stringProp>
  33259. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33260. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33261. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33262. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33263. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33264. <stringProp name="HTTPSampler.embedded_url_re"/>
  33265. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/apply_coupon_to_cart.jmx</stringProp>
  33266. </HTTPSamplerProxy>
  33267. <hashTree>
  33268. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33269. <collectionProp name="Asserion.test_strings">
  33270. <stringProp name="1026466978">{"data":{"applyCouponToCart":{"cart":{"applied_coupon":{"code":"${coupon_code}"}}}}}</stringProp>
  33271. </collectionProp>
  33272. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33273. <boolProp name="Assertion.assume_success">false</boolProp>
  33274. <intProp name="Assertion.test_type">8</intProp>
  33275. </ResponseAssertion>
  33276. <hashTree/>
  33277. </hashTree>
  33278. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Remove Coupon From Cart" enabled="true">
  33279. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33280. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33281. <collectionProp name="Arguments.arguments">
  33282. <elementProp name="" elementType="HTTPArgument">
  33283. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33284. <stringProp name="Argument.value">{"query":"mutation {\n removeCouponFromCart(input: {cart_id: \"${quote_id}\"}) {\n cart {\n applied_coupon {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33285. <stringProp name="Argument.metadata">=</stringProp>
  33286. </elementProp>
  33287. </collectionProp>
  33288. </elementProp>
  33289. <stringProp name="HTTPSampler.domain"/>
  33290. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33291. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33292. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33293. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33294. <stringProp name="HTTPSampler.contentEncoding"/>
  33295. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33296. <stringProp name="HTTPSampler.method">POST</stringProp>
  33297. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33298. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33299. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33300. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33301. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33302. <stringProp name="HTTPSampler.embedded_url_re"/>
  33303. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/remove_coupon_from_cart.jmx</stringProp>
  33304. </HTTPSamplerProxy>
  33305. <hashTree>
  33306. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33307. <collectionProp name="Asserion.test_strings">
  33308. <stringProp name="-76201335">{"data":{"removeCouponFromCart":{"cart":{"applied_coupon":null}}}}</stringProp>
  33309. </collectionProp>
  33310. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33311. <boolProp name="Assertion.assume_success">false</boolProp>
  33312. <intProp name="Assertion.test_type">8</intProp>
  33313. </ResponseAssertion>
  33314. <hashTree/>
  33315. </hashTree>
  33316. </hashTree>
  33317. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Checkout A Large Bulk Of Products By Guest" enabled="true">
  33318. <intProp name="ThroughputController.style">1</intProp>
  33319. <boolProp name="ThroughputController.perThread">false</boolProp>
  33320. <intProp name="ThroughputController.maxThroughput">1</intProp>
  33321. <stringProp name="ThroughputController.percentThroughput">${graphqlCheckoutALargeBulkOfProductsByGuestPercentage}</stringProp>
  33322. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  33323. <hashTree>
  33324. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  33325. <stringProp name="script">
  33326. var tmpLabel = vars.get("testLabel")
  33327. if (tmpLabel) {
  33328. var testLabel = " (" + tmpLabel + ")"
  33329. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  33330. if (sampler.getName().indexOf(testLabel) == -1) {
  33331. sampler.setName(sampler.getName() + testLabel);
  33332. }
  33333. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  33334. sampler.setName("SetUp - " + sampler.getName());
  33335. }
  33336. } else {
  33337. testLabel = ""
  33338. }
  33339. </stringProp>
  33340. <stringProp name="scriptLanguage">javascript</stringProp>
  33341. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  33342. <hashTree/>
  33343. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  33344. <stringProp name="BeanShellSampler.query">
  33345. vars.put("testLabel", "GraphQL Checkout A Large Bulk Of Products By Guest");
  33346. </stringProp>
  33347. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33348. </BeanShellSampler>
  33349. <hashTree/>
  33350. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  33351. <collectionProp name="HeaderManager.headers">
  33352. <elementProp name="" elementType="Header">
  33353. <stringProp name="Header.name">Content-Type</stringProp>
  33354. <stringProp name="Header.value">application/json</stringProp>
  33355. </elementProp>
  33356. <elementProp name="" elementType="Header">
  33357. <stringProp name="Header.name">Accept</stringProp>
  33358. <stringProp name="Header.value">*/*</stringProp>
  33359. </elementProp>
  33360. </collectionProp>
  33361. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  33362. <hashTree/>
  33363. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  33364. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  33365. <stringProp name="BeanShellSampler.query">
  33366. vars.put("totalProductsAdded", "0");
  33367. </stringProp>
  33368. <stringProp name="BeanShellSampler.filename"/>
  33369. <stringProp name="BeanShellSampler.parameters"/>
  33370. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33371. </BeanShellSampler>
  33372. <hashTree/>
  33373. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Of Simple And Configurable Products In Cart" enabled="true">
  33374. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_simple_and_configurable_products_in_cart_setup.jmx</stringProp>
  33375. <stringProp name="BeanShellSampler.query">
  33376. vars.put("totalSimpleProductsAdded", "0");
  33377. vars.put("totalConfigurableProductsAdded", "0");
  33378. </stringProp>
  33379. <stringProp name="BeanShellSampler.filename"/>
  33380. <stringProp name="BeanShellSampler.parameters"/>
  33381. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33382. </BeanShellSampler>
  33383. <hashTree/>
  33384. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  33385. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33386. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33387. <collectionProp name="Arguments.arguments">
  33388. <elementProp name="" elementType="HTTPArgument">
  33389. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33390. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  33391. <stringProp name="Argument.metadata">=</stringProp>
  33392. </elementProp>
  33393. </collectionProp>
  33394. </elementProp>
  33395. <stringProp name="HTTPSampler.domain"/>
  33396. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33397. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33398. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33399. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33400. <stringProp name="HTTPSampler.contentEncoding"/>
  33401. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33402. <stringProp name="HTTPSampler.method">POST</stringProp>
  33403. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33404. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33405. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33406. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33407. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33408. <stringProp name="HTTPSampler.embedded_url_re"/>
  33409. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  33410. </HTTPSamplerProxy>
  33411. <hashTree>
  33412. <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">
  33413. <stringProp name="VAR">quote_id</stringProp>
  33414. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  33415. <stringProp name="DEFAULT"/>
  33416. <stringProp name="VARIABLE"/>
  33417. <stringProp name="SUBJECT">BODY</stringProp>
  33418. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  33419. <hashTree/>
  33420. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33421. <collectionProp name="Asserion.test_strings">
  33422. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  33423. </collectionProp>
  33424. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33425. <boolProp name="Assertion.assume_success">false</boolProp>
  33426. <intProp name="Assertion.test_type">2</intProp>
  33427. </ResponseAssertion>
  33428. <hashTree/>
  33429. </hashTree>
  33430. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  33431. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33432. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33433. <collectionProp name="Arguments.arguments">
  33434. <elementProp name="" elementType="HTTPArgument">
  33435. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33436. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33437. <stringProp name="Argument.metadata">=</stringProp>
  33438. </elementProp>
  33439. </collectionProp>
  33440. </elementProp>
  33441. <stringProp name="HTTPSampler.domain"/>
  33442. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33443. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33444. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33445. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33446. <stringProp name="HTTPSampler.contentEncoding"/>
  33447. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33448. <stringProp name="HTTPSampler.method">POST</stringProp>
  33449. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33450. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33451. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33452. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33453. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33454. <stringProp name="HTTPSampler.embedded_url_re"/>
  33455. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  33456. </HTTPSamplerProxy>
  33457. <hashTree>
  33458. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33459. <collectionProp name="Asserion.test_strings">
  33460. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  33461. </collectionProp>
  33462. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33463. <boolProp name="Assertion.assume_success">false</boolProp>
  33464. <intProp name="Assertion.test_type">8</intProp>
  33465. </ResponseAssertion>
  33466. <hashTree/>
  33467. </hashTree>
  33468. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Bulk Of Simple Products to Cart" enabled="true">
  33469. <boolProp name="LoopController.continue_forever">true</boolProp>
  33470. <stringProp name="LoopController.loops">1</stringProp>
  33471. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  33472. <hashTree>
  33473. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  33474. <stringProp name="CounterConfig.start">1</stringProp>
  33475. <stringProp name="CounterConfig.end"/>
  33476. <stringProp name="CounterConfig.incr">1</stringProp>
  33477. <stringProp name="CounterConfig.name">_counter</stringProp>
  33478. <stringProp name="CounterConfig.format"/>
  33479. <boolProp name="CounterConfig.per_user">true</boolProp>
  33480. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  33481. </CounterConfig>
  33482. <hashTree/>
  33483. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  33484. <stringProp name="BeanShellSampler.query">
  33485. simpleProductsAdded = Integer.parseInt(vars.get("totalSimpleProductsAdded"));
  33486. lastSimpleProduct = Integer.parseInt(vars.get("numberOfRelatedSimpleProductsInTheCart")) - 1;
  33487. product = props.get("simple_products_list").get(lastSimpleProduct);
  33488. vars.put("product_url_key", product.get("url_key"));
  33489. vars.put("product_id", product.get("id"));
  33490. vars.put("product_name", product.get("title"));
  33491. vars.put("product_uenc", product.get("uenc"));
  33492. vars.put("product_sku", product.get("sku"));
  33493. simpleProductsAdded = simpleProductsAdded + 1;
  33494. vars.put("totalSimpleProductsAdded", String.valueOf(simpleProductsAdded));
  33495. </stringProp>
  33496. <stringProp name="BeanShellSampler.filename"/>
  33497. <stringProp name="BeanShellSampler.parameters"/>
  33498. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33499. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup_large_bulk_of_products.jmx</stringProp></BeanShellSampler>
  33500. <hashTree/>
  33501. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  33502. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  33503. <stringProp name="BeanShellSampler.query">
  33504. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  33505. productsAdded = productsAdded + 1;
  33506. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  33507. </stringProp>
  33508. <stringProp name="BeanShellSampler.filename"/>
  33509. <stringProp name="BeanShellSampler.parameters"/>
  33510. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33511. </BeanShellSampler>
  33512. <hashTree/>
  33513. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Bulk Of Simple Products to Cart" enabled="true">
  33514. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33515. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33516. <collectionProp name="Arguments.arguments">
  33517. <elementProp name="" elementType="HTTPArgument">
  33518. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33519. <stringProp name="Argument.value">{"query":"mutation{ addProductsToCart( cartId: \"${quote_id}\" cartItems: [{ sku: \"${product_sku}\" quantity: 1 }, ${related_product}] ){ cart{ id items{ product{ sku } quantity } } } }","variables":null,"operationName":null}</stringProp>
  33520. <stringProp name="Argument.metadata">=</stringProp>
  33521. </elementProp>
  33522. </collectionProp>
  33523. </elementProp>
  33524. <stringProp name="HTTPSampler.domain"/>
  33525. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33526. <stringProp name="HTTPSampler.connect_timeout">8000000</stringProp>
  33527. <stringProp name="HTTPSampler.response_timeout">8000000</stringProp>
  33528. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33529. <stringProp name="HTTPSampler.contentEncoding"/>
  33530. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33531. <stringProp name="HTTPSampler.method">POST</stringProp>
  33532. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33533. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33534. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33535. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33536. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33537. <stringProp name="HTTPSampler.embedded_url_re"/>
  33538. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/add_simple_products_to_cart.jmx</stringProp>
  33539. </HTTPSamplerProxy>
  33540. <hashTree>
  33541. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33542. <collectionProp name="Asserion.test_strings">
  33543. <stringProp name="2032239040">addProductsToCart</stringProp>
  33544. <stringProp name="675049292">"sku":"${product_sku}"</stringProp>
  33545. </collectionProp>
  33546. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33547. <boolProp name="Assertion.assume_success">false</boolProp>
  33548. <intProp name="Assertion.test_type">2</intProp>
  33549. </ResponseAssertion>
  33550. <hashTree/>
  33551. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Add Related Product Argument" enabled="true">
  33552. <stringProp name="scriptLanguage">groovy</stringProp>
  33553. <stringProp name="parameters"/>
  33554. <stringProp name="filename"/>
  33555. <stringProp name="cacheKey">true</stringProp>
  33556. <stringProp name="script">
  33557. numberOfSimpleProducts = Integer.parseInt(vars.get("numberOfRelatedSimpleProductsInTheCart")) - 1;
  33558. def relatedProductSKUs = props.get('simple_products_list').take(numberOfSimpleProducts).inject('') {acc, prod -&gt; acc + '{ sku: \\"' + prod.get("sku") + '\\" quantity: 1 },' };
  33559. vars.put('related_product', relatedProductSKUs);
  33560. simpleProductsAdded = Integer.parseInt(vars.get("totalSimpleProductsAdded"));
  33561. simpleProductsAdded = simpleProductsAdded + numberOfSimpleProducts;
  33562. vars.put("totalSimpleProductsAdded", String.valueOf(simpleProductsAdded));
  33563. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  33564. productsAdded = productsAdded + numberOfSimpleProducts;
  33565. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  33566. </stringProp>
  33567. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/related_products_add_to_cart_preprocessor.jmx</stringProp></JSR223PreProcessor>
  33568. <hashTree/>
  33569. </hashTree>
  33570. </hashTree>
  33571. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Additional Configurable Products to Cart" enabled="true">
  33572. <boolProp name="LoopController.continue_forever">true</boolProp>
  33573. <stringProp name="LoopController.loops">2</stringProp>
  33574. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  33575. <hashTree>
  33576. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  33577. <stringProp name="CounterConfig.start">1</stringProp>
  33578. <stringProp name="CounterConfig.end"/>
  33579. <stringProp name="CounterConfig.incr">1</stringProp>
  33580. <stringProp name="CounterConfig.name">_counter</stringProp>
  33581. <stringProp name="CounterConfig.format"/>
  33582. <boolProp name="CounterConfig.per_user">true</boolProp>
  33583. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  33584. </CounterConfig>
  33585. <hashTree/>
  33586. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  33587. <stringProp name="BeanShellSampler.query">
  33588. configurableProductsAdded = Integer.parseInt(vars.get("totalConfigurableProductsAdded"));
  33589. product = props.get("configurable_products_list").get(configurableProductsAdded);
  33590. vars.put("product_number", configurableProductsAdded.toString());
  33591. vars.put("product_url_key", product.get("url_key"));
  33592. vars.put("product_id", product.get("id"));
  33593. vars.put("product_name", product.get("title"));
  33594. vars.put("product_uenc", product.get("uenc"));
  33595. vars.put("product_sku", product.get("sku"));
  33596. configurableProductsAdded = configurableProductsAdded + 1;
  33597. vars.put("totalConfigurableProductsAdded", String.valueOf(configurableProductsAdded));
  33598. </stringProp>
  33599. <stringProp name="BeanShellSampler.filename"/>
  33600. <stringProp name="BeanShellSampler.parameters"/>
  33601. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33602. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup_large_number_of_products.jmx</stringProp></BeanShellSampler>
  33603. <hashTree/>
  33604. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  33605. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  33606. <stringProp name="BeanShellSampler.query">
  33607. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  33608. productsAdded = productsAdded + 1;
  33609. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  33610. </stringProp>
  33611. <stringProp name="BeanShellSampler.filename"/>
  33612. <stringProp name="BeanShellSampler.parameters"/>
  33613. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  33614. </BeanShellSampler>
  33615. <hashTree/>
  33616. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Details by name" enabled="true">
  33617. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33618. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33619. <collectionProp name="Arguments.arguments">
  33620. <elementProp name="" elementType="HTTPArgument">
  33621. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33622. <stringProp name="Argument.value">{"query":"query productDetailByName($product_sku: String, $onServer: Boolean!) {\n products(filter: { sku: { eq: $product_sku } }, sort: {name: ASC}) {\n items {\n id\n sku\n name\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n #fashion_color\n #fashion_size\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"product_sku":"${product_sku}","onServer":false},"operationName":"productDetailByName"}</stringProp>
  33623. <stringProp name="Argument.metadata">=</stringProp>
  33624. </elementProp>
  33625. </collectionProp>
  33626. </elementProp>
  33627. <stringProp name="HTTPSampler.domain"/>
  33628. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33629. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33630. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33631. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33632. <stringProp name="HTTPSampler.contentEncoding"/>
  33633. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33634. <stringProp name="HTTPSampler.method">POST</stringProp>
  33635. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33636. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33637. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33638. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33639. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33640. <stringProp name="HTTPSampler.embedded_url_re"/>
  33641. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_name.jmx</stringProp>
  33642. </HTTPSamplerProxy>
  33643. <hashTree>
  33644. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33645. <collectionProp name="Asserion.test_strings">
  33646. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  33647. </collectionProp>
  33648. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33649. <boolProp name="Assertion.assume_success">false</boolProp>
  33650. <intProp name="Assertion.test_type">2</intProp>
  33651. </ResponseAssertion>
  33652. <hashTree/>
  33653. <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 Configurable Product option" enabled="true">
  33654. <stringProp name="VAR">product_option</stringProp>
  33655. <stringProp name="JSONPATH">$.data.products.items[0].variants[0].product.sku</stringProp>
  33656. <stringProp name="DEFAULT"/>
  33657. <stringProp name="VARIABLE"/>
  33658. <stringProp name="SUBJECT">BODY</stringProp>
  33659. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  33660. <hashTree/>
  33661. </hashTree>
  33662. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart - Total: ${totalProductsAdded}" enabled="true">
  33663. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33664. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33665. <collectionProp name="Arguments.arguments">
  33666. <elementProp name="" elementType="HTTPArgument">
  33667. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33668. <stringProp name="Argument.value">{"query":"mutation { addProductsToCart( cartId: \"${quote_id}\" cartItems: [ { quantity: 1 parent_sku: \"${product_sku}\" sku: \"${product_option}\" } ] ) { cart { items { id product { name sku } quantity } } } }","variables":null,"operationName":null}</stringProp>
  33669. <stringProp name="Argument.metadata">=</stringProp>
  33670. </elementProp>
  33671. </collectionProp>
  33672. </elementProp>
  33673. <stringProp name="HTTPSampler.domain"/>
  33674. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33675. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33676. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33677. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33678. <stringProp name="HTTPSampler.contentEncoding"/>
  33679. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33680. <stringProp name="HTTPSampler.method">POST</stringProp>
  33681. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33682. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33683. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33684. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33685. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33686. <stringProp name="HTTPSampler.embedded_url_re"/>
  33687. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/add_configurable_product_to_cart.jmx</stringProp>
  33688. </HTTPSamplerProxy>
  33689. <hashTree>
  33690. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33691. <collectionProp name="Asserion.test_strings">
  33692. <stringProp name="2032239040">addProductsToCart</stringProp>
  33693. <stringProp name="-1221840880">"sku":"${product_option}"</stringProp>
  33694. </collectionProp>
  33695. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33696. <boolProp name="Assertion.assume_success">false</boolProp>
  33697. <intProp name="Assertion.test_type">2</intProp>
  33698. </ResponseAssertion>
  33699. <hashTree/>
  33700. </hashTree>
  33701. </hashTree>
  33702. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Billing And Shipping Address On Cart" enabled="true">
  33703. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33704. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33705. <collectionProp name="Arguments.arguments">
  33706. <elementProp name="" elementType="HTTPArgument">
  33707. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33708. <stringProp name="Argument.value">{"query":"mutation{ setBillingAddressOnCart(input: { cart_id: \"${quote_id}\" billing_address: { address: { city: \"Los Angeles\" country_code: \"US\" firstname: \"Async\" lastname: \"Test\" region_id: 12 postcode: \"90004\" street: [ \"123 Homey Lane\" ] telephone: \"6666666666\" } use_for_shipping: true } }){ cart{ id billing_address{ firstname lastname telephone country{ code } region { label region_id } city postcode street } shipping_addresses{ firstname lastname telephone country{ code } region { label region_id } city postcode street } } } }","variables":null,"operationName":null}</stringProp>
  33709. <stringProp name="Argument.metadata">=</stringProp>
  33710. </elementProp>
  33711. </collectionProp>
  33712. </elementProp>
  33713. <stringProp name="HTTPSampler.domain"/>
  33714. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33715. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33716. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33717. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33718. <stringProp name="HTTPSampler.contentEncoding"/>
  33719. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33720. <stringProp name="HTTPSampler.method">POST</stringProp>
  33721. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33722. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33723. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33724. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33725. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33726. <stringProp name="HTTPSampler.embedded_url_re"/>
  33727. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/set_billing_and_shipping_address_on_cart.jmx</stringProp>
  33728. </HTTPSamplerProxy>
  33729. <hashTree>
  33730. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33731. <collectionProp name="Asserion.test_strings">
  33732. <stringProp name="-1150683822">"firstname":"Async","lastname":"Test","telephone":"6666666666"</stringProp>
  33733. </collectionProp>
  33734. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33735. <boolProp name="Assertion.assume_success">false</boolProp>
  33736. <intProp name="Assertion.test_type">2</intProp>
  33737. </ResponseAssertion>
  33738. <hashTree/>
  33739. </hashTree>
  33740. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Payment Method On Cart" enabled="true">
  33741. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33742. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33743. <collectionProp name="Arguments.arguments">
  33744. <elementProp name="" elementType="HTTPArgument">
  33745. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33746. <stringProp name="Argument.value">{"query":"mutation{ setPaymentMethodOnCart(input: { cart_id: \"${quote_id}\" payment_method: { code: \"checkmo\" } }){ cart{ id selected_payment_method{ code title } } } }","variables":null,"operationName":null}</stringProp>
  33747. <stringProp name="Argument.metadata">=</stringProp>
  33748. </elementProp>
  33749. </collectionProp>
  33750. </elementProp>
  33751. <stringProp name="HTTPSampler.domain"/>
  33752. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33753. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33754. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33755. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33756. <stringProp name="HTTPSampler.contentEncoding"/>
  33757. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33758. <stringProp name="HTTPSampler.method">POST</stringProp>
  33759. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33760. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33761. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33762. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33763. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33764. <stringProp name="HTTPSampler.embedded_url_re"/>
  33765. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/set_payment_method_on_cart.jmx</stringProp>
  33766. </HTTPSamplerProxy>
  33767. <hashTree>
  33768. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33769. <collectionProp name="Asserion.test_strings">
  33770. <stringProp name="-1549872178">Money order</stringProp>
  33771. </collectionProp>
  33772. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33773. <boolProp name="Assertion.assume_success">false</boolProp>
  33774. <intProp name="Assertion.test_type">2</intProp>
  33775. </ResponseAssertion>
  33776. <hashTree/>
  33777. </hashTree>
  33778. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Guest Email On Cart" enabled="true">
  33779. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33780. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33781. <collectionProp name="Arguments.arguments">
  33782. <elementProp name="" elementType="HTTPArgument">
  33783. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33784. <stringProp name="Argument.value">{"query":"mutation { setGuestEmailOnCart( input: { cart_id: \"${quote_id}\" email: \"customer@example.com\" } ) { cart { email } } }","variables":null,"operationName":null}</stringProp>
  33785. <stringProp name="Argument.metadata">=</stringProp>
  33786. </elementProp>
  33787. </collectionProp>
  33788. </elementProp>
  33789. <stringProp name="HTTPSampler.domain"/>
  33790. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33791. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33792. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33793. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33794. <stringProp name="HTTPSampler.contentEncoding"/>
  33795. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33796. <stringProp name="HTTPSampler.method">POST</stringProp>
  33797. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33798. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33799. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33800. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33801. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33802. <stringProp name="HTTPSampler.embedded_url_re"/>
  33803. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/set_guest_email_on_cart.jmx</stringProp>
  33804. </HTTPSamplerProxy>
  33805. <hashTree>
  33806. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33807. <collectionProp name="Asserion.test_strings">
  33808. <stringProp name="634186982">{"data":{"setGuestEmailOnCart":{"cart":{"email":"customer@example.com"}}}}</stringProp>
  33809. </collectionProp>
  33810. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33811. <boolProp name="Assertion.assume_success">false</boolProp>
  33812. <intProp name="Assertion.test_type">8</intProp>
  33813. </ResponseAssertion>
  33814. <hashTree/>
  33815. </hashTree>
  33816. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Method On Cart" enabled="true">
  33817. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33818. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33819. <collectionProp name="Arguments.arguments">
  33820. <elementProp name="" elementType="HTTPArgument">
  33821. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33822. <stringProp name="Argument.value">{"query":"mutation {\n setShippingMethodsOnCart(input: \n {\n cart_id: \"${quote_id}\", \n shipping_methods: [{\n carrier_code: \"flatrate\"\n method_code: \"flatrate\"\n }]\n }) {\n cart {\n shipping_addresses {\n selected_shipping_method {\n carrier_code\n method_code\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  33823. <stringProp name="Argument.metadata">=</stringProp>
  33824. </elementProp>
  33825. </collectionProp>
  33826. </elementProp>
  33827. <stringProp name="HTTPSampler.domain"/>
  33828. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33829. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33830. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33831. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33832. <stringProp name="HTTPSampler.contentEncoding"/>
  33833. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33834. <stringProp name="HTTPSampler.method">POST</stringProp>
  33835. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33836. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33837. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33838. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33839. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33840. <stringProp name="HTTPSampler.embedded_url_re"/>
  33841. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/set_shipping_method_on_cart.jmx</stringProp>
  33842. </HTTPSamplerProxy>
  33843. <hashTree>
  33844. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33845. <collectionProp name="Asserion.test_strings">
  33846. <stringProp name="644143859">{"data":{"setShippingMethodsOnCart":{"cart":{"shipping_addresses":[{"selected_shipping_method":{"carrier_code":"flatrate","method_code":"flatrate"}}]}}}}</stringProp>
  33847. </collectionProp>
  33848. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33849. <boolProp name="Assertion.assume_success">false</boolProp>
  33850. <intProp name="Assertion.test_type">8</intProp>
  33851. </ResponseAssertion>
  33852. <hashTree/>
  33853. </hashTree>
  33854. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart" enabled="true">
  33855. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33856. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33857. <collectionProp name="Arguments.arguments">
  33858. <elementProp name="" elementType="HTTPArgument">
  33859. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33860. <stringProp name="Argument.value">{"query":"{ cart(cart_id: \"${quote_id}\") { total_quantity email billing_address { city country { code label } firstname lastname postcode region { code label } street telephone } shipping_addresses { firstname lastname street city region { code label } country { code label } telephone available_shipping_methods { amount { currency value } available carrier_code carrier_title error_message method_code method_title price_excl_tax { value currency } price_incl_tax { value currency } } selected_shipping_method { amount { value currency } carrier_code carrier_title method_code method_title } } items { id product { name sku } quantity } available_payment_methods { code title } selected_payment_method { code title } applied_coupons { code } prices { grand_total { value currency } } } }","variables":null,"operationName":null}</stringProp>
  33861. <stringProp name="Argument.metadata">=</stringProp>
  33862. </elementProp>
  33863. </collectionProp>
  33864. </elementProp>
  33865. <stringProp name="HTTPSampler.domain"/>
  33866. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33867. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33868. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33869. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33870. <stringProp name="HTTPSampler.contentEncoding"/>
  33871. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33872. <stringProp name="HTTPSampler.method">POST</stringProp>
  33873. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33874. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33875. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33876. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33877. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33878. <stringProp name="HTTPSampler.embedded_url_re"/>
  33879. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/get_cart.jmx</stringProp>
  33880. </HTTPSamplerProxy>
  33881. <hashTree>
  33882. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  33883. <stringProp name="JSON_PATH">$.data.cart.total_quantity</stringProp>
  33884. <stringProp name="EXPECTED_VALUE">${totalProductsAdded}</stringProp>
  33885. <boolProp name="JSONVALIDATION">true</boolProp>
  33886. <boolProp name="EXPECT_NULL">false</boolProp>
  33887. <boolProp name="INVERT">false</boolProp>
  33888. <boolProp name="ISREGEX">false</boolProp>
  33889. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  33890. <hashTree/>
  33891. </hashTree>
  33892. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cart 2" enabled="true">
  33893. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33894. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33895. <collectionProp name="Arguments.arguments">
  33896. <elementProp name="" elementType="HTTPArgument">
  33897. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33898. <stringProp name="Argument.value">{"query":"{ cart(cart_id: \"${quote_id}\") { total_quantity email billing_address { city country { code label } firstname lastname postcode region { code label } street telephone } shipping_addresses { firstname lastname street city region { code label } country { code label } telephone available_shipping_methods { amount { currency value } available carrier_code carrier_title error_message method_code method_title price_excl_tax { value currency } price_incl_tax { value currency } } selected_shipping_method { amount { value currency } carrier_code carrier_title method_code method_title } } items { id product { name sku } quantity } available_payment_methods { code title } selected_payment_method { code title } applied_coupons { code } prices { grand_total { value currency } } } }","variables":null,"operationName":null}</stringProp>
  33899. <stringProp name="Argument.metadata">=</stringProp>
  33900. </elementProp>
  33901. </collectionProp>
  33902. </elementProp>
  33903. <stringProp name="HTTPSampler.domain"/>
  33904. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33905. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33906. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33907. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33908. <stringProp name="HTTPSampler.contentEncoding"/>
  33909. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33910. <stringProp name="HTTPSampler.method">POST</stringProp>
  33911. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33912. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33913. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33914. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33915. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33916. <stringProp name="HTTPSampler.embedded_url_re"/>
  33917. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/get_cart.jmx</stringProp>
  33918. </HTTPSamplerProxy>
  33919. <hashTree>
  33920. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  33921. <stringProp name="JSON_PATH">$.data.cart.total_quantity</stringProp>
  33922. <stringProp name="EXPECTED_VALUE">${totalProductsAdded}</stringProp>
  33923. <boolProp name="JSONVALIDATION">true</boolProp>
  33924. <boolProp name="EXPECT_NULL">false</boolProp>
  33925. <boolProp name="INVERT">false</boolProp>
  33926. <boolProp name="ISREGEX">false</boolProp>
  33927. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  33928. <hashTree/>
  33929. </hashTree>
  33930. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Place The Order" enabled="true">
  33931. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  33932. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  33933. <collectionProp name="Arguments.arguments">
  33934. <elementProp name="" elementType="HTTPArgument">
  33935. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  33936. <stringProp name="Argument.value">{"query":"mutation{ placeOrder(input: { cart_id: \"${quote_id}\" }) { order{ order_number } } }","variables":null,"operationName":null}</stringProp>
  33937. <stringProp name="Argument.metadata">=</stringProp>
  33938. </elementProp>
  33939. </collectionProp>
  33940. </elementProp>
  33941. <stringProp name="HTTPSampler.domain"/>
  33942. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  33943. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  33944. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  33945. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  33946. <stringProp name="HTTPSampler.contentEncoding"/>
  33947. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  33948. <stringProp name="HTTPSampler.method">POST</stringProp>
  33949. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  33950. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  33951. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  33952. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  33953. <boolProp name="HTTPSampler.monitor">false</boolProp>
  33954. <stringProp name="HTTPSampler.embedded_url_re"/>
  33955. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/large_number_of_products_in_the_card/place_the_order.jmx</stringProp>
  33956. </HTTPSamplerProxy>
  33957. <hashTree>
  33958. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  33959. <collectionProp name="Asserion.test_strings">
  33960. <stringProp name="653501529">{"data":{"placeOrder":{"order":{"order_number":"</stringProp>
  33961. </collectionProp>
  33962. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  33963. <boolProp name="Assertion.assume_success">false</boolProp>
  33964. <intProp name="Assertion.test_type">2</intProp>
  33965. </ResponseAssertion>
  33966. <hashTree/>
  33967. </hashTree>
  33968. </hashTree>
  33969. </hashTree>
  33970. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Combined Benchmark Pool" enabled="true">
  33971. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  33972. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  33973. <boolProp name="LoopController.continue_forever">false</boolProp>
  33974. <stringProp name="LoopController.loops">${loops}</stringProp>
  33975. </elementProp>
  33976. <stringProp name="ThreadGroup.num_threads">${combinedBenchmarkPoolUsers}</stringProp>
  33977. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  33978. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  33979. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  33980. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  33981. <stringProp name="ThreadGroup.duration"/>
  33982. <stringProp name="ThreadGroup.delay"/>
  33983. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  33984. <hashTree>
  33985. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Cache hit miss" enabled="true">
  33986. <stringProp name="scriptLanguage">javascript</stringProp>
  33987. <stringProp name="parameters"/>
  33988. <stringProp name="filename"/>
  33989. <stringProp name="cacheKey"/>
  33990. <stringProp name="script">var cacheHitPercent = vars.get("cache_hits_percentage");
  33991. if (
  33992. cacheHitPercent &lt; 100 &amp;&amp;
  33993. sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  33994. ) {
  33995. doCache();
  33996. }
  33997. function doCache(){
  33998. var random = Math.random() * 100;
  33999. if (cacheHitPercent &lt; random) {
  34000. sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13));
  34001. }
  34002. }
  34003. </stringProp>
  34004. <stringProp name="TestPlan.comments">tool/fragments/ce/common/cache_hit_miss.jmx</stringProp></JSR223PreProcessor>
  34005. <hashTree/>
  34006. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Catalog Browsing By Guest" enabled="true">
  34007. <intProp name="ThroughputController.style">1</intProp>
  34008. <boolProp name="ThroughputController.perThread">false</boolProp>
  34009. <intProp name="ThroughputController.maxThroughput">1</intProp>
  34010. <stringProp name="ThroughputController.percentThroughput">${cBrowseCatalogByGuestPercentage}</stringProp>
  34011. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  34012. <hashTree>
  34013. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  34014. <stringProp name="script">
  34015. var tmpLabel = vars.get("testLabel")
  34016. if (tmpLabel) {
  34017. var testLabel = " (" + tmpLabel + ")"
  34018. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  34019. if (sampler.getName().indexOf(testLabel) == -1) {
  34020. sampler.setName(sampler.getName() + testLabel);
  34021. }
  34022. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  34023. sampler.setName("SetUp - " + sampler.getName());
  34024. }
  34025. } else {
  34026. testLabel = ""
  34027. }
  34028. </stringProp>
  34029. <stringProp name="scriptLanguage">javascript</stringProp>
  34030. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  34031. <hashTree/>
  34032. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  34033. <stringProp name="BeanShellSampler.query">
  34034. vars.put("testLabel", "[C] Catalog Browsing By Guest");
  34035. </stringProp>
  34036. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34037. </BeanShellSampler>
  34038. <hashTree/>
  34039. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  34040. <collectionProp name="CookieManager.cookies">
  34041. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  34042. <stringProp name="Cookie.value">30</stringProp>
  34043. <stringProp name="Cookie.domain">${host}</stringProp>
  34044. <stringProp name="Cookie.path">/</stringProp>
  34045. <boolProp name="Cookie.secure">false</boolProp>
  34046. <longProp name="Cookie.expires">0</longProp>
  34047. <boolProp name="Cookie.path_specified">true</boolProp>
  34048. <boolProp name="Cookie.domain_specified">true</boolProp>
  34049. </elementProp>
  34050. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  34051. <stringProp name="Cookie.value">${form_key}</stringProp>
  34052. <stringProp name="Cookie.domain">${host}</stringProp>
  34053. <stringProp name="Cookie.path">${base_path}</stringProp>
  34054. <boolProp name="Cookie.secure">false</boolProp>
  34055. <longProp name="Cookie.expires">0</longProp>
  34056. <boolProp name="Cookie.path_specified">true</boolProp>
  34057. <boolProp name="Cookie.domain_specified">true</boolProp>
  34058. </elementProp>
  34059. </collectionProp>
  34060. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  34061. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  34062. <hashTree/>
  34063. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  34064. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  34065. <stringProp name="BeanShellSampler.query">
  34066. import java.util.Random;
  34067. Random random = new Random();
  34068. if (${seedForRandom} &gt; 0) {
  34069. random.setSeed(${seedForRandom} + ${__threadNum});
  34070. }
  34071. vars.putObject("randomIntGenerator", random);
  34072. </stringProp>
  34073. <stringProp name="BeanShellSampler.filename"/>
  34074. <stringProp name="BeanShellSampler.parameters"/>
  34075. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34076. </BeanShellSampler>
  34077. <hashTree/>
  34078. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  34079. <stringProp name="scriptLanguage">javascript</stringProp>
  34080. <stringProp name="parameters"/>
  34081. <stringProp name="filename"/>
  34082. <stringProp name="cacheKey"/>
  34083. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  34084. var categories = props.get("categories");
  34085. number = random.nextInt(categories.length);
  34086. vars.put("category_url_key", categories[number].url_key);
  34087. vars.put("category_name", categories[number].name);
  34088. vars.put("category_id", categories[number].id);
  34089. vars.putObject("category", categories[number]);
  34090. </stringProp>
  34091. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  34092. <hashTree/>
  34093. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  34094. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34095. <collectionProp name="Arguments.arguments"/>
  34096. </elementProp>
  34097. <stringProp name="HTTPSampler.domain"/>
  34098. <stringProp name="HTTPSampler.port"/>
  34099. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34100. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34101. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34102. <stringProp name="HTTPSampler.contentEncoding"/>
  34103. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  34104. <stringProp name="HTTPSampler.method">GET</stringProp>
  34105. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34106. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34107. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34108. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34109. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34110. <stringProp name="HTTPSampler.embedded_url_re"/>
  34111. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  34112. <hashTree>
  34113. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  34114. <collectionProp name="Asserion.test_strings">
  34115. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  34116. </collectionProp>
  34117. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34118. <boolProp name="Assertion.assume_success">false</boolProp>
  34119. <intProp name="Assertion.test_type">2</intProp>
  34120. </ResponseAssertion>
  34121. <hashTree/>
  34122. </hashTree>
  34123. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  34124. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34125. <collectionProp name="Arguments.arguments"/>
  34126. </elementProp>
  34127. <stringProp name="HTTPSampler.domain"/>
  34128. <stringProp name="HTTPSampler.port"/>
  34129. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34130. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34131. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34132. <stringProp name="HTTPSampler.contentEncoding"/>
  34133. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  34134. <stringProp name="HTTPSampler.method">GET</stringProp>
  34135. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34136. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34137. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34138. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34139. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34140. <stringProp name="HTTPSampler.embedded_url_re"/>
  34141. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  34142. <hashTree>
  34143. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  34144. <collectionProp name="Asserion.test_strings">
  34145. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  34146. </collectionProp>
  34147. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34148. <boolProp name="Assertion.assume_success">false</boolProp>
  34149. <intProp name="Assertion.test_type">6</intProp>
  34150. </ResponseAssertion>
  34151. <hashTree/>
  34152. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  34153. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  34154. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  34155. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  34156. <stringProp name="RegexExtractor.template">$1$</stringProp>
  34157. <stringProp name="RegexExtractor.default"/>
  34158. <stringProp name="RegexExtractor.match_number">1</stringProp>
  34159. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  34160. </RegexExtractor>
  34161. <hashTree/>
  34162. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  34163. <collectionProp name="Asserion.test_strings">
  34164. <stringProp name="1191417111">^[0-9]+$</stringProp>
  34165. </collectionProp>
  34166. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34167. <boolProp name="Assertion.assume_success">false</boolProp>
  34168. <intProp name="Assertion.test_type">1</intProp>
  34169. <stringProp name="Assertion.scope">variable</stringProp>
  34170. <stringProp name="Scope.variable">category_id</stringProp>
  34171. </ResponseAssertion>
  34172. <hashTree/>
  34173. </hashTree>
  34174. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  34175. <boolProp name="LoopController.continue_forever">true</boolProp>
  34176. <stringProp name="LoopController.loops">2</stringProp>
  34177. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  34178. <hashTree>
  34179. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  34180. <stringProp name="CounterConfig.start">1</stringProp>
  34181. <stringProp name="CounterConfig.end"/>
  34182. <stringProp name="CounterConfig.incr">1</stringProp>
  34183. <stringProp name="CounterConfig.name">_counter</stringProp>
  34184. <stringProp name="CounterConfig.format"/>
  34185. <boolProp name="CounterConfig.per_user">true</boolProp>
  34186. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  34187. </CounterConfig>
  34188. <hashTree/>
  34189. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  34190. <stringProp name="BeanShellSampler.query">
  34191. import java.util.Random;
  34192. Random random = vars.getObject("randomIntGenerator");
  34193. number = random.nextInt(props.get("simple_products_list").size());
  34194. product = props.get("simple_products_list").get(number);
  34195. vars.put("product_url_key", product.get("url_key"));
  34196. vars.put("product_id", product.get("id"));
  34197. vars.put("product_name", product.get("title"));
  34198. vars.put("product_uenc", product.get("uenc"));
  34199. vars.put("product_sku", product.get("sku"));
  34200. </stringProp>
  34201. <stringProp name="BeanShellSampler.filename"/>
  34202. <stringProp name="BeanShellSampler.parameters"/>
  34203. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34204. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  34205. <hashTree/>
  34206. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  34207. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34208. <collectionProp name="Arguments.arguments"/>
  34209. </elementProp>
  34210. <stringProp name="HTTPSampler.domain"/>
  34211. <stringProp name="HTTPSampler.port"/>
  34212. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34213. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34214. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34215. <stringProp name="HTTPSampler.contentEncoding"/>
  34216. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  34217. <stringProp name="HTTPSampler.method">GET</stringProp>
  34218. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34219. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34220. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34221. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34222. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34223. <stringProp name="HTTPSampler.embedded_url_re"/>
  34224. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  34225. <hashTree>
  34226. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  34227. <collectionProp name="Asserion.test_strings">
  34228. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  34229. </collectionProp>
  34230. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34231. <boolProp name="Assertion.assume_success">false</boolProp>
  34232. <intProp name="Assertion.test_type">2</intProp>
  34233. </ResponseAssertion>
  34234. <hashTree/>
  34235. </hashTree>
  34236. </hashTree>
  34237. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  34238. <boolProp name="LoopController.continue_forever">true</boolProp>
  34239. <stringProp name="LoopController.loops">1</stringProp>
  34240. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  34241. <hashTree>
  34242. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  34243. <stringProp name="CounterConfig.start">1</stringProp>
  34244. <stringProp name="CounterConfig.end"/>
  34245. <stringProp name="CounterConfig.incr">1</stringProp>
  34246. <stringProp name="CounterConfig.name">_counter</stringProp>
  34247. <stringProp name="CounterConfig.format"/>
  34248. <boolProp name="CounterConfig.per_user">true</boolProp>
  34249. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  34250. </CounterConfig>
  34251. <hashTree/>
  34252. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  34253. <stringProp name="BeanShellSampler.query">
  34254. import java.util.Random;
  34255. Random random = vars.getObject("randomIntGenerator");
  34256. number = random.nextInt(props.get("configurable_products_list").size());
  34257. product = props.get("configurable_products_list").get(number);
  34258. vars.put("product_url_key", product.get("url_key"));
  34259. vars.put("product_id", product.get("id"));
  34260. vars.put("product_name", product.get("title"));
  34261. vars.put("product_uenc", product.get("uenc"));
  34262. vars.put("product_sku", product.get("sku"));
  34263. </stringProp>
  34264. <stringProp name="BeanShellSampler.filename"/>
  34265. <stringProp name="BeanShellSampler.parameters"/>
  34266. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34267. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  34268. <hashTree/>
  34269. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  34270. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34271. <collectionProp name="Arguments.arguments"/>
  34272. </elementProp>
  34273. <stringProp name="HTTPSampler.domain"/>
  34274. <stringProp name="HTTPSampler.port"/>
  34275. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34276. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34277. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34278. <stringProp name="HTTPSampler.contentEncoding"/>
  34279. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  34280. <stringProp name="HTTPSampler.method">GET</stringProp>
  34281. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34282. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34283. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34284. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34285. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34286. <stringProp name="HTTPSampler.embedded_url_re"/>
  34287. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  34288. <hashTree>
  34289. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  34290. <collectionProp name="Asserion.test_strings">
  34291. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  34292. </collectionProp>
  34293. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34294. <boolProp name="Assertion.assume_success">false</boolProp>
  34295. <intProp name="Assertion.test_type">2</intProp>
  34296. </ResponseAssertion>
  34297. <hashTree/>
  34298. </hashTree>
  34299. </hashTree>
  34300. </hashTree>
  34301. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Site Search" enabled="true">
  34302. <intProp name="ThroughputController.style">1</intProp>
  34303. <boolProp name="ThroughputController.perThread">false</boolProp>
  34304. <intProp name="ThroughputController.maxThroughput">1</intProp>
  34305. <stringProp name="ThroughputController.percentThroughput">${cSiteSearchPercentage}</stringProp>
  34306. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  34307. <hashTree>
  34308. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  34309. <stringProp name="script">
  34310. var tmpLabel = vars.get("testLabel")
  34311. if (tmpLabel) {
  34312. var testLabel = " (" + tmpLabel + ")"
  34313. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  34314. if (sampler.getName().indexOf(testLabel) == -1) {
  34315. sampler.setName(sampler.getName() + testLabel);
  34316. }
  34317. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  34318. sampler.setName("SetUp - " + sampler.getName());
  34319. }
  34320. } else {
  34321. testLabel = ""
  34322. }
  34323. </stringProp>
  34324. <stringProp name="scriptLanguage">javascript</stringProp>
  34325. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  34326. <hashTree/>
  34327. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  34328. <stringProp name="BeanShellSampler.query">
  34329. vars.put("testLabel", "[C] Site Search");
  34330. </stringProp>
  34331. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34332. </BeanShellSampler>
  34333. <hashTree/>
  34334. <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Search Terms" enabled="true">
  34335. <stringProp name="filename">${files_folder}search_terms.csv</stringProp>
  34336. <stringProp name="fileEncoding">UTF-8</stringProp>
  34337. <stringProp name="variableNames"/>
  34338. <stringProp name="delimiter">,</stringProp>
  34339. <boolProp name="quotedData">false</boolProp>
  34340. <boolProp name="recycle">true</boolProp>
  34341. <boolProp name="stopThread">false</boolProp>
  34342. <stringProp name="shareMode">shareMode.thread</stringProp>
  34343. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms.jmx</stringProp></CSVDataSet>
  34344. <hashTree/>
  34345. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Cache hit miss" enabled="true">
  34346. <stringProp name="scriptLanguage">javascript</stringProp>
  34347. <stringProp name="parameters"/>
  34348. <stringProp name="filename"/>
  34349. <stringProp name="cacheKey"/>
  34350. <stringProp name="script">var cacheHitPercent = vars.get("cache_hits_percentage");
  34351. if (
  34352. cacheHitPercent &lt; 100 &amp;&amp;
  34353. sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  34354. ) {
  34355. doCache();
  34356. }
  34357. function doCache(){
  34358. var random = Math.random() * 100;
  34359. if (cacheHitPercent &lt; random) {
  34360. sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13));
  34361. }
  34362. }
  34363. </stringProp>
  34364. <stringProp name="TestPlan.comments">tool/fragments/ce/common/cache_hit_miss.jmx</stringProp></JSR223PreProcessor>
  34365. <hashTree/>
  34366. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search" enabled="true">
  34367. <intProp name="ThroughputController.style">1</intProp>
  34368. <boolProp name="ThroughputController.perThread">false</boolProp>
  34369. <intProp name="ThroughputController.maxThroughput">1</intProp>
  34370. <stringProp name="ThroughputController.percentThroughput">${searchQuickPercentage}</stringProp>
  34371. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  34372. <hashTree>
  34373. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  34374. <stringProp name="script">
  34375. var tmpLabel = vars.get("testLabel")
  34376. if (tmpLabel) {
  34377. var testLabel = " (" + tmpLabel + ")"
  34378. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  34379. if (sampler.getName().indexOf(testLabel) == -1) {
  34380. sampler.setName(sampler.getName() + testLabel);
  34381. }
  34382. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  34383. sampler.setName("SetUp - " + sampler.getName());
  34384. }
  34385. } else {
  34386. testLabel = ""
  34387. }
  34388. </stringProp>
  34389. <stringProp name="scriptLanguage">javascript</stringProp>
  34390. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  34391. <hashTree/>
  34392. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  34393. <stringProp name="BeanShellSampler.query">
  34394. vars.put("testLabel", "Quick Search");
  34395. </stringProp>
  34396. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34397. </BeanShellSampler>
  34398. <hashTree/>
  34399. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  34400. <collectionProp name="CookieManager.cookies">
  34401. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  34402. <stringProp name="Cookie.value">30</stringProp>
  34403. <stringProp name="Cookie.domain">${host}</stringProp>
  34404. <stringProp name="Cookie.path">/</stringProp>
  34405. <boolProp name="Cookie.secure">false</boolProp>
  34406. <longProp name="Cookie.expires">0</longProp>
  34407. <boolProp name="Cookie.path_specified">true</boolProp>
  34408. <boolProp name="Cookie.domain_specified">true</boolProp>
  34409. </elementProp>
  34410. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  34411. <stringProp name="Cookie.value">${form_key}</stringProp>
  34412. <stringProp name="Cookie.domain">${host}</stringProp>
  34413. <stringProp name="Cookie.path">${base_path}</stringProp>
  34414. <boolProp name="Cookie.secure">false</boolProp>
  34415. <longProp name="Cookie.expires">0</longProp>
  34416. <boolProp name="Cookie.path_specified">true</boolProp>
  34417. <boolProp name="Cookie.domain_specified">true</boolProp>
  34418. </elementProp>
  34419. </collectionProp>
  34420. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  34421. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  34422. <hashTree/>
  34423. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  34424. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34425. <collectionProp name="Arguments.arguments"/>
  34426. </elementProp>
  34427. <stringProp name="HTTPSampler.domain"/>
  34428. <stringProp name="HTTPSampler.port"/>
  34429. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34430. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34431. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34432. <stringProp name="HTTPSampler.contentEncoding"/>
  34433. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  34434. <stringProp name="HTTPSampler.method">GET</stringProp>
  34435. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34436. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34437. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34438. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34439. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34440. <stringProp name="HTTPSampler.embedded_url_re"/>
  34441. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  34442. <hashTree>
  34443. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  34444. <collectionProp name="Asserion.test_strings">
  34445. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  34446. </collectionProp>
  34447. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34448. <boolProp name="Assertion.assume_success">false</boolProp>
  34449. <intProp name="Assertion.test_type">2</intProp>
  34450. </ResponseAssertion>
  34451. <hashTree/>
  34452. </hashTree>
  34453. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  34454. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34455. <collectionProp name="Arguments.arguments">
  34456. <elementProp name="q" elementType="HTTPArgument">
  34457. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  34458. <stringProp name="Argument.name">q</stringProp>
  34459. <stringProp name="Argument.value">${searchTerm}</stringProp>
  34460. <stringProp name="Argument.metadata">=</stringProp>
  34461. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  34462. </elementProp>
  34463. </collectionProp>
  34464. </elementProp>
  34465. <stringProp name="HTTPSampler.domain"/>
  34466. <stringProp name="HTTPSampler.port"/>
  34467. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34468. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34469. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34470. <stringProp name="HTTPSampler.contentEncoding"/>
  34471. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/result/</stringProp>
  34472. <stringProp name="HTTPSampler.method">GET</stringProp>
  34473. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34474. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34475. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34476. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34477. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34478. <stringProp name="HTTPSampler.embedded_url_re"/>
  34479. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick.jmx</stringProp></HTTPSamplerProxy>
  34480. <hashTree>
  34481. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  34482. <collectionProp name="Asserion.test_strings">
  34483. <stringProp name="56511661">Search results for: </stringProp>
  34484. <stringProp name="1533671447">&lt;span class="toolbar-number"&gt;\d&lt;\/span&gt; Items|Items &lt;span class="toolbar-number"&gt;1</stringProp>
  34485. </collectionProp>
  34486. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34487. <boolProp name="Assertion.assume_success">false</boolProp>
  34488. <intProp name="Assertion.test_type">2</intProp>
  34489. </ResponseAssertion>
  34490. <hashTree/>
  34491. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  34492. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  34493. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  34494. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  34495. <stringProp name="RegexExtractor.template">$2$</stringProp>
  34496. <stringProp name="RegexExtractor.default"/>
  34497. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  34498. </RegexExtractor>
  34499. <hashTree/>
  34500. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: isPageCacheable" enabled="true">
  34501. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  34502. <stringProp name="RegexExtractor.refname">isPageCacheable</stringProp>
  34503. <stringProp name="RegexExtractor.regex">catalogsearch/searchTermsLog/save</stringProp>
  34504. <stringProp name="RegexExtractor.template">$0$</stringProp>
  34505. <stringProp name="RegexExtractor.default">0</stringProp>
  34506. <stringProp name="RegexExtractor.match_number">1</stringProp>
  34507. </RegexExtractor>
  34508. <hashTree/>
  34509. </hashTree>
  34510. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  34511. <stringProp name="IfController.condition">"${isPageCacheable}" != "0"</stringProp>
  34512. <boolProp name="IfController.evaluateAll">false</boolProp>
  34513. <stringProp name="TestPlan.comments">tool/fragments/ce/search/if_page_cacheable_controller.jmx</stringProp></IfController>
  34514. <hashTree>
  34515. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Terms Log" enabled="true">
  34516. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34517. <collectionProp name="Arguments.arguments">
  34518. <elementProp name="q" elementType="HTTPArgument">
  34519. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  34520. <stringProp name="Argument.name">q</stringProp>
  34521. <stringProp name="Argument.value">${searchTerm}</stringProp>
  34522. <stringProp name="Argument.metadata">=</stringProp>
  34523. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  34524. </elementProp>
  34525. </collectionProp>
  34526. </elementProp>
  34527. <stringProp name="HTTPSampler.domain"/>
  34528. <stringProp name="HTTPSampler.port"/>
  34529. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34530. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34531. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34532. <stringProp name="HTTPSampler.contentEncoding"/>
  34533. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/searchTermsLog/save/</stringProp>
  34534. <stringProp name="HTTPSampler.method">GET</stringProp>
  34535. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34536. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34537. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34538. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34539. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34540. <stringProp name="HTTPSampler.embedded_url_re"/>
  34541. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms_log_save.jmx</stringProp>
  34542. </HTTPSamplerProxy>
  34543. <hashTree>
  34544. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  34545. <collectionProp name="Asserion.test_strings">
  34546. <stringProp name="-547797305">"success":true</stringProp>
  34547. </collectionProp>
  34548. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34549. <boolProp name="Assertion.assume_success">false</boolProp>
  34550. <intProp name="Assertion.test_type">2</intProp>
  34551. </ResponseAssertion>
  34552. <hashTree/>
  34553. </hashTree>
  34554. </hashTree>
  34555. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  34556. <stringProp name="BeanShellSampler.query">
  34557. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  34558. if (foundProducts &gt; 3) {
  34559. foundProducts = 3;
  34560. }
  34561. vars.put("foundProducts", String.valueOf(foundProducts));
  34562. </stringProp>
  34563. <stringProp name="BeanShellSampler.filename"/>
  34564. <stringProp name="BeanShellSampler.parameters"/>
  34565. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34566. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  34567. <hashTree/>
  34568. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  34569. <boolProp name="LoopController.continue_forever">true</boolProp>
  34570. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  34571. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  34572. <hashTree>
  34573. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  34574. <stringProp name="CounterConfig.start">1</stringProp>
  34575. <stringProp name="CounterConfig.end"/>
  34576. <stringProp name="CounterConfig.incr">1</stringProp>
  34577. <stringProp name="CounterConfig.name">_counter</stringProp>
  34578. <stringProp name="CounterConfig.format"/>
  34579. <boolProp name="CounterConfig.per_user">true</boolProp>
  34580. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  34581. </CounterConfig>
  34582. <hashTree/>
  34583. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  34584. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  34585. <stringProp name="BeanShellSampler.query">
  34586. number = vars.get("_counter");
  34587. product = vars.get("product_url_keys_"+number);
  34588. vars.put("product_url_key", product);
  34589. </stringProp>
  34590. <stringProp name="BeanShellSampler.filename"/>
  34591. <stringProp name="BeanShellSampler.parameters"/>
  34592. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34593. </BeanShellSampler>
  34594. <hashTree/>
  34595. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  34596. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34597. <collectionProp name="Arguments.arguments"/>
  34598. </elementProp>
  34599. <stringProp name="HTTPSampler.domain"/>
  34600. <stringProp name="HTTPSampler.port"/>
  34601. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34602. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34603. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34604. <stringProp name="HTTPSampler.contentEncoding"/>
  34605. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  34606. <stringProp name="HTTPSampler.method">GET</stringProp>
  34607. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34608. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34609. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34610. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34611. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34612. <stringProp name="HTTPSampler.embedded_url_re"/>
  34613. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  34614. <hashTree>
  34615. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  34616. <collectionProp name="Asserion.test_strings">
  34617. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  34618. </collectionProp>
  34619. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34620. <boolProp name="Assertion.assume_success">false</boolProp>
  34621. <intProp name="Assertion.test_type">2</intProp>
  34622. </ResponseAssertion>
  34623. <hashTree/>
  34624. </hashTree>
  34625. </hashTree>
  34626. </hashTree>
  34627. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search With Filtration" enabled="true">
  34628. <intProp name="ThroughputController.style">1</intProp>
  34629. <boolProp name="ThroughputController.perThread">false</boolProp>
  34630. <intProp name="ThroughputController.maxThroughput">1</intProp>
  34631. <stringProp name="ThroughputController.percentThroughput">${searchQuickFilterPercentage}</stringProp>
  34632. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  34633. <hashTree>
  34634. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  34635. <stringProp name="script">
  34636. var tmpLabel = vars.get("testLabel")
  34637. if (tmpLabel) {
  34638. var testLabel = " (" + tmpLabel + ")"
  34639. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  34640. if (sampler.getName().indexOf(testLabel) == -1) {
  34641. sampler.setName(sampler.getName() + testLabel);
  34642. }
  34643. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  34644. sampler.setName("SetUp - " + sampler.getName());
  34645. }
  34646. } else {
  34647. testLabel = ""
  34648. }
  34649. </stringProp>
  34650. <stringProp name="scriptLanguage">javascript</stringProp>
  34651. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  34652. <hashTree/>
  34653. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  34654. <stringProp name="BeanShellSampler.query">
  34655. vars.put("testLabel", "Quick Search With Filtration");
  34656. </stringProp>
  34657. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34658. </BeanShellSampler>
  34659. <hashTree/>
  34660. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  34661. <collectionProp name="CookieManager.cookies">
  34662. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  34663. <stringProp name="Cookie.value">30</stringProp>
  34664. <stringProp name="Cookie.domain">${host}</stringProp>
  34665. <stringProp name="Cookie.path">/</stringProp>
  34666. <boolProp name="Cookie.secure">false</boolProp>
  34667. <longProp name="Cookie.expires">0</longProp>
  34668. <boolProp name="Cookie.path_specified">true</boolProp>
  34669. <boolProp name="Cookie.domain_specified">true</boolProp>
  34670. </elementProp>
  34671. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  34672. <stringProp name="Cookie.value">${form_key}</stringProp>
  34673. <stringProp name="Cookie.domain">${host}</stringProp>
  34674. <stringProp name="Cookie.path">${base_path}</stringProp>
  34675. <boolProp name="Cookie.secure">false</boolProp>
  34676. <longProp name="Cookie.expires">0</longProp>
  34677. <boolProp name="Cookie.path_specified">true</boolProp>
  34678. <boolProp name="Cookie.domain_specified">true</boolProp>
  34679. </elementProp>
  34680. </collectionProp>
  34681. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  34682. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  34683. <hashTree/>
  34684. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  34685. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34686. <collectionProp name="Arguments.arguments"/>
  34687. </elementProp>
  34688. <stringProp name="HTTPSampler.domain"/>
  34689. <stringProp name="HTTPSampler.port"/>
  34690. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34691. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34692. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34693. <stringProp name="HTTPSampler.contentEncoding"/>
  34694. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  34695. <stringProp name="HTTPSampler.method">GET</stringProp>
  34696. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34697. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34698. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34699. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34700. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34701. <stringProp name="HTTPSampler.embedded_url_re"/>
  34702. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  34703. <hashTree>
  34704. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  34705. <collectionProp name="Asserion.test_strings">
  34706. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  34707. </collectionProp>
  34708. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34709. <boolProp name="Assertion.assume_success">false</boolProp>
  34710. <intProp name="Assertion.test_type">2</intProp>
  34711. </ResponseAssertion>
  34712. <hashTree/>
  34713. </hashTree>
  34714. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  34715. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34716. <collectionProp name="Arguments.arguments">
  34717. <elementProp name="q" elementType="HTTPArgument">
  34718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  34719. <stringProp name="Argument.name">q</stringProp>
  34720. <stringProp name="Argument.value">${searchTerm}</stringProp>
  34721. <stringProp name="Argument.metadata">=</stringProp>
  34722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  34723. </elementProp>
  34724. </collectionProp>
  34725. </elementProp>
  34726. <stringProp name="HTTPSampler.domain"/>
  34727. <stringProp name="HTTPSampler.port"/>
  34728. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34729. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34730. <stringProp name="HTTPSampler.protocol"/>
  34731. <stringProp name="HTTPSampler.contentEncoding"/>
  34732. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/result/</stringProp>
  34733. <stringProp name="HTTPSampler.method">GET</stringProp>
  34734. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34735. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34736. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34737. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34738. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34739. <stringProp name="HTTPSampler.embedded_url_re"/>
  34740. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick_filter.jmx</stringProp></HTTPSamplerProxy>
  34741. <hashTree>
  34742. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  34743. <collectionProp name="Asserion.test_strings">
  34744. <stringProp name="56511661">Search results for: </stringProp>
  34745. <stringProp name="1533671447">Items &lt;span class="toolbar-number"&gt;1</stringProp>
  34746. </collectionProp>
  34747. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34748. <boolProp name="Assertion.assume_success">false</boolProp>
  34749. <intProp name="Assertion.test_type">2</intProp>
  34750. </ResponseAssertion>
  34751. <hashTree/>
  34752. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract number of attribute 1 options" enabled="true">
  34753. <stringProp name="XPathExtractor.default">0</stringProp>
  34754. <stringProp name="XPathExtractor.refname">attribute_1_options_count</stringProp>
  34755. <stringProp name="XPathExtractor.xpathQuery">count((//div[@class="filter-options-content"])[1]//li[@class="item"])</stringProp>
  34756. <boolProp name="XPathExtractor.validate">false</boolProp>
  34757. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  34758. <boolProp name="XPathExtractor.namespace">false</boolProp>
  34759. </XPathExtractor>
  34760. <hashTree/>
  34761. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract number of attribute 2 options" enabled="true">
  34762. <stringProp name="XPathExtractor.default">0</stringProp>
  34763. <stringProp name="XPathExtractor.refname">attribute_2_options_count</stringProp>
  34764. <stringProp name="XPathExtractor.xpathQuery">count((//div[@class="filter-options-content"])[2]//li[@class="item"])</stringProp>
  34765. <boolProp name="XPathExtractor.validate">false</boolProp>
  34766. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  34767. <boolProp name="XPathExtractor.namespace">false</boolProp>
  34768. </XPathExtractor>
  34769. <hashTree/>
  34770. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract filter link from layered navigation" enabled="true">
  34771. <stringProp name="XPathExtractor.default"/>
  34772. <stringProp name="XPathExtractor.refname">attribute_1_filter_url</stringProp>
  34773. <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[1]//li[@class="item"]//a)[1]/@href</stringProp>
  34774. <boolProp name="XPathExtractor.validate">false</boolProp>
  34775. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  34776. <boolProp name="XPathExtractor.namespace">false</boolProp>
  34777. </XPathExtractor>
  34778. <hashTree/>
  34779. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product url keys" enabled="true">
  34780. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  34781. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  34782. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  34783. <stringProp name="RegexExtractor.template">$2$</stringProp>
  34784. <stringProp name="RegexExtractor.default"/>
  34785. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  34786. </RegexExtractor>
  34787. <hashTree/>
  34788. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: isPageCacheable" enabled="true">
  34789. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  34790. <stringProp name="RegexExtractor.refname">isPageCacheable</stringProp>
  34791. <stringProp name="RegexExtractor.regex">catalogsearch/searchTermsLog/save</stringProp>
  34792. <stringProp name="RegexExtractor.template">$0$</stringProp>
  34793. <stringProp name="RegexExtractor.default">0</stringProp>
  34794. <stringProp name="RegexExtractor.match_number">1</stringProp>
  34795. </RegexExtractor>
  34796. <hashTree/>
  34797. </hashTree>
  34798. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  34799. <stringProp name="IfController.condition">"${isPageCacheable}" != "0"</stringProp>
  34800. <boolProp name="IfController.evaluateAll">false</boolProp>
  34801. <stringProp name="TestPlan.comments">tool/fragments/ce/search/if_page_cacheable_controller.jmx</stringProp></IfController>
  34802. <hashTree>
  34803. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Terms Log" enabled="true">
  34804. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34805. <collectionProp name="Arguments.arguments">
  34806. <elementProp name="q" elementType="HTTPArgument">
  34807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  34808. <stringProp name="Argument.name">q</stringProp>
  34809. <stringProp name="Argument.value">${searchTerm}</stringProp>
  34810. <stringProp name="Argument.metadata">=</stringProp>
  34811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  34812. </elementProp>
  34813. </collectionProp>
  34814. </elementProp>
  34815. <stringProp name="HTTPSampler.domain"/>
  34816. <stringProp name="HTTPSampler.port"/>
  34817. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34818. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34819. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  34820. <stringProp name="HTTPSampler.contentEncoding"/>
  34821. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/searchTermsLog/save/</stringProp>
  34822. <stringProp name="HTTPSampler.method">GET</stringProp>
  34823. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34824. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34825. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34826. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34827. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34828. <stringProp name="HTTPSampler.embedded_url_re"/>
  34829. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms_log_save.jmx</stringProp>
  34830. </HTTPSamplerProxy>
  34831. <hashTree>
  34832. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  34833. <collectionProp name="Asserion.test_strings">
  34834. <stringProp name="-547797305">"success":true</stringProp>
  34835. </collectionProp>
  34836. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34837. <boolProp name="Assertion.assume_success">false</boolProp>
  34838. <intProp name="Assertion.test_type">2</intProp>
  34839. </ResponseAssertion>
  34840. <hashTree/>
  34841. </hashTree>
  34842. </hashTree>
  34843. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Attribute 1 present in layered navigation" enabled="true">
  34844. <stringProp name="IfController.condition">${attribute_1_options_count} &gt; 0</stringProp>
  34845. <boolProp name="IfController.evaluateAll">false</boolProp>
  34846. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick_filter-first-attribute.jmx</stringProp></IfController>
  34847. <hashTree>
  34848. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Search Url 2" enabled="true">
  34849. <stringProp name="BeanShellSampler.query">vars.put("search_url", vars.get("attribute_1_filter_url"));</stringProp>
  34850. <stringProp name="BeanShellSampler.filename"/>
  34851. <stringProp name="BeanShellSampler.parameters"/>
  34852. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  34853. </BeanShellSampler>
  34854. <hashTree/>
  34855. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filter by Attribute 1" enabled="true">
  34856. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34857. <collectionProp name="Arguments.arguments"/>
  34858. </elementProp>
  34859. <stringProp name="HTTPSampler.domain"/>
  34860. <stringProp name="HTTPSampler.port"/>
  34861. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34862. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34863. <stringProp name="HTTPSampler.protocol"/>
  34864. <stringProp name="HTTPSampler.contentEncoding"/>
  34865. <stringProp name="HTTPSampler.path">${attribute_1_filter_url}</stringProp>
  34866. <stringProp name="HTTPSampler.method">GET</stringProp>
  34867. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34868. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34869. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34870. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34871. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34872. <stringProp name="HTTPSampler.embedded_url_re"/>
  34873. </HTTPSamplerProxy>
  34874. <hashTree>
  34875. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  34876. <collectionProp name="Asserion.test_strings">
  34877. <stringProp name="56511661">Search results for: </stringProp>
  34878. <stringProp name="1420634794">&lt;span class="toolbar-number"&gt;[1-9]+</stringProp>
  34879. </collectionProp>
  34880. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34881. <boolProp name="Assertion.assume_success">false</boolProp>
  34882. <intProp name="Assertion.test_type">2</intProp>
  34883. </ResponseAssertion>
  34884. <hashTree/>
  34885. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract number of attribute 2 options" enabled="true">
  34886. <stringProp name="XPathExtractor.default">0</stringProp>
  34887. <stringProp name="XPathExtractor.refname">attribute_2_options_count</stringProp>
  34888. <stringProp name="XPathExtractor.xpathQuery">count((//div[@class="filter-options-content"])[2]//li[@class="item"])</stringProp>
  34889. <boolProp name="XPathExtractor.validate">false</boolProp>
  34890. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  34891. <boolProp name="XPathExtractor.namespace">false</boolProp>
  34892. </XPathExtractor>
  34893. <hashTree/>
  34894. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract filter link from layered navigation" enabled="true">
  34895. <stringProp name="XPathExtractor.default"/>
  34896. <stringProp name="XPathExtractor.refname">attribute_2_filter_url</stringProp>
  34897. <stringProp name="XPathExtractor.xpathQuery">((//div[@class="filter-options-content"])[2]//li[@class="item"]//a)[1]/@href</stringProp>
  34898. <boolProp name="XPathExtractor.validate">false</boolProp>
  34899. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  34900. <boolProp name="XPathExtractor.namespace">false</boolProp>
  34901. </XPathExtractor>
  34902. <hashTree/>
  34903. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product url keys" enabled="true">
  34904. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  34905. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  34906. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  34907. <stringProp name="RegexExtractor.template">$2$</stringProp>
  34908. <stringProp name="RegexExtractor.default"/>
  34909. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  34910. </RegexExtractor>
  34911. <hashTree/>
  34912. </hashTree>
  34913. </hashTree>
  34914. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Attribute 2 present in layered navigation" enabled="true">
  34915. <stringProp name="IfController.condition">${attribute_2_options_count} &gt; 0</stringProp>
  34916. <boolProp name="IfController.evaluateAll">false</boolProp>
  34917. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_quick_filter-second-attribute.jmx</stringProp></IfController>
  34918. <hashTree>
  34919. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Search Ul 3" enabled="true">
  34920. <stringProp name="BeanShellSampler.query">vars.put("search_url", vars.get("attribute_2_filter_url"));</stringProp>
  34921. <stringProp name="BeanShellSampler.filename"/>
  34922. <stringProp name="BeanShellSampler.parameters"/>
  34923. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  34924. </BeanShellSampler>
  34925. <hashTree/>
  34926. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filter by Attribute 2" enabled="true">
  34927. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  34928. <collectionProp name="Arguments.arguments"/>
  34929. </elementProp>
  34930. <stringProp name="HTTPSampler.domain"/>
  34931. <stringProp name="HTTPSampler.port"/>
  34932. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  34933. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  34934. <stringProp name="HTTPSampler.protocol"/>
  34935. <stringProp name="HTTPSampler.contentEncoding"/>
  34936. <stringProp name="HTTPSampler.path">${attribute_2_filter_url}</stringProp>
  34937. <stringProp name="HTTPSampler.method">GET</stringProp>
  34938. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  34939. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  34940. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  34941. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  34942. <boolProp name="HTTPSampler.monitor">false</boolProp>
  34943. <stringProp name="HTTPSampler.embedded_url_re"/>
  34944. </HTTPSamplerProxy>
  34945. <hashTree>
  34946. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  34947. <collectionProp name="Asserion.test_strings">
  34948. <stringProp name="56511661">Search results for: </stringProp>
  34949. <stringProp name="1420634794">&lt;span class="toolbar-number"&gt;[1-9]+</stringProp>
  34950. </collectionProp>
  34951. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  34952. <boolProp name="Assertion.assume_success">false</boolProp>
  34953. <intProp name="Assertion.test_type">2</intProp>
  34954. </ResponseAssertion>
  34955. <hashTree/>
  34956. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract product url keys" enabled="true">
  34957. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  34958. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  34959. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="http://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  34960. <stringProp name="RegexExtractor.template">$2$</stringProp>
  34961. <stringProp name="RegexExtractor.default"/>
  34962. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  34963. </RegexExtractor>
  34964. <hashTree/>
  34965. </hashTree>
  34966. </hashTree>
  34967. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  34968. <stringProp name="BeanShellSampler.query">
  34969. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  34970. if (foundProducts &gt; 3) {
  34971. foundProducts = 3;
  34972. }
  34973. vars.put("foundProducts", String.valueOf(foundProducts));
  34974. </stringProp>
  34975. <stringProp name="BeanShellSampler.filename"/>
  34976. <stringProp name="BeanShellSampler.parameters"/>
  34977. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  34978. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  34979. <hashTree/>
  34980. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  34981. <boolProp name="LoopController.continue_forever">true</boolProp>
  34982. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  34983. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  34984. <hashTree>
  34985. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  34986. <stringProp name="CounterConfig.start">1</stringProp>
  34987. <stringProp name="CounterConfig.end"/>
  34988. <stringProp name="CounterConfig.incr">1</stringProp>
  34989. <stringProp name="CounterConfig.name">_counter</stringProp>
  34990. <stringProp name="CounterConfig.format"/>
  34991. <boolProp name="CounterConfig.per_user">true</boolProp>
  34992. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  34993. </CounterConfig>
  34994. <hashTree/>
  34995. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  34996. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  34997. <stringProp name="BeanShellSampler.query">
  34998. number = vars.get("_counter");
  34999. product = vars.get("product_url_keys_"+number);
  35000. vars.put("product_url_key", product);
  35001. </stringProp>
  35002. <stringProp name="BeanShellSampler.filename"/>
  35003. <stringProp name="BeanShellSampler.parameters"/>
  35004. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35005. </BeanShellSampler>
  35006. <hashTree/>
  35007. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  35008. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35009. <collectionProp name="Arguments.arguments"/>
  35010. </elementProp>
  35011. <stringProp name="HTTPSampler.domain"/>
  35012. <stringProp name="HTTPSampler.port"/>
  35013. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35014. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35015. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35016. <stringProp name="HTTPSampler.contentEncoding"/>
  35017. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  35018. <stringProp name="HTTPSampler.method">GET</stringProp>
  35019. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35020. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35021. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35022. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35023. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35024. <stringProp name="HTTPSampler.embedded_url_re"/>
  35025. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  35026. <hashTree>
  35027. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35028. <collectionProp name="Asserion.test_strings">
  35029. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  35030. </collectionProp>
  35031. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35032. <boolProp name="Assertion.assume_success">false</boolProp>
  35033. <intProp name="Assertion.test_type">2</intProp>
  35034. </ResponseAssertion>
  35035. <hashTree/>
  35036. </hashTree>
  35037. </hashTree>
  35038. </hashTree>
  35039. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Advanced Search" enabled="true">
  35040. <intProp name="ThroughputController.style">1</intProp>
  35041. <boolProp name="ThroughputController.perThread">false</boolProp>
  35042. <intProp name="ThroughputController.maxThroughput">1</intProp>
  35043. <stringProp name="ThroughputController.percentThroughput">${searchAdvancedPercentage}</stringProp>
  35044. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  35045. <hashTree>
  35046. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  35047. <stringProp name="script">
  35048. var tmpLabel = vars.get("testLabel")
  35049. if (tmpLabel) {
  35050. var testLabel = " (" + tmpLabel + ")"
  35051. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  35052. if (sampler.getName().indexOf(testLabel) == -1) {
  35053. sampler.setName(sampler.getName() + testLabel);
  35054. }
  35055. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  35056. sampler.setName("SetUp - " + sampler.getName());
  35057. }
  35058. } else {
  35059. testLabel = ""
  35060. }
  35061. </stringProp>
  35062. <stringProp name="scriptLanguage">javascript</stringProp>
  35063. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  35064. <hashTree/>
  35065. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  35066. <stringProp name="BeanShellSampler.query">
  35067. vars.put("testLabel", "Advanced Search");
  35068. </stringProp>
  35069. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35070. </BeanShellSampler>
  35071. <hashTree/>
  35072. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  35073. <collectionProp name="CookieManager.cookies">
  35074. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  35075. <stringProp name="Cookie.value">30</stringProp>
  35076. <stringProp name="Cookie.domain">${host}</stringProp>
  35077. <stringProp name="Cookie.path">/</stringProp>
  35078. <boolProp name="Cookie.secure">false</boolProp>
  35079. <longProp name="Cookie.expires">0</longProp>
  35080. <boolProp name="Cookie.path_specified">true</boolProp>
  35081. <boolProp name="Cookie.domain_specified">true</boolProp>
  35082. </elementProp>
  35083. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  35084. <stringProp name="Cookie.value">${form_key}</stringProp>
  35085. <stringProp name="Cookie.domain">${host}</stringProp>
  35086. <stringProp name="Cookie.path">${base_path}</stringProp>
  35087. <boolProp name="Cookie.secure">false</boolProp>
  35088. <longProp name="Cookie.expires">0</longProp>
  35089. <boolProp name="Cookie.path_specified">true</boolProp>
  35090. <boolProp name="Cookie.domain_specified">true</boolProp>
  35091. </elementProp>
  35092. </collectionProp>
  35093. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  35094. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  35095. <hashTree/>
  35096. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  35097. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35098. <collectionProp name="Arguments.arguments"/>
  35099. </elementProp>
  35100. <stringProp name="HTTPSampler.domain"/>
  35101. <stringProp name="HTTPSampler.port"/>
  35102. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35103. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35104. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35105. <stringProp name="HTTPSampler.contentEncoding"/>
  35106. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  35107. <stringProp name="HTTPSampler.method">GET</stringProp>
  35108. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35109. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35110. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35111. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35112. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35113. <stringProp name="HTTPSampler.embedded_url_re"/>
  35114. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  35115. <hashTree>
  35116. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35117. <collectionProp name="Asserion.test_strings">
  35118. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  35119. </collectionProp>
  35120. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35121. <boolProp name="Assertion.assume_success">false</boolProp>
  35122. <intProp name="Assertion.test_type">2</intProp>
  35123. </ResponseAssertion>
  35124. <hashTree/>
  35125. </hashTree>
  35126. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Advanced Search" enabled="true">
  35127. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35128. <collectionProp name="Arguments.arguments"/>
  35129. </elementProp>
  35130. <stringProp name="HTTPSampler.domain"/>
  35131. <stringProp name="HTTPSampler.port"/>
  35132. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35133. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35134. <stringProp name="HTTPSampler.protocol"/>
  35135. <stringProp name="HTTPSampler.contentEncoding"/>
  35136. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/advanced/</stringProp>
  35137. <stringProp name="HTTPSampler.method">GET</stringProp>
  35138. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35139. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35140. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35141. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35142. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35143. <stringProp name="HTTPSampler.embedded_url_re"/>
  35144. <stringProp name="TestPlan.comments">tool/fragments/ce/search/open_advanced_search_page.jmx</stringProp></HTTPSamplerProxy>
  35145. <hashTree>
  35146. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35147. <collectionProp name="Asserion.test_strings">
  35148. <stringProp name="921122077">&lt;title&gt;Advanced Search&lt;/title&gt;</stringProp>
  35149. </collectionProp>
  35150. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35151. <boolProp name="Assertion.assume_success">false</boolProp>
  35152. <intProp name="Assertion.test_type">2</intProp>
  35153. </ResponseAssertion>
  35154. <hashTree/>
  35155. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract attribute name" enabled="true">
  35156. <stringProp name="XPathExtractor.default"/>
  35157. <stringProp name="XPathExtractor.refname">attribute_name</stringProp>
  35158. <stringProp name="XPathExtractor.xpathQuery">(//select[@class="multiselect"])[last()]/@name</stringProp>
  35159. <boolProp name="XPathExtractor.validate">false</boolProp>
  35160. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  35161. <boolProp name="XPathExtractor.namespace">false</boolProp>
  35162. </XPathExtractor>
  35163. <hashTree/>
  35164. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract attribute options count" enabled="true">
  35165. <stringProp name="XPathExtractor.default">0</stringProp>
  35166. <stringProp name="XPathExtractor.refname">attribute_options_count</stringProp>
  35167. <stringProp name="XPathExtractor.xpathQuery">count((//select[@class="multiselect"])[last()]/option)</stringProp>
  35168. <boolProp name="XPathExtractor.validate">false</boolProp>
  35169. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  35170. <boolProp name="XPathExtractor.namespace">false</boolProp>
  35171. </XPathExtractor>
  35172. <hashTree/>
  35173. <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="Extract attribute value" enabled="true">
  35174. <stringProp name="XPathExtractor.default"/>
  35175. <stringProp name="XPathExtractor.refname">attribute_value</stringProp>
  35176. <stringProp name="XPathExtractor.xpathQuery">((//select[@class="multiselect"])[last()]/option)[1]/@value</stringProp>
  35177. <boolProp name="XPathExtractor.validate">false</boolProp>
  35178. <boolProp name="XPathExtractor.tolerant">true</boolProp>
  35179. <boolProp name="XPathExtractor.namespace">false</boolProp>
  35180. </XPathExtractor>
  35181. <hashTree/>
  35182. </hashTree>
  35183. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  35184. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35185. <collectionProp name="Arguments.arguments">
  35186. <elementProp name="name" elementType="HTTPArgument">
  35187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35188. <stringProp name="Argument.name">name</stringProp>
  35189. <stringProp name="Argument.value"/>
  35190. <stringProp name="Argument.metadata">=</stringProp>
  35191. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35192. </elementProp>
  35193. <elementProp name="sku" elementType="HTTPArgument">
  35194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35195. <stringProp name="Argument.name">sku</stringProp>
  35196. <stringProp name="Argument.value"/>
  35197. <stringProp name="Argument.metadata">=</stringProp>
  35198. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35199. </elementProp>
  35200. <elementProp name="description" elementType="HTTPArgument">
  35201. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35202. <stringProp name="Argument.name">description</stringProp>
  35203. <stringProp name="Argument.value">${searchTerm}</stringProp>
  35204. <stringProp name="Argument.metadata">=</stringProp>
  35205. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35206. </elementProp>
  35207. <elementProp name="short_description" elementType="HTTPArgument">
  35208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35209. <stringProp name="Argument.name">short_description</stringProp>
  35210. <stringProp name="Argument.value"/>
  35211. <stringProp name="Argument.metadata">=</stringProp>
  35212. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35213. </elementProp>
  35214. <elementProp name="price%5Bfrom%5D" elementType="HTTPArgument">
  35215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35216. <stringProp name="Argument.name">price%5Bfrom%5D</stringProp>
  35217. <stringProp name="Argument.value"/>
  35218. <stringProp name="Argument.metadata">=</stringProp>
  35219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35220. </elementProp>
  35221. <elementProp name="price%5Bto%5D" elementType="HTTPArgument">
  35222. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35223. <stringProp name="Argument.name">price%5Bto%5D</stringProp>
  35224. <stringProp name="Argument.value">${priceTo}</stringProp>
  35225. <stringProp name="Argument.metadata">=</stringProp>
  35226. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35227. </elementProp>
  35228. <!-- Should be fixed in MAGETWO-80420 -->
  35229. <!--<elementProp name="${attribute_name}" elementType="HTTPArgument">-->
  35230. <!--<boolProp name="HTTPArgument.always_encode">true</boolProp>-->
  35231. <!--<stringProp name="Argument.value">${attribute_value}</stringProp>-->
  35232. <!--<stringProp name="Argument.metadata">=</stringProp>-->
  35233. <!--<boolProp name="HTTPArgument.use_equals">true</boolProp>-->
  35234. <!--<stringProp name="Argument.name">${attribute_name}</stringProp>-->
  35235. <!--</elementProp>-->
  35236. </collectionProp>
  35237. </elementProp>
  35238. <stringProp name="HTTPSampler.domain"/>
  35239. <stringProp name="HTTPSampler.port"/>
  35240. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35241. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35242. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35243. <stringProp name="HTTPSampler.contentEncoding"/>
  35244. <stringProp name="HTTPSampler.path">${base_path}catalogsearch/advanced/result/</stringProp>
  35245. <stringProp name="HTTPSampler.method">GET</stringProp>
  35246. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35247. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35248. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35249. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35250. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35251. <stringProp name="HTTPSampler.embedded_url_re"/>
  35252. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_advanced.jmx</stringProp></HTTPSamplerProxy>
  35253. <hashTree>
  35254. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert search result" enabled="true">
  35255. <collectionProp name="Asserion.test_strings">
  35256. <stringProp name="-1851531284">items&lt;/strong&gt; were found using the following search criteria</stringProp>
  35257. </collectionProp>
  35258. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35259. <boolProp name="Assertion.assume_success">false</boolProp>
  35260. <intProp name="Assertion.test_type">2</intProp>
  35261. </ResponseAssertion>
  35262. <hashTree/>
  35263. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  35264. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  35265. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  35266. <stringProp name="RegexExtractor.regex">&lt;a class="product-item-link"(?s).+?href="(?:http|https)://${host}${base_path}(index.php/)?([^'"]+)${url_suffix}"&gt;(?s).</stringProp>
  35267. <stringProp name="RegexExtractor.template">$2$</stringProp>
  35268. <stringProp name="RegexExtractor.default"/>
  35269. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  35270. </RegexExtractor>
  35271. <hashTree/>
  35272. </hashTree>
  35273. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  35274. <stringProp name="BeanShellSampler.query">
  35275. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  35276. if (foundProducts &gt; 3) {
  35277. foundProducts = 3;
  35278. }
  35279. vars.put("foundProducts", String.valueOf(foundProducts));
  35280. </stringProp>
  35281. <stringProp name="BeanShellSampler.filename"/>
  35282. <stringProp name="BeanShellSampler.parameters"/>
  35283. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35284. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  35285. <hashTree/>
  35286. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  35287. <boolProp name="LoopController.continue_forever">true</boolProp>
  35288. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  35289. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  35290. <hashTree>
  35291. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  35292. <stringProp name="CounterConfig.start">1</stringProp>
  35293. <stringProp name="CounterConfig.end"/>
  35294. <stringProp name="CounterConfig.incr">1</stringProp>
  35295. <stringProp name="CounterConfig.name">_counter</stringProp>
  35296. <stringProp name="CounterConfig.format"/>
  35297. <boolProp name="CounterConfig.per_user">true</boolProp>
  35298. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  35299. </CounterConfig>
  35300. <hashTree/>
  35301. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  35302. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  35303. <stringProp name="BeanShellSampler.query">
  35304. number = vars.get("_counter");
  35305. product = vars.get("product_url_keys_"+number);
  35306. vars.put("product_url_key", product);
  35307. </stringProp>
  35308. <stringProp name="BeanShellSampler.filename"/>
  35309. <stringProp name="BeanShellSampler.parameters"/>
  35310. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35311. </BeanShellSampler>
  35312. <hashTree/>
  35313. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  35314. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35315. <collectionProp name="Arguments.arguments"/>
  35316. </elementProp>
  35317. <stringProp name="HTTPSampler.domain"/>
  35318. <stringProp name="HTTPSampler.port"/>
  35319. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35320. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35321. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35322. <stringProp name="HTTPSampler.contentEncoding"/>
  35323. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  35324. <stringProp name="HTTPSampler.method">GET</stringProp>
  35325. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35326. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35327. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35328. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35329. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35330. <stringProp name="HTTPSampler.embedded_url_re"/>
  35331. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  35332. <hashTree>
  35333. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35334. <collectionProp name="Asserion.test_strings">
  35335. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  35336. </collectionProp>
  35337. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35338. <boolProp name="Assertion.assume_success">false</boolProp>
  35339. <intProp name="Assertion.test_type">2</intProp>
  35340. </ResponseAssertion>
  35341. <hashTree/>
  35342. </hashTree>
  35343. </hashTree>
  35344. </hashTree>
  35345. </hashTree>
  35346. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Add To Cart By Guest" enabled="true">
  35347. <intProp name="ThroughputController.style">1</intProp>
  35348. <boolProp name="ThroughputController.perThread">false</boolProp>
  35349. <intProp name="ThroughputController.maxThroughput">1</intProp>
  35350. <stringProp name="ThroughputController.percentThroughput">${cAddToCartByGuestPercentage}</stringProp>
  35351. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  35352. <hashTree>
  35353. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  35354. <stringProp name="script">
  35355. var tmpLabel = vars.get("testLabel")
  35356. if (tmpLabel) {
  35357. var testLabel = " (" + tmpLabel + ")"
  35358. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  35359. if (sampler.getName().indexOf(testLabel) == -1) {
  35360. sampler.setName(sampler.getName() + testLabel);
  35361. }
  35362. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  35363. sampler.setName("SetUp - " + sampler.getName());
  35364. }
  35365. } else {
  35366. testLabel = ""
  35367. }
  35368. </stringProp>
  35369. <stringProp name="scriptLanguage">javascript</stringProp>
  35370. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  35371. <hashTree/>
  35372. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  35373. <stringProp name="BeanShellSampler.query">
  35374. vars.put("testLabel", "[C] Add To Cart By Guest");
  35375. </stringProp>
  35376. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35377. </BeanShellSampler>
  35378. <hashTree/>
  35379. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  35380. <collectionProp name="CookieManager.cookies">
  35381. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  35382. <stringProp name="Cookie.value">30</stringProp>
  35383. <stringProp name="Cookie.domain">${host}</stringProp>
  35384. <stringProp name="Cookie.path">/</stringProp>
  35385. <boolProp name="Cookie.secure">false</boolProp>
  35386. <longProp name="Cookie.expires">0</longProp>
  35387. <boolProp name="Cookie.path_specified">true</boolProp>
  35388. <boolProp name="Cookie.domain_specified">true</boolProp>
  35389. </elementProp>
  35390. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  35391. <stringProp name="Cookie.value">${form_key}</stringProp>
  35392. <stringProp name="Cookie.domain">${host}</stringProp>
  35393. <stringProp name="Cookie.path">${base_path}</stringProp>
  35394. <boolProp name="Cookie.secure">false</boolProp>
  35395. <longProp name="Cookie.expires">0</longProp>
  35396. <boolProp name="Cookie.path_specified">true</boolProp>
  35397. <boolProp name="Cookie.domain_specified">true</boolProp>
  35398. </elementProp>
  35399. </collectionProp>
  35400. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  35401. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  35402. <hashTree/>
  35403. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  35404. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  35405. <stringProp name="BeanShellSampler.query">
  35406. import java.util.Random;
  35407. Random random = new Random();
  35408. if (${seedForRandom} &gt; 0) {
  35409. random.setSeed(${seedForRandom} + ${__threadNum});
  35410. }
  35411. vars.putObject("randomIntGenerator", random);
  35412. </stringProp>
  35413. <stringProp name="BeanShellSampler.filename"/>
  35414. <stringProp name="BeanShellSampler.parameters"/>
  35415. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35416. </BeanShellSampler>
  35417. <hashTree/>
  35418. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  35419. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  35420. <stringProp name="BeanShellSampler.query">
  35421. vars.put("totalProductsAdded", "0");
  35422. </stringProp>
  35423. <stringProp name="BeanShellSampler.filename"/>
  35424. <stringProp name="BeanShellSampler.parameters"/>
  35425. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35426. </BeanShellSampler>
  35427. <hashTree/>
  35428. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  35429. <stringProp name="scriptLanguage">javascript</stringProp>
  35430. <stringProp name="parameters"/>
  35431. <stringProp name="filename"/>
  35432. <stringProp name="cacheKey"/>
  35433. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  35434. var categories = props.get("categories");
  35435. number = random.nextInt(categories.length);
  35436. vars.put("category_url_key", categories[number].url_key);
  35437. vars.put("category_name", categories[number].name);
  35438. vars.put("category_id", categories[number].id);
  35439. vars.putObject("category", categories[number]);
  35440. </stringProp>
  35441. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  35442. <hashTree/>
  35443. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  35444. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35445. <collectionProp name="Arguments.arguments"/>
  35446. </elementProp>
  35447. <stringProp name="HTTPSampler.domain"/>
  35448. <stringProp name="HTTPSampler.port"/>
  35449. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35450. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35451. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35452. <stringProp name="HTTPSampler.contentEncoding"/>
  35453. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  35454. <stringProp name="HTTPSampler.method">GET</stringProp>
  35455. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35456. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35457. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35458. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35459. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35460. <stringProp name="HTTPSampler.embedded_url_re"/>
  35461. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  35462. <hashTree>
  35463. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35464. <collectionProp name="Asserion.test_strings">
  35465. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  35466. </collectionProp>
  35467. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35468. <boolProp name="Assertion.assume_success">false</boolProp>
  35469. <intProp name="Assertion.test_type">2</intProp>
  35470. </ResponseAssertion>
  35471. <hashTree/>
  35472. </hashTree>
  35473. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  35474. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35475. <collectionProp name="Arguments.arguments"/>
  35476. </elementProp>
  35477. <stringProp name="HTTPSampler.domain"/>
  35478. <stringProp name="HTTPSampler.port"/>
  35479. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35480. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35481. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35482. <stringProp name="HTTPSampler.contentEncoding"/>
  35483. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  35484. <stringProp name="HTTPSampler.method">GET</stringProp>
  35485. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35486. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35487. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35488. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35489. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35490. <stringProp name="HTTPSampler.embedded_url_re"/>
  35491. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  35492. <hashTree>
  35493. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35494. <collectionProp name="Asserion.test_strings">
  35495. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  35496. </collectionProp>
  35497. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35498. <boolProp name="Assertion.assume_success">false</boolProp>
  35499. <intProp name="Assertion.test_type">6</intProp>
  35500. </ResponseAssertion>
  35501. <hashTree/>
  35502. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  35503. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  35504. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  35505. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  35506. <stringProp name="RegexExtractor.template">$1$</stringProp>
  35507. <stringProp name="RegexExtractor.default"/>
  35508. <stringProp name="RegexExtractor.match_number">1</stringProp>
  35509. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  35510. </RegexExtractor>
  35511. <hashTree/>
  35512. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  35513. <collectionProp name="Asserion.test_strings">
  35514. <stringProp name="1191417111">^[0-9]+$</stringProp>
  35515. </collectionProp>
  35516. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35517. <boolProp name="Assertion.assume_success">false</boolProp>
  35518. <intProp name="Assertion.test_type">1</intProp>
  35519. <stringProp name="Assertion.scope">variable</stringProp>
  35520. <stringProp name="Scope.variable">category_id</stringProp>
  35521. </ResponseAssertion>
  35522. <hashTree/>
  35523. </hashTree>
  35524. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
  35525. <boolProp name="LoopController.continue_forever">true</boolProp>
  35526. <stringProp name="LoopController.loops">2</stringProp>
  35527. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  35528. <hashTree>
  35529. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  35530. <stringProp name="CounterConfig.start">1</stringProp>
  35531. <stringProp name="CounterConfig.end"/>
  35532. <stringProp name="CounterConfig.incr">1</stringProp>
  35533. <stringProp name="CounterConfig.name">_counter</stringProp>
  35534. <stringProp name="CounterConfig.format"/>
  35535. <boolProp name="CounterConfig.per_user">true</boolProp>
  35536. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  35537. </CounterConfig>
  35538. <hashTree/>
  35539. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  35540. <stringProp name="BeanShellSampler.query">
  35541. import java.util.Random;
  35542. Random random = vars.getObject("randomIntGenerator");
  35543. number = random.nextInt(props.get("simple_products_list").size());
  35544. product = props.get("simple_products_list").get(number);
  35545. vars.put("product_url_key", product.get("url_key"));
  35546. vars.put("product_id", product.get("id"));
  35547. vars.put("product_name", product.get("title"));
  35548. vars.put("product_uenc", product.get("uenc"));
  35549. vars.put("product_sku", product.get("sku"));
  35550. </stringProp>
  35551. <stringProp name="BeanShellSampler.filename"/>
  35552. <stringProp name="BeanShellSampler.parameters"/>
  35553. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35554. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  35555. <hashTree/>
  35556. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  35557. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  35558. <stringProp name="BeanShellSampler.query">
  35559. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  35560. productsAdded = productsAdded + 1;
  35561. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  35562. </stringProp>
  35563. <stringProp name="BeanShellSampler.filename"/>
  35564. <stringProp name="BeanShellSampler.parameters"/>
  35565. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35566. </BeanShellSampler>
  35567. <hashTree/>
  35568. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  35569. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35570. <collectionProp name="Arguments.arguments"/>
  35571. </elementProp>
  35572. <stringProp name="HTTPSampler.domain"/>
  35573. <stringProp name="HTTPSampler.port"/>
  35574. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35575. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35576. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35577. <stringProp name="HTTPSampler.contentEncoding"/>
  35578. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  35579. <stringProp name="HTTPSampler.method">GET</stringProp>
  35580. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35581. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35582. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35583. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35584. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35585. <stringProp name="HTTPSampler.embedded_url_re"/>
  35586. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  35587. <hashTree>
  35588. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35589. <collectionProp name="Asserion.test_strings">
  35590. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  35591. </collectionProp>
  35592. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35593. <boolProp name="Assertion.assume_success">false</boolProp>
  35594. <intProp name="Assertion.test_type">2</intProp>
  35595. </ResponseAssertion>
  35596. <hashTree/>
  35597. </hashTree>
  35598. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  35599. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35600. <collectionProp name="Arguments.arguments">
  35601. <elementProp name="product" elementType="HTTPArgument">
  35602. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35603. <stringProp name="Argument.value">${product_id}</stringProp>
  35604. <stringProp name="Argument.metadata">=</stringProp>
  35605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35606. <stringProp name="Argument.name">product</stringProp>
  35607. </elementProp>
  35608. <elementProp name="related_product" elementType="HTTPArgument">
  35609. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35610. <stringProp name="Argument.value"/>
  35611. <stringProp name="Argument.metadata">=</stringProp>
  35612. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35613. <stringProp name="Argument.name">related_product</stringProp>
  35614. </elementProp>
  35615. <elementProp name="qty" elementType="HTTPArgument">
  35616. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35617. <stringProp name="Argument.value">1</stringProp>
  35618. <stringProp name="Argument.metadata">=</stringProp>
  35619. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35620. <stringProp name="Argument.name">qty</stringProp>
  35621. </elementProp>
  35622. <elementProp name="form_key" elementType="HTTPArgument">
  35623. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35624. <stringProp name="Argument.value">${form_key}</stringProp>
  35625. <stringProp name="Argument.metadata">=</stringProp>
  35626. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35627. <stringProp name="Argument.name">form_key</stringProp>
  35628. </elementProp>
  35629. </collectionProp>
  35630. </elementProp>
  35631. <stringProp name="HTTPSampler.domain"/>
  35632. <stringProp name="HTTPSampler.port"/>
  35633. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35634. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35635. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35636. <stringProp name="HTTPSampler.contentEncoding"/>
  35637. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  35638. <stringProp name="HTTPSampler.method">POST</stringProp>
  35639. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35640. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35641. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35642. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35643. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35644. <stringProp name="HTTPSampler.embedded_url_re"/>
  35645. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  35646. <hashTree>
  35647. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  35648. <collectionProp name="HeaderManager.headers">
  35649. <elementProp name="" elementType="Header">
  35650. <stringProp name="Header.name">X-Requested-With</stringProp>
  35651. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  35652. </elementProp>
  35653. </collectionProp>
  35654. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  35655. <hashTree/>
  35656. </hashTree>
  35657. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  35658. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35659. <collectionProp name="Arguments.arguments">
  35660. <elementProp name="sections" elementType="HTTPArgument">
  35661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35662. <stringProp name="Argument.value">cart,messages</stringProp>
  35663. <stringProp name="Argument.metadata">=</stringProp>
  35664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35665. <stringProp name="Argument.name">sections</stringProp>
  35666. </elementProp>
  35667. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  35668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35669. <stringProp name="Argument.value">true</stringProp>
  35670. <stringProp name="Argument.metadata">=</stringProp>
  35671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35672. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  35673. </elementProp>
  35674. <elementProp name="_" elementType="HTTPArgument">
  35675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35676. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  35677. <stringProp name="Argument.metadata">=</stringProp>
  35678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35679. <stringProp name="Argument.name">_</stringProp>
  35680. </elementProp>
  35681. </collectionProp>
  35682. </elementProp>
  35683. <stringProp name="HTTPSampler.domain"/>
  35684. <stringProp name="HTTPSampler.port"/>
  35685. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35686. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35687. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35688. <stringProp name="HTTPSampler.contentEncoding"/>
  35689. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  35690. <stringProp name="HTTPSampler.method">GET</stringProp>
  35691. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35692. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35693. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35694. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35695. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35696. <stringProp name="HTTPSampler.embedded_url_re"/>
  35697. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  35698. <hashTree>
  35699. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35700. <collectionProp name="Asserion.test_strings">
  35701. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  35702. </collectionProp>
  35703. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35704. <boolProp name="Assertion.assume_success">false</boolProp>
  35705. <intProp name="Assertion.test_type">2</intProp>
  35706. </ResponseAssertion>
  35707. <hashTree/>
  35708. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35709. <collectionProp name="Asserion.test_strings">
  35710. <stringProp name="2057973164">This product is out of stock.</stringProp>
  35711. </collectionProp>
  35712. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35713. <boolProp name="Assertion.assume_success">false</boolProp>
  35714. <intProp name="Assertion.test_type">6</intProp>
  35715. </ResponseAssertion>
  35716. <hashTree/>
  35717. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35718. <collectionProp name="Asserion.test_strings">
  35719. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  35720. </collectionProp>
  35721. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35722. <boolProp name="Assertion.assume_success">false</boolProp>
  35723. <intProp name="Assertion.test_type">2</intProp>
  35724. </ResponseAssertion>
  35725. <hashTree/>
  35726. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  35727. <collectionProp name="HeaderManager.headers">
  35728. <elementProp name="" elementType="Header">
  35729. <stringProp name="Header.name">X-Requested-With</stringProp>
  35730. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  35731. </elementProp>
  35732. </collectionProp>
  35733. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  35734. <hashTree/>
  35735. </hashTree>
  35736. </hashTree>
  35737. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
  35738. <boolProp name="LoopController.continue_forever">true</boolProp>
  35739. <stringProp name="LoopController.loops">1</stringProp>
  35740. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  35741. <hashTree>
  35742. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  35743. <stringProp name="CounterConfig.start">1</stringProp>
  35744. <stringProp name="CounterConfig.end"/>
  35745. <stringProp name="CounterConfig.incr">1</stringProp>
  35746. <stringProp name="CounterConfig.name">_counter</stringProp>
  35747. <stringProp name="CounterConfig.format"/>
  35748. <boolProp name="CounterConfig.per_user">true</boolProp>
  35749. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  35750. </CounterConfig>
  35751. <hashTree/>
  35752. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  35753. <stringProp name="BeanShellSampler.query">
  35754. import java.util.Random;
  35755. Random random = vars.getObject("randomIntGenerator");
  35756. number = random.nextInt(props.get("configurable_products_list").size());
  35757. product = props.get("configurable_products_list").get(number);
  35758. vars.put("product_url_key", product.get("url_key"));
  35759. vars.put("product_id", product.get("id"));
  35760. vars.put("product_name", product.get("title"));
  35761. vars.put("product_uenc", product.get("uenc"));
  35762. vars.put("product_sku", product.get("sku"));
  35763. </stringProp>
  35764. <stringProp name="BeanShellSampler.filename"/>
  35765. <stringProp name="BeanShellSampler.parameters"/>
  35766. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35767. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  35768. <hashTree/>
  35769. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  35770. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  35771. <stringProp name="BeanShellSampler.query">
  35772. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  35773. productsAdded = productsAdded + 1;
  35774. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  35775. </stringProp>
  35776. <stringProp name="BeanShellSampler.filename"/>
  35777. <stringProp name="BeanShellSampler.parameters"/>
  35778. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  35779. </BeanShellSampler>
  35780. <hashTree/>
  35781. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  35782. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35783. <collectionProp name="Arguments.arguments"/>
  35784. </elementProp>
  35785. <stringProp name="HTTPSampler.domain"/>
  35786. <stringProp name="HTTPSampler.port"/>
  35787. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35788. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35789. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35790. <stringProp name="HTTPSampler.contentEncoding"/>
  35791. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  35792. <stringProp name="HTTPSampler.method">GET</stringProp>
  35793. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35794. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35795. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35796. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35797. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35798. <stringProp name="HTTPSampler.embedded_url_re"/>
  35799. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  35800. <hashTree>
  35801. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  35802. <collectionProp name="Asserion.test_strings">
  35803. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  35804. </collectionProp>
  35805. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35806. <boolProp name="Assertion.assume_success">false</boolProp>
  35807. <intProp name="Assertion.test_type">2</intProp>
  35808. </ResponseAssertion>
  35809. <hashTree/>
  35810. </hashTree>
  35811. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  35812. <boolProp name="LoopController.continue_forever">true</boolProp>
  35813. <stringProp name="LoopController.loops">1</stringProp>
  35814. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  35815. <hashTree>
  35816. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  35817. <collectionProp name="HeaderManager.headers">
  35818. <elementProp name="" elementType="Header">
  35819. <stringProp name="Header.name">Content-Type</stringProp>
  35820. <stringProp name="Header.value">application/json</stringProp>
  35821. </elementProp>
  35822. <elementProp name="" elementType="Header">
  35823. <stringProp name="Header.name">Accept</stringProp>
  35824. <stringProp name="Header.value">*/*</stringProp>
  35825. </elementProp>
  35826. </collectionProp>
  35827. </HeaderManager>
  35828. <hashTree/>
  35829. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  35830. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  35831. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  35832. <collectionProp name="Arguments.arguments">
  35833. <elementProp name="" elementType="HTTPArgument">
  35834. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  35835. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  35836. <stringProp name="Argument.metadata">=</stringProp>
  35837. </elementProp>
  35838. </collectionProp>
  35839. </elementProp>
  35840. <stringProp name="HTTPSampler.domain"/>
  35841. <stringProp name="HTTPSampler.port"/>
  35842. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35843. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35844. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35845. <stringProp name="HTTPSampler.contentEncoding"/>
  35846. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  35847. <stringProp name="HTTPSampler.method">POST</stringProp>
  35848. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35849. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35850. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35851. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35852. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35853. <stringProp name="HTTPSampler.embedded_url_re"/>
  35854. </HTTPSamplerProxy>
  35855. <hashTree>
  35856. <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">
  35857. <stringProp name="VAR">admin_token</stringProp>
  35858. <stringProp name="JSONPATH">$</stringProp>
  35859. <stringProp name="DEFAULT"/>
  35860. <stringProp name="VARIABLE"/>
  35861. <stringProp name="SUBJECT">BODY</stringProp>
  35862. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  35863. <hashTree/>
  35864. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  35865. <collectionProp name="Asserion.test_strings">
  35866. <stringProp name="484395188">^.{10,}$</stringProp>
  35867. </collectionProp>
  35868. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  35869. <boolProp name="Assertion.assume_success">false</boolProp>
  35870. <intProp name="Assertion.test_type">1</intProp>
  35871. <stringProp name="Assertion.scope">variable</stringProp>
  35872. <stringProp name="Scope.variable">admin_token</stringProp>
  35873. </ResponseAssertion>
  35874. <hashTree/>
  35875. </hashTree>
  35876. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  35877. <collectionProp name="HeaderManager.headers">
  35878. <elementProp name="" elementType="Header">
  35879. <stringProp name="Header.name">Authorization</stringProp>
  35880. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  35881. </elementProp>
  35882. </collectionProp>
  35883. </HeaderManager>
  35884. <hashTree/>
  35885. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  35886. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35887. <collectionProp name="Arguments.arguments"/>
  35888. </elementProp>
  35889. <stringProp name="HTTPSampler.domain"/>
  35890. <stringProp name="HTTPSampler.port"/>
  35891. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35892. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35893. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35894. <stringProp name="HTTPSampler.contentEncoding"/>
  35895. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  35896. <stringProp name="HTTPSampler.method">GET</stringProp>
  35897. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35898. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35899. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35900. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35901. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35902. <stringProp name="HTTPSampler.embedded_url_re"/>
  35903. </HTTPSamplerProxy>
  35904. <hashTree>
  35905. <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">
  35906. <stringProp name="VAR">attribute_ids</stringProp>
  35907. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  35908. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  35909. <stringProp name="VARIABLE"/>
  35910. <stringProp name="SUBJECT">BODY</stringProp>
  35911. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  35912. <hashTree/>
  35913. <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">
  35914. <stringProp name="VAR">option_values</stringProp>
  35915. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  35916. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  35917. <stringProp name="VARIABLE"/>
  35918. <stringProp name="SUBJECT">BODY</stringProp>
  35919. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  35920. <hashTree/>
  35921. </hashTree>
  35922. </hashTree>
  35923. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  35924. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  35925. <collectionProp name="Arguments.arguments">
  35926. <elementProp name="product" elementType="HTTPArgument">
  35927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35928. <stringProp name="Argument.value">${product_id}</stringProp>
  35929. <stringProp name="Argument.metadata">=</stringProp>
  35930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35931. <stringProp name="Argument.name">product</stringProp>
  35932. </elementProp>
  35933. <elementProp name="related_product" elementType="HTTPArgument">
  35934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35935. <stringProp name="Argument.value"/>
  35936. <stringProp name="Argument.metadata">=</stringProp>
  35937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35938. <stringProp name="Argument.name">related_product</stringProp>
  35939. </elementProp>
  35940. <elementProp name="qty" elementType="HTTPArgument">
  35941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35942. <stringProp name="Argument.value">1</stringProp>
  35943. <stringProp name="Argument.metadata">=</stringProp>
  35944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35945. <stringProp name="Argument.name">qty</stringProp>
  35946. </elementProp>
  35947. <elementProp name="form_key" elementType="HTTPArgument">
  35948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  35949. <stringProp name="Argument.value">${form_key}</stringProp>
  35950. <stringProp name="Argument.metadata">=</stringProp>
  35951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  35952. <stringProp name="Argument.name">form_key</stringProp>
  35953. </elementProp>
  35954. </collectionProp>
  35955. </elementProp>
  35956. <stringProp name="HTTPSampler.domain"/>
  35957. <stringProp name="HTTPSampler.port"/>
  35958. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  35959. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  35960. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  35961. <stringProp name="HTTPSampler.contentEncoding"/>
  35962. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  35963. <stringProp name="HTTPSampler.method">POST</stringProp>
  35964. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  35965. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  35966. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  35967. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  35968. <boolProp name="HTTPSampler.monitor">false</boolProp>
  35969. <stringProp name="HTTPSampler.embedded_url_re"/>
  35970. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  35971. <hashTree>
  35972. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  35973. <boolProp name="resetInterpreter">false</boolProp>
  35974. <stringProp name="parameters"/>
  35975. <stringProp name="filename"/>
  35976. <stringProp name="script">
  35977. try {
  35978. attribute_ids = vars.get("attribute_ids");
  35979. option_values = vars.get("option_values");
  35980. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  35981. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  35982. attribute_ids_array = attribute_ids.split(",");
  35983. option_values_array = option_values.split(",");
  35984. args = ctx.getCurrentSampler().getArguments();
  35985. it = args.iterator();
  35986. while (it.hasNext()) {
  35987. argument = it.next();
  35988. if (argument.getStringValue().contains("${")) {
  35989. args.removeArgument(argument.getName());
  35990. }
  35991. }
  35992. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  35993. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  35994. }
  35995. } catch (Exception e) {
  35996. log.error("eror&#x2026;", e);
  35997. }
  35998. </stringProp>
  35999. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  36000. <hashTree/>
  36001. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  36002. <collectionProp name="HeaderManager.headers">
  36003. <elementProp name="" elementType="Header">
  36004. <stringProp name="Header.name">X-Requested-With</stringProp>
  36005. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  36006. </elementProp>
  36007. </collectionProp>
  36008. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  36009. <hashTree/>
  36010. </hashTree>
  36011. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  36012. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36013. <collectionProp name="Arguments.arguments">
  36014. <elementProp name="sections" elementType="HTTPArgument">
  36015. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36016. <stringProp name="Argument.value">cart,messages</stringProp>
  36017. <stringProp name="Argument.metadata">=</stringProp>
  36018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36019. <stringProp name="Argument.name">sections</stringProp>
  36020. </elementProp>
  36021. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  36022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36023. <stringProp name="Argument.value">true</stringProp>
  36024. <stringProp name="Argument.metadata">=</stringProp>
  36025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36026. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  36027. </elementProp>
  36028. <elementProp name="_" elementType="HTTPArgument">
  36029. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36030. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  36031. <stringProp name="Argument.metadata">=</stringProp>
  36032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36033. <stringProp name="Argument.name">_</stringProp>
  36034. </elementProp>
  36035. </collectionProp>
  36036. </elementProp>
  36037. <stringProp name="HTTPSampler.domain"/>
  36038. <stringProp name="HTTPSampler.port"/>
  36039. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36040. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36041. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36042. <stringProp name="HTTPSampler.contentEncoding"/>
  36043. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  36044. <stringProp name="HTTPSampler.method">GET</stringProp>
  36045. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36046. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36047. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36048. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36049. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36050. <stringProp name="HTTPSampler.embedded_url_re"/>
  36051. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  36052. <hashTree>
  36053. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36054. <collectionProp name="Asserion.test_strings">
  36055. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  36056. </collectionProp>
  36057. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36058. <boolProp name="Assertion.assume_success">false</boolProp>
  36059. <intProp name="Assertion.test_type">2</intProp>
  36060. </ResponseAssertion>
  36061. <hashTree/>
  36062. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36063. <collectionProp name="Asserion.test_strings">
  36064. <stringProp name="2057973164">This product is out of stock.</stringProp>
  36065. </collectionProp>
  36066. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36067. <boolProp name="Assertion.assume_success">false</boolProp>
  36068. <intProp name="Assertion.test_type">6</intProp>
  36069. </ResponseAssertion>
  36070. <hashTree/>
  36071. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36072. <collectionProp name="Asserion.test_strings">
  36073. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  36074. </collectionProp>
  36075. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36076. <boolProp name="Assertion.assume_success">false</boolProp>
  36077. <intProp name="Assertion.test_type">2</intProp>
  36078. </ResponseAssertion>
  36079. <hashTree/>
  36080. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  36081. <collectionProp name="HeaderManager.headers">
  36082. <elementProp name="" elementType="Header">
  36083. <stringProp name="Header.name">X-Requested-With</stringProp>
  36084. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  36085. </elementProp>
  36086. </collectionProp>
  36087. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  36088. <hashTree/>
  36089. </hashTree>
  36090. </hashTree>
  36091. </hashTree>
  36092. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Add to Wishlist" enabled="true">
  36093. <intProp name="ThroughputController.style">1</intProp>
  36094. <boolProp name="ThroughputController.perThread">false</boolProp>
  36095. <intProp name="ThroughputController.maxThroughput">1</intProp>
  36096. <stringProp name="ThroughputController.percentThroughput">${cAddToWishlistPercentage}</stringProp>
  36097. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  36098. <hashTree>
  36099. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  36100. <stringProp name="script">
  36101. var tmpLabel = vars.get("testLabel")
  36102. if (tmpLabel) {
  36103. var testLabel = " (" + tmpLabel + ")"
  36104. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  36105. if (sampler.getName().indexOf(testLabel) == -1) {
  36106. sampler.setName(sampler.getName() + testLabel);
  36107. }
  36108. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  36109. sampler.setName("SetUp - " + sampler.getName());
  36110. }
  36111. } else {
  36112. testLabel = ""
  36113. }
  36114. </stringProp>
  36115. <stringProp name="scriptLanguage">javascript</stringProp>
  36116. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  36117. <hashTree/>
  36118. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  36119. <stringProp name="BeanShellSampler.query">
  36120. vars.put("testLabel", "[C] Add to Wishlist");
  36121. </stringProp>
  36122. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36123. </BeanShellSampler>
  36124. <hashTree/>
  36125. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  36126. <collectionProp name="CookieManager.cookies">
  36127. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  36128. <stringProp name="Cookie.value">30</stringProp>
  36129. <stringProp name="Cookie.domain">${host}</stringProp>
  36130. <stringProp name="Cookie.path">/</stringProp>
  36131. <boolProp name="Cookie.secure">false</boolProp>
  36132. <longProp name="Cookie.expires">0</longProp>
  36133. <boolProp name="Cookie.path_specified">true</boolProp>
  36134. <boolProp name="Cookie.domain_specified">true</boolProp>
  36135. </elementProp>
  36136. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  36137. <stringProp name="Cookie.value">${form_key}</stringProp>
  36138. <stringProp name="Cookie.domain">${host}</stringProp>
  36139. <stringProp name="Cookie.path">${base_path}</stringProp>
  36140. <boolProp name="Cookie.secure">false</boolProp>
  36141. <longProp name="Cookie.expires">0</longProp>
  36142. <boolProp name="Cookie.path_specified">true</boolProp>
  36143. <boolProp name="Cookie.domain_specified">true</boolProp>
  36144. </elementProp>
  36145. </collectionProp>
  36146. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  36147. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  36148. <hashTree/>
  36149. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  36150. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  36151. <stringProp name="BeanShellSampler.query">
  36152. import java.util.Random;
  36153. Random random = new Random();
  36154. if (${seedForRandom} &gt; 0) {
  36155. random.setSeed(${seedForRandom} + ${__threadNum});
  36156. }
  36157. vars.putObject("randomIntGenerator", random);
  36158. </stringProp>
  36159. <stringProp name="BeanShellSampler.filename"/>
  36160. <stringProp name="BeanShellSampler.parameters"/>
  36161. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36162. </BeanShellSampler>
  36163. <hashTree/>
  36164. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  36165. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  36166. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  36167. <hashTree>
  36168. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  36169. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  36170. <stringProp name="BeanShellSampler.query">
  36171. customerUserList = props.get("customer_emails_list");
  36172. customerUser = customerUserList.poll();
  36173. if (customerUser == null) {
  36174. SampleResult.setResponseMessage("customerUser list is empty");
  36175. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  36176. IsSuccess=false;
  36177. SampleResult.setSuccessful(false);
  36178. SampleResult.setStopThread(true);
  36179. }
  36180. vars.put("customer_email", customerUser);
  36181. </stringProp>
  36182. <stringProp name="BeanShellSampler.filename"/>
  36183. <stringProp name="BeanShellSampler.parameters"/>
  36184. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36185. </BeanShellSampler>
  36186. <hashTree/>
  36187. </hashTree>
  36188. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  36189. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36190. <collectionProp name="Arguments.arguments"/>
  36191. </elementProp>
  36192. <stringProp name="HTTPSampler.domain"/>
  36193. <stringProp name="HTTPSampler.port"/>
  36194. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36195. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36196. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36197. <stringProp name="HTTPSampler.contentEncoding"/>
  36198. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  36199. <stringProp name="HTTPSampler.method">GET</stringProp>
  36200. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36201. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36202. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36203. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36204. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36205. <stringProp name="HTTPSampler.embedded_url_re"/>
  36206. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  36207. <hashTree>
  36208. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36209. <collectionProp name="Asserion.test_strings">
  36210. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  36211. </collectionProp>
  36212. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36213. <boolProp name="Assertion.assume_success">false</boolProp>
  36214. <intProp name="Assertion.test_type">2</intProp>
  36215. </ResponseAssertion>
  36216. <hashTree/>
  36217. </hashTree>
  36218. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  36219. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36220. <collectionProp name="Arguments.arguments">
  36221. <elementProp name="form_key" elementType="HTTPArgument">
  36222. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36223. <stringProp name="Argument.value">${form_key}</stringProp>
  36224. <stringProp name="Argument.metadata">=</stringProp>
  36225. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36226. <stringProp name="Argument.name">form_key</stringProp>
  36227. </elementProp>
  36228. <elementProp name="login[username]" elementType="HTTPArgument">
  36229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36230. <stringProp name="Argument.value">${customer_email}</stringProp>
  36231. <stringProp name="Argument.metadata">=</stringProp>
  36232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36233. <stringProp name="Argument.name">login[username]</stringProp>
  36234. </elementProp>
  36235. <elementProp name="login[password]" elementType="HTTPArgument">
  36236. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36237. <stringProp name="Argument.value">${customer_password}</stringProp>
  36238. <stringProp name="Argument.metadata">=</stringProp>
  36239. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36240. <stringProp name="Argument.name">login[password]</stringProp>
  36241. </elementProp>
  36242. <elementProp name="send" elementType="HTTPArgument">
  36243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36244. <stringProp name="Argument.value"/>
  36245. <stringProp name="Argument.metadata">=</stringProp>
  36246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36247. <stringProp name="Argument.name">send</stringProp>
  36248. </elementProp>
  36249. </collectionProp>
  36250. </elementProp>
  36251. <stringProp name="HTTPSampler.domain"/>
  36252. <stringProp name="HTTPSampler.port"/>
  36253. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36254. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36255. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36256. <stringProp name="HTTPSampler.contentEncoding"/>
  36257. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  36258. <stringProp name="HTTPSampler.method">POST</stringProp>
  36259. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36260. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36261. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36262. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36263. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36264. <stringProp name="HTTPSampler.embedded_url_re"/>
  36265. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  36266. <hashTree>
  36267. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36268. <collectionProp name="Asserion.test_strings">
  36269. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  36270. </collectionProp>
  36271. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36272. <boolProp name="Assertion.assume_success">false</boolProp>
  36273. <intProp name="Assertion.test_type">2</intProp>
  36274. </ResponseAssertion>
  36275. <hashTree/>
  36276. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  36277. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  36278. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  36279. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  36280. <stringProp name="RegexExtractor.template">$1$</stringProp>
  36281. <stringProp name="RegexExtractor.default"/>
  36282. <stringProp name="RegexExtractor.match_number">1</stringProp>
  36283. </RegexExtractor>
  36284. <hashTree/>
  36285. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  36286. <collectionProp name="Asserion.test_strings">
  36287. <stringProp name="2845929">^.+$</stringProp>
  36288. </collectionProp>
  36289. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36290. <boolProp name="Assertion.assume_success">false</boolProp>
  36291. <intProp name="Assertion.test_type">1</intProp>
  36292. <stringProp name="Assertion.scope">variable</stringProp>
  36293. <stringProp name="Scope.variable">addressId</stringProp>
  36294. </ResponseAssertion>
  36295. <hashTree/>
  36296. </hashTree>
  36297. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  36298. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36299. <collectionProp name="Arguments.arguments">
  36300. <elementProp name="sections" elementType="HTTPArgument">
  36301. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36302. <stringProp name="Argument.value"/>
  36303. <stringProp name="Argument.metadata">=</stringProp>
  36304. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36305. <stringProp name="Argument.name">sections</stringProp>
  36306. </elementProp>
  36307. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  36308. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36309. <stringProp name="Argument.value">false</stringProp>
  36310. <stringProp name="Argument.metadata">=</stringProp>
  36311. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36312. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  36313. </elementProp>
  36314. <elementProp name="_" elementType="HTTPArgument">
  36315. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36316. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  36317. <stringProp name="Argument.metadata">=</stringProp>
  36318. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36319. <stringProp name="Argument.name">_</stringProp>
  36320. </elementProp>
  36321. </collectionProp>
  36322. </elementProp>
  36323. <stringProp name="HTTPSampler.domain"/>
  36324. <stringProp name="HTTPSampler.port"/>
  36325. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36326. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36327. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36328. <stringProp name="HTTPSampler.contentEncoding"/>
  36329. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  36330. <stringProp name="HTTPSampler.method">GET</stringProp>
  36331. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36332. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36333. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36334. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36335. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36336. <stringProp name="HTTPSampler.embedded_url_re"/>
  36337. </HTTPSamplerProxy>
  36338. <hashTree/>
  36339. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Produts to Wishlist" enabled="true">
  36340. <boolProp name="LoopController.continue_forever">true</boolProp>
  36341. <stringProp name="LoopController.loops">5</stringProp>
  36342. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  36343. <hashTree>
  36344. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  36345. <stringProp name="CounterConfig.start">1</stringProp>
  36346. <stringProp name="CounterConfig.end"/>
  36347. <stringProp name="CounterConfig.incr">1</stringProp>
  36348. <stringProp name="CounterConfig.name">_counter</stringProp>
  36349. <stringProp name="CounterConfig.format"/>
  36350. <boolProp name="CounterConfig.per_user">true</boolProp>
  36351. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  36352. </CounterConfig>
  36353. <hashTree/>
  36354. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  36355. <stringProp name="BeanShellSampler.query">
  36356. import java.util.Random;
  36357. Random random = vars.getObject("randomIntGenerator");
  36358. number = random.nextInt(props.get("simple_products_list").size());
  36359. product = props.get("simple_products_list").get(number);
  36360. vars.put("product_url_key", product.get("url_key"));
  36361. vars.put("product_id", product.get("id"));
  36362. vars.put("product_name", product.get("title"));
  36363. vars.put("product_uenc", product.get("uenc"));
  36364. vars.put("product_sku", product.get("sku"));
  36365. </stringProp>
  36366. <stringProp name="BeanShellSampler.filename"/>
  36367. <stringProp name="BeanShellSampler.parameters"/>
  36368. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36369. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  36370. <hashTree/>
  36371. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  36372. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36373. <collectionProp name="Arguments.arguments"/>
  36374. </elementProp>
  36375. <stringProp name="HTTPSampler.domain"/>
  36376. <stringProp name="HTTPSampler.port"/>
  36377. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36378. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36379. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36380. <stringProp name="HTTPSampler.contentEncoding"/>
  36381. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  36382. <stringProp name="HTTPSampler.method">GET</stringProp>
  36383. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36384. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36385. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36386. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36387. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36388. <stringProp name="HTTPSampler.embedded_url_re"/>
  36389. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  36390. <hashTree>
  36391. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36392. <collectionProp name="Asserion.test_strings">
  36393. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  36394. </collectionProp>
  36395. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36396. <boolProp name="Assertion.assume_success">false</boolProp>
  36397. <intProp name="Assertion.test_type">2</intProp>
  36398. </ResponseAssertion>
  36399. <hashTree/>
  36400. </hashTree>
  36401. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Wishlist" enabled="true">
  36402. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36403. <collectionProp name="Arguments.arguments">
  36404. <elementProp name="form_key" elementType="HTTPArgument">
  36405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36406. <stringProp name="Argument.value">${form_key}</stringProp>
  36407. <stringProp name="Argument.metadata">=</stringProp>
  36408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36409. <stringProp name="Argument.name">form_key</stringProp>
  36410. <stringProp name="Argument.desc">false</stringProp>
  36411. </elementProp>
  36412. <elementProp name="uenc" elementType="HTTPArgument">
  36413. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36414. <stringProp name="Argument.value">${product_uenc}</stringProp>
  36415. <stringProp name="Argument.metadata">=</stringProp>
  36416. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36417. <stringProp name="Argument.name">uenc</stringProp>
  36418. </elementProp>
  36419. <elementProp name="product" elementType="HTTPArgument">
  36420. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36421. <stringProp name="Argument.value">${product_id}</stringProp>
  36422. <stringProp name="Argument.metadata">=</stringProp>
  36423. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36424. <stringProp name="Argument.name">product</stringProp>
  36425. </elementProp>
  36426. </collectionProp>
  36427. </elementProp>
  36428. <stringProp name="HTTPSampler.domain"/>
  36429. <stringProp name="HTTPSampler.port"/>
  36430. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36431. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36432. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36433. <stringProp name="HTTPSampler.contentEncoding"/>
  36434. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/add/</stringProp>
  36435. <stringProp name="HTTPSampler.method">POST</stringProp>
  36436. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36437. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36438. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36439. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36440. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36441. <stringProp name="HTTPSampler.embedded_url_re"/>
  36442. <stringProp name="TestPlan.comments">tool/fragments/ce/wishlist/add_to_wishlist.jmx</stringProp></HTTPSamplerProxy>
  36443. <hashTree>
  36444. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36445. <collectionProp name="Asserion.test_strings">
  36446. <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
  36447. </collectionProp>
  36448. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36449. <boolProp name="Assertion.assume_success">false</boolProp>
  36450. <intProp name="Assertion.test_type">16</intProp>
  36451. </ResponseAssertion>
  36452. <hashTree/>
  36453. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  36454. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  36455. <stringProp name="RegexExtractor.refname">wishListItems</stringProp>
  36456. <stringProp name="RegexExtractor.regex">data-post-remove='\{"action":"(.+)\/wishlist\\/index\\/remove\\/","data":\{"item":"([^"]+)"</stringProp>
  36457. <stringProp name="RegexExtractor.template">$2$</stringProp>
  36458. <stringProp name="RegexExtractor.default"/>
  36459. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  36460. </RegexExtractor>
  36461. <hashTree/>
  36462. </hashTree>
  36463. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Wishlist Section ${_counter}" enabled="true">
  36464. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36465. <collectionProp name="Arguments.arguments">
  36466. <elementProp name="sections" elementType="HTTPArgument">
  36467. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36468. <stringProp name="Argument.value">wishlist,messages</stringProp>
  36469. <stringProp name="Argument.metadata">=</stringProp>
  36470. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36471. <stringProp name="Argument.name">sections</stringProp>
  36472. </elementProp>
  36473. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  36474. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36475. <stringProp name="Argument.value">false</stringProp>
  36476. <stringProp name="Argument.metadata">=</stringProp>
  36477. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36478. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  36479. </elementProp>
  36480. <elementProp name="_" elementType="HTTPArgument">
  36481. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36482. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  36483. <stringProp name="Argument.metadata">=</stringProp>
  36484. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36485. <stringProp name="Argument.name">_</stringProp>
  36486. </elementProp>
  36487. </collectionProp>
  36488. </elementProp>
  36489. <stringProp name="HTTPSampler.domain"/>
  36490. <stringProp name="HTTPSampler.port"/>
  36491. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36492. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36493. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36494. <stringProp name="HTTPSampler.contentEncoding"/>
  36495. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  36496. <stringProp name="HTTPSampler.method">GET</stringProp>
  36497. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36498. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36499. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36500. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36501. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36502. <stringProp name="HTTPSampler.embedded_url_re"/>
  36503. <stringProp name="TestPlan.comments">tool/fragments/ce/wishlist/load_wishlist_section.jmx</stringProp></HTTPSamplerProxy>
  36504. <hashTree>
  36505. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36506. <collectionProp name="Asserion.test_strings">
  36507. <stringProp name="-1865430343">{"wishlist":{"counter":"</stringProp>
  36508. </collectionProp>
  36509. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36510. <boolProp name="Assertion.assume_success">false</boolProp>
  36511. <intProp name="Assertion.test_type">16</intProp>
  36512. </ResponseAssertion>
  36513. <hashTree/>
  36514. <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
  36515. <stringProp name="ConstantTimer.delay">${wishlistDelay}*1000</stringProp>
  36516. </ConstantTimer>
  36517. <hashTree/>
  36518. </hashTree>
  36519. </hashTree>
  36520. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller: Clear Wishlist" enabled="true">
  36521. <stringProp name="ForeachController.inputVal">wishListItems</stringProp>
  36522. <stringProp name="ForeachController.returnVal">wishListItem</stringProp>
  36523. <boolProp name="ForeachController.useSeparator">true</boolProp>
  36524. <stringProp name="TestPlan.comments">tool/fragments/ce/wishlist/clear_wishlist.jmx</stringProp></ForeachController>
  36525. <hashTree>
  36526. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  36527. <stringProp name="CounterConfig.start">1</stringProp>
  36528. <stringProp name="CounterConfig.end">5</stringProp>
  36529. <stringProp name="CounterConfig.incr">1</stringProp>
  36530. <stringProp name="CounterConfig.name">counter</stringProp>
  36531. <stringProp name="CounterConfig.format"/>
  36532. <boolProp name="CounterConfig.per_user">true</boolProp>
  36533. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  36534. </CounterConfig>
  36535. <hashTree/>
  36536. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Clear Wishlist ${counter}" enabled="true">
  36537. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36538. <collectionProp name="Arguments.arguments">
  36539. <elementProp name="form_key" elementType="HTTPArgument">
  36540. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36541. <stringProp name="Argument.value">${form_key}</stringProp>
  36542. <stringProp name="Argument.metadata">=</stringProp>
  36543. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36544. <stringProp name="Argument.name">form_key</stringProp>
  36545. <stringProp name="Argument.desc">true</stringProp>
  36546. </elementProp>
  36547. <elementProp name="item" elementType="HTTPArgument">
  36548. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36549. <stringProp name="Argument.value">${wishListItem}</stringProp>
  36550. <stringProp name="Argument.metadata">=</stringProp>
  36551. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36552. <stringProp name="Argument.name">item</stringProp>
  36553. <stringProp name="Argument.desc">true</stringProp>
  36554. </elementProp>
  36555. </collectionProp>
  36556. </elementProp>
  36557. <stringProp name="HTTPSampler.domain"/>
  36558. <stringProp name="HTTPSampler.port"/>
  36559. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36560. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36561. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36562. <stringProp name="HTTPSampler.contentEncoding"/>
  36563. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/remove/</stringProp>
  36564. <stringProp name="HTTPSampler.method">POST</stringProp>
  36565. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36566. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36567. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36568. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36569. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36570. <stringProp name="HTTPSampler.embedded_url_re"/>
  36571. </HTTPSamplerProxy>
  36572. </hashTree>
  36573. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  36574. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36575. <collectionProp name="Arguments.arguments"/>
  36576. </elementProp>
  36577. <stringProp name="HTTPSampler.domain"/>
  36578. <stringProp name="HTTPSampler.port"/>
  36579. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36580. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36581. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36582. <stringProp name="HTTPSampler.contentEncoding"/>
  36583. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  36584. <stringProp name="HTTPSampler.method">GET</stringProp>
  36585. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36586. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36587. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36588. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36589. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36590. <stringProp name="HTTPSampler.embedded_url_re"/>
  36591. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  36592. <hashTree>
  36593. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  36594. <collectionProp name="Asserion.test_strings">
  36595. <stringProp name="1723813687">You are signed out.</stringProp>
  36596. </collectionProp>
  36597. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36598. <boolProp name="Assertion.assume_success">false</boolProp>
  36599. <intProp name="Assertion.test_type">2</intProp>
  36600. </ResponseAssertion>
  36601. <hashTree/>
  36602. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  36603. <boolProp name="resetInterpreter">false</boolProp>
  36604. <stringProp name="parameters"/>
  36605. <stringProp name="filename"/>
  36606. <stringProp name="script">
  36607. customerUserList = props.get("customer_emails_list");
  36608. customerUserList.add(vars.get("customer_email"));
  36609. </stringProp>
  36610. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  36611. <hashTree/>
  36612. </hashTree>
  36613. </hashTree>
  36614. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Compare Products" enabled="true">
  36615. <intProp name="ThroughputController.style">1</intProp>
  36616. <boolProp name="ThroughputController.perThread">false</boolProp>
  36617. <intProp name="ThroughputController.maxThroughput">1</intProp>
  36618. <stringProp name="ThroughputController.percentThroughput">${cCompareProductsPercentage}</stringProp>
  36619. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  36620. <hashTree>
  36621. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  36622. <stringProp name="script">
  36623. var tmpLabel = vars.get("testLabel")
  36624. if (tmpLabel) {
  36625. var testLabel = " (" + tmpLabel + ")"
  36626. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  36627. if (sampler.getName().indexOf(testLabel) == -1) {
  36628. sampler.setName(sampler.getName() + testLabel);
  36629. }
  36630. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  36631. sampler.setName("SetUp - " + sampler.getName());
  36632. }
  36633. } else {
  36634. testLabel = ""
  36635. }
  36636. </stringProp>
  36637. <stringProp name="scriptLanguage">javascript</stringProp>
  36638. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  36639. <hashTree/>
  36640. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  36641. <stringProp name="BeanShellSampler.query">
  36642. vars.put("testLabel", "[C] Compare Products");
  36643. </stringProp>
  36644. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36645. </BeanShellSampler>
  36646. <hashTree/>
  36647. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  36648. <collectionProp name="CookieManager.cookies">
  36649. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  36650. <stringProp name="Cookie.value">30</stringProp>
  36651. <stringProp name="Cookie.domain">${host}</stringProp>
  36652. <stringProp name="Cookie.path">/</stringProp>
  36653. <boolProp name="Cookie.secure">false</boolProp>
  36654. <longProp name="Cookie.expires">0</longProp>
  36655. <boolProp name="Cookie.path_specified">true</boolProp>
  36656. <boolProp name="Cookie.domain_specified">true</boolProp>
  36657. </elementProp>
  36658. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  36659. <stringProp name="Cookie.value">${form_key}</stringProp>
  36660. <stringProp name="Cookie.domain">${host}</stringProp>
  36661. <stringProp name="Cookie.path">${base_path}</stringProp>
  36662. <boolProp name="Cookie.secure">false</boolProp>
  36663. <longProp name="Cookie.expires">0</longProp>
  36664. <boolProp name="Cookie.path_specified">true</boolProp>
  36665. <boolProp name="Cookie.domain_specified">true</boolProp>
  36666. </elementProp>
  36667. </collectionProp>
  36668. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  36669. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  36670. <hashTree/>
  36671. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  36672. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  36673. <stringProp name="BeanShellSampler.query">
  36674. import java.util.Random;
  36675. Random random = new Random();
  36676. if (${seedForRandom} &gt; 0) {
  36677. random.setSeed(${seedForRandom} + ${__threadNum});
  36678. }
  36679. vars.putObject("randomIntGenerator", random);
  36680. </stringProp>
  36681. <stringProp name="BeanShellSampler.filename"/>
  36682. <stringProp name="BeanShellSampler.parameters"/>
  36683. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36684. </BeanShellSampler>
  36685. <hashTree/>
  36686. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  36687. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  36688. <stringProp name="BeanShellSampler.query">
  36689. vars.put("totalProductsAdded", "0");
  36690. </stringProp>
  36691. <stringProp name="BeanShellSampler.filename"/>
  36692. <stringProp name="BeanShellSampler.parameters"/>
  36693. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36694. </BeanShellSampler>
  36695. <hashTree/>
  36696. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  36697. <stringProp name="scriptLanguage">javascript</stringProp>
  36698. <stringProp name="parameters"/>
  36699. <stringProp name="filename"/>
  36700. <stringProp name="cacheKey"/>
  36701. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  36702. var categories = props.get("categories");
  36703. number = random.nextInt(categories.length);
  36704. vars.put("category_url_key", categories[number].url_key);
  36705. vars.put("category_name", categories[number].name);
  36706. vars.put("category_id", categories[number].id);
  36707. vars.putObject("category", categories[number]);
  36708. </stringProp>
  36709. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  36710. <hashTree/>
  36711. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  36712. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36713. <collectionProp name="Arguments.arguments"/>
  36714. </elementProp>
  36715. <stringProp name="HTTPSampler.domain"/>
  36716. <stringProp name="HTTPSampler.port"/>
  36717. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36718. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36719. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36720. <stringProp name="HTTPSampler.contentEncoding"/>
  36721. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  36722. <stringProp name="HTTPSampler.method">GET</stringProp>
  36723. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36724. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36725. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36726. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36727. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36728. <stringProp name="HTTPSampler.embedded_url_re"/>
  36729. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/open_category.jmx</stringProp></HTTPSamplerProxy>
  36730. <hashTree>
  36731. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36732. <collectionProp name="Asserion.test_strings">
  36733. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  36734. </collectionProp>
  36735. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36736. <boolProp name="Assertion.assume_success">false</boolProp>
  36737. <intProp name="Assertion.test_type">6</intProp>
  36738. </ResponseAssertion>
  36739. <hashTree/>
  36740. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Random Product Id" enabled="true">
  36741. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  36742. <stringProp name="RegexExtractor.refname">random_product_compare_id</stringProp>
  36743. <stringProp name="RegexExtractor.regex">catalog\\/product_compare\\/add\\/\",\"data\":\{\"product\":\"([0-9]+)\"</stringProp>
  36744. <stringProp name="RegexExtractor.template">$1$</stringProp>
  36745. <stringProp name="RegexExtractor.default"/>
  36746. <stringProp name="RegexExtractor.match_number">1</stringProp>
  36747. </RegexExtractor>
  36748. <hashTree/>
  36749. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Random Product Id" enabled="true">
  36750. <collectionProp name="Asserion.test_strings">
  36751. <stringProp name="1191417111">^[0-9]+$</stringProp>
  36752. </collectionProp>
  36753. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36754. <boolProp name="Assertion.assume_success">false</boolProp>
  36755. <intProp name="Assertion.test_type">1</intProp>
  36756. <stringProp name="Assertion.scope">variable</stringProp>
  36757. <stringProp name="Scope.variable">random_product_compare_id</stringProp>
  36758. </ResponseAssertion>
  36759. <hashTree/>
  36760. </hashTree>
  36761. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Compare" enabled="true">
  36762. <boolProp name="LoopController.continue_forever">true</boolProp>
  36763. <stringProp name="LoopController.loops">2</stringProp>
  36764. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  36765. <hashTree>
  36766. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  36767. <stringProp name="CounterConfig.start">1</stringProp>
  36768. <stringProp name="CounterConfig.end"/>
  36769. <stringProp name="CounterConfig.incr">1</stringProp>
  36770. <stringProp name="CounterConfig.name">_counter</stringProp>
  36771. <stringProp name="CounterConfig.format"/>
  36772. <boolProp name="CounterConfig.per_user">true</boolProp>
  36773. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  36774. </CounterConfig>
  36775. <hashTree/>
  36776. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  36777. <stringProp name="BeanShellSampler.query">
  36778. import java.util.Random;
  36779. Random random = vars.getObject("randomIntGenerator");
  36780. number = random.nextInt(props.get("simple_products_list").size());
  36781. product = props.get("simple_products_list").get(number);
  36782. vars.put("product_url_key", product.get("url_key"));
  36783. vars.put("product_id", product.get("id"));
  36784. vars.put("product_name", product.get("title"));
  36785. vars.put("product_uenc", product.get("uenc"));
  36786. vars.put("product_sku", product.get("sku"));
  36787. </stringProp>
  36788. <stringProp name="BeanShellSampler.filename"/>
  36789. <stringProp name="BeanShellSampler.parameters"/>
  36790. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36791. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  36792. <hashTree/>
  36793. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  36794. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  36795. <stringProp name="BeanShellSampler.query">
  36796. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  36797. productsAdded = productsAdded + 1;
  36798. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  36799. </stringProp>
  36800. <stringProp name="BeanShellSampler.filename"/>
  36801. <stringProp name="BeanShellSampler.parameters"/>
  36802. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36803. </BeanShellSampler>
  36804. <hashTree/>
  36805. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  36806. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36807. <collectionProp name="Arguments.arguments"/>
  36808. </elementProp>
  36809. <stringProp name="HTTPSampler.domain"/>
  36810. <stringProp name="HTTPSampler.port"/>
  36811. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36812. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36813. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36814. <stringProp name="HTTPSampler.contentEncoding"/>
  36815. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  36816. <stringProp name="HTTPSampler.method">GET</stringProp>
  36817. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36818. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36819. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36820. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36821. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36822. <stringProp name="HTTPSampler.embedded_url_re"/>
  36823. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  36824. <hashTree>
  36825. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36826. <collectionProp name="Asserion.test_strings">
  36827. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  36828. </collectionProp>
  36829. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36830. <boolProp name="Assertion.assume_success">false</boolProp>
  36831. <intProp name="Assertion.test_type">2</intProp>
  36832. </ResponseAssertion>
  36833. <hashTree/>
  36834. </hashTree>
  36835. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Comparison Add" enabled="true">
  36836. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36837. <collectionProp name="Arguments.arguments">
  36838. <elementProp name="product" elementType="HTTPArgument">
  36839. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36840. <stringProp name="Argument.value">${product_id}</stringProp>
  36841. <stringProp name="Argument.metadata">=</stringProp>
  36842. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36843. <stringProp name="Argument.name">product</stringProp>
  36844. </elementProp>
  36845. <elementProp name="form_key" elementType="HTTPArgument">
  36846. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36847. <stringProp name="Argument.value">${form_key}</stringProp>
  36848. <stringProp name="Argument.metadata">=</stringProp>
  36849. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36850. <stringProp name="Argument.name">form_key</stringProp>
  36851. </elementProp>
  36852. <elementProp name="uenc" elementType="HTTPArgument">
  36853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36854. <stringProp name="Argument.value">${product_uenc}</stringProp>
  36855. <stringProp name="Argument.metadata">=</stringProp>
  36856. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36857. <stringProp name="Argument.name">uenc</stringProp>
  36858. </elementProp>
  36859. </collectionProp>
  36860. </elementProp>
  36861. <stringProp name="HTTPSampler.domain"/>
  36862. <stringProp name="HTTPSampler.port"/>
  36863. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36864. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36865. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36866. <stringProp name="HTTPSampler.contentEncoding"/>
  36867. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/add/</stringProp>
  36868. <stringProp name="HTTPSampler.method">POST</stringProp>
  36869. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36870. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36871. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36872. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36873. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36874. <stringProp name="HTTPSampler.embedded_url_re"/>
  36875. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  36876. <hashTree/>
  36877. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Compare Product Section" enabled="true">
  36878. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36879. <collectionProp name="Arguments.arguments">
  36880. <elementProp name="sections" elementType="HTTPArgument">
  36881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36882. <stringProp name="Argument.value">compare-products,messages</stringProp>
  36883. <stringProp name="Argument.metadata">=</stringProp>
  36884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36885. <stringProp name="Argument.name">sections</stringProp>
  36886. </elementProp>
  36887. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  36888. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36889. <stringProp name="Argument.value">false</stringProp>
  36890. <stringProp name="Argument.metadata">=</stringProp>
  36891. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36892. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  36893. </elementProp>
  36894. <elementProp name="_" elementType="HTTPArgument">
  36895. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  36896. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  36897. <stringProp name="Argument.metadata">=</stringProp>
  36898. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  36899. <stringProp name="Argument.name">_</stringProp>
  36900. </elementProp>
  36901. </collectionProp>
  36902. </elementProp>
  36903. <stringProp name="HTTPSampler.domain"/>
  36904. <stringProp name="HTTPSampler.port"/>
  36905. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36906. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36907. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36908. <stringProp name="HTTPSampler.contentEncoding"/>
  36909. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  36910. <stringProp name="HTTPSampler.method">GET</stringProp>
  36911. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36912. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36913. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36914. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36915. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36916. <stringProp name="HTTPSampler.embedded_url_re"/>
  36917. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  36918. <hashTree>
  36919. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36920. <collectionProp name="Asserion.test_strings">
  36921. <stringProp name="-350323027">\"compare-products\":{\"count\":${totalProductsAdded}</stringProp>
  36922. </collectionProp>
  36923. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36924. <boolProp name="Assertion.assume_success">false</boolProp>
  36925. <intProp name="Assertion.test_type">2</intProp>
  36926. </ResponseAssertion>
  36927. <hashTree/>
  36928. </hashTree>
  36929. </hashTree>
  36930. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Compare" enabled="true">
  36931. <boolProp name="LoopController.continue_forever">true</boolProp>
  36932. <stringProp name="LoopController.loops">1</stringProp>
  36933. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  36934. <hashTree>
  36935. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  36936. <stringProp name="CounterConfig.start">1</stringProp>
  36937. <stringProp name="CounterConfig.end"/>
  36938. <stringProp name="CounterConfig.incr">1</stringProp>
  36939. <stringProp name="CounterConfig.name">_counter</stringProp>
  36940. <stringProp name="CounterConfig.format"/>
  36941. <boolProp name="CounterConfig.per_user">true</boolProp>
  36942. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  36943. </CounterConfig>
  36944. <hashTree/>
  36945. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  36946. <stringProp name="BeanShellSampler.query">
  36947. import java.util.Random;
  36948. Random random = vars.getObject("randomIntGenerator");
  36949. number = random.nextInt(props.get("configurable_products_list").size());
  36950. product = props.get("configurable_products_list").get(number);
  36951. vars.put("product_url_key", product.get("url_key"));
  36952. vars.put("product_id", product.get("id"));
  36953. vars.put("product_name", product.get("title"));
  36954. vars.put("product_uenc", product.get("uenc"));
  36955. vars.put("product_sku", product.get("sku"));
  36956. </stringProp>
  36957. <stringProp name="BeanShellSampler.filename"/>
  36958. <stringProp name="BeanShellSampler.parameters"/>
  36959. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36960. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  36961. <hashTree/>
  36962. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  36963. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  36964. <stringProp name="BeanShellSampler.query">
  36965. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  36966. productsAdded = productsAdded + 1;
  36967. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  36968. </stringProp>
  36969. <stringProp name="BeanShellSampler.filename"/>
  36970. <stringProp name="BeanShellSampler.parameters"/>
  36971. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  36972. </BeanShellSampler>
  36973. <hashTree/>
  36974. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  36975. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  36976. <collectionProp name="Arguments.arguments"/>
  36977. </elementProp>
  36978. <stringProp name="HTTPSampler.domain"/>
  36979. <stringProp name="HTTPSampler.port"/>
  36980. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  36981. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  36982. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  36983. <stringProp name="HTTPSampler.contentEncoding"/>
  36984. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  36985. <stringProp name="HTTPSampler.method">GET</stringProp>
  36986. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  36987. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  36988. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  36989. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  36990. <boolProp name="HTTPSampler.monitor">false</boolProp>
  36991. <stringProp name="HTTPSampler.embedded_url_re"/>
  36992. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  36993. <hashTree>
  36994. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  36995. <collectionProp name="Asserion.test_strings">
  36996. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  36997. </collectionProp>
  36998. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  36999. <boolProp name="Assertion.assume_success">false</boolProp>
  37000. <intProp name="Assertion.test_type">2</intProp>
  37001. </ResponseAssertion>
  37002. <hashTree/>
  37003. </hashTree>
  37004. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Comparison Add" enabled="true">
  37005. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37006. <collectionProp name="Arguments.arguments">
  37007. <elementProp name="product" elementType="HTTPArgument">
  37008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37009. <stringProp name="Argument.value">${product_id}</stringProp>
  37010. <stringProp name="Argument.metadata">=</stringProp>
  37011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37012. <stringProp name="Argument.name">product</stringProp>
  37013. </elementProp>
  37014. <elementProp name="form_key" elementType="HTTPArgument">
  37015. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37016. <stringProp name="Argument.value">${form_key}</stringProp>
  37017. <stringProp name="Argument.metadata">=</stringProp>
  37018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37019. <stringProp name="Argument.name">form_key</stringProp>
  37020. </elementProp>
  37021. <elementProp name="uenc" elementType="HTTPArgument">
  37022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37023. <stringProp name="Argument.value">${product_uenc}</stringProp>
  37024. <stringProp name="Argument.metadata">=</stringProp>
  37025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37026. <stringProp name="Argument.name">uenc</stringProp>
  37027. </elementProp>
  37028. </collectionProp>
  37029. </elementProp>
  37030. <stringProp name="HTTPSampler.domain"/>
  37031. <stringProp name="HTTPSampler.port"/>
  37032. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37033. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37034. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37035. <stringProp name="HTTPSampler.contentEncoding"/>
  37036. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/add/</stringProp>
  37037. <stringProp name="HTTPSampler.method">POST</stringProp>
  37038. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37039. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37040. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37041. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37042. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37043. <stringProp name="HTTPSampler.embedded_url_re"/>
  37044. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  37045. <hashTree/>
  37046. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Compare Product Section" enabled="true">
  37047. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37048. <collectionProp name="Arguments.arguments">
  37049. <elementProp name="sections" elementType="HTTPArgument">
  37050. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37051. <stringProp name="Argument.value">compare-products,messages</stringProp>
  37052. <stringProp name="Argument.metadata">=</stringProp>
  37053. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37054. <stringProp name="Argument.name">sections</stringProp>
  37055. </elementProp>
  37056. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  37057. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37058. <stringProp name="Argument.value">false</stringProp>
  37059. <stringProp name="Argument.metadata">=</stringProp>
  37060. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37061. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  37062. </elementProp>
  37063. <elementProp name="_" elementType="HTTPArgument">
  37064. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37065. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  37066. <stringProp name="Argument.metadata">=</stringProp>
  37067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37068. <stringProp name="Argument.name">_</stringProp>
  37069. </elementProp>
  37070. </collectionProp>
  37071. </elementProp>
  37072. <stringProp name="HTTPSampler.domain"/>
  37073. <stringProp name="HTTPSampler.port"/>
  37074. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37075. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37076. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37077. <stringProp name="HTTPSampler.contentEncoding"/>
  37078. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  37079. <stringProp name="HTTPSampler.method">GET</stringProp>
  37080. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37081. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37082. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37083. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37084. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37085. <stringProp name="HTTPSampler.embedded_url_re"/>
  37086. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/customer_section_load_product_compare_add.jmx</stringProp></HTTPSamplerProxy>
  37087. <hashTree>
  37088. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37089. <collectionProp name="Asserion.test_strings">
  37090. <stringProp name="-350323027">\"compare-products\":{\"count\":${totalProductsAdded}</stringProp>
  37091. </collectionProp>
  37092. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37093. <boolProp name="Assertion.assume_success">false</boolProp>
  37094. <intProp name="Assertion.test_type">2</intProp>
  37095. </ResponseAssertion>
  37096. <hashTree/>
  37097. </hashTree>
  37098. </hashTree>
  37099. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Compare Products" enabled="true">
  37100. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37101. <collectionProp name="Arguments.arguments"/>
  37102. </elementProp>
  37103. <stringProp name="HTTPSampler.domain"/>
  37104. <stringProp name="HTTPSampler.port"/>
  37105. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37106. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37107. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37108. <stringProp name="HTTPSampler.contentEncoding"/>
  37109. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/index/</stringProp>
  37110. <stringProp name="HTTPSampler.method">GET</stringProp>
  37111. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37112. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37113. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37114. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37115. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37116. <stringProp name="HTTPSampler.embedded_url_re"/>
  37117. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/compare_products.jmx</stringProp></HTTPSamplerProxy>
  37118. <hashTree/>
  37119. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Product Compare - Pause" enabled="true">
  37120. <intProp name="ActionProcessor.action">1</intProp>
  37121. <intProp name="ActionProcessor.target">0</intProp>
  37122. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${productCompareDelay}*1000))}</stringProp>
  37123. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/compare_products_pause.jmx</stringProp></TestAction>
  37124. <hashTree/>
  37125. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Compare Products Clear" enabled="true">
  37126. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37127. <collectionProp name="Arguments.arguments">
  37128. <elementProp name="form_key" elementType="HTTPArgument">
  37129. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37130. <stringProp name="Argument.value">${form_key}</stringProp>
  37131. <stringProp name="Argument.metadata">=</stringProp>
  37132. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37133. <stringProp name="Argument.name">form_key</stringProp>
  37134. </elementProp>
  37135. </collectionProp>
  37136. </elementProp>
  37137. <stringProp name="HTTPSampler.domain"/>
  37138. <stringProp name="HTTPSampler.port"/>
  37139. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37140. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37141. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37142. <stringProp name="HTTPSampler.contentEncoding"/>
  37143. <stringProp name="HTTPSampler.path">${base_path}catalog/product_compare/clear</stringProp>
  37144. <stringProp name="HTTPSampler.method">POST</stringProp>
  37145. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37146. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37147. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37148. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37149. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37150. <stringProp name="HTTPSampler.embedded_url_re"/>
  37151. <stringProp name="TestPlan.comments">tool/fragments/ce/product_compare/compare_products_clear.jmx</stringProp></HTTPSamplerProxy>
  37152. <hashTree/>
  37153. </hashTree>
  37154. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Checkout By Guest" enabled="true">
  37155. <intProp name="ThroughputController.style">1</intProp>
  37156. <boolProp name="ThroughputController.perThread">false</boolProp>
  37157. <intProp name="ThroughputController.maxThroughput">1</intProp>
  37158. <stringProp name="ThroughputController.percentThroughput">${cCheckoutByGuestPercentage}</stringProp>
  37159. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  37160. <hashTree>
  37161. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  37162. <stringProp name="script">
  37163. var tmpLabel = vars.get("testLabel")
  37164. if (tmpLabel) {
  37165. var testLabel = " (" + tmpLabel + ")"
  37166. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  37167. if (sampler.getName().indexOf(testLabel) == -1) {
  37168. sampler.setName(sampler.getName() + testLabel);
  37169. }
  37170. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  37171. sampler.setName("SetUp - " + sampler.getName());
  37172. }
  37173. } else {
  37174. testLabel = ""
  37175. }
  37176. </stringProp>
  37177. <stringProp name="scriptLanguage">javascript</stringProp>
  37178. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  37179. <hashTree/>
  37180. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  37181. <stringProp name="BeanShellSampler.query">
  37182. vars.put("testLabel", "[C] Checkout By Guest");
  37183. </stringProp>
  37184. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  37185. </BeanShellSampler>
  37186. <hashTree/>
  37187. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  37188. <collectionProp name="CookieManager.cookies">
  37189. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  37190. <stringProp name="Cookie.value">30</stringProp>
  37191. <stringProp name="Cookie.domain">${host}</stringProp>
  37192. <stringProp name="Cookie.path">/</stringProp>
  37193. <boolProp name="Cookie.secure">false</boolProp>
  37194. <longProp name="Cookie.expires">0</longProp>
  37195. <boolProp name="Cookie.path_specified">true</boolProp>
  37196. <boolProp name="Cookie.domain_specified">true</boolProp>
  37197. </elementProp>
  37198. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  37199. <stringProp name="Cookie.value">${form_key}</stringProp>
  37200. <stringProp name="Cookie.domain">${host}</stringProp>
  37201. <stringProp name="Cookie.path">${base_path}</stringProp>
  37202. <boolProp name="Cookie.secure">false</boolProp>
  37203. <longProp name="Cookie.expires">0</longProp>
  37204. <boolProp name="Cookie.path_specified">true</boolProp>
  37205. <boolProp name="Cookie.domain_specified">true</boolProp>
  37206. </elementProp>
  37207. </collectionProp>
  37208. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  37209. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  37210. <hashTree/>
  37211. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  37212. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  37213. <stringProp name="BeanShellSampler.query">
  37214. import java.util.Random;
  37215. Random random = new Random();
  37216. if (${seedForRandom} &gt; 0) {
  37217. random.setSeed(${seedForRandom} + ${__threadNum});
  37218. }
  37219. vars.putObject("randomIntGenerator", random);
  37220. </stringProp>
  37221. <stringProp name="BeanShellSampler.filename"/>
  37222. <stringProp name="BeanShellSampler.parameters"/>
  37223. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  37224. </BeanShellSampler>
  37225. <hashTree/>
  37226. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  37227. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  37228. <stringProp name="BeanShellSampler.query">
  37229. vars.put("totalProductsAdded", "0");
  37230. </stringProp>
  37231. <stringProp name="BeanShellSampler.filename"/>
  37232. <stringProp name="BeanShellSampler.parameters"/>
  37233. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  37234. </BeanShellSampler>
  37235. <hashTree/>
  37236. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  37237. <stringProp name="scriptLanguage">javascript</stringProp>
  37238. <stringProp name="parameters"/>
  37239. <stringProp name="filename"/>
  37240. <stringProp name="cacheKey"/>
  37241. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  37242. var categories = props.get("categories");
  37243. number = random.nextInt(categories.length);
  37244. vars.put("category_url_key", categories[number].url_key);
  37245. vars.put("category_name", categories[number].name);
  37246. vars.put("category_id", categories[number].id);
  37247. vars.putObject("category", categories[number]);
  37248. </stringProp>
  37249. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  37250. <hashTree/>
  37251. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  37252. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37253. <collectionProp name="Arguments.arguments"/>
  37254. </elementProp>
  37255. <stringProp name="HTTPSampler.domain"/>
  37256. <stringProp name="HTTPSampler.port"/>
  37257. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37258. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37259. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37260. <stringProp name="HTTPSampler.contentEncoding"/>
  37261. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  37262. <stringProp name="HTTPSampler.method">GET</stringProp>
  37263. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37264. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37265. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37266. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37267. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37268. <stringProp name="HTTPSampler.embedded_url_re"/>
  37269. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  37270. <hashTree>
  37271. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37272. <collectionProp name="Asserion.test_strings">
  37273. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  37274. </collectionProp>
  37275. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37276. <boolProp name="Assertion.assume_success">false</boolProp>
  37277. <intProp name="Assertion.test_type">2</intProp>
  37278. </ResponseAssertion>
  37279. <hashTree/>
  37280. </hashTree>
  37281. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  37282. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37283. <collectionProp name="Arguments.arguments"/>
  37284. </elementProp>
  37285. <stringProp name="HTTPSampler.domain"/>
  37286. <stringProp name="HTTPSampler.port"/>
  37287. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37288. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37289. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37290. <stringProp name="HTTPSampler.contentEncoding"/>
  37291. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  37292. <stringProp name="HTTPSampler.method">GET</stringProp>
  37293. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37294. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37295. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37296. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37297. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37298. <stringProp name="HTTPSampler.embedded_url_re"/>
  37299. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  37300. <hashTree>
  37301. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37302. <collectionProp name="Asserion.test_strings">
  37303. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  37304. </collectionProp>
  37305. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37306. <boolProp name="Assertion.assume_success">false</boolProp>
  37307. <intProp name="Assertion.test_type">6</intProp>
  37308. </ResponseAssertion>
  37309. <hashTree/>
  37310. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  37311. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  37312. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  37313. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  37314. <stringProp name="RegexExtractor.template">$1$</stringProp>
  37315. <stringProp name="RegexExtractor.default"/>
  37316. <stringProp name="RegexExtractor.match_number">1</stringProp>
  37317. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  37318. </RegexExtractor>
  37319. <hashTree/>
  37320. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  37321. <collectionProp name="Asserion.test_strings">
  37322. <stringProp name="1191417111">^[0-9]+$</stringProp>
  37323. </collectionProp>
  37324. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37325. <boolProp name="Assertion.assume_success">false</boolProp>
  37326. <intProp name="Assertion.test_type">1</intProp>
  37327. <stringProp name="Assertion.scope">variable</stringProp>
  37328. <stringProp name="Scope.variable">category_id</stringProp>
  37329. </ResponseAssertion>
  37330. <hashTree/>
  37331. </hashTree>
  37332. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
  37333. <boolProp name="LoopController.continue_forever">true</boolProp>
  37334. <stringProp name="LoopController.loops">2</stringProp>
  37335. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  37336. <hashTree>
  37337. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  37338. <stringProp name="CounterConfig.start">1</stringProp>
  37339. <stringProp name="CounterConfig.end"/>
  37340. <stringProp name="CounterConfig.incr">1</stringProp>
  37341. <stringProp name="CounterConfig.name">_counter</stringProp>
  37342. <stringProp name="CounterConfig.format"/>
  37343. <boolProp name="CounterConfig.per_user">true</boolProp>
  37344. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  37345. </CounterConfig>
  37346. <hashTree/>
  37347. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  37348. <stringProp name="BeanShellSampler.query">
  37349. import java.util.Random;
  37350. Random random = vars.getObject("randomIntGenerator");
  37351. number = random.nextInt(props.get("simple_products_list").size());
  37352. product = props.get("simple_products_list").get(number);
  37353. vars.put("product_url_key", product.get("url_key"));
  37354. vars.put("product_id", product.get("id"));
  37355. vars.put("product_name", product.get("title"));
  37356. vars.put("product_uenc", product.get("uenc"));
  37357. vars.put("product_sku", product.get("sku"));
  37358. </stringProp>
  37359. <stringProp name="BeanShellSampler.filename"/>
  37360. <stringProp name="BeanShellSampler.parameters"/>
  37361. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  37362. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  37363. <hashTree/>
  37364. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  37365. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  37366. <stringProp name="BeanShellSampler.query">
  37367. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  37368. productsAdded = productsAdded + 1;
  37369. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  37370. </stringProp>
  37371. <stringProp name="BeanShellSampler.filename"/>
  37372. <stringProp name="BeanShellSampler.parameters"/>
  37373. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  37374. </BeanShellSampler>
  37375. <hashTree/>
  37376. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  37377. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37378. <collectionProp name="Arguments.arguments"/>
  37379. </elementProp>
  37380. <stringProp name="HTTPSampler.domain"/>
  37381. <stringProp name="HTTPSampler.port"/>
  37382. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37383. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37384. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37385. <stringProp name="HTTPSampler.contentEncoding"/>
  37386. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  37387. <stringProp name="HTTPSampler.method">GET</stringProp>
  37388. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37389. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37390. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37391. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37392. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37393. <stringProp name="HTTPSampler.embedded_url_re"/>
  37394. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  37395. <hashTree>
  37396. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37397. <collectionProp name="Asserion.test_strings">
  37398. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  37399. </collectionProp>
  37400. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37401. <boolProp name="Assertion.assume_success">false</boolProp>
  37402. <intProp name="Assertion.test_type">2</intProp>
  37403. </ResponseAssertion>
  37404. <hashTree/>
  37405. </hashTree>
  37406. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  37407. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37408. <collectionProp name="Arguments.arguments">
  37409. <elementProp name="product" elementType="HTTPArgument">
  37410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37411. <stringProp name="Argument.value">${product_id}</stringProp>
  37412. <stringProp name="Argument.metadata">=</stringProp>
  37413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37414. <stringProp name="Argument.name">product</stringProp>
  37415. </elementProp>
  37416. <elementProp name="related_product" elementType="HTTPArgument">
  37417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37418. <stringProp name="Argument.value"/>
  37419. <stringProp name="Argument.metadata">=</stringProp>
  37420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37421. <stringProp name="Argument.name">related_product</stringProp>
  37422. </elementProp>
  37423. <elementProp name="qty" elementType="HTTPArgument">
  37424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37425. <stringProp name="Argument.value">1</stringProp>
  37426. <stringProp name="Argument.metadata">=</stringProp>
  37427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37428. <stringProp name="Argument.name">qty</stringProp>
  37429. </elementProp>
  37430. <elementProp name="form_key" elementType="HTTPArgument">
  37431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37432. <stringProp name="Argument.value">${form_key}</stringProp>
  37433. <stringProp name="Argument.metadata">=</stringProp>
  37434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37435. <stringProp name="Argument.name">form_key</stringProp>
  37436. </elementProp>
  37437. </collectionProp>
  37438. </elementProp>
  37439. <stringProp name="HTTPSampler.domain"/>
  37440. <stringProp name="HTTPSampler.port"/>
  37441. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37442. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37443. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37444. <stringProp name="HTTPSampler.contentEncoding"/>
  37445. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  37446. <stringProp name="HTTPSampler.method">POST</stringProp>
  37447. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37448. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37449. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37450. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37451. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37452. <stringProp name="HTTPSampler.embedded_url_re"/>
  37453. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  37454. <hashTree>
  37455. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  37456. <collectionProp name="HeaderManager.headers">
  37457. <elementProp name="" elementType="Header">
  37458. <stringProp name="Header.name">X-Requested-With</stringProp>
  37459. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  37460. </elementProp>
  37461. </collectionProp>
  37462. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  37463. <hashTree/>
  37464. </hashTree>
  37465. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  37466. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37467. <collectionProp name="Arguments.arguments">
  37468. <elementProp name="sections" elementType="HTTPArgument">
  37469. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37470. <stringProp name="Argument.value">cart,messages</stringProp>
  37471. <stringProp name="Argument.metadata">=</stringProp>
  37472. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37473. <stringProp name="Argument.name">sections</stringProp>
  37474. </elementProp>
  37475. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  37476. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37477. <stringProp name="Argument.value">true</stringProp>
  37478. <stringProp name="Argument.metadata">=</stringProp>
  37479. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37480. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  37481. </elementProp>
  37482. <elementProp name="_" elementType="HTTPArgument">
  37483. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37484. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  37485. <stringProp name="Argument.metadata">=</stringProp>
  37486. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37487. <stringProp name="Argument.name">_</stringProp>
  37488. </elementProp>
  37489. </collectionProp>
  37490. </elementProp>
  37491. <stringProp name="HTTPSampler.domain"/>
  37492. <stringProp name="HTTPSampler.port"/>
  37493. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37494. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37495. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37496. <stringProp name="HTTPSampler.contentEncoding"/>
  37497. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  37498. <stringProp name="HTTPSampler.method">GET</stringProp>
  37499. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37500. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37501. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37502. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37503. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37504. <stringProp name="HTTPSampler.embedded_url_re"/>
  37505. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  37506. <hashTree>
  37507. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37508. <collectionProp name="Asserion.test_strings">
  37509. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  37510. </collectionProp>
  37511. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37512. <boolProp name="Assertion.assume_success">false</boolProp>
  37513. <intProp name="Assertion.test_type">2</intProp>
  37514. </ResponseAssertion>
  37515. <hashTree/>
  37516. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37517. <collectionProp name="Asserion.test_strings">
  37518. <stringProp name="2057973164">This product is out of stock.</stringProp>
  37519. </collectionProp>
  37520. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37521. <boolProp name="Assertion.assume_success">false</boolProp>
  37522. <intProp name="Assertion.test_type">6</intProp>
  37523. </ResponseAssertion>
  37524. <hashTree/>
  37525. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37526. <collectionProp name="Asserion.test_strings">
  37527. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  37528. </collectionProp>
  37529. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37530. <boolProp name="Assertion.assume_success">false</boolProp>
  37531. <intProp name="Assertion.test_type">2</intProp>
  37532. </ResponseAssertion>
  37533. <hashTree/>
  37534. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  37535. <collectionProp name="HeaderManager.headers">
  37536. <elementProp name="" elementType="Header">
  37537. <stringProp name="Header.name">X-Requested-With</stringProp>
  37538. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  37539. </elementProp>
  37540. </collectionProp>
  37541. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  37542. <hashTree/>
  37543. </hashTree>
  37544. </hashTree>
  37545. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
  37546. <boolProp name="LoopController.continue_forever">true</boolProp>
  37547. <stringProp name="LoopController.loops">1</stringProp>
  37548. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  37549. <hashTree>
  37550. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  37551. <stringProp name="CounterConfig.start">1</stringProp>
  37552. <stringProp name="CounterConfig.end"/>
  37553. <stringProp name="CounterConfig.incr">1</stringProp>
  37554. <stringProp name="CounterConfig.name">_counter</stringProp>
  37555. <stringProp name="CounterConfig.format"/>
  37556. <boolProp name="CounterConfig.per_user">true</boolProp>
  37557. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  37558. </CounterConfig>
  37559. <hashTree/>
  37560. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  37561. <stringProp name="BeanShellSampler.query">
  37562. import java.util.Random;
  37563. Random random = vars.getObject("randomIntGenerator");
  37564. number = random.nextInt(props.get("configurable_products_list").size());
  37565. product = props.get("configurable_products_list").get(number);
  37566. vars.put("product_url_key", product.get("url_key"));
  37567. vars.put("product_id", product.get("id"));
  37568. vars.put("product_name", product.get("title"));
  37569. vars.put("product_uenc", product.get("uenc"));
  37570. vars.put("product_sku", product.get("sku"));
  37571. </stringProp>
  37572. <stringProp name="BeanShellSampler.filename"/>
  37573. <stringProp name="BeanShellSampler.parameters"/>
  37574. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  37575. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  37576. <hashTree/>
  37577. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  37578. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  37579. <stringProp name="BeanShellSampler.query">
  37580. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  37581. productsAdded = productsAdded + 1;
  37582. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  37583. </stringProp>
  37584. <stringProp name="BeanShellSampler.filename"/>
  37585. <stringProp name="BeanShellSampler.parameters"/>
  37586. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  37587. </BeanShellSampler>
  37588. <hashTree/>
  37589. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  37590. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37591. <collectionProp name="Arguments.arguments"/>
  37592. </elementProp>
  37593. <stringProp name="HTTPSampler.domain"/>
  37594. <stringProp name="HTTPSampler.port"/>
  37595. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37596. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37597. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37598. <stringProp name="HTTPSampler.contentEncoding"/>
  37599. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  37600. <stringProp name="HTTPSampler.method">GET</stringProp>
  37601. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37602. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37603. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37604. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37605. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37606. <stringProp name="HTTPSampler.embedded_url_re"/>
  37607. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  37608. <hashTree>
  37609. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37610. <collectionProp name="Asserion.test_strings">
  37611. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  37612. </collectionProp>
  37613. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37614. <boolProp name="Assertion.assume_success">false</boolProp>
  37615. <intProp name="Assertion.test_type">2</intProp>
  37616. </ResponseAssertion>
  37617. <hashTree/>
  37618. </hashTree>
  37619. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  37620. <boolProp name="LoopController.continue_forever">true</boolProp>
  37621. <stringProp name="LoopController.loops">1</stringProp>
  37622. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  37623. <hashTree>
  37624. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  37625. <collectionProp name="HeaderManager.headers">
  37626. <elementProp name="" elementType="Header">
  37627. <stringProp name="Header.name">Content-Type</stringProp>
  37628. <stringProp name="Header.value">application/json</stringProp>
  37629. </elementProp>
  37630. <elementProp name="" elementType="Header">
  37631. <stringProp name="Header.name">Accept</stringProp>
  37632. <stringProp name="Header.value">*/*</stringProp>
  37633. </elementProp>
  37634. </collectionProp>
  37635. </HeaderManager>
  37636. <hashTree/>
  37637. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  37638. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  37639. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  37640. <collectionProp name="Arguments.arguments">
  37641. <elementProp name="" elementType="HTTPArgument">
  37642. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  37643. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  37644. <stringProp name="Argument.metadata">=</stringProp>
  37645. </elementProp>
  37646. </collectionProp>
  37647. </elementProp>
  37648. <stringProp name="HTTPSampler.domain"/>
  37649. <stringProp name="HTTPSampler.port"/>
  37650. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37651. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37652. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37653. <stringProp name="HTTPSampler.contentEncoding"/>
  37654. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  37655. <stringProp name="HTTPSampler.method">POST</stringProp>
  37656. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37657. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37658. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37659. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37660. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37661. <stringProp name="HTTPSampler.embedded_url_re"/>
  37662. </HTTPSamplerProxy>
  37663. <hashTree>
  37664. <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">
  37665. <stringProp name="VAR">admin_token</stringProp>
  37666. <stringProp name="JSONPATH">$</stringProp>
  37667. <stringProp name="DEFAULT"/>
  37668. <stringProp name="VARIABLE"/>
  37669. <stringProp name="SUBJECT">BODY</stringProp>
  37670. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  37671. <hashTree/>
  37672. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  37673. <collectionProp name="Asserion.test_strings">
  37674. <stringProp name="484395188">^.{10,}$</stringProp>
  37675. </collectionProp>
  37676. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37677. <boolProp name="Assertion.assume_success">false</boolProp>
  37678. <intProp name="Assertion.test_type">1</intProp>
  37679. <stringProp name="Assertion.scope">variable</stringProp>
  37680. <stringProp name="Scope.variable">admin_token</stringProp>
  37681. </ResponseAssertion>
  37682. <hashTree/>
  37683. </hashTree>
  37684. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  37685. <collectionProp name="HeaderManager.headers">
  37686. <elementProp name="" elementType="Header">
  37687. <stringProp name="Header.name">Authorization</stringProp>
  37688. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  37689. </elementProp>
  37690. </collectionProp>
  37691. </HeaderManager>
  37692. <hashTree/>
  37693. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  37694. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37695. <collectionProp name="Arguments.arguments"/>
  37696. </elementProp>
  37697. <stringProp name="HTTPSampler.domain"/>
  37698. <stringProp name="HTTPSampler.port"/>
  37699. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37700. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37701. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37702. <stringProp name="HTTPSampler.contentEncoding"/>
  37703. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  37704. <stringProp name="HTTPSampler.method">GET</stringProp>
  37705. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37706. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37707. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37708. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37709. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37710. <stringProp name="HTTPSampler.embedded_url_re"/>
  37711. </HTTPSamplerProxy>
  37712. <hashTree>
  37713. <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">
  37714. <stringProp name="VAR">attribute_ids</stringProp>
  37715. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  37716. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  37717. <stringProp name="VARIABLE"/>
  37718. <stringProp name="SUBJECT">BODY</stringProp>
  37719. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  37720. <hashTree/>
  37721. <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">
  37722. <stringProp name="VAR">option_values</stringProp>
  37723. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  37724. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  37725. <stringProp name="VARIABLE"/>
  37726. <stringProp name="SUBJECT">BODY</stringProp>
  37727. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  37728. <hashTree/>
  37729. </hashTree>
  37730. </hashTree>
  37731. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  37732. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37733. <collectionProp name="Arguments.arguments">
  37734. <elementProp name="product" elementType="HTTPArgument">
  37735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37736. <stringProp name="Argument.value">${product_id}</stringProp>
  37737. <stringProp name="Argument.metadata">=</stringProp>
  37738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37739. <stringProp name="Argument.name">product</stringProp>
  37740. </elementProp>
  37741. <elementProp name="related_product" elementType="HTTPArgument">
  37742. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37743. <stringProp name="Argument.value"/>
  37744. <stringProp name="Argument.metadata">=</stringProp>
  37745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37746. <stringProp name="Argument.name">related_product</stringProp>
  37747. </elementProp>
  37748. <elementProp name="qty" elementType="HTTPArgument">
  37749. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37750. <stringProp name="Argument.value">1</stringProp>
  37751. <stringProp name="Argument.metadata">=</stringProp>
  37752. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37753. <stringProp name="Argument.name">qty</stringProp>
  37754. </elementProp>
  37755. <elementProp name="form_key" elementType="HTTPArgument">
  37756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37757. <stringProp name="Argument.value">${form_key}</stringProp>
  37758. <stringProp name="Argument.metadata">=</stringProp>
  37759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37760. <stringProp name="Argument.name">form_key</stringProp>
  37761. </elementProp>
  37762. </collectionProp>
  37763. </elementProp>
  37764. <stringProp name="HTTPSampler.domain"/>
  37765. <stringProp name="HTTPSampler.port"/>
  37766. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37767. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37768. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37769. <stringProp name="HTTPSampler.contentEncoding"/>
  37770. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  37771. <stringProp name="HTTPSampler.method">POST</stringProp>
  37772. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37773. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37774. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37775. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37776. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37777. <stringProp name="HTTPSampler.embedded_url_re"/>
  37778. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  37779. <hashTree>
  37780. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  37781. <boolProp name="resetInterpreter">false</boolProp>
  37782. <stringProp name="parameters"/>
  37783. <stringProp name="filename"/>
  37784. <stringProp name="script">
  37785. try {
  37786. attribute_ids = vars.get("attribute_ids");
  37787. option_values = vars.get("option_values");
  37788. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  37789. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  37790. attribute_ids_array = attribute_ids.split(",");
  37791. option_values_array = option_values.split(",");
  37792. args = ctx.getCurrentSampler().getArguments();
  37793. it = args.iterator();
  37794. while (it.hasNext()) {
  37795. argument = it.next();
  37796. if (argument.getStringValue().contains("${")) {
  37797. args.removeArgument(argument.getName());
  37798. }
  37799. }
  37800. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  37801. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  37802. }
  37803. } catch (Exception e) {
  37804. log.error("eror&#x2026;", e);
  37805. }
  37806. </stringProp>
  37807. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  37808. <hashTree/>
  37809. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  37810. <collectionProp name="HeaderManager.headers">
  37811. <elementProp name="" elementType="Header">
  37812. <stringProp name="Header.name">X-Requested-With</stringProp>
  37813. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  37814. </elementProp>
  37815. </collectionProp>
  37816. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  37817. <hashTree/>
  37818. </hashTree>
  37819. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  37820. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37821. <collectionProp name="Arguments.arguments">
  37822. <elementProp name="sections" elementType="HTTPArgument">
  37823. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37824. <stringProp name="Argument.value">cart,messages</stringProp>
  37825. <stringProp name="Argument.metadata">=</stringProp>
  37826. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37827. <stringProp name="Argument.name">sections</stringProp>
  37828. </elementProp>
  37829. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  37830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37831. <stringProp name="Argument.value">true</stringProp>
  37832. <stringProp name="Argument.metadata">=</stringProp>
  37833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37834. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  37835. </elementProp>
  37836. <elementProp name="_" elementType="HTTPArgument">
  37837. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  37838. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  37839. <stringProp name="Argument.metadata">=</stringProp>
  37840. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  37841. <stringProp name="Argument.name">_</stringProp>
  37842. </elementProp>
  37843. </collectionProp>
  37844. </elementProp>
  37845. <stringProp name="HTTPSampler.domain"/>
  37846. <stringProp name="HTTPSampler.port"/>
  37847. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37848. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37849. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37850. <stringProp name="HTTPSampler.contentEncoding"/>
  37851. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  37852. <stringProp name="HTTPSampler.method">GET</stringProp>
  37853. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37854. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37855. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37856. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37857. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37858. <stringProp name="HTTPSampler.embedded_url_re"/>
  37859. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  37860. <hashTree>
  37861. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37862. <collectionProp name="Asserion.test_strings">
  37863. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  37864. </collectionProp>
  37865. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37866. <boolProp name="Assertion.assume_success">false</boolProp>
  37867. <intProp name="Assertion.test_type">2</intProp>
  37868. </ResponseAssertion>
  37869. <hashTree/>
  37870. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37871. <collectionProp name="Asserion.test_strings">
  37872. <stringProp name="2057973164">This product is out of stock.</stringProp>
  37873. </collectionProp>
  37874. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37875. <boolProp name="Assertion.assume_success">false</boolProp>
  37876. <intProp name="Assertion.test_type">6</intProp>
  37877. </ResponseAssertion>
  37878. <hashTree/>
  37879. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37880. <collectionProp name="Asserion.test_strings">
  37881. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  37882. </collectionProp>
  37883. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37884. <boolProp name="Assertion.assume_success">false</boolProp>
  37885. <intProp name="Assertion.test_type">2</intProp>
  37886. </ResponseAssertion>
  37887. <hashTree/>
  37888. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  37889. <collectionProp name="HeaderManager.headers">
  37890. <elementProp name="" elementType="Header">
  37891. <stringProp name="Header.name">X-Requested-With</stringProp>
  37892. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  37893. </elementProp>
  37894. </collectionProp>
  37895. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  37896. <hashTree/>
  37897. </hashTree>
  37898. </hashTree>
  37899. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Checkout" enabled="true">
  37900. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  37901. </GenericController>
  37902. <hashTree>
  37903. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  37904. <stringProp name="scriptLanguage">javascript</stringProp>
  37905. <stringProp name="parameters"/>
  37906. <stringProp name="filename"/>
  37907. <stringProp name="cacheKey"/>
  37908. <stringProp name="script">
  37909. vars.put("alabama_region_id", props.get("alabama_region_id"));
  37910. vars.put("california_region_id", props.get("california_region_id"));
  37911. </stringProp>
  37912. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  37913. <hashTree/>
  37914. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout start" enabled="true">
  37915. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  37916. <collectionProp name="Arguments.arguments"/>
  37917. </elementProp>
  37918. <stringProp name="HTTPSampler.domain"/>
  37919. <stringProp name="HTTPSampler.port"/>
  37920. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37921. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37922. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37923. <stringProp name="HTTPSampler.contentEncoding"/>
  37924. <stringProp name="HTTPSampler.path">${base_path}checkout/</stringProp>
  37925. <stringProp name="HTTPSampler.method">GET</stringProp>
  37926. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37927. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37928. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37929. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37930. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37931. <stringProp name="HTTPSampler.embedded_url_re"/>
  37932. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_start.jmx</stringProp></HTTPSamplerProxy>
  37933. <hashTree>
  37934. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37935. <collectionProp name="Asserion.test_strings">
  37936. <stringProp name="-1403911775">&lt;title&gt;Checkout&lt;/title&gt;</stringProp>
  37937. </collectionProp>
  37938. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37939. <boolProp name="Assertion.assume_success">false</boolProp>
  37940. <intProp name="Assertion.test_type">2</intProp>
  37941. </ResponseAssertion>
  37942. <hashTree/>
  37943. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  37944. <collectionProp name="Asserion.test_strings">
  37945. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  37946. </collectionProp>
  37947. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37948. <boolProp name="Assertion.assume_success">false</boolProp>
  37949. <intProp name="Assertion.test_type">6</intProp>
  37950. </ResponseAssertion>
  37951. <hashTree/>
  37952. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Cart Id" enabled="true">
  37953. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  37954. <stringProp name="RegexExtractor.refname">cart_id</stringProp>
  37955. <stringProp name="RegexExtractor.regex">"quoteData":{"entity_id":"([^'"]+)",</stringProp>
  37956. <stringProp name="RegexExtractor.template">$1$</stringProp>
  37957. <stringProp name="RegexExtractor.default"/>
  37958. <stringProp name="RegexExtractor.match_number">1</stringProp>
  37959. </RegexExtractor>
  37960. <hashTree/>
  37961. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Id extracted" enabled="true">
  37962. <collectionProp name="Asserion.test_strings">
  37963. <stringProp name="2845929">^.+$</stringProp>
  37964. </collectionProp>
  37965. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  37966. <boolProp name="Assertion.assume_success">false</boolProp>
  37967. <intProp name="Assertion.test_type">1</intProp>
  37968. <stringProp name="Assertion.scope">variable</stringProp>
  37969. <stringProp name="Scope.variable">cart_id</stringProp>
  37970. </ResponseAssertion>
  37971. <hashTree/>
  37972. </hashTree>
  37973. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Email Available" enabled="true">
  37974. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  37975. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  37976. <collectionProp name="Arguments.arguments">
  37977. <elementProp name="" elementType="HTTPArgument">
  37978. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  37979. <stringProp name="Argument.value">{"customerEmail":"test@example.com"}</stringProp>
  37980. <stringProp name="Argument.metadata">=</stringProp>
  37981. </elementProp>
  37982. </collectionProp>
  37983. </elementProp>
  37984. <stringProp name="HTTPSampler.domain"/>
  37985. <stringProp name="HTTPSampler.port"/>
  37986. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  37987. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  37988. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  37989. <stringProp name="HTTPSampler.contentEncoding"/>
  37990. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/isEmailAvailable</stringProp>
  37991. <stringProp name="HTTPSampler.method">POST</stringProp>
  37992. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  37993. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  37994. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  37995. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  37996. <boolProp name="HTTPSampler.monitor">false</boolProp>
  37997. <stringProp name="HTTPSampler.embedded_url_re"/>
  37998. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_email_available.jmx</stringProp></HTTPSamplerProxy>
  37999. <hashTree>
  38000. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38001. <collectionProp name="HeaderManager.headers">
  38002. <elementProp name="" elementType="Header">
  38003. <stringProp name="Header.name">Referer</stringProp>
  38004. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  38005. </elementProp>
  38006. <elementProp name="Content-Type" elementType="Header">
  38007. <stringProp name="Header.name">Content-Type</stringProp>
  38008. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  38009. </elementProp>
  38010. <elementProp name="X-Requested-With" elementType="Header">
  38011. <stringProp name="Header.name">X-Requested-With</stringProp>
  38012. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  38013. </elementProp>
  38014. <elementProp name="Accept" elementType="Header">
  38015. <stringProp name="Header.name">Accept</stringProp>
  38016. <stringProp name="Header.value">application/json</stringProp>
  38017. </elementProp>
  38018. </collectionProp>
  38019. </HeaderManager>
  38020. <hashTree/>
  38021. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38022. <collectionProp name="Asserion.test_strings">
  38023. <stringProp name="3569038">true</stringProp>
  38024. </collectionProp>
  38025. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38026. <boolProp name="Assertion.assume_success">false</boolProp>
  38027. <intProp name="Assertion.test_type">8</intProp>
  38028. </ResponseAssertion>
  38029. <hashTree/>
  38030. </hashTree>
  38031. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  38032. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  38033. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  38034. <collectionProp name="Arguments.arguments">
  38035. <elementProp name="" elementType="HTTPArgument">
  38036. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  38037. <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
  38038. <stringProp name="Argument.metadata">=</stringProp>
  38039. </elementProp>
  38040. </collectionProp>
  38041. </elementProp>
  38042. <stringProp name="HTTPSampler.domain"/>
  38043. <stringProp name="HTTPSampler.port"/>
  38044. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38045. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38046. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38047. <stringProp name="HTTPSampler.contentEncoding"/>
  38048. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</stringProp>
  38049. <stringProp name="HTTPSampler.method">POST</stringProp>
  38050. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38051. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38052. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38053. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38054. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38055. <stringProp name="HTTPSampler.embedded_url_re"/>
  38056. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp></HTTPSamplerProxy>
  38057. <hashTree>
  38058. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38059. <collectionProp name="HeaderManager.headers">
  38060. <elementProp name="" elementType="Header">
  38061. <stringProp name="Header.name">Referer</stringProp>
  38062. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  38063. </elementProp>
  38064. <elementProp name="Content-Type" elementType="Header">
  38065. <stringProp name="Header.name">Content-Type</stringProp>
  38066. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  38067. </elementProp>
  38068. <elementProp name="X-Requested-With" elementType="Header">
  38069. <stringProp name="Header.name">X-Requested-With</stringProp>
  38070. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  38071. </elementProp>
  38072. <elementProp name="Accept" elementType="Header">
  38073. <stringProp name="Header.name">Accept</stringProp>
  38074. <stringProp name="Header.value">application/json</stringProp>
  38075. </elementProp>
  38076. </collectionProp>
  38077. </HeaderManager>
  38078. <hashTree/>
  38079. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  38080. <collectionProp name="Asserion.test_strings">
  38081. <stringProp name="-1224567411">"available":true</stringProp>
  38082. </collectionProp>
  38083. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38084. <boolProp name="Assertion.assume_success">false</boolProp>
  38085. <intProp name="Assertion.test_type">2</intProp>
  38086. </ResponseAssertion>
  38087. <hashTree/>
  38088. </hashTree>
  38089. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  38090. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  38091. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  38092. <collectionProp name="Arguments.arguments">
  38093. <elementProp name="" elementType="HTTPArgument">
  38094. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  38095. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","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>
  38096. <stringProp name="Argument.metadata">=</stringProp>
  38097. </elementProp>
  38098. </collectionProp>
  38099. </elementProp>
  38100. <stringProp name="HTTPSampler.domain"/>
  38101. <stringProp name="HTTPSampler.port"/>
  38102. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38103. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38104. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38105. <stringProp name="HTTPSampler.contentEncoding"/>
  38106. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</stringProp>
  38107. <stringProp name="HTTPSampler.method">POST</stringProp>
  38108. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38109. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38110. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38111. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38112. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38113. <stringProp name="HTTPSampler.embedded_url_re"/>
  38114. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
  38115. <hashTree>
  38116. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38117. <collectionProp name="HeaderManager.headers">
  38118. <elementProp name="" elementType="Header">
  38119. <stringProp name="Header.name">Referer</stringProp>
  38120. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  38121. </elementProp>
  38122. <elementProp name="Content-Type" elementType="Header">
  38123. <stringProp name="Header.name">Content-Type</stringProp>
  38124. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  38125. </elementProp>
  38126. <elementProp name="X-Requested-With" elementType="Header">
  38127. <stringProp name="Header.name">X-Requested-With</stringProp>
  38128. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  38129. </elementProp>
  38130. <elementProp name="Accept" elementType="Header">
  38131. <stringProp name="Header.name">Accept</stringProp>
  38132. <stringProp name="Header.value">application/json</stringProp>
  38133. </elementProp>
  38134. </collectionProp>
  38135. </HeaderManager>
  38136. <hashTree/>
  38137. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  38138. <collectionProp name="Asserion.test_strings">
  38139. <stringProp name="-1494218646">{"payment_methods":</stringProp>
  38140. </collectionProp>
  38141. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38142. <boolProp name="Assertion.assume_success">false</boolProp>
  38143. <intProp name="Assertion.test_type">2</intProp>
  38144. </ResponseAssertion>
  38145. <hashTree/>
  38146. </hashTree>
  38147. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  38148. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  38149. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  38150. <collectionProp name="Arguments.arguments">
  38151. <elementProp name="" elementType="HTTPArgument">
  38152. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  38153. <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname"}}</stringProp>
  38154. <stringProp name="Argument.metadata">=</stringProp>
  38155. </elementProp>
  38156. </collectionProp>
  38157. </elementProp>
  38158. <stringProp name="HTTPSampler.domain"/>
  38159. <stringProp name="HTTPSampler.port"/>
  38160. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38161. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38162. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38163. <stringProp name="HTTPSampler.contentEncoding"/>
  38164. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</stringProp>
  38165. <stringProp name="HTTPSampler.method">POST</stringProp>
  38166. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38167. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38168. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38169. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38170. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38171. <stringProp name="HTTPSampler.embedded_url_re"/>
  38172. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
  38173. <hashTree>
  38174. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38175. <collectionProp name="HeaderManager.headers">
  38176. <elementProp name="" elementType="Header">
  38177. <stringProp name="Header.name">Referer</stringProp>
  38178. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  38179. </elementProp>
  38180. <elementProp name="Content-Type" elementType="Header">
  38181. <stringProp name="Header.name">Content-Type</stringProp>
  38182. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  38183. </elementProp>
  38184. <elementProp name="X-Requested-With" elementType="Header">
  38185. <stringProp name="Header.name">X-Requested-With</stringProp>
  38186. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  38187. </elementProp>
  38188. <elementProp name="Accept" elementType="Header">
  38189. <stringProp name="Header.name">Accept</stringProp>
  38190. <stringProp name="Header.value">application/json</stringProp>
  38191. </elementProp>
  38192. </collectionProp>
  38193. </HeaderManager>
  38194. <hashTree/>
  38195. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  38196. <collectionProp name="Asserion.test_strings">
  38197. <stringProp name="-297987887">"[0-9]+"</stringProp>
  38198. </collectionProp>
  38199. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38200. <boolProp name="Assertion.assume_success">false</boolProp>
  38201. <intProp name="Assertion.test_type">2</intProp>
  38202. </ResponseAssertion>
  38203. <hashTree/>
  38204. <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">
  38205. <stringProp name="VAR">order_id</stringProp>
  38206. <stringProp name="JSONPATH">$</stringProp>
  38207. <stringProp name="DEFAULT"/>
  38208. <stringProp name="VARIABLE"/>
  38209. <stringProp name="SUBJECT">BODY</stringProp>
  38210. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  38211. <hashTree/>
  38212. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38213. <collectionProp name="Asserion.test_strings">
  38214. <stringProp name="89649215">^\d+$</stringProp>
  38215. </collectionProp>
  38216. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38217. <boolProp name="Assertion.assume_success">false</boolProp>
  38218. <intProp name="Assertion.test_type">1</intProp>
  38219. <stringProp name="Assertion.scope">variable</stringProp>
  38220. <stringProp name="Scope.variable">order_id</stringProp>
  38221. </ResponseAssertion>
  38222. <hashTree/>
  38223. </hashTree>
  38224. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout success" enabled="true">
  38225. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38226. <collectionProp name="Arguments.arguments"/>
  38227. </elementProp>
  38228. <stringProp name="HTTPSampler.domain"/>
  38229. <stringProp name="HTTPSampler.port"/>
  38230. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38231. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38232. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38233. <stringProp name="HTTPSampler.contentEncoding"/>
  38234. <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</stringProp>
  38235. <stringProp name="HTTPSampler.method">GET</stringProp>
  38236. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38237. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38238. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38239. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38240. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38241. <stringProp name="HTTPSampler.embedded_url_re"/>
  38242. <stringProp name="TestPlan.comments">tool/fragments/ce/guest_checkout/checkout_success.jmx</stringProp></HTTPSamplerProxy>
  38243. <hashTree>
  38244. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  38245. <collectionProp name="Asserion.test_strings">
  38246. <stringProp name="494863233">Thank you for your purchase!</stringProp>
  38247. <stringProp name="1635682758">Your order # is</stringProp>
  38248. </collectionProp>
  38249. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38250. <boolProp name="Assertion.assume_success">false</boolProp>
  38251. <intProp name="Assertion.test_type">2</intProp>
  38252. </ResponseAssertion>
  38253. <hashTree/>
  38254. </hashTree>
  38255. </hashTree>
  38256. </hashTree>
  38257. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Checkout By Customer" enabled="true">
  38258. <intProp name="ThroughputController.style">1</intProp>
  38259. <boolProp name="ThroughputController.perThread">false</boolProp>
  38260. <intProp name="ThroughputController.maxThroughput">1</intProp>
  38261. <stringProp name="ThroughputController.percentThroughput">${cCheckoutByCustomerPercentage}</stringProp>
  38262. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  38263. <hashTree>
  38264. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  38265. <stringProp name="script">
  38266. var tmpLabel = vars.get("testLabel")
  38267. if (tmpLabel) {
  38268. var testLabel = " (" + tmpLabel + ")"
  38269. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  38270. if (sampler.getName().indexOf(testLabel) == -1) {
  38271. sampler.setName(sampler.getName() + testLabel);
  38272. }
  38273. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  38274. sampler.setName("SetUp - " + sampler.getName());
  38275. }
  38276. } else {
  38277. testLabel = ""
  38278. }
  38279. </stringProp>
  38280. <stringProp name="scriptLanguage">javascript</stringProp>
  38281. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  38282. <hashTree/>
  38283. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  38284. <stringProp name="BeanShellSampler.query">
  38285. vars.put("testLabel", "[C] Checkout By Customer");
  38286. </stringProp>
  38287. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38288. </BeanShellSampler>
  38289. <hashTree/>
  38290. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  38291. <collectionProp name="CookieManager.cookies">
  38292. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  38293. <stringProp name="Cookie.value">30</stringProp>
  38294. <stringProp name="Cookie.domain">${host}</stringProp>
  38295. <stringProp name="Cookie.path">/</stringProp>
  38296. <boolProp name="Cookie.secure">false</boolProp>
  38297. <longProp name="Cookie.expires">0</longProp>
  38298. <boolProp name="Cookie.path_specified">true</boolProp>
  38299. <boolProp name="Cookie.domain_specified">true</boolProp>
  38300. </elementProp>
  38301. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  38302. <stringProp name="Cookie.value">${form_key}</stringProp>
  38303. <stringProp name="Cookie.domain">${host}</stringProp>
  38304. <stringProp name="Cookie.path">${base_path}</stringProp>
  38305. <boolProp name="Cookie.secure">false</boolProp>
  38306. <longProp name="Cookie.expires">0</longProp>
  38307. <boolProp name="Cookie.path_specified">true</boolProp>
  38308. <boolProp name="Cookie.domain_specified">true</boolProp>
  38309. </elementProp>
  38310. </collectionProp>
  38311. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  38312. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  38313. <hashTree/>
  38314. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  38315. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  38316. <stringProp name="BeanShellSampler.query">
  38317. import java.util.Random;
  38318. Random random = new Random();
  38319. if (${seedForRandom} &gt; 0) {
  38320. random.setSeed(${seedForRandom} + ${__threadNum});
  38321. }
  38322. vars.putObject("randomIntGenerator", random);
  38323. </stringProp>
  38324. <stringProp name="BeanShellSampler.filename"/>
  38325. <stringProp name="BeanShellSampler.parameters"/>
  38326. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38327. </BeanShellSampler>
  38328. <hashTree/>
  38329. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Total Products In Cart" enabled="true">
  38330. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_total_products_in_cart_setup.jmx</stringProp>
  38331. <stringProp name="BeanShellSampler.query">
  38332. vars.put("totalProductsAdded", "0");
  38333. </stringProp>
  38334. <stringProp name="BeanShellSampler.filename"/>
  38335. <stringProp name="BeanShellSampler.parameters"/>
  38336. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38337. </BeanShellSampler>
  38338. <hashTree/>
  38339. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  38340. <stringProp name="scriptLanguage">javascript</stringProp>
  38341. <stringProp name="parameters"/>
  38342. <stringProp name="filename"/>
  38343. <stringProp name="cacheKey"/>
  38344. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  38345. var categories = props.get("categories");
  38346. number = random.nextInt(categories.length);
  38347. vars.put("category_url_key", categories[number].url_key);
  38348. vars.put("category_name", categories[number].name);
  38349. vars.put("category_id", categories[number].id);
  38350. vars.putObject("category", categories[number]);
  38351. </stringProp>
  38352. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  38353. <hashTree/>
  38354. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  38355. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  38356. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  38357. <hashTree>
  38358. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  38359. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  38360. <stringProp name="BeanShellSampler.query">
  38361. customerUserList = props.get("customer_emails_list");
  38362. customerUser = customerUserList.poll();
  38363. if (customerUser == null) {
  38364. SampleResult.setResponseMessage("customerUser list is empty");
  38365. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  38366. IsSuccess=false;
  38367. SampleResult.setSuccessful(false);
  38368. SampleResult.setStopThread(true);
  38369. }
  38370. vars.put("customer_email", customerUser);
  38371. </stringProp>
  38372. <stringProp name="BeanShellSampler.filename"/>
  38373. <stringProp name="BeanShellSampler.parameters"/>
  38374. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38375. </BeanShellSampler>
  38376. <hashTree/>
  38377. </hashTree>
  38378. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  38379. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38380. <collectionProp name="Arguments.arguments"/>
  38381. </elementProp>
  38382. <stringProp name="HTTPSampler.domain"/>
  38383. <stringProp name="HTTPSampler.port"/>
  38384. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38385. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38386. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38387. <stringProp name="HTTPSampler.contentEncoding"/>
  38388. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  38389. <stringProp name="HTTPSampler.method">GET</stringProp>
  38390. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38391. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38392. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38393. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38394. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38395. <stringProp name="HTTPSampler.embedded_url_re"/>
  38396. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  38397. <hashTree>
  38398. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38399. <collectionProp name="Asserion.test_strings">
  38400. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  38401. </collectionProp>
  38402. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38403. <boolProp name="Assertion.assume_success">false</boolProp>
  38404. <intProp name="Assertion.test_type">2</intProp>
  38405. </ResponseAssertion>
  38406. <hashTree/>
  38407. </hashTree>
  38408. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  38409. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38410. <collectionProp name="Arguments.arguments"/>
  38411. </elementProp>
  38412. <stringProp name="HTTPSampler.domain"/>
  38413. <stringProp name="HTTPSampler.port"/>
  38414. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38415. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38416. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38417. <stringProp name="HTTPSampler.contentEncoding"/>
  38418. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  38419. <stringProp name="HTTPSampler.method">GET</stringProp>
  38420. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38421. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38422. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38423. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38424. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38425. <stringProp name="HTTPSampler.embedded_url_re"/>
  38426. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  38427. <hashTree>
  38428. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38429. <collectionProp name="Asserion.test_strings">
  38430. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  38431. </collectionProp>
  38432. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38433. <boolProp name="Assertion.assume_success">false</boolProp>
  38434. <intProp name="Assertion.test_type">2</intProp>
  38435. </ResponseAssertion>
  38436. <hashTree/>
  38437. </hashTree>
  38438. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  38439. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38440. <collectionProp name="Arguments.arguments">
  38441. <elementProp name="form_key" elementType="HTTPArgument">
  38442. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38443. <stringProp name="Argument.value">${form_key}</stringProp>
  38444. <stringProp name="Argument.metadata">=</stringProp>
  38445. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38446. <stringProp name="Argument.name">form_key</stringProp>
  38447. </elementProp>
  38448. <elementProp name="login[username]" elementType="HTTPArgument">
  38449. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38450. <stringProp name="Argument.value">${customer_email}</stringProp>
  38451. <stringProp name="Argument.metadata">=</stringProp>
  38452. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38453. <stringProp name="Argument.name">login[username]</stringProp>
  38454. </elementProp>
  38455. <elementProp name="login[password]" elementType="HTTPArgument">
  38456. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38457. <stringProp name="Argument.value">${customer_password}</stringProp>
  38458. <stringProp name="Argument.metadata">=</stringProp>
  38459. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38460. <stringProp name="Argument.name">login[password]</stringProp>
  38461. </elementProp>
  38462. <elementProp name="send" elementType="HTTPArgument">
  38463. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38464. <stringProp name="Argument.value"/>
  38465. <stringProp name="Argument.metadata">=</stringProp>
  38466. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38467. <stringProp name="Argument.name">send</stringProp>
  38468. </elementProp>
  38469. </collectionProp>
  38470. </elementProp>
  38471. <stringProp name="HTTPSampler.domain"/>
  38472. <stringProp name="HTTPSampler.port"/>
  38473. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38474. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38475. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38476. <stringProp name="HTTPSampler.contentEncoding"/>
  38477. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  38478. <stringProp name="HTTPSampler.method">POST</stringProp>
  38479. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38480. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38481. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38482. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38483. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38484. <stringProp name="HTTPSampler.embedded_url_re"/>
  38485. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  38486. <hashTree>
  38487. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38488. <collectionProp name="Asserion.test_strings">
  38489. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  38490. </collectionProp>
  38491. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38492. <boolProp name="Assertion.assume_success">false</boolProp>
  38493. <intProp name="Assertion.test_type">2</intProp>
  38494. </ResponseAssertion>
  38495. <hashTree/>
  38496. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  38497. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  38498. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  38499. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  38500. <stringProp name="RegexExtractor.template">$1$</stringProp>
  38501. <stringProp name="RegexExtractor.default"/>
  38502. <stringProp name="RegexExtractor.match_number">1</stringProp>
  38503. </RegexExtractor>
  38504. <hashTree/>
  38505. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  38506. <collectionProp name="Asserion.test_strings">
  38507. <stringProp name="2845929">^.+$</stringProp>
  38508. </collectionProp>
  38509. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38510. <boolProp name="Assertion.assume_success">false</boolProp>
  38511. <intProp name="Assertion.test_type">1</intProp>
  38512. <stringProp name="Assertion.scope">variable</stringProp>
  38513. <stringProp name="Scope.variable">addressId</stringProp>
  38514. </ResponseAssertion>
  38515. <hashTree/>
  38516. </hashTree>
  38517. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  38518. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38519. <collectionProp name="Arguments.arguments">
  38520. <elementProp name="sections" elementType="HTTPArgument">
  38521. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38522. <stringProp name="Argument.value"/>
  38523. <stringProp name="Argument.metadata">=</stringProp>
  38524. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38525. <stringProp name="Argument.name">sections</stringProp>
  38526. </elementProp>
  38527. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  38528. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38529. <stringProp name="Argument.value">false</stringProp>
  38530. <stringProp name="Argument.metadata">=</stringProp>
  38531. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38532. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  38533. </elementProp>
  38534. <elementProp name="_" elementType="HTTPArgument">
  38535. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38536. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  38537. <stringProp name="Argument.metadata">=</stringProp>
  38538. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38539. <stringProp name="Argument.name">_</stringProp>
  38540. </elementProp>
  38541. </collectionProp>
  38542. </elementProp>
  38543. <stringProp name="HTTPSampler.domain"/>
  38544. <stringProp name="HTTPSampler.port"/>
  38545. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38546. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38547. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38548. <stringProp name="HTTPSampler.contentEncoding"/>
  38549. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  38550. <stringProp name="HTTPSampler.method">GET</stringProp>
  38551. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38552. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38553. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38554. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38555. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38556. <stringProp name="HTTPSampler.embedded_url_re"/>
  38557. </HTTPSamplerProxy>
  38558. <hashTree/>
  38559. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Category" enabled="true">
  38560. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38561. <collectionProp name="Arguments.arguments"/>
  38562. </elementProp>
  38563. <stringProp name="HTTPSampler.domain"/>
  38564. <stringProp name="HTTPSampler.port"/>
  38565. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38566. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38567. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38568. <stringProp name="HTTPSampler.contentEncoding"/>
  38569. <stringProp name="HTTPSampler.path">${base_path}${category_url_key}${url_suffix}</stringProp>
  38570. <stringProp name="HTTPSampler.method">GET</stringProp>
  38571. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38572. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38573. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38574. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38575. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38576. <stringProp name="HTTPSampler.embedded_url_re"/>
  38577. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_category.jmx</stringProp></HTTPSamplerProxy>
  38578. <hashTree>
  38579. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38580. <collectionProp name="Asserion.test_strings">
  38581. <stringProp name="1210004667">&lt;span class="base" data-ui-id="page-title"&gt;${category_name}&lt;/span&gt;</stringProp>
  38582. </collectionProp>
  38583. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38584. <boolProp name="Assertion.assume_success">false</boolProp>
  38585. <intProp name="Assertion.test_type">6</intProp>
  38586. </ResponseAssertion>
  38587. <hashTree/>
  38588. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract category id" enabled="true">
  38589. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  38590. <stringProp name="RegexExtractor.refname">category_id</stringProp>
  38591. <stringProp name="RegexExtractor.regex">&lt;li class="item category([^'"]+)"&gt;\s*&lt;strong&gt;${category_name}&lt;/strong&gt;\s*&lt;/li&gt;</stringProp>
  38592. <stringProp name="RegexExtractor.template">$1$</stringProp>
  38593. <stringProp name="RegexExtractor.default"/>
  38594. <stringProp name="RegexExtractor.match_number">1</stringProp>
  38595. <stringProp name="Scope.variable">simple_product_1_url_key</stringProp>
  38596. </RegexExtractor>
  38597. <hashTree/>
  38598. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion: Assert category id" enabled="true">
  38599. <collectionProp name="Asserion.test_strings">
  38600. <stringProp name="1191417111">^[0-9]+$</stringProp>
  38601. </collectionProp>
  38602. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38603. <boolProp name="Assertion.assume_success">false</boolProp>
  38604. <intProp name="Assertion.test_type">1</intProp>
  38605. <stringProp name="Assertion.scope">variable</stringProp>
  38606. <stringProp name="Scope.variable">category_id</stringProp>
  38607. </ResponseAssertion>
  38608. <hashTree/>
  38609. </hashTree>
  38610. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Simple Products to Cart" enabled="true">
  38611. <boolProp name="LoopController.continue_forever">true</boolProp>
  38612. <stringProp name="LoopController.loops">2</stringProp>
  38613. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  38614. <hashTree>
  38615. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  38616. <stringProp name="CounterConfig.start">1</stringProp>
  38617. <stringProp name="CounterConfig.end"/>
  38618. <stringProp name="CounterConfig.incr">1</stringProp>
  38619. <stringProp name="CounterConfig.name">_counter</stringProp>
  38620. <stringProp name="CounterConfig.format"/>
  38621. <boolProp name="CounterConfig.per_user">true</boolProp>
  38622. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  38623. </CounterConfig>
  38624. <hashTree/>
  38625. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  38626. <stringProp name="BeanShellSampler.query">
  38627. import java.util.Random;
  38628. Random random = vars.getObject("randomIntGenerator");
  38629. number = random.nextInt(props.get("simple_products_list").size());
  38630. product = props.get("simple_products_list").get(number);
  38631. vars.put("product_url_key", product.get("url_key"));
  38632. vars.put("product_id", product.get("id"));
  38633. vars.put("product_name", product.get("title"));
  38634. vars.put("product_uenc", product.get("uenc"));
  38635. vars.put("product_sku", product.get("sku"));
  38636. </stringProp>
  38637. <stringProp name="BeanShellSampler.filename"/>
  38638. <stringProp name="BeanShellSampler.parameters"/>
  38639. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38640. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  38641. <hashTree/>
  38642. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  38643. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  38644. <stringProp name="BeanShellSampler.query">
  38645. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  38646. productsAdded = productsAdded + 1;
  38647. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  38648. </stringProp>
  38649. <stringProp name="BeanShellSampler.filename"/>
  38650. <stringProp name="BeanShellSampler.parameters"/>
  38651. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38652. </BeanShellSampler>
  38653. <hashTree/>
  38654. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  38655. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38656. <collectionProp name="Arguments.arguments"/>
  38657. </elementProp>
  38658. <stringProp name="HTTPSampler.domain"/>
  38659. <stringProp name="HTTPSampler.port"/>
  38660. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38661. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38662. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38663. <stringProp name="HTTPSampler.contentEncoding"/>
  38664. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  38665. <stringProp name="HTTPSampler.method">GET</stringProp>
  38666. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38667. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38668. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38669. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38670. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38671. <stringProp name="HTTPSampler.embedded_url_re"/>
  38672. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  38673. <hashTree>
  38674. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38675. <collectionProp name="Asserion.test_strings">
  38676. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  38677. </collectionProp>
  38678. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38679. <boolProp name="Assertion.assume_success">false</boolProp>
  38680. <intProp name="Assertion.test_type">2</intProp>
  38681. </ResponseAssertion>
  38682. <hashTree/>
  38683. </hashTree>
  38684. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  38685. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38686. <collectionProp name="Arguments.arguments">
  38687. <elementProp name="product" elementType="HTTPArgument">
  38688. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38689. <stringProp name="Argument.value">${product_id}</stringProp>
  38690. <stringProp name="Argument.metadata">=</stringProp>
  38691. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38692. <stringProp name="Argument.name">product</stringProp>
  38693. </elementProp>
  38694. <elementProp name="related_product" elementType="HTTPArgument">
  38695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38696. <stringProp name="Argument.value"/>
  38697. <stringProp name="Argument.metadata">=</stringProp>
  38698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38699. <stringProp name="Argument.name">related_product</stringProp>
  38700. </elementProp>
  38701. <elementProp name="qty" elementType="HTTPArgument">
  38702. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38703. <stringProp name="Argument.value">1</stringProp>
  38704. <stringProp name="Argument.metadata">=</stringProp>
  38705. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38706. <stringProp name="Argument.name">qty</stringProp>
  38707. </elementProp>
  38708. <elementProp name="form_key" elementType="HTTPArgument">
  38709. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38710. <stringProp name="Argument.value">${form_key}</stringProp>
  38711. <stringProp name="Argument.metadata">=</stringProp>
  38712. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38713. <stringProp name="Argument.name">form_key</stringProp>
  38714. </elementProp>
  38715. </collectionProp>
  38716. </elementProp>
  38717. <stringProp name="HTTPSampler.domain"/>
  38718. <stringProp name="HTTPSampler.port"/>
  38719. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38720. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38721. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38722. <stringProp name="HTTPSampler.contentEncoding"/>
  38723. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  38724. <stringProp name="HTTPSampler.method">POST</stringProp>
  38725. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38726. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38727. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38728. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38729. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38730. <stringProp name="HTTPSampler.embedded_url_re"/>
  38731. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  38732. <hashTree>
  38733. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38734. <collectionProp name="HeaderManager.headers">
  38735. <elementProp name="" elementType="Header">
  38736. <stringProp name="Header.name">X-Requested-With</stringProp>
  38737. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  38738. </elementProp>
  38739. </collectionProp>
  38740. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  38741. <hashTree/>
  38742. </hashTree>
  38743. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  38744. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38745. <collectionProp name="Arguments.arguments">
  38746. <elementProp name="sections" elementType="HTTPArgument">
  38747. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38748. <stringProp name="Argument.value">cart,messages</stringProp>
  38749. <stringProp name="Argument.metadata">=</stringProp>
  38750. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38751. <stringProp name="Argument.name">sections</stringProp>
  38752. </elementProp>
  38753. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  38754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38755. <stringProp name="Argument.value">true</stringProp>
  38756. <stringProp name="Argument.metadata">=</stringProp>
  38757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38758. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  38759. </elementProp>
  38760. <elementProp name="_" elementType="HTTPArgument">
  38761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  38762. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  38763. <stringProp name="Argument.metadata">=</stringProp>
  38764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  38765. <stringProp name="Argument.name">_</stringProp>
  38766. </elementProp>
  38767. </collectionProp>
  38768. </elementProp>
  38769. <stringProp name="HTTPSampler.domain"/>
  38770. <stringProp name="HTTPSampler.port"/>
  38771. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38772. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38773. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38774. <stringProp name="HTTPSampler.contentEncoding"/>
  38775. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  38776. <stringProp name="HTTPSampler.method">GET</stringProp>
  38777. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38778. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38779. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38780. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38781. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38782. <stringProp name="HTTPSampler.embedded_url_re"/>
  38783. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  38784. <hashTree>
  38785. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38786. <collectionProp name="Asserion.test_strings">
  38787. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  38788. </collectionProp>
  38789. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38790. <boolProp name="Assertion.assume_success">false</boolProp>
  38791. <intProp name="Assertion.test_type">2</intProp>
  38792. </ResponseAssertion>
  38793. <hashTree/>
  38794. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38795. <collectionProp name="Asserion.test_strings">
  38796. <stringProp name="2057973164">This product is out of stock.</stringProp>
  38797. </collectionProp>
  38798. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38799. <boolProp name="Assertion.assume_success">false</boolProp>
  38800. <intProp name="Assertion.test_type">6</intProp>
  38801. </ResponseAssertion>
  38802. <hashTree/>
  38803. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38804. <collectionProp name="Asserion.test_strings">
  38805. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  38806. </collectionProp>
  38807. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38808. <boolProp name="Assertion.assume_success">false</boolProp>
  38809. <intProp name="Assertion.test_type">2</intProp>
  38810. </ResponseAssertion>
  38811. <hashTree/>
  38812. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38813. <collectionProp name="HeaderManager.headers">
  38814. <elementProp name="" elementType="Header">
  38815. <stringProp name="Header.name">X-Requested-With</stringProp>
  38816. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  38817. </elementProp>
  38818. </collectionProp>
  38819. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  38820. <hashTree/>
  38821. </hashTree>
  38822. </hashTree>
  38823. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Configurable Products to Cart" enabled="true">
  38824. <boolProp name="LoopController.continue_forever">true</boolProp>
  38825. <stringProp name="LoopController.loops">1</stringProp>
  38826. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  38827. <hashTree>
  38828. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  38829. <stringProp name="CounterConfig.start">1</stringProp>
  38830. <stringProp name="CounterConfig.end"/>
  38831. <stringProp name="CounterConfig.incr">1</stringProp>
  38832. <stringProp name="CounterConfig.name">_counter</stringProp>
  38833. <stringProp name="CounterConfig.format"/>
  38834. <boolProp name="CounterConfig.per_user">true</boolProp>
  38835. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  38836. </CounterConfig>
  38837. <hashTree/>
  38838. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  38839. <stringProp name="BeanShellSampler.query">
  38840. import java.util.Random;
  38841. Random random = vars.getObject("randomIntGenerator");
  38842. number = random.nextInt(props.get("configurable_products_list").size());
  38843. product = props.get("configurable_products_list").get(number);
  38844. vars.put("product_url_key", product.get("url_key"));
  38845. vars.put("product_id", product.get("id"));
  38846. vars.put("product_name", product.get("title"));
  38847. vars.put("product_uenc", product.get("uenc"));
  38848. vars.put("product_sku", product.get("sku"));
  38849. </stringProp>
  38850. <stringProp name="BeanShellSampler.filename"/>
  38851. <stringProp name="BeanShellSampler.parameters"/>
  38852. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38853. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  38854. <hashTree/>
  38855. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Update Products Added Counter" enabled="true">
  38856. <stringProp name="TestPlan.comments">tool/fragments/ce/loops/update_products_added_counter.jmx</stringProp>
  38857. <stringProp name="BeanShellSampler.query">
  38858. productsAdded = Integer.parseInt(vars.get("totalProductsAdded"));
  38859. productsAdded = productsAdded + 1;
  38860. vars.put("totalProductsAdded", String.valueOf(productsAdded));
  38861. </stringProp>
  38862. <stringProp name="BeanShellSampler.filename"/>
  38863. <stringProp name="BeanShellSampler.parameters"/>
  38864. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  38865. </BeanShellSampler>
  38866. <hashTree/>
  38867. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  38868. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38869. <collectionProp name="Arguments.arguments"/>
  38870. </elementProp>
  38871. <stringProp name="HTTPSampler.domain"/>
  38872. <stringProp name="HTTPSampler.port"/>
  38873. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38874. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38875. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38876. <stringProp name="HTTPSampler.contentEncoding"/>
  38877. <stringProp name="HTTPSampler.path">${base_path}${product_url_key}${url_suffix}</stringProp>
  38878. <stringProp name="HTTPSampler.method">GET</stringProp>
  38879. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38880. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38881. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38882. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38883. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38884. <stringProp name="HTTPSampler.embedded_url_re"/>
  38885. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/product_view.jmx</stringProp></HTTPSamplerProxy>
  38886. <hashTree>
  38887. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  38888. <collectionProp name="Asserion.test_strings">
  38889. <stringProp name="-1787050162">&lt;span&gt;In stock&lt;/span&gt;</stringProp>
  38890. </collectionProp>
  38891. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38892. <boolProp name="Assertion.assume_success">false</boolProp>
  38893. <intProp name="Assertion.test_type">2</intProp>
  38894. </ResponseAssertion>
  38895. <hashTree/>
  38896. </hashTree>
  38897. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="SetUp - Get Configurable Product Options" enabled="true">
  38898. <boolProp name="LoopController.continue_forever">true</boolProp>
  38899. <stringProp name="LoopController.loops">1</stringProp>
  38900. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_configurable_product_options.jmx</stringProp></LoopController>
  38901. <hashTree>
  38902. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38903. <collectionProp name="HeaderManager.headers">
  38904. <elementProp name="" elementType="Header">
  38905. <stringProp name="Header.name">Content-Type</stringProp>
  38906. <stringProp name="Header.value">application/json</stringProp>
  38907. </elementProp>
  38908. <elementProp name="" elementType="Header">
  38909. <stringProp name="Header.name">Accept</stringProp>
  38910. <stringProp name="Header.value">*/*</stringProp>
  38911. </elementProp>
  38912. </collectionProp>
  38913. </HeaderManager>
  38914. <hashTree/>
  38915. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  38916. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  38917. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  38918. <collectionProp name="Arguments.arguments">
  38919. <elementProp name="" elementType="HTTPArgument">
  38920. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  38921. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  38922. <stringProp name="Argument.metadata">=</stringProp>
  38923. </elementProp>
  38924. </collectionProp>
  38925. </elementProp>
  38926. <stringProp name="HTTPSampler.domain"/>
  38927. <stringProp name="HTTPSampler.port"/>
  38928. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38929. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38930. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38931. <stringProp name="HTTPSampler.contentEncoding"/>
  38932. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  38933. <stringProp name="HTTPSampler.method">POST</stringProp>
  38934. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38935. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38936. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38937. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38938. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38939. <stringProp name="HTTPSampler.embedded_url_re"/>
  38940. </HTTPSamplerProxy>
  38941. <hashTree>
  38942. <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">
  38943. <stringProp name="VAR">admin_token</stringProp>
  38944. <stringProp name="JSONPATH">$</stringProp>
  38945. <stringProp name="DEFAULT"/>
  38946. <stringProp name="VARIABLE"/>
  38947. <stringProp name="SUBJECT">BODY</stringProp>
  38948. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  38949. <hashTree/>
  38950. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  38951. <collectionProp name="Asserion.test_strings">
  38952. <stringProp name="484395188">^.{10,}$</stringProp>
  38953. </collectionProp>
  38954. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  38955. <boolProp name="Assertion.assume_success">false</boolProp>
  38956. <intProp name="Assertion.test_type">1</intProp>
  38957. <stringProp name="Assertion.scope">variable</stringProp>
  38958. <stringProp name="Scope.variable">admin_token</stringProp>
  38959. </ResponseAssertion>
  38960. <hashTree/>
  38961. </hashTree>
  38962. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  38963. <collectionProp name="HeaderManager.headers">
  38964. <elementProp name="" elementType="Header">
  38965. <stringProp name="Header.name">Authorization</stringProp>
  38966. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  38967. </elementProp>
  38968. </collectionProp>
  38969. </HeaderManager>
  38970. <hashTree/>
  38971. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Configurable Product Options" enabled="true">
  38972. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  38973. <collectionProp name="Arguments.arguments"/>
  38974. </elementProp>
  38975. <stringProp name="HTTPSampler.domain"/>
  38976. <stringProp name="HTTPSampler.port"/>
  38977. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  38978. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  38979. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  38980. <stringProp name="HTTPSampler.contentEncoding"/>
  38981. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${product_sku}/options/all</stringProp>
  38982. <stringProp name="HTTPSampler.method">GET</stringProp>
  38983. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  38984. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  38985. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  38986. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  38987. <boolProp name="HTTPSampler.monitor">false</boolProp>
  38988. <stringProp name="HTTPSampler.embedded_url_re"/>
  38989. </HTTPSamplerProxy>
  38990. <hashTree>
  38991. <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">
  38992. <stringProp name="VAR">attribute_ids</stringProp>
  38993. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  38994. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  38995. <stringProp name="VARIABLE"/>
  38996. <stringProp name="SUBJECT">BODY</stringProp>
  38997. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  38998. <hashTree/>
  38999. <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">
  39000. <stringProp name="VAR">option_values</stringProp>
  39001. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  39002. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  39003. <stringProp name="VARIABLE"/>
  39004. <stringProp name="SUBJECT">BODY</stringProp>
  39005. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  39006. <hashTree/>
  39007. </hashTree>
  39008. </hashTree>
  39009. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  39010. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39011. <collectionProp name="Arguments.arguments">
  39012. <elementProp name="product" elementType="HTTPArgument">
  39013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39014. <stringProp name="Argument.value">${product_id}</stringProp>
  39015. <stringProp name="Argument.metadata">=</stringProp>
  39016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39017. <stringProp name="Argument.name">product</stringProp>
  39018. </elementProp>
  39019. <elementProp name="related_product" elementType="HTTPArgument">
  39020. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39021. <stringProp name="Argument.value"/>
  39022. <stringProp name="Argument.metadata">=</stringProp>
  39023. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39024. <stringProp name="Argument.name">related_product</stringProp>
  39025. </elementProp>
  39026. <elementProp name="qty" elementType="HTTPArgument">
  39027. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39028. <stringProp name="Argument.value">1</stringProp>
  39029. <stringProp name="Argument.metadata">=</stringProp>
  39030. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39031. <stringProp name="Argument.name">qty</stringProp>
  39032. </elementProp>
  39033. <elementProp name="form_key" elementType="HTTPArgument">
  39034. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39035. <stringProp name="Argument.value">${form_key}</stringProp>
  39036. <stringProp name="Argument.metadata">=</stringProp>
  39037. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39038. <stringProp name="Argument.name">form_key</stringProp>
  39039. </elementProp>
  39040. </collectionProp>
  39041. </elementProp>
  39042. <stringProp name="HTTPSampler.domain"/>
  39043. <stringProp name="HTTPSampler.port"/>
  39044. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39045. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39046. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39047. <stringProp name="HTTPSampler.contentEncoding"/>
  39048. <stringProp name="HTTPSampler.path">${base_path}checkout/cart/add/</stringProp>
  39049. <stringProp name="HTTPSampler.method">POST</stringProp>
  39050. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39051. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39052. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39053. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39054. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39055. <stringProp name="HTTPSampler.embedded_url_re"/>
  39056. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_product_add_to_cart.jmx</stringProp></HTTPSamplerProxy>
  39057. <hashTree>
  39058. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
  39059. <boolProp name="resetInterpreter">false</boolProp>
  39060. <stringProp name="parameters"/>
  39061. <stringProp name="filename"/>
  39062. <stringProp name="script">
  39063. try {
  39064. attribute_ids = vars.get("attribute_ids");
  39065. option_values = vars.get("option_values");
  39066. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  39067. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  39068. attribute_ids_array = attribute_ids.split(",");
  39069. option_values_array = option_values.split(",");
  39070. args = ctx.getCurrentSampler().getArguments();
  39071. it = args.iterator();
  39072. while (it.hasNext()) {
  39073. argument = it.next();
  39074. if (argument.getStringValue().contains("${")) {
  39075. args.removeArgument(argument.getName());
  39076. }
  39077. }
  39078. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  39079. ctx.getCurrentSampler().addArgument("super_attribute[" + attribute_ids_array[i] + "]", option_values_array[i]);
  39080. }
  39081. } catch (Exception e) {
  39082. log.error("eror&#x2026;", e);
  39083. }
  39084. </stringProp>
  39085. <stringProp name="TestPlan.comments">tool/fragments/ce/common/configurable_product_add_to_cart_preprocessor.jmx</stringProp></BeanShellPreProcessor>
  39086. <hashTree/>
  39087. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  39088. <collectionProp name="HeaderManager.headers">
  39089. <elementProp name="" elementType="Header">
  39090. <stringProp name="Header.name">X-Requested-With</stringProp>
  39091. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  39092. </elementProp>
  39093. </collectionProp>
  39094. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  39095. <hashTree/>
  39096. </hashTree>
  39097. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Cart Section ${_counter}" enabled="true">
  39098. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39099. <collectionProp name="Arguments.arguments">
  39100. <elementProp name="sections" elementType="HTTPArgument">
  39101. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39102. <stringProp name="Argument.value">cart,messages</stringProp>
  39103. <stringProp name="Argument.metadata">=</stringProp>
  39104. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39105. <stringProp name="Argument.name">sections</stringProp>
  39106. </elementProp>
  39107. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  39108. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39109. <stringProp name="Argument.value">true</stringProp>
  39110. <stringProp name="Argument.metadata">=</stringProp>
  39111. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39112. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  39113. </elementProp>
  39114. <elementProp name="_" elementType="HTTPArgument">
  39115. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39116. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  39117. <stringProp name="Argument.metadata">=</stringProp>
  39118. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39119. <stringProp name="Argument.name">_</stringProp>
  39120. </elementProp>
  39121. </collectionProp>
  39122. </elementProp>
  39123. <stringProp name="HTTPSampler.domain"/>
  39124. <stringProp name="HTTPSampler.port"/>
  39125. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39126. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39127. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39128. <stringProp name="HTTPSampler.contentEncoding"/>
  39129. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  39130. <stringProp name="HTTPSampler.method">GET</stringProp>
  39131. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39132. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39133. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39134. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39135. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39136. <stringProp name="HTTPSampler.embedded_url_re"/>
  39137. <stringProp name="TestPlan.comments">tool/fragments/ce/load_cart_section.jmx</stringProp></HTTPSamplerProxy>
  39138. <hashTree>
  39139. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39140. <collectionProp name="Asserion.test_strings">
  39141. <stringProp name="210217247">You added ${product_name} to your <a href="${base_path}checkout/cart/">shopping cart</a>.</stringProp>
  39142. </collectionProp>
  39143. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39144. <boolProp name="Assertion.assume_success">false</boolProp>
  39145. <intProp name="Assertion.test_type">2</intProp>
  39146. </ResponseAssertion>
  39147. <hashTree/>
  39148. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39149. <collectionProp name="Asserion.test_strings">
  39150. <stringProp name="2057973164">This product is out of stock.</stringProp>
  39151. </collectionProp>
  39152. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39153. <boolProp name="Assertion.assume_success">false</boolProp>
  39154. <intProp name="Assertion.test_type">6</intProp>
  39155. </ResponseAssertion>
  39156. <hashTree/>
  39157. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39158. <collectionProp name="Asserion.test_strings">
  39159. <stringProp name="-350323027">\"summary_count\":${totalProductsAdded}</stringProp>
  39160. </collectionProp>
  39161. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39162. <boolProp name="Assertion.assume_success">false</boolProp>
  39163. <intProp name="Assertion.test_type">2</intProp>
  39164. </ResponseAssertion>
  39165. <hashTree/>
  39166. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  39167. <collectionProp name="HeaderManager.headers">
  39168. <elementProp name="" elementType="Header">
  39169. <stringProp name="Header.name">X-Requested-With</stringProp>
  39170. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  39171. </elementProp>
  39172. </collectionProp>
  39173. <stringProp name="TestPlan.comments">tool/fragments/ce/common/http_header_manager_ajax.jmx</stringProp></HeaderManager>
  39174. <hashTree/>
  39175. </hashTree>
  39176. </hashTree>
  39177. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Checkout" enabled="true">
  39178. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  39179. </GenericController>
  39180. <hashTree>
  39181. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  39182. <stringProp name="scriptLanguage">javascript</stringProp>
  39183. <stringProp name="parameters"/>
  39184. <stringProp name="filename"/>
  39185. <stringProp name="cacheKey"/>
  39186. <stringProp name="script">
  39187. vars.put("alabama_region_id", props.get("alabama_region_id"));
  39188. vars.put("california_region_id", props.get("california_region_id"));
  39189. </stringProp>
  39190. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  39191. <hashTree/>
  39192. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout start" enabled="true">
  39193. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39194. <collectionProp name="Arguments.arguments"/>
  39195. </elementProp>
  39196. <stringProp name="HTTPSampler.domain"/>
  39197. <stringProp name="HTTPSampler.port"/>
  39198. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39199. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39200. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39201. <stringProp name="HTTPSampler.contentEncoding"/>
  39202. <stringProp name="HTTPSampler.path">${base_path}checkout/</stringProp>
  39203. <stringProp name="HTTPSampler.method">GET</stringProp>
  39204. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39205. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39206. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39207. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39208. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39209. <stringProp name="HTTPSampler.embedded_url_re"/>
  39210. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_start.jmx</stringProp></HTTPSamplerProxy>
  39211. <hashTree>
  39212. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39213. <collectionProp name="Asserion.test_strings">
  39214. <stringProp name="-1403911775">&lt;title&gt;Checkout&lt;/title&gt;</stringProp>
  39215. </collectionProp>
  39216. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39217. <boolProp name="Assertion.assume_success">false</boolProp>
  39218. <intProp name="Assertion.test_type">2</intProp>
  39219. </ResponseAssertion>
  39220. <hashTree/>
  39221. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39222. <collectionProp name="Asserion.test_strings">
  39223. <stringProp name="-179817969">&lt;title&gt;Shopping Cart&lt;/title&gt;</stringProp>
  39224. </collectionProp>
  39225. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39226. <boolProp name="Assertion.assume_success">false</boolProp>
  39227. <intProp name="Assertion.test_type">6</intProp>
  39228. </ResponseAssertion>
  39229. <hashTree/>
  39230. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Cart Id" enabled="true">
  39231. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  39232. <stringProp name="RegexExtractor.refname">cart_id</stringProp>
  39233. <stringProp name="RegexExtractor.regex">"quoteData":{"entity_id":"([^'"]+)",</stringProp>
  39234. <stringProp name="RegexExtractor.template">$1$</stringProp>
  39235. <stringProp name="RegexExtractor.default"/>
  39236. <stringProp name="RegexExtractor.match_number">1</stringProp>
  39237. </RegexExtractor>
  39238. <hashTree/>
  39239. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address Id" enabled="true">
  39240. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  39241. <stringProp name="RegexExtractor.refname">address_id</stringProp>
  39242. <stringProp name="RegexExtractor.regex">"default_billing":"([^'"]+)",</stringProp>
  39243. <stringProp name="RegexExtractor.template">$1$</stringProp>
  39244. <stringProp name="RegexExtractor.default"/>
  39245. <stringProp name="RegexExtractor.match_number">1</stringProp>
  39246. </RegexExtractor>
  39247. <hashTree/>
  39248. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Customer Id" enabled="true">
  39249. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  39250. <stringProp name="RegexExtractor.refname">customer_id</stringProp>
  39251. <stringProp name="RegexExtractor.regex">"customer_id":([^'",]+),</stringProp>
  39252. <stringProp name="RegexExtractor.template">$1$</stringProp>
  39253. <stringProp name="RegexExtractor.default"/>
  39254. <stringProp name="RegexExtractor.match_number">1</stringProp>
  39255. </RegexExtractor>
  39256. <hashTree/>
  39257. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Cart Id extracted" enabled="true">
  39258. <collectionProp name="Asserion.test_strings">
  39259. <stringProp name="2845929">^.+$</stringProp>
  39260. </collectionProp>
  39261. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39262. <boolProp name="Assertion.assume_success">false</boolProp>
  39263. <intProp name="Assertion.test_type">1</intProp>
  39264. <stringProp name="Assertion.scope">variable</stringProp>
  39265. <stringProp name="Scope.variable">cart_id</stringProp>
  39266. </ResponseAssertion>
  39267. <hashTree/>
  39268. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Address Id extracted" enabled="true">
  39269. <collectionProp name="Asserion.test_strings">
  39270. <stringProp name="576002869">[0-9]+$</stringProp>
  39271. </collectionProp>
  39272. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39273. <boolProp name="Assertion.assume_success">false</boolProp>
  39274. <intProp name="Assertion.test_type">1</intProp>
  39275. <stringProp name="Assertion.scope">variable</stringProp>
  39276. <stringProp name="Scope.variable">address_id</stringProp>
  39277. </ResponseAssertion>
  39278. <hashTree/>
  39279. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Customer Id extracted" enabled="true">
  39280. <collectionProp name="Asserion.test_strings">
  39281. <stringProp name="576002869">[0-9]+$</stringProp>
  39282. </collectionProp>
  39283. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39284. <boolProp name="Assertion.assume_success">false</boolProp>
  39285. <intProp name="Assertion.test_type">1</intProp>
  39286. <stringProp name="Assertion.scope">variable</stringProp>
  39287. <stringProp name="Scope.variable">customer_id</stringProp>
  39288. </ResponseAssertion>
  39289. <hashTree/>
  39290. </hashTree>
  39291. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  39292. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  39293. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  39294. <collectionProp name="Arguments.arguments">
  39295. <elementProp name="" elementType="HTTPArgument">
  39296. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  39297. <stringProp name="Argument.value">{"addressId":"${addressId}"}</stringProp>
  39298. <stringProp name="Argument.metadata">=</stringProp>
  39299. </elementProp>
  39300. </collectionProp>
  39301. </elementProp>
  39302. <stringProp name="HTTPSampler.domain"/>
  39303. <stringProp name="HTTPSampler.port"/>
  39304. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39305. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39306. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39307. <stringProp name="HTTPSampler.contentEncoding"/>
  39308. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/estimate-shipping-methods-by-address-id</stringProp>
  39309. <stringProp name="HTTPSampler.method">POST</stringProp>
  39310. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39311. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39312. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39313. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39314. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39315. <stringProp name="HTTPSampler.embedded_url_re"/>
  39316. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_estimate_shipping_methods.jmx</stringProp></HTTPSamplerProxy>
  39317. <hashTree>
  39318. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  39319. <collectionProp name="HeaderManager.headers">
  39320. <elementProp name="" elementType="Header">
  39321. <stringProp name="Header.name">Referer</stringProp>
  39322. <stringProp name="Header.value">${base_path}checkout/onepage/</stringProp>
  39323. </elementProp>
  39324. <elementProp name="Content-Type" elementType="Header">
  39325. <stringProp name="Header.name">Content-Type</stringProp>
  39326. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  39327. </elementProp>
  39328. <elementProp name="X-Requested-With" elementType="Header">
  39329. <stringProp name="Header.name">X-Requested-With</stringProp>
  39330. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  39331. </elementProp>
  39332. <elementProp name="Accept" elementType="Header">
  39333. <stringProp name="Header.name">Accept</stringProp>
  39334. <stringProp name="Header.value">application/json</stringProp>
  39335. </elementProp>
  39336. </collectionProp>
  39337. </HeaderManager>
  39338. <hashTree/>
  39339. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  39340. <collectionProp name="Asserion.test_strings">
  39341. <stringProp name="-1224567411">"available":true</stringProp>
  39342. </collectionProp>
  39343. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39344. <boolProp name="Assertion.assume_success">false</boolProp>
  39345. <intProp name="Assertion.test_type">2</intProp>
  39346. </ResponseAssertion>
  39347. <hashTree/>
  39348. </hashTree>
  39349. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  39350. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  39351. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  39352. <collectionProp name="Arguments.arguments">
  39353. <elementProp name="" elementType="HTTPArgument">
  39354. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  39355. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","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>
  39356. <stringProp name="Argument.metadata">=</stringProp>
  39357. </elementProp>
  39358. </collectionProp>
  39359. </elementProp>
  39360. <stringProp name="HTTPSampler.domain"/>
  39361. <stringProp name="HTTPSampler.port"/>
  39362. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39363. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39364. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39365. <stringProp name="HTTPSampler.contentEncoding"/>
  39366. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/shipping-information</stringProp>
  39367. <stringProp name="HTTPSampler.method">POST</stringProp>
  39368. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39369. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39370. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39371. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39372. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39373. <stringProp name="HTTPSampler.embedded_url_re"/>
  39374. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_billing_shipping_information.jmx</stringProp></HTTPSamplerProxy>
  39375. <hashTree>
  39376. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  39377. <collectionProp name="HeaderManager.headers">
  39378. <elementProp name="" elementType="Header">
  39379. <stringProp name="Header.name">Referer</stringProp>
  39380. <stringProp name="Header.value">${host}${base_path}checkout/onepage</stringProp>
  39381. </elementProp>
  39382. <elementProp name="Content-Type" elementType="Header">
  39383. <stringProp name="Header.name">Content-Type</stringProp>
  39384. <stringProp name="Header.value">application/json; charset=UTF-8</stringProp>
  39385. </elementProp>
  39386. <elementProp name="X-Requested-With" elementType="Header">
  39387. <stringProp name="Header.name">X-Requested-With</stringProp>
  39388. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  39389. </elementProp>
  39390. <elementProp name="Accept" elementType="Header">
  39391. <stringProp name="Header.name">Accept</stringProp>
  39392. <stringProp name="Header.value">application/json</stringProp>
  39393. </elementProp>
  39394. </collectionProp>
  39395. </HeaderManager>
  39396. <hashTree/>
  39397. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  39398. <collectionProp name="Asserion.test_strings">
  39399. <stringProp name="-740937264">{"payment_methods"</stringProp>
  39400. </collectionProp>
  39401. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39402. <boolProp name="Assertion.assume_success">false</boolProp>
  39403. <intProp name="Assertion.test_type">2</intProp>
  39404. </ResponseAssertion>
  39405. <hashTree/>
  39406. </hashTree>
  39407. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  39408. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  39409. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  39410. <collectionProp name="Arguments.arguments">
  39411. <elementProp name="" elementType="HTTPArgument">
  39412. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  39413. <stringProp name="Argument.value">{"cartId":"${cart_id}","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"customerAddressId":"${address_id}","countryId":"US","regionId":"${alabama_region_id}","regionCode":"AL","region":"Alabama","customerId":"${customer_id}","street":["123 Freedom Blvd. #123"],"telephone":"022-333-4455","postcode":"123123","city":"Fayetteville","firstname":"Anthony","lastname":"Nealy"}}</stringProp>
  39414. <stringProp name="Argument.metadata">=</stringProp>
  39415. </elementProp>
  39416. </collectionProp>
  39417. </elementProp>
  39418. <stringProp name="HTTPSampler.domain"/>
  39419. <stringProp name="HTTPSampler.port"/>
  39420. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39421. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39422. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39423. <stringProp name="HTTPSampler.contentEncoding"/>
  39424. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/payment-information</stringProp>
  39425. <stringProp name="HTTPSampler.method">POST</stringProp>
  39426. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39427. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39428. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39429. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39430. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39431. <stringProp name="HTTPSampler.embedded_url_re"/>
  39432. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_payment_info_place_order.jmx</stringProp></HTTPSamplerProxy>
  39433. <hashTree>
  39434. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  39435. <collectionProp name="HeaderManager.headers">
  39436. <elementProp name="" elementType="Header">
  39437. <stringProp name="Header.name">Referer</stringProp>
  39438. <stringProp name="Header.value">${host}${base_path}checkout/onepage</stringProp>
  39439. </elementProp>
  39440. <elementProp name="" elementType="Header">
  39441. <stringProp name="Header.name">Content-Type</stringProp>
  39442. <stringProp name="Header.value">application/json; charset=UTF-8 </stringProp>
  39443. </elementProp>
  39444. <elementProp name="" elementType="Header">
  39445. <stringProp name="Header.name">Accept</stringProp>
  39446. <stringProp name="Header.value">application/json</stringProp>
  39447. </elementProp>
  39448. <elementProp name="" elementType="Header">
  39449. <stringProp name="Header.name">X-Requested-With</stringProp>
  39450. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  39451. </elementProp>
  39452. </collectionProp>
  39453. </HeaderManager>
  39454. <hashTree/>
  39455. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert order number" enabled="true">
  39456. <collectionProp name="Asserion.test_strings">
  39457. <stringProp name="-297987887">"[0-9]+"</stringProp>
  39458. </collectionProp>
  39459. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39460. <boolProp name="Assertion.assume_success">false</boolProp>
  39461. <intProp name="Assertion.test_type">2</intProp>
  39462. </ResponseAssertion>
  39463. <hashTree/>
  39464. </hashTree>
  39465. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout success" enabled="true">
  39466. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39467. <collectionProp name="Arguments.arguments"/>
  39468. </elementProp>
  39469. <stringProp name="HTTPSampler.domain"/>
  39470. <stringProp name="HTTPSampler.port"/>
  39471. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39472. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39473. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39474. <stringProp name="HTTPSampler.contentEncoding"/>
  39475. <stringProp name="HTTPSampler.path">${base_path}checkout/onepage/success/</stringProp>
  39476. <stringProp name="HTTPSampler.method">GET</stringProp>
  39477. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39478. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39479. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39480. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39481. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39482. <stringProp name="HTTPSampler.embedded_url_re"/>
  39483. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_success.jmx</stringProp></HTTPSamplerProxy>
  39484. <hashTree>
  39485. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  39486. <collectionProp name="Asserion.test_strings">
  39487. <stringProp name="494863233">Thank you for your purchase!</stringProp>
  39488. <stringProp name="-1590086334">Your order number is</stringProp>
  39489. </collectionProp>
  39490. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39491. <boolProp name="Assertion.assume_success">false</boolProp>
  39492. <intProp name="Assertion.test_type">2</intProp>
  39493. </ResponseAssertion>
  39494. <hashTree/>
  39495. </hashTree>
  39496. </hashTree>
  39497. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  39498. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39499. <collectionProp name="Arguments.arguments"/>
  39500. </elementProp>
  39501. <stringProp name="HTTPSampler.domain"/>
  39502. <stringProp name="HTTPSampler.port"/>
  39503. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39504. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39505. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39506. <stringProp name="HTTPSampler.contentEncoding"/>
  39507. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  39508. <stringProp name="HTTPSampler.method">GET</stringProp>
  39509. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39510. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39511. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39512. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39513. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39514. <stringProp name="HTTPSampler.embedded_url_re"/>
  39515. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  39516. <hashTree>
  39517. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  39518. <collectionProp name="Asserion.test_strings">
  39519. <stringProp name="1723813687">You are signed out.</stringProp>
  39520. </collectionProp>
  39521. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39522. <boolProp name="Assertion.assume_success">false</boolProp>
  39523. <intProp name="Assertion.test_type">2</intProp>
  39524. </ResponseAssertion>
  39525. <hashTree/>
  39526. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Clear Cookie" enabled="true">
  39527. <boolProp name="resetInterpreter">false</boolProp>
  39528. <stringProp name="parameters"/>
  39529. <stringProp name="filename"/>
  39530. <stringProp name="script">curSampler = ctx.getCurrentSampler();
  39531. if(curSampler.getName().contains("Checkout success")) {
  39532. manager = curSampler.getCookieManager();
  39533. manager.clear();
  39534. }
  39535. </stringProp>
  39536. <stringProp name="TestPlan.comments">tool/fragments/ce/customer_checkout/checkout_clear_cookie.jmx</stringProp></BeanShellPostProcessor>
  39537. <hashTree/>
  39538. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  39539. <boolProp name="resetInterpreter">false</boolProp>
  39540. <stringProp name="parameters"/>
  39541. <stringProp name="filename"/>
  39542. <stringProp name="script">
  39543. customerUserList = props.get("customer_emails_list");
  39544. customerUserList.add(vars.get("customer_email"));
  39545. </stringProp>
  39546. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  39547. <hashTree/>
  39548. </hashTree>
  39549. </hashTree>
  39550. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Account management" enabled="true">
  39551. <intProp name="ThroughputController.style">1</intProp>
  39552. <boolProp name="ThroughputController.perThread">false</boolProp>
  39553. <intProp name="ThroughputController.maxThroughput">1</intProp>
  39554. <stringProp name="ThroughputController.percentThroughput">${cAccountManagementPercentage}</stringProp>
  39555. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  39556. <hashTree>
  39557. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  39558. <stringProp name="script">
  39559. var tmpLabel = vars.get("testLabel")
  39560. if (tmpLabel) {
  39561. var testLabel = " (" + tmpLabel + ")"
  39562. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  39563. if (sampler.getName().indexOf(testLabel) == -1) {
  39564. sampler.setName(sampler.getName() + testLabel);
  39565. }
  39566. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  39567. sampler.setName("SetUp - " + sampler.getName());
  39568. }
  39569. } else {
  39570. testLabel = ""
  39571. }
  39572. </stringProp>
  39573. <stringProp name="scriptLanguage">javascript</stringProp>
  39574. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  39575. <hashTree/>
  39576. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  39577. <stringProp name="BeanShellSampler.query">
  39578. vars.put("testLabel", "[C] Account management");
  39579. </stringProp>
  39580. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  39581. </BeanShellSampler>
  39582. <hashTree/>
  39583. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  39584. <collectionProp name="CookieManager.cookies">
  39585. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  39586. <stringProp name="Cookie.value">30</stringProp>
  39587. <stringProp name="Cookie.domain">${host}</stringProp>
  39588. <stringProp name="Cookie.path">/</stringProp>
  39589. <boolProp name="Cookie.secure">false</boolProp>
  39590. <longProp name="Cookie.expires">0</longProp>
  39591. <boolProp name="Cookie.path_specified">true</boolProp>
  39592. <boolProp name="Cookie.domain_specified">true</boolProp>
  39593. </elementProp>
  39594. <elementProp name="product_list_limit" elementType="Cookie" testname="form_key">
  39595. <stringProp name="Cookie.value">${form_key}</stringProp>
  39596. <stringProp name="Cookie.domain">${host}</stringProp>
  39597. <stringProp name="Cookie.path">${base_path}</stringProp>
  39598. <boolProp name="Cookie.secure">false</boolProp>
  39599. <longProp name="Cookie.expires">0</longProp>
  39600. <boolProp name="Cookie.path_specified">true</boolProp>
  39601. <boolProp name="Cookie.domain_specified">true</boolProp>
  39602. </elementProp>
  39603. </collectionProp>
  39604. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  39605. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager.jmx</stringProp></CookieManager>
  39606. <hashTree/>
  39607. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  39608. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  39609. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  39610. <hashTree>
  39611. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  39612. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  39613. <stringProp name="BeanShellSampler.query">
  39614. customerUserList = props.get("customer_emails_list");
  39615. customerUser = customerUserList.poll();
  39616. if (customerUser == null) {
  39617. SampleResult.setResponseMessage("customerUser list is empty");
  39618. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  39619. IsSuccess=false;
  39620. SampleResult.setSuccessful(false);
  39621. SampleResult.setStopThread(true);
  39622. }
  39623. vars.put("customer_email", customerUser);
  39624. </stringProp>
  39625. <stringProp name="BeanShellSampler.filename"/>
  39626. <stringProp name="BeanShellSampler.parameters"/>
  39627. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  39628. </BeanShellSampler>
  39629. <hashTree/>
  39630. </hashTree>
  39631. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Home Page" enabled="true">
  39632. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39633. <collectionProp name="Arguments.arguments"/>
  39634. </elementProp>
  39635. <stringProp name="HTTPSampler.domain"/>
  39636. <stringProp name="HTTPSampler.port"/>
  39637. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39638. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39639. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39640. <stringProp name="HTTPSampler.contentEncoding"/>
  39641. <stringProp name="HTTPSampler.path">${base_path}</stringProp>
  39642. <stringProp name="HTTPSampler.method">GET</stringProp>
  39643. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39644. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39645. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39646. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39647. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39648. <stringProp name="HTTPSampler.embedded_url_re"/>
  39649. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_home_page.jmx</stringProp></HTTPSamplerProxy>
  39650. <hashTree>
  39651. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39652. <collectionProp name="Asserion.test_strings">
  39653. <stringProp name="571386695">&lt;title&gt;Home page&lt;/title&gt;</stringProp>
  39654. </collectionProp>
  39655. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39656. <boolProp name="Assertion.assume_success">false</boolProp>
  39657. <intProp name="Assertion.test_type">2</intProp>
  39658. </ResponseAssertion>
  39659. <hashTree/>
  39660. </hashTree>
  39661. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Login Page" enabled="true">
  39662. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39663. <collectionProp name="Arguments.arguments"/>
  39664. </elementProp>
  39665. <stringProp name="HTTPSampler.domain"/>
  39666. <stringProp name="HTTPSampler.port"/>
  39667. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39668. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39669. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39670. <stringProp name="HTTPSampler.contentEncoding"/>
  39671. <stringProp name="HTTPSampler.path">${base_path}customer/account/login/</stringProp>
  39672. <stringProp name="HTTPSampler.method">GET</stringProp>
  39673. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39674. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39675. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39676. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39677. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39678. <stringProp name="HTTPSampler.embedded_url_re"/>
  39679. <stringProp name="TestPlan.comments">tool/fragments/ce/common/open_login_page.jmx</stringProp></HTTPSamplerProxy>
  39680. <hashTree>
  39681. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39682. <collectionProp name="Asserion.test_strings">
  39683. <stringProp name="637394530">&lt;title&gt;Customer Login&lt;/title&gt;</stringProp>
  39684. </collectionProp>
  39685. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39686. <boolProp name="Assertion.assume_success">false</boolProp>
  39687. <intProp name="Assertion.test_type">2</intProp>
  39688. </ResponseAssertion>
  39689. <hashTree/>
  39690. </hashTree>
  39691. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  39692. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39693. <collectionProp name="Arguments.arguments">
  39694. <elementProp name="form_key" elementType="HTTPArgument">
  39695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39696. <stringProp name="Argument.value">${form_key}</stringProp>
  39697. <stringProp name="Argument.metadata">=</stringProp>
  39698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39699. <stringProp name="Argument.name">form_key</stringProp>
  39700. </elementProp>
  39701. <elementProp name="login[username]" elementType="HTTPArgument">
  39702. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39703. <stringProp name="Argument.value">${customer_email}</stringProp>
  39704. <stringProp name="Argument.metadata">=</stringProp>
  39705. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39706. <stringProp name="Argument.name">login[username]</stringProp>
  39707. </elementProp>
  39708. <elementProp name="login[password]" elementType="HTTPArgument">
  39709. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39710. <stringProp name="Argument.value">${customer_password}</stringProp>
  39711. <stringProp name="Argument.metadata">=</stringProp>
  39712. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39713. <stringProp name="Argument.name">login[password]</stringProp>
  39714. </elementProp>
  39715. <elementProp name="send" elementType="HTTPArgument">
  39716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39717. <stringProp name="Argument.value"/>
  39718. <stringProp name="Argument.metadata">=</stringProp>
  39719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39720. <stringProp name="Argument.name">send</stringProp>
  39721. </elementProp>
  39722. </collectionProp>
  39723. </elementProp>
  39724. <stringProp name="HTTPSampler.domain"/>
  39725. <stringProp name="HTTPSampler.port"/>
  39726. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39727. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39728. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39729. <stringProp name="HTTPSampler.contentEncoding"/>
  39730. <stringProp name="HTTPSampler.path">${base_path}customer/account/loginPost/</stringProp>
  39731. <stringProp name="HTTPSampler.method">POST</stringProp>
  39732. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39733. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39734. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39735. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39736. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39737. <stringProp name="HTTPSampler.embedded_url_re"/>
  39738. <stringProp name="TestPlan.comments">tool/fragments/ce/common/login.jmx</stringProp></HTTPSamplerProxy>
  39739. <hashTree>
  39740. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39741. <collectionProp name="Asserion.test_strings">
  39742. <stringProp name="1312950388">&lt;title&gt;My Account&lt;/title&gt;</stringProp>
  39743. </collectionProp>
  39744. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39745. <boolProp name="Assertion.assume_success">false</boolProp>
  39746. <intProp name="Assertion.test_type">2</intProp>
  39747. </ResponseAssertion>
  39748. <hashTree/>
  39749. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Address" enabled="true">
  39750. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  39751. <stringProp name="RegexExtractor.refname">addressId</stringProp>
  39752. <stringProp name="RegexExtractor.regex">customer/address/edit/id/([^'"]+)/</stringProp>
  39753. <stringProp name="RegexExtractor.template">$1$</stringProp>
  39754. <stringProp name="RegexExtractor.default"/>
  39755. <stringProp name="RegexExtractor.match_number">1</stringProp>
  39756. </RegexExtractor>
  39757. <hashTree/>
  39758. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert addressId extracted" enabled="true">
  39759. <collectionProp name="Asserion.test_strings">
  39760. <stringProp name="2845929">^.+$</stringProp>
  39761. </collectionProp>
  39762. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39763. <boolProp name="Assertion.assume_success">false</boolProp>
  39764. <intProp name="Assertion.test_type">1</intProp>
  39765. <stringProp name="Assertion.scope">variable</stringProp>
  39766. <stringProp name="Scope.variable">addressId</stringProp>
  39767. </ResponseAssertion>
  39768. <hashTree/>
  39769. </hashTree>
  39770. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Load Customer Private Data" enabled="true">
  39771. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39772. <collectionProp name="Arguments.arguments">
  39773. <elementProp name="sections" elementType="HTTPArgument">
  39774. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39775. <stringProp name="Argument.value"/>
  39776. <stringProp name="Argument.metadata">=</stringProp>
  39777. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39778. <stringProp name="Argument.name">sections</stringProp>
  39779. </elementProp>
  39780. <elementProp name="force_new_section_timestamp" elementType="HTTPArgument">
  39781. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39782. <stringProp name="Argument.value">false</stringProp>
  39783. <stringProp name="Argument.metadata">=</stringProp>
  39784. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39785. <stringProp name="Argument.name">force_new_section_timestamp</stringProp>
  39786. </elementProp>
  39787. <elementProp name="_" elementType="HTTPArgument">
  39788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  39789. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  39790. <stringProp name="Argument.metadata">=</stringProp>
  39791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  39792. <stringProp name="Argument.name">_</stringProp>
  39793. </elementProp>
  39794. </collectionProp>
  39795. </elementProp>
  39796. <stringProp name="HTTPSampler.domain"/>
  39797. <stringProp name="HTTPSampler.port"/>
  39798. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39799. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39800. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39801. <stringProp name="HTTPSampler.contentEncoding"/>
  39802. <stringProp name="HTTPSampler.path">${base_path}customer/section/load/</stringProp>
  39803. <stringProp name="HTTPSampler.method">GET</stringProp>
  39804. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39805. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39806. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39807. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39808. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39809. <stringProp name="HTTPSampler.embedded_url_re"/>
  39810. </HTTPSamplerProxy>
  39811. <hashTree/>
  39812. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Orders" enabled="true">
  39813. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39814. <collectionProp name="Arguments.arguments"/>
  39815. </elementProp>
  39816. <stringProp name="HTTPSampler.domain"/>
  39817. <stringProp name="HTTPSampler.port"/>
  39818. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39819. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39820. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39821. <stringProp name="HTTPSampler.contentEncoding"/>
  39822. <stringProp name="HTTPSampler.path">${base_path}sales/order/history/</stringProp>
  39823. <stringProp name="HTTPSampler.method">GET</stringProp>
  39824. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39825. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39826. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39827. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39828. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39829. <stringProp name="HTTPSampler.embedded_url_re"/>
  39830. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/my_orders.jmx</stringProp></HTTPSamplerProxy>
  39831. <hashTree>
  39832. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39833. <collectionProp name="Asserion.test_strings">
  39834. <stringProp name="220295440">&lt;title&gt;My Orders&lt;/title&gt;</stringProp>
  39835. </collectionProp>
  39836. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39837. <boolProp name="Assertion.assume_success">false</boolProp>
  39838. <intProp name="Assertion.test_type">2</intProp>
  39839. </ResponseAssertion>
  39840. <hashTree/>
  39841. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
  39842. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  39843. <stringProp name="RegexExtractor.refname">orderId</stringProp>
  39844. <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
  39845. <stringProp name="RegexExtractor.template">$1$</stringProp>
  39846. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  39847. <stringProp name="RegexExtractor.match_number">1</stringProp>
  39848. </RegexExtractor>
  39849. <hashTree/>
  39850. </hashTree>
  39851. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Orders Controller" enabled="true">
  39852. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/if_orders.jmx</stringProp>
  39853. <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
  39854. <boolProp name="IfController.evaluateAll">false</boolProp>
  39855. </IfController>
  39856. <hashTree>
  39857. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order" enabled="true">
  39858. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39859. <collectionProp name="Arguments.arguments"/>
  39860. </elementProp>
  39861. <stringProp name="HTTPSampler.domain"/>
  39862. <stringProp name="HTTPSampler.port"/>
  39863. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39864. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39865. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39866. <stringProp name="HTTPSampler.contentEncoding"/>
  39867. <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
  39868. <stringProp name="HTTPSampler.method">GET</stringProp>
  39869. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39870. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39871. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39872. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39873. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39874. <stringProp name="HTTPSampler.embedded_url_re"/>
  39875. </HTTPSamplerProxy>
  39876. <hashTree>
  39877. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39878. <collectionProp name="Asserion.test_strings">
  39879. <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
  39880. </collectionProp>
  39881. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39882. <boolProp name="Assertion.assume_success">false</boolProp>
  39883. <intProp name="Assertion.test_type">2</intProp>
  39884. </ResponseAssertion>
  39885. <hashTree/>
  39886. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract shipment tab" enabled="true">
  39887. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  39888. <stringProp name="RegexExtractor.refname">shipment_tab</stringProp>
  39889. <stringProp name="RegexExtractor.regex">sales/order/shipment/order_id/(\d+)..Order Shipments</stringProp>
  39890. <stringProp name="RegexExtractor.template">$1$</stringProp>
  39891. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  39892. <stringProp name="RegexExtractor.match_number">1</stringProp>
  39893. </RegexExtractor>
  39894. <hashTree/>
  39895. </hashTree>
  39896. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Shipments Controller" enabled="true">
  39897. <stringProp name="TestPlan.comments">May not have shipped</stringProp>
  39898. <stringProp name="IfController.condition">"${shipment_tab}" != "NOT_FOUND"</stringProp>
  39899. <boolProp name="IfController.evaluateAll">false</boolProp>
  39900. </IfController>
  39901. <hashTree>
  39902. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Order Shipments" enabled="true">
  39903. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39904. <collectionProp name="Arguments.arguments"/>
  39905. </elementProp>
  39906. <stringProp name="HTTPSampler.domain"/>
  39907. <stringProp name="HTTPSampler.port"/>
  39908. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39909. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39910. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39911. <stringProp name="HTTPSampler.contentEncoding"/>
  39912. <stringProp name="HTTPSampler.path">${base_path}sales/order/shipment/order_id/${orderId}</stringProp>
  39913. <stringProp name="HTTPSampler.method">GET</stringProp>
  39914. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39915. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39916. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39917. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39918. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39919. <stringProp name="HTTPSampler.embedded_url_re"/>
  39920. </HTTPSamplerProxy>
  39921. <hashTree>
  39922. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39923. <collectionProp name="Asserion.test_strings">
  39924. <stringProp name="120578727">Track this shipment</stringProp>
  39925. </collectionProp>
  39926. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39927. <boolProp name="Assertion.assume_success">false</boolProp>
  39928. <intProp name="Assertion.test_type">2</intProp>
  39929. </ResponseAssertion>
  39930. <hashTree/>
  39931. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract popup link" enabled="true">
  39932. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  39933. <stringProp name="RegexExtractor.refname">popupLink</stringProp>
  39934. <stringProp name="RegexExtractor.regex">popupWindow": {"windowURL":"([^'"]+)",</stringProp>
  39935. <stringProp name="RegexExtractor.template">$1$</stringProp>
  39936. <stringProp name="RegexExtractor.default"/>
  39937. <stringProp name="RegexExtractor.match_number">1</stringProp>
  39938. </RegexExtractor>
  39939. <hashTree/>
  39940. </hashTree>
  39941. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Track Shipment" enabled="true">
  39942. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39943. <collectionProp name="Arguments.arguments"/>
  39944. </elementProp>
  39945. <stringProp name="HTTPSampler.domain"/>
  39946. <stringProp name="HTTPSampler.port"/>
  39947. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39948. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39949. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39950. <stringProp name="HTTPSampler.contentEncoding"/>
  39951. <stringProp name="HTTPSampler.path">${popupLink}</stringProp>
  39952. <stringProp name="HTTPSampler.method">GET</stringProp>
  39953. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39954. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39955. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39956. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39957. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39958. <stringProp name="HTTPSampler.embedded_url_re"/>
  39959. </HTTPSamplerProxy>
  39960. <hashTree>
  39961. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39962. <collectionProp name="Asserion.test_strings">
  39963. <stringProp name="-760430210">&lt;title&gt;Tracking Information&lt;/title&gt;</stringProp>
  39964. </collectionProp>
  39965. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39966. <boolProp name="Assertion.assume_success">false</boolProp>
  39967. <intProp name="Assertion.test_type">2</intProp>
  39968. </ResponseAssertion>
  39969. <hashTree/>
  39970. </hashTree>
  39971. </hashTree>
  39972. </hashTree>
  39973. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Downloadable Products" enabled="true">
  39974. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  39975. <collectionProp name="Arguments.arguments"/>
  39976. </elementProp>
  39977. <stringProp name="HTTPSampler.domain"/>
  39978. <stringProp name="HTTPSampler.port"/>
  39979. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  39980. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  39981. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  39982. <stringProp name="HTTPSampler.contentEncoding"/>
  39983. <stringProp name="HTTPSampler.path">${base_path}downloadable/customer/products</stringProp>
  39984. <stringProp name="HTTPSampler.method">GET</stringProp>
  39985. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  39986. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  39987. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  39988. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  39989. <boolProp name="HTTPSampler.monitor">false</boolProp>
  39990. <stringProp name="HTTPSampler.embedded_url_re"/>
  39991. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/my_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
  39992. <hashTree>
  39993. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  39994. <collectionProp name="Asserion.test_strings">
  39995. <stringProp name="358050505">&lt;title&gt;My Downloadable Products&lt;/title&gt;</stringProp>
  39996. </collectionProp>
  39997. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  39998. <boolProp name="Assertion.assume_success">false</boolProp>
  39999. <intProp name="Assertion.test_type">2</intProp>
  40000. </ResponseAssertion>
  40001. <hashTree/>
  40002. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract orderId" enabled="true">
  40003. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40004. <stringProp name="RegexExtractor.refname">orderId</stringProp>
  40005. <stringProp name="RegexExtractor.regex">sales/order/view/order_id/(\d+)/</stringProp>
  40006. <stringProp name="RegexExtractor.template">$1$</stringProp>
  40007. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  40008. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40009. </RegexExtractor>
  40010. <hashTree/>
  40011. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract linkId" enabled="true">
  40012. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40013. <stringProp name="RegexExtractor.refname">linkId</stringProp>
  40014. <stringProp name="RegexExtractor.regex">downloadable/download/link/id/(\d+)/</stringProp>
  40015. <stringProp name="RegexExtractor.template">$1$</stringProp>
  40016. <stringProp name="RegexExtractor.default"/>
  40017. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40018. </RegexExtractor>
  40019. <hashTree/>
  40020. </hashTree>
  40021. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Downloadables Controller" enabled="true">
  40022. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/if_downloadables.jmx</stringProp>
  40023. <stringProp name="IfController.condition">"${orderId}" != "NOT_FOUND"</stringProp>
  40024. <boolProp name="IfController.evaluateAll">false</boolProp>
  40025. </IfController>
  40026. <hashTree>
  40027. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Downloadable Product" enabled="true">
  40028. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40029. <collectionProp name="Arguments.arguments"/>
  40030. </elementProp>
  40031. <stringProp name="HTTPSampler.domain"/>
  40032. <stringProp name="HTTPSampler.port"/>
  40033. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40034. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40035. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40036. <stringProp name="HTTPSampler.contentEncoding"/>
  40037. <stringProp name="HTTPSampler.path">${base_path}sales/order/view/order_id/${orderId}</stringProp>
  40038. <stringProp name="HTTPSampler.method">GET</stringProp>
  40039. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40040. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40041. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40042. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40043. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40044. <stringProp name="HTTPSampler.embedded_url_re"/>
  40045. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/view_downloadable_products.jmx</stringProp></HTTPSamplerProxy>
  40046. <hashTree>
  40047. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  40048. <collectionProp name="Asserion.test_strings">
  40049. <stringProp name="1956770127">&lt;title&gt;Order #</stringProp>
  40050. </collectionProp>
  40051. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40052. <boolProp name="Assertion.assume_success">false</boolProp>
  40053. <intProp name="Assertion.test_type">2</intProp>
  40054. </ResponseAssertion>
  40055. <hashTree/>
  40056. </hashTree>
  40057. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Download Product" enabled="true">
  40058. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40059. <collectionProp name="Arguments.arguments"/>
  40060. </elementProp>
  40061. <stringProp name="HTTPSampler.domain"/>
  40062. <stringProp name="HTTPSampler.port"/>
  40063. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40064. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40065. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40066. <stringProp name="HTTPSampler.contentEncoding"/>
  40067. <stringProp name="HTTPSampler.path">${base_path}downloadable/download/link/id/${linkId}</stringProp>
  40068. <stringProp name="HTTPSampler.method">GET</stringProp>
  40069. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40070. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40071. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40072. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40073. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40074. <stringProp name="HTTPSampler.embedded_url_re"/>
  40075. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/download_product.jmx</stringProp></HTTPSamplerProxy>
  40076. <hashTree/>
  40077. </hashTree>
  40078. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Wish List" enabled="true">
  40079. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40080. <collectionProp name="Arguments.arguments"/>
  40081. </elementProp>
  40082. <stringProp name="HTTPSampler.domain"/>
  40083. <stringProp name="HTTPSampler.port"/>
  40084. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40085. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40086. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40087. <stringProp name="HTTPSampler.contentEncoding"/>
  40088. <stringProp name="HTTPSampler.path">${base_path}wishlist</stringProp>
  40089. <stringProp name="HTTPSampler.method">GET</stringProp>
  40090. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40091. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40092. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40093. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40094. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40095. <stringProp name="HTTPSampler.embedded_url_re"/>
  40096. </HTTPSamplerProxy>
  40097. <hashTree>
  40098. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  40099. <collectionProp name="Asserion.test_strings">
  40100. <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
  40101. </collectionProp>
  40102. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40103. <boolProp name="Assertion.assume_success">false</boolProp>
  40104. <intProp name="Assertion.test_type">2</intProp>
  40105. </ResponseAssertion>
  40106. <hashTree/>
  40107. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract wishlistId" enabled="true">
  40108. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40109. <stringProp name="RegexExtractor.refname">wishlistId</stringProp>
  40110. <stringProp name="RegexExtractor.regex">wishlist/index/update/wishlist_id/([^'"]+)/</stringProp>
  40111. <stringProp name="RegexExtractor.template">$1$</stringProp>
  40112. <stringProp name="RegexExtractor.default"/>
  40113. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40114. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/my_wish_list.jmx</stringProp>
  40115. </RegexExtractor>
  40116. <hashTree/>
  40117. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Verify that there are items in the wishlist" enabled="true">
  40118. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40119. <stringProp name="RegexExtractor.refname">buttonTitle</stringProp>
  40120. <stringProp name="RegexExtractor.regex">Update Wish List</stringProp>
  40121. <stringProp name="RegexExtractor.template">FOUND</stringProp>
  40122. <stringProp name="RegexExtractor.default">NOT_FOUND</stringProp>
  40123. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40124. </RegexExtractor>
  40125. <hashTree/>
  40126. </hashTree>
  40127. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Wish List Controller" enabled="true">
  40128. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/if_wishlist.jmx</stringProp>
  40129. <stringProp name="IfController.condition">"${buttonTitle}" === "FOUND"</stringProp>
  40130. <boolProp name="IfController.evaluateAll">false</boolProp>
  40131. </IfController>
  40132. <hashTree>
  40133. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Share Wish List" enabled="true">
  40134. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40135. <collectionProp name="Arguments.arguments"/>
  40136. </elementProp>
  40137. <stringProp name="HTTPSampler.domain"/>
  40138. <stringProp name="HTTPSampler.port"/>
  40139. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40140. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40141. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40142. <stringProp name="HTTPSampler.contentEncoding"/>
  40143. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/share/wishlist_id/${wishlistId}/</stringProp>
  40144. <stringProp name="HTTPSampler.method">GET</stringProp>
  40145. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40146. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40147. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40148. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40149. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40150. <stringProp name="HTTPSampler.embedded_url_re"/>
  40151. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/share_wish_list.jmx</stringProp></HTTPSamplerProxy>
  40152. <hashTree>
  40153. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  40154. <collectionProp name="Asserion.test_strings">
  40155. <stringProp name="1257102154">&lt;title&gt;Wish List Sharing&lt;/title&gt;</stringProp>
  40156. </collectionProp>
  40157. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40158. <boolProp name="Assertion.assume_success">false</boolProp>
  40159. <intProp name="Assertion.test_type">2</intProp>
  40160. </ResponseAssertion>
  40161. <hashTree/>
  40162. </hashTree>
  40163. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Send Wish List" enabled="true">
  40164. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40165. <collectionProp name="Arguments.arguments">
  40166. <elementProp name="form_key" elementType="HTTPArgument">
  40167. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40168. <stringProp name="Argument.value">${form_key}</stringProp>
  40169. <stringProp name="Argument.metadata">=</stringProp>
  40170. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40171. <stringProp name="Argument.name">form_key</stringProp>
  40172. <stringProp name="Argument.desc">true</stringProp>
  40173. </elementProp>
  40174. <elementProp name="emails" elementType="HTTPArgument">
  40175. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40176. <stringProp name="Argument.value">${customer_email}</stringProp>
  40177. <stringProp name="Argument.metadata">=</stringProp>
  40178. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40179. <stringProp name="Argument.name">emails</stringProp>
  40180. </elementProp>
  40181. <elementProp name="message" elementType="HTTPArgument">
  40182. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40183. <stringProp name="Argument.value">[TEST] See my wishlist!!!</stringProp>
  40184. <stringProp name="Argument.metadata">=</stringProp>
  40185. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40186. <stringProp name="Argument.name">message</stringProp>
  40187. </elementProp>
  40188. </collectionProp>
  40189. </elementProp>
  40190. <stringProp name="HTTPSampler.domain"/>
  40191. <stringProp name="HTTPSampler.port"/>
  40192. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40193. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40194. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40195. <stringProp name="HTTPSampler.contentEncoding"/>
  40196. <stringProp name="HTTPSampler.path">${base_path}wishlist/index/send/wishlist_id/${wishlistId}/</stringProp>
  40197. <stringProp name="HTTPSampler.method">POST</stringProp>
  40198. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40199. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40200. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40201. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40202. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40203. <stringProp name="HTTPSampler.embedded_url_re"/>
  40204. <stringProp name="TestPlan.comments">tool/fragments/ce/account_management/send_wish_list.jmx</stringProp></HTTPSamplerProxy>
  40205. <hashTree>
  40206. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  40207. <collectionProp name="Asserion.test_strings">
  40208. <stringProp name="-1907714722">&lt;title&gt;My Wish List&lt;/title&gt;</stringProp>
  40209. </collectionProp>
  40210. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40211. <boolProp name="Assertion.assume_success">false</boolProp>
  40212. <intProp name="Assertion.test_type">2</intProp>
  40213. </ResponseAssertion>
  40214. <hashTree/>
  40215. </hashTree>
  40216. </hashTree>
  40217. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  40218. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40219. <collectionProp name="Arguments.arguments"/>
  40220. </elementProp>
  40221. <stringProp name="HTTPSampler.domain"/>
  40222. <stringProp name="HTTPSampler.port"/>
  40223. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40224. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40225. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40226. <stringProp name="HTTPSampler.contentEncoding"/>
  40227. <stringProp name="HTTPSampler.path">${base_path}customer/account/logout/</stringProp>
  40228. <stringProp name="HTTPSampler.method">GET</stringProp>
  40229. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40230. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40231. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40232. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40233. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40234. <stringProp name="HTTPSampler.embedded_url_re"/>
  40235. <stringProp name="TestPlan.comments">tool/fragments/ce/common/logout.jmx</stringProp></HTTPSamplerProxy>
  40236. <hashTree>
  40237. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  40238. <collectionProp name="Asserion.test_strings">
  40239. <stringProp name="1723813687">You are signed out.</stringProp>
  40240. </collectionProp>
  40241. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40242. <boolProp name="Assertion.assume_success">false</boolProp>
  40243. <intProp name="Assertion.test_type">2</intProp>
  40244. </ResponseAssertion>
  40245. <hashTree/>
  40246. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  40247. <boolProp name="resetInterpreter">false</boolProp>
  40248. <stringProp name="parameters"/>
  40249. <stringProp name="filename"/>
  40250. <stringProp name="script">
  40251. customerUserList = props.get("customer_emails_list");
  40252. customerUserList.add(vars.get("customer_email"));
  40253. </stringProp>
  40254. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  40255. <hashTree/>
  40256. </hashTree>
  40257. </hashTree>
  40258. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin CMS Management" enabled="true">
  40259. <intProp name="ThroughputController.style">1</intProp>
  40260. <boolProp name="ThroughputController.perThread">false</boolProp>
  40261. <intProp name="ThroughputController.maxThroughput">1</intProp>
  40262. <stringProp name="ThroughputController.percentThroughput">${cAdminCMSManagementPercentage}</stringProp>
  40263. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  40264. <hashTree>
  40265. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  40266. <stringProp name="script">
  40267. var tmpLabel = vars.get("testLabel")
  40268. if (tmpLabel) {
  40269. var testLabel = " (" + tmpLabel + ")"
  40270. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  40271. if (sampler.getName().indexOf(testLabel) == -1) {
  40272. sampler.setName(sampler.getName() + testLabel);
  40273. }
  40274. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  40275. sampler.setName("SetUp - " + sampler.getName());
  40276. }
  40277. } else {
  40278. testLabel = ""
  40279. }
  40280. </stringProp>
  40281. <stringProp name="scriptLanguage">javascript</stringProp>
  40282. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  40283. <hashTree/>
  40284. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  40285. <stringProp name="BeanShellSampler.query">
  40286. vars.put("testLabel", "[C] Admin CMS Management");
  40287. </stringProp>
  40288. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  40289. </BeanShellSampler>
  40290. <hashTree/>
  40291. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  40292. <stringProp name="script">
  40293. function getFormKeyFromResponse()
  40294. {
  40295. var url = prev.getUrlAsString(),
  40296. responseCode = prev.getResponseCode(),
  40297. formKey = null;
  40298. searchPattern = /var FORM_KEY = '(.+)'/;
  40299. if (responseCode == "200" &amp;&amp; url) {
  40300. response = prev.getResponseDataAsString();
  40301. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  40302. }
  40303. return formKey;
  40304. }
  40305. formKey = vars.get("form_key_storage");
  40306. currentFormKey = getFormKeyFromResponse();
  40307. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  40308. vars.put("form_key_storage", currentFormKey);
  40309. }
  40310. </stringProp>
  40311. <stringProp name="scriptLanguage">javascript</stringProp>
  40312. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  40313. <hashTree/>
  40314. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  40315. <stringProp name="script">
  40316. formKey = vars.get("form_key_storage");
  40317. if (formKey
  40318. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  40319. &amp;&amp; sampler.getMethod() == "POST")
  40320. {
  40321. arguments = sampler.getArguments();
  40322. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  40323. {
  40324. argument = arguments.getArgument(i);
  40325. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  40326. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  40327. argument.setValue(formKey);
  40328. }
  40329. }
  40330. }
  40331. </stringProp>
  40332. <stringProp name="scriptLanguage">javascript</stringProp>
  40333. </JSR223PreProcessor>
  40334. <hashTree/>
  40335. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  40336. <collectionProp name="CookieManager.cookies"/>
  40337. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  40338. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  40339. <hashTree/>
  40340. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  40341. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  40342. </GenericController>
  40343. <hashTree>
  40344. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  40345. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  40346. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  40347. <hashTree>
  40348. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  40349. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  40350. <stringProp name="BeanShellSampler.query">
  40351. adminUser = "none";
  40352. adminUserList = props.get("adminUserList");
  40353. adminUserListIterator = props.get("adminUserListIterator");
  40354. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  40355. if (adminUsersDistribution == 1) {
  40356. adminUser = adminUserList.poll();
  40357. } else {
  40358. if (!adminUserListIterator.hasNext()) {
  40359. adminUserListIterator = adminUserList.descendingIterator();
  40360. }
  40361. adminUser = adminUserListIterator.next();
  40362. }
  40363. if (adminUser == "none") {
  40364. SampleResult.setResponseMessage("adminUser list is empty");
  40365. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  40366. IsSuccess=false;
  40367. SampleResult.setSuccessful(false);
  40368. SampleResult.setStopThread(true);
  40369. }
  40370. vars.put("admin_user", adminUser);
  40371. </stringProp>
  40372. <stringProp name="BeanShellSampler.filename"/>
  40373. <stringProp name="BeanShellSampler.parameters"/>
  40374. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  40375. </BeanShellSampler>
  40376. <hashTree/>
  40377. </hashTree>
  40378. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  40379. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40380. <collectionProp name="Arguments.arguments"/>
  40381. </elementProp>
  40382. <stringProp name="HTTPSampler.domain"/>
  40383. <stringProp name="HTTPSampler.port"/>
  40384. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40385. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40386. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40387. <stringProp name="HTTPSampler.contentEncoding"/>
  40388. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  40389. <stringProp name="HTTPSampler.method">GET</stringProp>
  40390. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40391. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40392. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40393. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40394. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40395. <stringProp name="HTTPSampler.embedded_url_re"/>
  40396. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  40397. <hashTree>
  40398. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  40399. <collectionProp name="Asserion.test_strings">
  40400. <stringProp name="-1397214398">Welcome</stringProp>
  40401. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  40402. </collectionProp>
  40403. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40404. <boolProp name="Assertion.assume_success">false</boolProp>
  40405. <intProp name="Assertion.test_type">2</intProp>
  40406. </ResponseAssertion>
  40407. <hashTree/>
  40408. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  40409. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40410. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  40411. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  40412. <stringProp name="RegexExtractor.template">$1$</stringProp>
  40413. <stringProp name="RegexExtractor.default"/>
  40414. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40415. </RegexExtractor>
  40416. <hashTree/>
  40417. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  40418. <collectionProp name="Asserion.test_strings">
  40419. <stringProp name="2845929">^.+$</stringProp>
  40420. </collectionProp>
  40421. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40422. <boolProp name="Assertion.assume_success">false</boolProp>
  40423. <intProp name="Assertion.test_type">1</intProp>
  40424. <stringProp name="Assertion.scope">variable</stringProp>
  40425. <stringProp name="Scope.variable">admin_form_key</stringProp>
  40426. </ResponseAssertion>
  40427. <hashTree/>
  40428. </hashTree>
  40429. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  40430. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40431. <collectionProp name="Arguments.arguments">
  40432. <elementProp name="dummy" elementType="HTTPArgument">
  40433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40434. <stringProp name="Argument.value"/>
  40435. <stringProp name="Argument.metadata">=</stringProp>
  40436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40437. <stringProp name="Argument.name">dummy</stringProp>
  40438. </elementProp>
  40439. <elementProp name="form_key" elementType="HTTPArgument">
  40440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40441. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  40442. <stringProp name="Argument.metadata">=</stringProp>
  40443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40444. <stringProp name="Argument.name">form_key</stringProp>
  40445. </elementProp>
  40446. <elementProp name="login[password]" elementType="HTTPArgument">
  40447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40448. <stringProp name="Argument.value">${admin_password}</stringProp>
  40449. <stringProp name="Argument.metadata">=</stringProp>
  40450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40451. <stringProp name="Argument.name">login[password]</stringProp>
  40452. </elementProp>
  40453. <elementProp name="login[username]" elementType="HTTPArgument">
  40454. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40455. <stringProp name="Argument.value">${admin_user}</stringProp>
  40456. <stringProp name="Argument.metadata">=</stringProp>
  40457. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40458. <stringProp name="Argument.name">login[username]</stringProp>
  40459. </elementProp>
  40460. </collectionProp>
  40461. </elementProp>
  40462. <stringProp name="HTTPSampler.domain"/>
  40463. <stringProp name="HTTPSampler.port"/>
  40464. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40465. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40466. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40467. <stringProp name="HTTPSampler.contentEncoding"/>
  40468. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  40469. <stringProp name="HTTPSampler.method">POST</stringProp>
  40470. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40471. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40472. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40473. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40474. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  40475. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40476. <stringProp name="HTTPSampler.embedded_url_re"/>
  40477. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  40478. </HTTPSamplerProxy>
  40479. <hashTree>
  40480. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  40481. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40482. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  40483. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  40484. <stringProp name="RegexExtractor.template">$1$</stringProp>
  40485. <stringProp name="RegexExtractor.default"/>
  40486. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40487. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  40488. <hashTree/>
  40489. </hashTree>
  40490. </hashTree>
  40491. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  40492. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  40493. </GenericController>
  40494. <hashTree>
  40495. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin CMS Management" enabled="true">
  40496. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_cms_management/admin_cms_management.jmx</stringProp>
  40497. </TestFragmentController>
  40498. <hashTree>
  40499. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  40500. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40501. <collectionProp name="Arguments.arguments"/>
  40502. </elementProp>
  40503. <stringProp name="HTTPSampler.domain"/>
  40504. <stringProp name="HTTPSampler.port"/>
  40505. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40506. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40507. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40508. <stringProp name="HTTPSampler.contentEncoding"/>
  40509. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/</stringProp>
  40510. <stringProp name="HTTPSampler.method">GET</stringProp>
  40511. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40512. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40513. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40514. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40515. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40516. <stringProp name="HTTPSampler.embedded_url_re"/>
  40517. </HTTPSamplerProxy>
  40518. <hashTree/>
  40519. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  40520. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40521. <collectionProp name="Arguments.arguments"/>
  40522. </elementProp>
  40523. <stringProp name="HTTPSampler.domain"/>
  40524. <stringProp name="HTTPSampler.port"/>
  40525. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40526. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40527. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40528. <stringProp name="HTTPSampler.contentEncoding"/>
  40529. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/new</stringProp>
  40530. <stringProp name="HTTPSampler.method">GET</stringProp>
  40531. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40532. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40533. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40534. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40535. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40536. <stringProp name="HTTPSampler.embedded_url_re"/>
  40537. </HTTPSamplerProxy>
  40538. <hashTree/>
  40539. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  40540. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40541. <collectionProp name="Arguments.arguments">
  40542. <elementProp name="content" elementType="HTTPArgument">
  40543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40544. <stringProp name="Argument.value">&lt;p&gt;CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  40545. <stringProp name="Argument.metadata">=</stringProp>
  40546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40547. <stringProp name="Argument.name">content</stringProp>
  40548. </elementProp>
  40549. <elementProp name="content_heading" elementType="HTTPArgument">
  40550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40551. <stringProp name="Argument.value"/>
  40552. <stringProp name="Argument.metadata">=</stringProp>
  40553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40554. <stringProp name="Argument.name">content_heading</stringProp>
  40555. </elementProp>
  40556. <elementProp name="form_key" elementType="HTTPArgument">
  40557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40558. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  40559. <stringProp name="Argument.metadata">=</stringProp>
  40560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40561. <stringProp name="Argument.name">form_key</stringProp>
  40562. </elementProp>
  40563. <elementProp name="identifier" elementType="HTTPArgument">
  40564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40565. <stringProp name="Argument.value"/>
  40566. <stringProp name="Argument.metadata">=</stringProp>
  40567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40568. <stringProp name="Argument.name">identifier</stringProp>
  40569. </elementProp>
  40570. <elementProp name="is_active" elementType="HTTPArgument">
  40571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40572. <stringProp name="Argument.value">1</stringProp>
  40573. <stringProp name="Argument.metadata">=</stringProp>
  40574. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40575. <stringProp name="Argument.name">is_active</stringProp>
  40576. </elementProp>
  40577. <elementProp name="layout_update_xml" elementType="HTTPArgument">
  40578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40579. <stringProp name="Argument.value"/>
  40580. <stringProp name="Argument.metadata">=</stringProp>
  40581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40582. <stringProp name="Argument.name">layout_update_xml</stringProp>
  40583. </elementProp>
  40584. <elementProp name="meta_description" elementType="HTTPArgument">
  40585. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40586. <stringProp name="Argument.value"/>
  40587. <stringProp name="Argument.metadata">=</stringProp>
  40588. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40589. <stringProp name="Argument.name">meta_description</stringProp>
  40590. </elementProp>
  40591. <elementProp name="meta_keywords" elementType="HTTPArgument">
  40592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40593. <stringProp name="Argument.value"/>
  40594. <stringProp name="Argument.metadata">=</stringProp>
  40595. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40596. <stringProp name="Argument.name">meta_keywords</stringProp>
  40597. </elementProp>
  40598. <elementProp name="meta_title" elementType="HTTPArgument">
  40599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40600. <stringProp name="Argument.value"/>
  40601. <stringProp name="Argument.metadata">=</stringProp>
  40602. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40603. <stringProp name="Argument.name">meta_title</stringProp>
  40604. </elementProp>
  40605. <elementProp name="nodes_data" elementType="HTTPArgument">
  40606. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  40607. <stringProp name="Argument.value">{}</stringProp>
  40608. <stringProp name="Argument.metadata">=</stringProp>
  40609. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40610. <stringProp name="Argument.name">nodes_data</stringProp>
  40611. </elementProp>
  40612. <elementProp name="node_ids" elementType="HTTPArgument">
  40613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40614. <stringProp name="Argument.value"/>
  40615. <stringProp name="Argument.metadata">=</stringProp>
  40616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40617. <stringProp name="Argument.name">node_ids</stringProp>
  40618. </elementProp>
  40619. <elementProp name="page_id" elementType="HTTPArgument">
  40620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40621. <stringProp name="Argument.value"/>
  40622. <stringProp name="Argument.metadata">=</stringProp>
  40623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40624. <stringProp name="Argument.name">page_id</stringProp>
  40625. </elementProp>
  40626. <elementProp name="page_layout" elementType="HTTPArgument">
  40627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40628. <stringProp name="Argument.value">1column</stringProp>
  40629. <stringProp name="Argument.metadata">=</stringProp>
  40630. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40631. <stringProp name="Argument.name">page_layout</stringProp>
  40632. </elementProp>
  40633. <elementProp name="store_id[0]" elementType="HTTPArgument">
  40634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40635. <stringProp name="Argument.value">0</stringProp>
  40636. <stringProp name="Argument.metadata">=</stringProp>
  40637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40638. <stringProp name="Argument.name">store_id[0]</stringProp>
  40639. </elementProp>
  40640. <elementProp name="title" elementType="HTTPArgument">
  40641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40642. <stringProp name="Argument.value">CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  40643. <stringProp name="Argument.metadata">=</stringProp>
  40644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40645. <stringProp name="Argument.name">title</stringProp>
  40646. </elementProp>
  40647. <elementProp name="website_root" elementType="HTTPArgument">
  40648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40649. <stringProp name="Argument.value">0</stringProp>
  40650. <stringProp name="Argument.metadata">=</stringProp>
  40651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40652. <stringProp name="Argument.name">website_root</stringProp>
  40653. </elementProp>
  40654. </collectionProp>
  40655. </elementProp>
  40656. <stringProp name="HTTPSampler.domain"/>
  40657. <stringProp name="HTTPSampler.port"/>
  40658. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40659. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40660. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40661. <stringProp name="HTTPSampler.contentEncoding"/>
  40662. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/save/</stringProp>
  40663. <stringProp name="HTTPSampler.method">POST</stringProp>
  40664. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40665. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40666. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40667. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40668. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40669. <stringProp name="HTTPSampler.embedded_url_re"/>
  40670. </HTTPSamplerProxy>
  40671. <hashTree>
  40672. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  40673. <collectionProp name="Asserion.test_strings">
  40674. <stringProp name="-398886250">You saved the page.</stringProp>
  40675. </collectionProp>
  40676. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40677. <boolProp name="Assertion.assume_success">false</boolProp>
  40678. <intProp name="Assertion.test_type">16</intProp>
  40679. </ResponseAssertion>
  40680. <hashTree/>
  40681. </hashTree>
  40682. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  40683. <intProp name="ActionProcessor.action">1</intProp>
  40684. <intProp name="ActionProcessor.target">0</intProp>
  40685. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCMSManagementDelay}*1000))}</stringProp>
  40686. </TestAction>
  40687. <hashTree/>
  40688. </hashTree>
  40689. </hashTree>
  40690. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  40691. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40692. <collectionProp name="Arguments.arguments"/>
  40693. </elementProp>
  40694. <stringProp name="HTTPSampler.domain"/>
  40695. <stringProp name="HTTPSampler.port"/>
  40696. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40697. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40698. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40699. <stringProp name="HTTPSampler.contentEncoding"/>
  40700. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  40701. <stringProp name="HTTPSampler.method">GET</stringProp>
  40702. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40703. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40704. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40705. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40706. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40707. <stringProp name="HTTPSampler.embedded_url_re"/>
  40708. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  40709. <hashTree>
  40710. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  40711. <boolProp name="resetInterpreter">false</boolProp>
  40712. <stringProp name="parameters"/>
  40713. <stringProp name="filename"/>
  40714. <stringProp name="script">
  40715. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  40716. if (adminUsersDistribution == 1) {
  40717. adminUserList = props.get("adminUserList");
  40718. adminUserList.add(vars.get("admin_user"));
  40719. }
  40720. </stringProp>
  40721. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  40722. <hashTree/>
  40723. </hashTree>
  40724. </hashTree>
  40725. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Browse Product Grid" enabled="true">
  40726. <intProp name="ThroughputController.style">1</intProp>
  40727. <boolProp name="ThroughputController.perThread">false</boolProp>
  40728. <intProp name="ThroughputController.maxThroughput">1</intProp>
  40729. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseProductGridPercentage}</stringProp>
  40730. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  40731. <hashTree>
  40732. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  40733. <stringProp name="script">
  40734. var tmpLabel = vars.get("testLabel")
  40735. if (tmpLabel) {
  40736. var testLabel = " (" + tmpLabel + ")"
  40737. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  40738. if (sampler.getName().indexOf(testLabel) == -1) {
  40739. sampler.setName(sampler.getName() + testLabel);
  40740. }
  40741. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  40742. sampler.setName("SetUp - " + sampler.getName());
  40743. }
  40744. } else {
  40745. testLabel = ""
  40746. }
  40747. </stringProp>
  40748. <stringProp name="scriptLanguage">javascript</stringProp>
  40749. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  40750. <hashTree/>
  40751. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  40752. <stringProp name="BeanShellSampler.query">
  40753. vars.put("testLabel", "[C] Admin Browse Product Grid");
  40754. </stringProp>
  40755. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  40756. </BeanShellSampler>
  40757. <hashTree/>
  40758. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  40759. <stringProp name="script">
  40760. function getFormKeyFromResponse()
  40761. {
  40762. var url = prev.getUrlAsString(),
  40763. responseCode = prev.getResponseCode(),
  40764. formKey = null;
  40765. searchPattern = /var FORM_KEY = '(.+)'/;
  40766. if (responseCode == "200" &amp;&amp; url) {
  40767. response = prev.getResponseDataAsString();
  40768. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  40769. }
  40770. return formKey;
  40771. }
  40772. formKey = vars.get("form_key_storage");
  40773. currentFormKey = getFormKeyFromResponse();
  40774. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  40775. vars.put("form_key_storage", currentFormKey);
  40776. }
  40777. </stringProp>
  40778. <stringProp name="scriptLanguage">javascript</stringProp>
  40779. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  40780. <hashTree/>
  40781. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  40782. <stringProp name="script">
  40783. formKey = vars.get("form_key_storage");
  40784. if (formKey
  40785. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  40786. &amp;&amp; sampler.getMethod() == "POST")
  40787. {
  40788. arguments = sampler.getArguments();
  40789. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  40790. {
  40791. argument = arguments.getArgument(i);
  40792. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  40793. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  40794. argument.setValue(formKey);
  40795. }
  40796. }
  40797. }
  40798. </stringProp>
  40799. <stringProp name="scriptLanguage">javascript</stringProp>
  40800. </JSR223PreProcessor>
  40801. <hashTree/>
  40802. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  40803. <collectionProp name="CookieManager.cookies"/>
  40804. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  40805. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  40806. <hashTree/>
  40807. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  40808. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  40809. </GenericController>
  40810. <hashTree>
  40811. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  40812. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  40813. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  40814. <hashTree>
  40815. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  40816. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  40817. <stringProp name="BeanShellSampler.query">
  40818. adminUser = "none";
  40819. adminUserList = props.get("adminUserList");
  40820. adminUserListIterator = props.get("adminUserListIterator");
  40821. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  40822. if (adminUsersDistribution == 1) {
  40823. adminUser = adminUserList.poll();
  40824. } else {
  40825. if (!adminUserListIterator.hasNext()) {
  40826. adminUserListIterator = adminUserList.descendingIterator();
  40827. }
  40828. adminUser = adminUserListIterator.next();
  40829. }
  40830. if (adminUser == "none") {
  40831. SampleResult.setResponseMessage("adminUser list is empty");
  40832. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  40833. IsSuccess=false;
  40834. SampleResult.setSuccessful(false);
  40835. SampleResult.setStopThread(true);
  40836. }
  40837. vars.put("admin_user", adminUser);
  40838. </stringProp>
  40839. <stringProp name="BeanShellSampler.filename"/>
  40840. <stringProp name="BeanShellSampler.parameters"/>
  40841. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  40842. </BeanShellSampler>
  40843. <hashTree/>
  40844. </hashTree>
  40845. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  40846. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40847. <collectionProp name="Arguments.arguments"/>
  40848. </elementProp>
  40849. <stringProp name="HTTPSampler.domain"/>
  40850. <stringProp name="HTTPSampler.port"/>
  40851. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40852. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40853. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40854. <stringProp name="HTTPSampler.contentEncoding"/>
  40855. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  40856. <stringProp name="HTTPSampler.method">GET</stringProp>
  40857. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40858. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40859. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40860. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40861. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40862. <stringProp name="HTTPSampler.embedded_url_re"/>
  40863. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  40864. <hashTree>
  40865. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  40866. <collectionProp name="Asserion.test_strings">
  40867. <stringProp name="-1397214398">Welcome</stringProp>
  40868. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  40869. </collectionProp>
  40870. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40871. <boolProp name="Assertion.assume_success">false</boolProp>
  40872. <intProp name="Assertion.test_type">2</intProp>
  40873. </ResponseAssertion>
  40874. <hashTree/>
  40875. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  40876. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40877. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  40878. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  40879. <stringProp name="RegexExtractor.template">$1$</stringProp>
  40880. <stringProp name="RegexExtractor.default"/>
  40881. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40882. </RegexExtractor>
  40883. <hashTree/>
  40884. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  40885. <collectionProp name="Asserion.test_strings">
  40886. <stringProp name="2845929">^.+$</stringProp>
  40887. </collectionProp>
  40888. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  40889. <boolProp name="Assertion.assume_success">false</boolProp>
  40890. <intProp name="Assertion.test_type">1</intProp>
  40891. <stringProp name="Assertion.scope">variable</stringProp>
  40892. <stringProp name="Scope.variable">admin_form_key</stringProp>
  40893. </ResponseAssertion>
  40894. <hashTree/>
  40895. </hashTree>
  40896. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  40897. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40898. <collectionProp name="Arguments.arguments">
  40899. <elementProp name="dummy" elementType="HTTPArgument">
  40900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40901. <stringProp name="Argument.value"/>
  40902. <stringProp name="Argument.metadata">=</stringProp>
  40903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40904. <stringProp name="Argument.name">dummy</stringProp>
  40905. </elementProp>
  40906. <elementProp name="form_key" elementType="HTTPArgument">
  40907. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40908. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  40909. <stringProp name="Argument.metadata">=</stringProp>
  40910. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40911. <stringProp name="Argument.name">form_key</stringProp>
  40912. </elementProp>
  40913. <elementProp name="login[password]" elementType="HTTPArgument">
  40914. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40915. <stringProp name="Argument.value">${admin_password}</stringProp>
  40916. <stringProp name="Argument.metadata">=</stringProp>
  40917. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40918. <stringProp name="Argument.name">login[password]</stringProp>
  40919. </elementProp>
  40920. <elementProp name="login[username]" elementType="HTTPArgument">
  40921. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40922. <stringProp name="Argument.value">${admin_user}</stringProp>
  40923. <stringProp name="Argument.metadata">=</stringProp>
  40924. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40925. <stringProp name="Argument.name">login[username]</stringProp>
  40926. </elementProp>
  40927. </collectionProp>
  40928. </elementProp>
  40929. <stringProp name="HTTPSampler.domain"/>
  40930. <stringProp name="HTTPSampler.port"/>
  40931. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  40932. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  40933. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  40934. <stringProp name="HTTPSampler.contentEncoding"/>
  40935. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  40936. <stringProp name="HTTPSampler.method">POST</stringProp>
  40937. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  40938. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  40939. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  40940. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  40941. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  40942. <boolProp name="HTTPSampler.monitor">false</boolProp>
  40943. <stringProp name="HTTPSampler.embedded_url_re"/>
  40944. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  40945. </HTTPSamplerProxy>
  40946. <hashTree>
  40947. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  40948. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  40949. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  40950. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  40951. <stringProp name="RegexExtractor.template">$1$</stringProp>
  40952. <stringProp name="RegexExtractor.default"/>
  40953. <stringProp name="RegexExtractor.match_number">1</stringProp>
  40954. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  40955. <hashTree/>
  40956. </hashTree>
  40957. </hashTree>
  40958. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  40959. <stringProp name="script">
  40960. vars.put("gridEntityType" , "Product");
  40961. pagesCount = parseInt(vars.get("products_page_size")) || 20;
  40962. vars.put("grid_entity_page_size" , pagesCount);
  40963. vars.put("grid_namespace" , "product_listing");
  40964. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text"));
  40965. vars.put("grid_filter_field", "name");
  40966. // set sort fields and sort directions
  40967. vars.put("grid_sort_field_1", "name");
  40968. vars.put("grid_sort_field_2", "price");
  40969. vars.put("grid_sort_field_3", "attribute_set_id");
  40970. vars.put("grid_sort_order_1", "asc");
  40971. vars.put("grid_sort_order_2", "desc");
  40972. </stringProp>
  40973. <stringProp name="scriptLanguage">javascript</stringProp>
  40974. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_products_grid/setup.jmx</stringProp></JSR223PostProcessor>
  40975. <hashTree/>
  40976. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  40977. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  40978. </GenericController>
  40979. <hashTree>
  40980. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  40981. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  40982. <collectionProp name="Arguments.arguments">
  40983. <elementProp name="namespace" elementType="HTTPArgument">
  40984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40985. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  40986. <stringProp name="Argument.metadata">=</stringProp>
  40987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40988. <stringProp name="Argument.name">namespace</stringProp>
  40989. <stringProp name="Argument.desc">true</stringProp>
  40990. </elementProp>
  40991. <elementProp name="search" elementType="HTTPArgument">
  40992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  40993. <stringProp name="Argument.value"/>
  40994. <stringProp name="Argument.metadata">=</stringProp>
  40995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  40996. <stringProp name="Argument.name">search</stringProp>
  40997. <stringProp name="Argument.desc">true</stringProp>
  40998. </elementProp>
  40999. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  41000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41001. <stringProp name="Argument.value">true</stringProp>
  41002. <stringProp name="Argument.metadata">=</stringProp>
  41003. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41004. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  41005. <stringProp name="Argument.desc">true</stringProp>
  41006. </elementProp>
  41007. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  41008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41009. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  41010. <stringProp name="Argument.metadata">=</stringProp>
  41011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41012. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  41013. <stringProp name="Argument.desc">true</stringProp>
  41014. </elementProp>
  41015. <elementProp name="paging[current]" elementType="HTTPArgument">
  41016. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41017. <stringProp name="Argument.value">1</stringProp>
  41018. <stringProp name="Argument.metadata">=</stringProp>
  41019. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41020. <stringProp name="Argument.name">paging[current]</stringProp>
  41021. <stringProp name="Argument.desc">true</stringProp>
  41022. </elementProp>
  41023. <elementProp name="sorting[field]" elementType="HTTPArgument">
  41024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41025. <stringProp name="Argument.value">entity_id</stringProp>
  41026. <stringProp name="Argument.metadata">=</stringProp>
  41027. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41028. <stringProp name="Argument.name">sorting[field]</stringProp>
  41029. <stringProp name="Argument.desc">true</stringProp>
  41030. </elementProp>
  41031. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  41032. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41033. <stringProp name="Argument.value">asc</stringProp>
  41034. <stringProp name="Argument.metadata">=</stringProp>
  41035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41036. <stringProp name="Argument.name">sorting[direction]</stringProp>
  41037. <stringProp name="Argument.desc">true</stringProp>
  41038. </elementProp>
  41039. <elementProp name="isAjax" elementType="HTTPArgument">
  41040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41041. <stringProp name="Argument.value">true</stringProp>
  41042. <stringProp name="Argument.metadata">=</stringProp>
  41043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41044. <stringProp name="Argument.name">isAjax</stringProp>
  41045. <stringProp name="Argument.desc">true</stringProp>
  41046. </elementProp>
  41047. </collectionProp>
  41048. </elementProp>
  41049. <stringProp name="HTTPSampler.domain"/>
  41050. <stringProp name="HTTPSampler.port"/>
  41051. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41052. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41053. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41054. <stringProp name="HTTPSampler.contentEncoding"/>
  41055. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  41056. <stringProp name="HTTPSampler.method">GET</stringProp>
  41057. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41058. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41059. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41060. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41061. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41062. <stringProp name="HTTPSampler.embedded_url_re"/>
  41063. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  41064. <hashTree>
  41065. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  41066. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  41067. <stringProp name="EXPECTED_VALUE">0</stringProp>
  41068. <boolProp name="JSONVALIDATION">true</boolProp>
  41069. <boolProp name="EXPECT_NULL">false</boolProp>
  41070. <boolProp name="INVERT">true</boolProp>
  41071. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  41072. <hashTree/>
  41073. <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 total records" enabled="true">
  41074. <stringProp name="VAR">entity_total_records</stringProp>
  41075. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  41076. <stringProp name="DEFAULT"/>
  41077. <stringProp name="VARIABLE"/>
  41078. <stringProp name="SUBJECT">BODY</stringProp>
  41079. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  41080. <hashTree/>
  41081. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  41082. <stringProp name="cacheKey"/>
  41083. <stringProp name="filename"/>
  41084. <stringProp name="parameters"/>
  41085. <stringProp name="script">
  41086. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  41087. var totalsRecord = parseInt(vars.get("entity_total_records"));
  41088. var pageCount = Math.round(totalsRecord/pageSize);
  41089. vars.put("grid_pages_count", pageCount);
  41090. </stringProp>
  41091. <stringProp name="scriptLanguage">javascript</stringProp>
  41092. </JSR223PostProcessor>
  41093. <hashTree/>
  41094. </hashTree>
  41095. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  41096. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41097. <collectionProp name="Arguments.arguments">
  41098. <elementProp name="namespace" elementType="HTTPArgument">
  41099. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41100. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  41101. <stringProp name="Argument.metadata">=</stringProp>
  41102. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41103. <stringProp name="Argument.name">namespace</stringProp>
  41104. <stringProp name="Argument.desc">true</stringProp>
  41105. </elementProp>
  41106. <elementProp name="search" elementType="HTTPArgument">
  41107. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41108. <stringProp name="Argument.value"/>
  41109. <stringProp name="Argument.metadata">=</stringProp>
  41110. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41111. <stringProp name="Argument.name">search</stringProp>
  41112. <stringProp name="Argument.desc">true</stringProp>
  41113. </elementProp>
  41114. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  41115. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41116. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  41117. <stringProp name="Argument.metadata">=</stringProp>
  41118. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41119. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  41120. <stringProp name="Argument.desc">true</stringProp>
  41121. </elementProp>
  41122. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  41123. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41124. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  41125. <stringProp name="Argument.metadata">=</stringProp>
  41126. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41127. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  41128. <stringProp name="Argument.desc">true</stringProp>
  41129. </elementProp>
  41130. <elementProp name="paging[current]" elementType="HTTPArgument">
  41131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41132. <stringProp name="Argument.value">1</stringProp>
  41133. <stringProp name="Argument.metadata">=</stringProp>
  41134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41135. <stringProp name="Argument.name">paging[current]</stringProp>
  41136. <stringProp name="Argument.desc">true</stringProp>
  41137. </elementProp>
  41138. <elementProp name="sorting[field]" elementType="HTTPArgument">
  41139. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41140. <stringProp name="Argument.value">entity_id</stringProp>
  41141. <stringProp name="Argument.metadata">=</stringProp>
  41142. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41143. <stringProp name="Argument.name">sorting[field]</stringProp>
  41144. <stringProp name="Argument.desc">true</stringProp>
  41145. </elementProp>
  41146. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  41147. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41148. <stringProp name="Argument.value">asc</stringProp>
  41149. <stringProp name="Argument.metadata">=</stringProp>
  41150. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41151. <stringProp name="Argument.name">sorting[direction]</stringProp>
  41152. <stringProp name="Argument.desc">true</stringProp>
  41153. </elementProp>
  41154. <elementProp name="isAjax" elementType="HTTPArgument">
  41155. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41156. <stringProp name="Argument.value">true</stringProp>
  41157. <stringProp name="Argument.metadata">=</stringProp>
  41158. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41159. <stringProp name="Argument.name">isAjax</stringProp>
  41160. <stringProp name="Argument.desc">true</stringProp>
  41161. </elementProp>
  41162. </collectionProp>
  41163. </elementProp>
  41164. <stringProp name="HTTPSampler.domain"/>
  41165. <stringProp name="HTTPSampler.port"/>
  41166. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41167. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41168. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41169. <stringProp name="HTTPSampler.contentEncoding"/>
  41170. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  41171. <stringProp name="HTTPSampler.method">GET</stringProp>
  41172. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41173. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41174. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41175. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41176. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41177. <stringProp name="HTTPSampler.embedded_url_re"/>
  41178. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  41179. <hashTree>
  41180. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  41181. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  41182. <stringProp name="EXPECTED_VALUE">0</stringProp>
  41183. <boolProp name="JSONVALIDATION">true</boolProp>
  41184. <boolProp name="EXPECT_NULL">false</boolProp>
  41185. <boolProp name="INVERT">true</boolProp>
  41186. <boolProp name="ISREGEX">true</boolProp>
  41187. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  41188. <hashTree/>
  41189. <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 total records" enabled="true">
  41190. <stringProp name="VAR">entity_total_records</stringProp>
  41191. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  41192. <stringProp name="DEFAULT"/>
  41193. <stringProp name="VARIABLE"/>
  41194. <stringProp name="SUBJECT">BODY</stringProp>
  41195. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  41196. <hashTree/>
  41197. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  41198. <stringProp name="parameters"/>
  41199. <stringProp name="filename"/>
  41200. <stringProp name="script">
  41201. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  41202. var totalsRecord = parseInt(vars.get("entity_total_records"));
  41203. var pageCount = Math.round(totalsRecord/pageSize);
  41204. vars.put("grid_pages_count_filtered", pageCount);
  41205. </stringProp>
  41206. <stringProp name="scriptLanguage">javascript</stringProp>
  41207. </JSR223PostProcessor>
  41208. <hashTree/>
  41209. </hashTree>
  41210. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  41211. <stringProp name="CounterConfig.start">1</stringProp>
  41212. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  41213. <stringProp name="CounterConfig.incr">1</stringProp>
  41214. <stringProp name="CounterConfig.name">page_number</stringProp>
  41215. <stringProp name="CounterConfig.format"/>
  41216. <boolProp name="CounterConfig.per_user">true</boolProp>
  41217. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  41218. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  41219. <hashTree/>
  41220. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  41221. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41222. <collectionProp name="Arguments.arguments">
  41223. <elementProp name="namespace" elementType="HTTPArgument">
  41224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41225. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  41226. <stringProp name="Argument.metadata">=</stringProp>
  41227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41228. <stringProp name="Argument.name">namespace</stringProp>
  41229. <stringProp name="Argument.desc">true</stringProp>
  41230. </elementProp>
  41231. <elementProp name="search" elementType="HTTPArgument">
  41232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41233. <stringProp name="Argument.value"/>
  41234. <stringProp name="Argument.metadata">=</stringProp>
  41235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41236. <stringProp name="Argument.name">search</stringProp>
  41237. <stringProp name="Argument.desc">true</stringProp>
  41238. </elementProp>
  41239. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  41240. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41241. <stringProp name="Argument.value">true</stringProp>
  41242. <stringProp name="Argument.metadata">=</stringProp>
  41243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41244. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  41245. <stringProp name="Argument.desc">true</stringProp>
  41246. </elementProp>
  41247. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  41248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41249. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  41250. <stringProp name="Argument.metadata">=</stringProp>
  41251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41252. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  41253. <stringProp name="Argument.desc">true</stringProp>
  41254. </elementProp>
  41255. <elementProp name="paging[current]" elementType="HTTPArgument">
  41256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41257. <stringProp name="Argument.value">${page_number}</stringProp>
  41258. <stringProp name="Argument.metadata">=</stringProp>
  41259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41260. <stringProp name="Argument.name">paging[current]</stringProp>
  41261. <stringProp name="Argument.desc">true</stringProp>
  41262. </elementProp>
  41263. <elementProp name="sorting[field]" elementType="HTTPArgument">
  41264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41265. <stringProp name="Argument.value">entity_id</stringProp>
  41266. <stringProp name="Argument.metadata">=</stringProp>
  41267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41268. <stringProp name="Argument.name">sorting[field]</stringProp>
  41269. <stringProp name="Argument.desc">true</stringProp>
  41270. </elementProp>
  41271. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  41272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41273. <stringProp name="Argument.value">asc</stringProp>
  41274. <stringProp name="Argument.metadata">=</stringProp>
  41275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41276. <stringProp name="Argument.name">sorting[direction]</stringProp>
  41277. <stringProp name="Argument.desc">true</stringProp>
  41278. </elementProp>
  41279. <elementProp name="isAjax" elementType="HTTPArgument">
  41280. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41281. <stringProp name="Argument.value">true</stringProp>
  41282. <stringProp name="Argument.metadata">=</stringProp>
  41283. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41284. <stringProp name="Argument.name">isAjax</stringProp>
  41285. <stringProp name="Argument.desc">true</stringProp>
  41286. </elementProp>
  41287. </collectionProp>
  41288. </elementProp>
  41289. <stringProp name="HTTPSampler.domain"/>
  41290. <stringProp name="HTTPSampler.port"/>
  41291. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41292. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41293. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41294. <stringProp name="HTTPSampler.contentEncoding"/>
  41295. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  41296. <stringProp name="HTTPSampler.method">GET</stringProp>
  41297. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41298. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41299. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41300. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41301. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41302. <stringProp name="HTTPSampler.embedded_url_re"/>
  41303. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  41304. <hashTree>
  41305. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  41306. <collectionProp name="Asserion.test_strings">
  41307. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  41308. </collectionProp>
  41309. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  41310. <boolProp name="Assertion.assume_success">false</boolProp>
  41311. <intProp name="Assertion.test_type">2</intProp>
  41312. </ResponseAssertion>
  41313. <hashTree/>
  41314. </hashTree>
  41315. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  41316. <stringProp name="CounterConfig.start">1</stringProp>
  41317. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  41318. <stringProp name="CounterConfig.incr">1</stringProp>
  41319. <stringProp name="CounterConfig.name">page_number</stringProp>
  41320. <stringProp name="CounterConfig.format"/>
  41321. <boolProp name="CounterConfig.per_user">true</boolProp>
  41322. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  41323. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  41324. <hashTree/>
  41325. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  41326. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  41327. </TestFragmentController>
  41328. <hashTree>
  41329. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  41330. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  41331. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  41332. <boolProp name="ForeachController.useSeparator">true</boolProp>
  41333. <stringProp name="ForeachController.startIndex">0</stringProp>
  41334. <stringProp name="ForeachController.endIndex">3</stringProp>
  41335. </ForeachController>
  41336. <hashTree>
  41337. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  41338. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  41339. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  41340. <boolProp name="ForeachController.useSeparator">true</boolProp>
  41341. <stringProp name="ForeachController.startIndex">0</stringProp>
  41342. <stringProp name="ForeachController.endIndex">2</stringProp>
  41343. </ForeachController>
  41344. <hashTree>
  41345. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  41346. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41347. <collectionProp name="Arguments.arguments">
  41348. <elementProp name="namespace" elementType="HTTPArgument">
  41349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41350. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  41351. <stringProp name="Argument.metadata">=</stringProp>
  41352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41353. <stringProp name="Argument.name">namespace</stringProp>
  41354. <stringProp name="Argument.desc">false</stringProp>
  41355. </elementProp>
  41356. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  41357. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41358. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  41359. <stringProp name="Argument.metadata">=</stringProp>
  41360. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41361. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  41362. <stringProp name="Argument.desc">false</stringProp>
  41363. </elementProp>
  41364. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  41365. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41366. <stringProp name="Argument.value">true</stringProp>
  41367. <stringProp name="Argument.metadata">=</stringProp>
  41368. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41369. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  41370. <stringProp name="Argument.desc">false</stringProp>
  41371. </elementProp>
  41372. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  41373. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41374. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  41375. <stringProp name="Argument.metadata">=</stringProp>
  41376. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41377. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  41378. <stringProp name="Argument.desc">false</stringProp>
  41379. </elementProp>
  41380. <elementProp name="paging[current]" elementType="HTTPArgument">
  41381. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41382. <stringProp name="Argument.value">${page_number}</stringProp>
  41383. <stringProp name="Argument.metadata">=</stringProp>
  41384. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41385. <stringProp name="Argument.name">paging[current]</stringProp>
  41386. <stringProp name="Argument.desc">false</stringProp>
  41387. </elementProp>
  41388. <elementProp name="sorting[field]" elementType="HTTPArgument">
  41389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41390. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  41391. <stringProp name="Argument.metadata">=</stringProp>
  41392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41393. <stringProp name="Argument.name">sorting[field]</stringProp>
  41394. <stringProp name="Argument.desc">false</stringProp>
  41395. </elementProp>
  41396. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  41397. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41398. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  41399. <stringProp name="Argument.metadata">=</stringProp>
  41400. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41401. <stringProp name="Argument.name">sorting[direction]</stringProp>
  41402. <stringProp name="Argument.desc">false</stringProp>
  41403. </elementProp>
  41404. <elementProp name="isAjax" elementType="HTTPArgument">
  41405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41406. <stringProp name="Argument.value">true</stringProp>
  41407. <stringProp name="Argument.metadata">=</stringProp>
  41408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41409. <stringProp name="Argument.name">isAjax</stringProp>
  41410. <stringProp name="Argument.desc">false</stringProp>
  41411. </elementProp>
  41412. </collectionProp>
  41413. </elementProp>
  41414. <stringProp name="HTTPSampler.domain"/>
  41415. <stringProp name="HTTPSampler.port"/>
  41416. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41417. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41418. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41419. <stringProp name="HTTPSampler.contentEncoding"/>
  41420. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  41421. <stringProp name="HTTPSampler.method">GET</stringProp>
  41422. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41423. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41424. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41425. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41426. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41427. <stringProp name="HTTPSampler.embedded_url_re"/>
  41428. </HTTPSamplerProxy>
  41429. <hashTree>
  41430. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  41431. <collectionProp name="Asserion.test_strings">
  41432. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  41433. </collectionProp>
  41434. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  41435. <boolProp name="Assertion.assume_success">false</boolProp>
  41436. <intProp name="Assertion.test_type">2</intProp>
  41437. </ResponseAssertion>
  41438. <hashTree/>
  41439. </hashTree>
  41440. </hashTree>
  41441. </hashTree>
  41442. </hashTree>
  41443. </hashTree>
  41444. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  41445. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41446. <collectionProp name="Arguments.arguments"/>
  41447. </elementProp>
  41448. <stringProp name="HTTPSampler.domain"/>
  41449. <stringProp name="HTTPSampler.port"/>
  41450. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41451. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41452. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41453. <stringProp name="HTTPSampler.contentEncoding"/>
  41454. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  41455. <stringProp name="HTTPSampler.method">GET</stringProp>
  41456. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41457. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41458. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41459. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41460. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41461. <stringProp name="HTTPSampler.embedded_url_re"/>
  41462. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  41463. <hashTree>
  41464. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  41465. <boolProp name="resetInterpreter">false</boolProp>
  41466. <stringProp name="parameters"/>
  41467. <stringProp name="filename"/>
  41468. <stringProp name="script">
  41469. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  41470. if (adminUsersDistribution == 1) {
  41471. adminUserList = props.get("adminUserList");
  41472. adminUserList.add(vars.get("admin_user"));
  41473. }
  41474. </stringProp>
  41475. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  41476. <hashTree/>
  41477. </hashTree>
  41478. </hashTree>
  41479. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Browse Order Grid" enabled="true">
  41480. <intProp name="ThroughputController.style">1</intProp>
  41481. <boolProp name="ThroughputController.perThread">false</boolProp>
  41482. <intProp name="ThroughputController.maxThroughput">1</intProp>
  41483. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseOrderGridPercentage}</stringProp>
  41484. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  41485. <hashTree>
  41486. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  41487. <stringProp name="script">
  41488. var tmpLabel = vars.get("testLabel")
  41489. if (tmpLabel) {
  41490. var testLabel = " (" + tmpLabel + ")"
  41491. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  41492. if (sampler.getName().indexOf(testLabel) == -1) {
  41493. sampler.setName(sampler.getName() + testLabel);
  41494. }
  41495. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  41496. sampler.setName("SetUp - " + sampler.getName());
  41497. }
  41498. } else {
  41499. testLabel = ""
  41500. }
  41501. </stringProp>
  41502. <stringProp name="scriptLanguage">javascript</stringProp>
  41503. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  41504. <hashTree/>
  41505. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  41506. <stringProp name="BeanShellSampler.query">
  41507. vars.put("testLabel", "[C] Admin Browse Order Grid");
  41508. </stringProp>
  41509. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  41510. </BeanShellSampler>
  41511. <hashTree/>
  41512. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  41513. <stringProp name="script">
  41514. function getFormKeyFromResponse()
  41515. {
  41516. var url = prev.getUrlAsString(),
  41517. responseCode = prev.getResponseCode(),
  41518. formKey = null;
  41519. searchPattern = /var FORM_KEY = '(.+)'/;
  41520. if (responseCode == "200" &amp;&amp; url) {
  41521. response = prev.getResponseDataAsString();
  41522. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  41523. }
  41524. return formKey;
  41525. }
  41526. formKey = vars.get("form_key_storage");
  41527. currentFormKey = getFormKeyFromResponse();
  41528. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  41529. vars.put("form_key_storage", currentFormKey);
  41530. }
  41531. </stringProp>
  41532. <stringProp name="scriptLanguage">javascript</stringProp>
  41533. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  41534. <hashTree/>
  41535. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  41536. <stringProp name="script">
  41537. formKey = vars.get("form_key_storage");
  41538. if (formKey
  41539. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  41540. &amp;&amp; sampler.getMethod() == "POST")
  41541. {
  41542. arguments = sampler.getArguments();
  41543. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  41544. {
  41545. argument = arguments.getArgument(i);
  41546. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  41547. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  41548. argument.setValue(formKey);
  41549. }
  41550. }
  41551. }
  41552. </stringProp>
  41553. <stringProp name="scriptLanguage">javascript</stringProp>
  41554. </JSR223PreProcessor>
  41555. <hashTree/>
  41556. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  41557. <collectionProp name="CookieManager.cookies"/>
  41558. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  41559. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  41560. <hashTree/>
  41561. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  41562. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  41563. </GenericController>
  41564. <hashTree>
  41565. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  41566. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  41567. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  41568. <hashTree>
  41569. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  41570. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  41571. <stringProp name="BeanShellSampler.query">
  41572. adminUser = "none";
  41573. adminUserList = props.get("adminUserList");
  41574. adminUserListIterator = props.get("adminUserListIterator");
  41575. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  41576. if (adminUsersDistribution == 1) {
  41577. adminUser = adminUserList.poll();
  41578. } else {
  41579. if (!adminUserListIterator.hasNext()) {
  41580. adminUserListIterator = adminUserList.descendingIterator();
  41581. }
  41582. adminUser = adminUserListIterator.next();
  41583. }
  41584. if (adminUser == "none") {
  41585. SampleResult.setResponseMessage("adminUser list is empty");
  41586. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  41587. IsSuccess=false;
  41588. SampleResult.setSuccessful(false);
  41589. SampleResult.setStopThread(true);
  41590. }
  41591. vars.put("admin_user", adminUser);
  41592. </stringProp>
  41593. <stringProp name="BeanShellSampler.filename"/>
  41594. <stringProp name="BeanShellSampler.parameters"/>
  41595. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  41596. </BeanShellSampler>
  41597. <hashTree/>
  41598. </hashTree>
  41599. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  41600. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41601. <collectionProp name="Arguments.arguments"/>
  41602. </elementProp>
  41603. <stringProp name="HTTPSampler.domain"/>
  41604. <stringProp name="HTTPSampler.port"/>
  41605. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41606. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41607. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41608. <stringProp name="HTTPSampler.contentEncoding"/>
  41609. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  41610. <stringProp name="HTTPSampler.method">GET</stringProp>
  41611. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41612. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41613. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41614. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41615. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41616. <stringProp name="HTTPSampler.embedded_url_re"/>
  41617. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  41618. <hashTree>
  41619. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  41620. <collectionProp name="Asserion.test_strings">
  41621. <stringProp name="-1397214398">Welcome</stringProp>
  41622. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  41623. </collectionProp>
  41624. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  41625. <boolProp name="Assertion.assume_success">false</boolProp>
  41626. <intProp name="Assertion.test_type">2</intProp>
  41627. </ResponseAssertion>
  41628. <hashTree/>
  41629. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  41630. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  41631. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  41632. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  41633. <stringProp name="RegexExtractor.template">$1$</stringProp>
  41634. <stringProp name="RegexExtractor.default"/>
  41635. <stringProp name="RegexExtractor.match_number">1</stringProp>
  41636. </RegexExtractor>
  41637. <hashTree/>
  41638. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  41639. <collectionProp name="Asserion.test_strings">
  41640. <stringProp name="2845929">^.+$</stringProp>
  41641. </collectionProp>
  41642. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  41643. <boolProp name="Assertion.assume_success">false</boolProp>
  41644. <intProp name="Assertion.test_type">1</intProp>
  41645. <stringProp name="Assertion.scope">variable</stringProp>
  41646. <stringProp name="Scope.variable">admin_form_key</stringProp>
  41647. </ResponseAssertion>
  41648. <hashTree/>
  41649. </hashTree>
  41650. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  41651. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41652. <collectionProp name="Arguments.arguments">
  41653. <elementProp name="dummy" elementType="HTTPArgument">
  41654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41655. <stringProp name="Argument.value"/>
  41656. <stringProp name="Argument.metadata">=</stringProp>
  41657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41658. <stringProp name="Argument.name">dummy</stringProp>
  41659. </elementProp>
  41660. <elementProp name="form_key" elementType="HTTPArgument">
  41661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41662. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  41663. <stringProp name="Argument.metadata">=</stringProp>
  41664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41665. <stringProp name="Argument.name">form_key</stringProp>
  41666. </elementProp>
  41667. <elementProp name="login[password]" elementType="HTTPArgument">
  41668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41669. <stringProp name="Argument.value">${admin_password}</stringProp>
  41670. <stringProp name="Argument.metadata">=</stringProp>
  41671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41672. <stringProp name="Argument.name">login[password]</stringProp>
  41673. </elementProp>
  41674. <elementProp name="login[username]" elementType="HTTPArgument">
  41675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41676. <stringProp name="Argument.value">${admin_user}</stringProp>
  41677. <stringProp name="Argument.metadata">=</stringProp>
  41678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41679. <stringProp name="Argument.name">login[username]</stringProp>
  41680. </elementProp>
  41681. </collectionProp>
  41682. </elementProp>
  41683. <stringProp name="HTTPSampler.domain"/>
  41684. <stringProp name="HTTPSampler.port"/>
  41685. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41686. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41687. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41688. <stringProp name="HTTPSampler.contentEncoding"/>
  41689. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  41690. <stringProp name="HTTPSampler.method">POST</stringProp>
  41691. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41692. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41693. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41694. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41695. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  41696. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41697. <stringProp name="HTTPSampler.embedded_url_re"/>
  41698. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  41699. </HTTPSamplerProxy>
  41700. <hashTree>
  41701. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  41702. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  41703. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  41704. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  41705. <stringProp name="RegexExtractor.template">$1$</stringProp>
  41706. <stringProp name="RegexExtractor.default"/>
  41707. <stringProp name="RegexExtractor.match_number">1</stringProp>
  41708. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  41709. <hashTree/>
  41710. </hashTree>
  41711. </hashTree>
  41712. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  41713. <stringProp name="script">
  41714. vars.put("gridEntityType" , "Order");
  41715. pagesCount = parseInt(vars.get("orders_page_size")) || 20;
  41716. vars.put("grid_entity_page_size" , pagesCount);
  41717. vars.put("grid_namespace" , "sales_order_grid");
  41718. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text"));
  41719. vars.put("grid_filter_field", "status");
  41720. // set sort fields and sort directions
  41721. vars.put("grid_sort_field_1", "increment_id");
  41722. vars.put("grid_sort_field_2", "created_at");
  41723. vars.put("grid_sort_field_3", "billing_name");
  41724. vars.put("grid_sort_order_1", "asc");
  41725. vars.put("grid_sort_order_2", "desc");
  41726. </stringProp>
  41727. <stringProp name="scriptLanguage">javascript</stringProp>
  41728. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_orders_grid/setup.jmx</stringProp></JSR223PostProcessor>
  41729. <hashTree/>
  41730. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  41731. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  41732. </GenericController>
  41733. <hashTree>
  41734. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  41735. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41736. <collectionProp name="Arguments.arguments">
  41737. <elementProp name="namespace" elementType="HTTPArgument">
  41738. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41739. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  41740. <stringProp name="Argument.metadata">=</stringProp>
  41741. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41742. <stringProp name="Argument.name">namespace</stringProp>
  41743. <stringProp name="Argument.desc">true</stringProp>
  41744. </elementProp>
  41745. <elementProp name="search" elementType="HTTPArgument">
  41746. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41747. <stringProp name="Argument.value"/>
  41748. <stringProp name="Argument.metadata">=</stringProp>
  41749. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41750. <stringProp name="Argument.name">search</stringProp>
  41751. <stringProp name="Argument.desc">true</stringProp>
  41752. </elementProp>
  41753. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  41754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41755. <stringProp name="Argument.value">true</stringProp>
  41756. <stringProp name="Argument.metadata">=</stringProp>
  41757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41758. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  41759. <stringProp name="Argument.desc">true</stringProp>
  41760. </elementProp>
  41761. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  41762. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41763. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  41764. <stringProp name="Argument.metadata">=</stringProp>
  41765. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41766. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  41767. <stringProp name="Argument.desc">true</stringProp>
  41768. </elementProp>
  41769. <elementProp name="paging[current]" elementType="HTTPArgument">
  41770. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41771. <stringProp name="Argument.value">1</stringProp>
  41772. <stringProp name="Argument.metadata">=</stringProp>
  41773. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41774. <stringProp name="Argument.name">paging[current]</stringProp>
  41775. <stringProp name="Argument.desc">true</stringProp>
  41776. </elementProp>
  41777. <elementProp name="sorting[field]" elementType="HTTPArgument">
  41778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41779. <stringProp name="Argument.value">entity_id</stringProp>
  41780. <stringProp name="Argument.metadata">=</stringProp>
  41781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41782. <stringProp name="Argument.name">sorting[field]</stringProp>
  41783. <stringProp name="Argument.desc">true</stringProp>
  41784. </elementProp>
  41785. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  41786. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41787. <stringProp name="Argument.value">asc</stringProp>
  41788. <stringProp name="Argument.metadata">=</stringProp>
  41789. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41790. <stringProp name="Argument.name">sorting[direction]</stringProp>
  41791. <stringProp name="Argument.desc">true</stringProp>
  41792. </elementProp>
  41793. <elementProp name="isAjax" elementType="HTTPArgument">
  41794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41795. <stringProp name="Argument.value">true</stringProp>
  41796. <stringProp name="Argument.metadata">=</stringProp>
  41797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41798. <stringProp name="Argument.name">isAjax</stringProp>
  41799. <stringProp name="Argument.desc">true</stringProp>
  41800. </elementProp>
  41801. </collectionProp>
  41802. </elementProp>
  41803. <stringProp name="HTTPSampler.domain"/>
  41804. <stringProp name="HTTPSampler.port"/>
  41805. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41806. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41807. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41808. <stringProp name="HTTPSampler.contentEncoding"/>
  41809. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  41810. <stringProp name="HTTPSampler.method">GET</stringProp>
  41811. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41812. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41813. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41814. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41815. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41816. <stringProp name="HTTPSampler.embedded_url_re"/>
  41817. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  41818. <hashTree>
  41819. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  41820. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  41821. <stringProp name="EXPECTED_VALUE">0</stringProp>
  41822. <boolProp name="JSONVALIDATION">true</boolProp>
  41823. <boolProp name="EXPECT_NULL">false</boolProp>
  41824. <boolProp name="INVERT">true</boolProp>
  41825. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  41826. <hashTree/>
  41827. <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 total records" enabled="true">
  41828. <stringProp name="VAR">entity_total_records</stringProp>
  41829. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  41830. <stringProp name="DEFAULT"/>
  41831. <stringProp name="VARIABLE"/>
  41832. <stringProp name="SUBJECT">BODY</stringProp>
  41833. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  41834. <hashTree/>
  41835. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  41836. <stringProp name="cacheKey"/>
  41837. <stringProp name="filename"/>
  41838. <stringProp name="parameters"/>
  41839. <stringProp name="script">
  41840. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  41841. var totalsRecord = parseInt(vars.get("entity_total_records"));
  41842. var pageCount = Math.round(totalsRecord/pageSize);
  41843. vars.put("grid_pages_count", pageCount);
  41844. </stringProp>
  41845. <stringProp name="scriptLanguage">javascript</stringProp>
  41846. </JSR223PostProcessor>
  41847. <hashTree/>
  41848. </hashTree>
  41849. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  41850. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41851. <collectionProp name="Arguments.arguments">
  41852. <elementProp name="namespace" elementType="HTTPArgument">
  41853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41854. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  41855. <stringProp name="Argument.metadata">=</stringProp>
  41856. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41857. <stringProp name="Argument.name">namespace</stringProp>
  41858. <stringProp name="Argument.desc">true</stringProp>
  41859. </elementProp>
  41860. <elementProp name="search" elementType="HTTPArgument">
  41861. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41862. <stringProp name="Argument.value"/>
  41863. <stringProp name="Argument.metadata">=</stringProp>
  41864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41865. <stringProp name="Argument.name">search</stringProp>
  41866. <stringProp name="Argument.desc">true</stringProp>
  41867. </elementProp>
  41868. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  41869. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41870. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  41871. <stringProp name="Argument.metadata">=</stringProp>
  41872. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41873. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  41874. <stringProp name="Argument.desc">true</stringProp>
  41875. </elementProp>
  41876. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  41877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41878. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  41879. <stringProp name="Argument.metadata">=</stringProp>
  41880. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41881. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  41882. <stringProp name="Argument.desc">true</stringProp>
  41883. </elementProp>
  41884. <elementProp name="paging[current]" elementType="HTTPArgument">
  41885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41886. <stringProp name="Argument.value">1</stringProp>
  41887. <stringProp name="Argument.metadata">=</stringProp>
  41888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41889. <stringProp name="Argument.name">paging[current]</stringProp>
  41890. <stringProp name="Argument.desc">true</stringProp>
  41891. </elementProp>
  41892. <elementProp name="sorting[field]" elementType="HTTPArgument">
  41893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41894. <stringProp name="Argument.value">entity_id</stringProp>
  41895. <stringProp name="Argument.metadata">=</stringProp>
  41896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41897. <stringProp name="Argument.name">sorting[field]</stringProp>
  41898. <stringProp name="Argument.desc">true</stringProp>
  41899. </elementProp>
  41900. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  41901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41902. <stringProp name="Argument.value">asc</stringProp>
  41903. <stringProp name="Argument.metadata">=</stringProp>
  41904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41905. <stringProp name="Argument.name">sorting[direction]</stringProp>
  41906. <stringProp name="Argument.desc">true</stringProp>
  41907. </elementProp>
  41908. <elementProp name="isAjax" elementType="HTTPArgument">
  41909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41910. <stringProp name="Argument.value">true</stringProp>
  41911. <stringProp name="Argument.metadata">=</stringProp>
  41912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41913. <stringProp name="Argument.name">isAjax</stringProp>
  41914. <stringProp name="Argument.desc">true</stringProp>
  41915. </elementProp>
  41916. </collectionProp>
  41917. </elementProp>
  41918. <stringProp name="HTTPSampler.domain"/>
  41919. <stringProp name="HTTPSampler.port"/>
  41920. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  41921. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  41922. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  41923. <stringProp name="HTTPSampler.contentEncoding"/>
  41924. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  41925. <stringProp name="HTTPSampler.method">GET</stringProp>
  41926. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  41927. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  41928. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  41929. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  41930. <boolProp name="HTTPSampler.monitor">false</boolProp>
  41931. <stringProp name="HTTPSampler.embedded_url_re"/>
  41932. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  41933. <hashTree>
  41934. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  41935. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  41936. <stringProp name="EXPECTED_VALUE">0</stringProp>
  41937. <boolProp name="JSONVALIDATION">true</boolProp>
  41938. <boolProp name="EXPECT_NULL">false</boolProp>
  41939. <boolProp name="INVERT">true</boolProp>
  41940. <boolProp name="ISREGEX">true</boolProp>
  41941. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  41942. <hashTree/>
  41943. <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 total records" enabled="true">
  41944. <stringProp name="VAR">entity_total_records</stringProp>
  41945. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  41946. <stringProp name="DEFAULT"/>
  41947. <stringProp name="VARIABLE"/>
  41948. <stringProp name="SUBJECT">BODY</stringProp>
  41949. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  41950. <hashTree/>
  41951. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  41952. <stringProp name="parameters"/>
  41953. <stringProp name="filename"/>
  41954. <stringProp name="script">
  41955. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  41956. var totalsRecord = parseInt(vars.get("entity_total_records"));
  41957. var pageCount = Math.round(totalsRecord/pageSize);
  41958. vars.put("grid_pages_count_filtered", pageCount);
  41959. </stringProp>
  41960. <stringProp name="scriptLanguage">javascript</stringProp>
  41961. </JSR223PostProcessor>
  41962. <hashTree/>
  41963. </hashTree>
  41964. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  41965. <stringProp name="CounterConfig.start">1</stringProp>
  41966. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  41967. <stringProp name="CounterConfig.incr">1</stringProp>
  41968. <stringProp name="CounterConfig.name">page_number</stringProp>
  41969. <stringProp name="CounterConfig.format"/>
  41970. <boolProp name="CounterConfig.per_user">true</boolProp>
  41971. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  41972. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  41973. <hashTree/>
  41974. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  41975. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  41976. <collectionProp name="Arguments.arguments">
  41977. <elementProp name="namespace" elementType="HTTPArgument">
  41978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41979. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  41980. <stringProp name="Argument.metadata">=</stringProp>
  41981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41982. <stringProp name="Argument.name">namespace</stringProp>
  41983. <stringProp name="Argument.desc">true</stringProp>
  41984. </elementProp>
  41985. <elementProp name="search" elementType="HTTPArgument">
  41986. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41987. <stringProp name="Argument.value"/>
  41988. <stringProp name="Argument.metadata">=</stringProp>
  41989. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41990. <stringProp name="Argument.name">search</stringProp>
  41991. <stringProp name="Argument.desc">true</stringProp>
  41992. </elementProp>
  41993. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  41994. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  41995. <stringProp name="Argument.value">true</stringProp>
  41996. <stringProp name="Argument.metadata">=</stringProp>
  41997. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  41998. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  41999. <stringProp name="Argument.desc">true</stringProp>
  42000. </elementProp>
  42001. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  42002. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42003. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  42004. <stringProp name="Argument.metadata">=</stringProp>
  42005. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42006. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  42007. <stringProp name="Argument.desc">true</stringProp>
  42008. </elementProp>
  42009. <elementProp name="paging[current]" elementType="HTTPArgument">
  42010. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42011. <stringProp name="Argument.value">${page_number}</stringProp>
  42012. <stringProp name="Argument.metadata">=</stringProp>
  42013. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42014. <stringProp name="Argument.name">paging[current]</stringProp>
  42015. <stringProp name="Argument.desc">true</stringProp>
  42016. </elementProp>
  42017. <elementProp name="sorting[field]" elementType="HTTPArgument">
  42018. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42019. <stringProp name="Argument.value">entity_id</stringProp>
  42020. <stringProp name="Argument.metadata">=</stringProp>
  42021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42022. <stringProp name="Argument.name">sorting[field]</stringProp>
  42023. <stringProp name="Argument.desc">true</stringProp>
  42024. </elementProp>
  42025. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  42026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42027. <stringProp name="Argument.value">asc</stringProp>
  42028. <stringProp name="Argument.metadata">=</stringProp>
  42029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42030. <stringProp name="Argument.name">sorting[direction]</stringProp>
  42031. <stringProp name="Argument.desc">true</stringProp>
  42032. </elementProp>
  42033. <elementProp name="isAjax" elementType="HTTPArgument">
  42034. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42035. <stringProp name="Argument.value">true</stringProp>
  42036. <stringProp name="Argument.metadata">=</stringProp>
  42037. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42038. <stringProp name="Argument.name">isAjax</stringProp>
  42039. <stringProp name="Argument.desc">true</stringProp>
  42040. </elementProp>
  42041. </collectionProp>
  42042. </elementProp>
  42043. <stringProp name="HTTPSampler.domain"/>
  42044. <stringProp name="HTTPSampler.port"/>
  42045. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42046. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42047. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42048. <stringProp name="HTTPSampler.contentEncoding"/>
  42049. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  42050. <stringProp name="HTTPSampler.method">GET</stringProp>
  42051. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42052. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42053. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42054. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42055. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42056. <stringProp name="HTTPSampler.embedded_url_re"/>
  42057. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  42058. <hashTree>
  42059. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  42060. <collectionProp name="Asserion.test_strings">
  42061. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  42062. </collectionProp>
  42063. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  42064. <boolProp name="Assertion.assume_success">false</boolProp>
  42065. <intProp name="Assertion.test_type">2</intProp>
  42066. </ResponseAssertion>
  42067. <hashTree/>
  42068. </hashTree>
  42069. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  42070. <stringProp name="CounterConfig.start">1</stringProp>
  42071. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  42072. <stringProp name="CounterConfig.incr">1</stringProp>
  42073. <stringProp name="CounterConfig.name">page_number</stringProp>
  42074. <stringProp name="CounterConfig.format"/>
  42075. <boolProp name="CounterConfig.per_user">true</boolProp>
  42076. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  42077. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  42078. <hashTree/>
  42079. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  42080. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  42081. </TestFragmentController>
  42082. <hashTree>
  42083. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  42084. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  42085. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  42086. <boolProp name="ForeachController.useSeparator">true</boolProp>
  42087. <stringProp name="ForeachController.startIndex">0</stringProp>
  42088. <stringProp name="ForeachController.endIndex">3</stringProp>
  42089. </ForeachController>
  42090. <hashTree>
  42091. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  42092. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  42093. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  42094. <boolProp name="ForeachController.useSeparator">true</boolProp>
  42095. <stringProp name="ForeachController.startIndex">0</stringProp>
  42096. <stringProp name="ForeachController.endIndex">2</stringProp>
  42097. </ForeachController>
  42098. <hashTree>
  42099. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  42100. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42101. <collectionProp name="Arguments.arguments">
  42102. <elementProp name="namespace" elementType="HTTPArgument">
  42103. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42104. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  42105. <stringProp name="Argument.metadata">=</stringProp>
  42106. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42107. <stringProp name="Argument.name">namespace</stringProp>
  42108. <stringProp name="Argument.desc">false</stringProp>
  42109. </elementProp>
  42110. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  42111. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42112. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  42113. <stringProp name="Argument.metadata">=</stringProp>
  42114. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42115. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  42116. <stringProp name="Argument.desc">false</stringProp>
  42117. </elementProp>
  42118. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  42119. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42120. <stringProp name="Argument.value">true</stringProp>
  42121. <stringProp name="Argument.metadata">=</stringProp>
  42122. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42123. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  42124. <stringProp name="Argument.desc">false</stringProp>
  42125. </elementProp>
  42126. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  42127. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42128. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  42129. <stringProp name="Argument.metadata">=</stringProp>
  42130. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42131. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  42132. <stringProp name="Argument.desc">false</stringProp>
  42133. </elementProp>
  42134. <elementProp name="paging[current]" elementType="HTTPArgument">
  42135. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42136. <stringProp name="Argument.value">${page_number}</stringProp>
  42137. <stringProp name="Argument.metadata">=</stringProp>
  42138. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42139. <stringProp name="Argument.name">paging[current]</stringProp>
  42140. <stringProp name="Argument.desc">false</stringProp>
  42141. </elementProp>
  42142. <elementProp name="sorting[field]" elementType="HTTPArgument">
  42143. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42144. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  42145. <stringProp name="Argument.metadata">=</stringProp>
  42146. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42147. <stringProp name="Argument.name">sorting[field]</stringProp>
  42148. <stringProp name="Argument.desc">false</stringProp>
  42149. </elementProp>
  42150. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  42151. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42152. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  42153. <stringProp name="Argument.metadata">=</stringProp>
  42154. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42155. <stringProp name="Argument.name">sorting[direction]</stringProp>
  42156. <stringProp name="Argument.desc">false</stringProp>
  42157. </elementProp>
  42158. <elementProp name="isAjax" elementType="HTTPArgument">
  42159. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42160. <stringProp name="Argument.value">true</stringProp>
  42161. <stringProp name="Argument.metadata">=</stringProp>
  42162. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42163. <stringProp name="Argument.name">isAjax</stringProp>
  42164. <stringProp name="Argument.desc">false</stringProp>
  42165. </elementProp>
  42166. </collectionProp>
  42167. </elementProp>
  42168. <stringProp name="HTTPSampler.domain"/>
  42169. <stringProp name="HTTPSampler.port"/>
  42170. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42171. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42172. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42173. <stringProp name="HTTPSampler.contentEncoding"/>
  42174. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  42175. <stringProp name="HTTPSampler.method">GET</stringProp>
  42176. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42177. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42178. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42179. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42180. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42181. <stringProp name="HTTPSampler.embedded_url_re"/>
  42182. </HTTPSamplerProxy>
  42183. <hashTree>
  42184. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  42185. <collectionProp name="Asserion.test_strings">
  42186. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  42187. </collectionProp>
  42188. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  42189. <boolProp name="Assertion.assume_success">false</boolProp>
  42190. <intProp name="Assertion.test_type">2</intProp>
  42191. </ResponseAssertion>
  42192. <hashTree/>
  42193. </hashTree>
  42194. </hashTree>
  42195. </hashTree>
  42196. </hashTree>
  42197. </hashTree>
  42198. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  42199. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42200. <collectionProp name="Arguments.arguments"/>
  42201. </elementProp>
  42202. <stringProp name="HTTPSampler.domain"/>
  42203. <stringProp name="HTTPSampler.port"/>
  42204. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42205. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42206. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42207. <stringProp name="HTTPSampler.contentEncoding"/>
  42208. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  42209. <stringProp name="HTTPSampler.method">GET</stringProp>
  42210. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42211. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42212. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42213. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42214. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42215. <stringProp name="HTTPSampler.embedded_url_re"/>
  42216. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  42217. <hashTree>
  42218. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  42219. <boolProp name="resetInterpreter">false</boolProp>
  42220. <stringProp name="parameters"/>
  42221. <stringProp name="filename"/>
  42222. <stringProp name="script">
  42223. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  42224. if (adminUsersDistribution == 1) {
  42225. adminUserList = props.get("adminUserList");
  42226. adminUserList.add(vars.get("admin_user"));
  42227. }
  42228. </stringProp>
  42229. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  42230. <hashTree/>
  42231. </hashTree>
  42232. </hashTree>
  42233. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Create Product" enabled="true">
  42234. <intProp name="ThroughputController.style">1</intProp>
  42235. <boolProp name="ThroughputController.perThread">false</boolProp>
  42236. <intProp name="ThroughputController.maxThroughput">1</intProp>
  42237. <stringProp name="ThroughputController.percentThroughput">${cAdminProductCreationPercentage}</stringProp>
  42238. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  42239. <hashTree>
  42240. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  42241. <stringProp name="script">
  42242. var tmpLabel = vars.get("testLabel")
  42243. if (tmpLabel) {
  42244. var testLabel = " (" + tmpLabel + ")"
  42245. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  42246. if (sampler.getName().indexOf(testLabel) == -1) {
  42247. sampler.setName(sampler.getName() + testLabel);
  42248. }
  42249. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  42250. sampler.setName("SetUp - " + sampler.getName());
  42251. }
  42252. } else {
  42253. testLabel = ""
  42254. }
  42255. </stringProp>
  42256. <stringProp name="scriptLanguage">javascript</stringProp>
  42257. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  42258. <hashTree/>
  42259. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  42260. <stringProp name="BeanShellSampler.query">
  42261. vars.put("testLabel", "[C] Admin Create Product");
  42262. </stringProp>
  42263. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  42264. </BeanShellSampler>
  42265. <hashTree/>
  42266. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  42267. <stringProp name="script">
  42268. function getFormKeyFromResponse()
  42269. {
  42270. var url = prev.getUrlAsString(),
  42271. responseCode = prev.getResponseCode(),
  42272. formKey = null;
  42273. searchPattern = /var FORM_KEY = '(.+)'/;
  42274. if (responseCode == "200" &amp;&amp; url) {
  42275. response = prev.getResponseDataAsString();
  42276. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  42277. }
  42278. return formKey;
  42279. }
  42280. formKey = vars.get("form_key_storage");
  42281. currentFormKey = getFormKeyFromResponse();
  42282. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  42283. vars.put("form_key_storage", currentFormKey);
  42284. }
  42285. </stringProp>
  42286. <stringProp name="scriptLanguage">javascript</stringProp>
  42287. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  42288. <hashTree/>
  42289. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  42290. <stringProp name="script">
  42291. formKey = vars.get("form_key_storage");
  42292. if (formKey
  42293. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  42294. &amp;&amp; sampler.getMethod() == "POST")
  42295. {
  42296. arguments = sampler.getArguments();
  42297. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  42298. {
  42299. argument = arguments.getArgument(i);
  42300. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  42301. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  42302. argument.setValue(formKey);
  42303. }
  42304. }
  42305. }
  42306. </stringProp>
  42307. <stringProp name="scriptLanguage">javascript</stringProp>
  42308. </JSR223PreProcessor>
  42309. <hashTree/>
  42310. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  42311. <collectionProp name="CookieManager.cookies"/>
  42312. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  42313. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  42314. <hashTree/>
  42315. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  42316. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  42317. </GenericController>
  42318. <hashTree>
  42319. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  42320. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  42321. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  42322. <hashTree>
  42323. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  42324. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  42325. <stringProp name="BeanShellSampler.query">
  42326. adminUser = "none";
  42327. adminUserList = props.get("adminUserList");
  42328. adminUserListIterator = props.get("adminUserListIterator");
  42329. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  42330. if (adminUsersDistribution == 1) {
  42331. adminUser = adminUserList.poll();
  42332. } else {
  42333. if (!adminUserListIterator.hasNext()) {
  42334. adminUserListIterator = adminUserList.descendingIterator();
  42335. }
  42336. adminUser = adminUserListIterator.next();
  42337. }
  42338. if (adminUser == "none") {
  42339. SampleResult.setResponseMessage("adminUser list is empty");
  42340. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  42341. IsSuccess=false;
  42342. SampleResult.setSuccessful(false);
  42343. SampleResult.setStopThread(true);
  42344. }
  42345. vars.put("admin_user", adminUser);
  42346. </stringProp>
  42347. <stringProp name="BeanShellSampler.filename"/>
  42348. <stringProp name="BeanShellSampler.parameters"/>
  42349. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  42350. </BeanShellSampler>
  42351. <hashTree/>
  42352. </hashTree>
  42353. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  42354. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42355. <collectionProp name="Arguments.arguments"/>
  42356. </elementProp>
  42357. <stringProp name="HTTPSampler.domain"/>
  42358. <stringProp name="HTTPSampler.port"/>
  42359. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42360. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42361. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42362. <stringProp name="HTTPSampler.contentEncoding"/>
  42363. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  42364. <stringProp name="HTTPSampler.method">GET</stringProp>
  42365. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42366. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42367. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42368. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42369. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42370. <stringProp name="HTTPSampler.embedded_url_re"/>
  42371. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  42372. <hashTree>
  42373. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  42374. <collectionProp name="Asserion.test_strings">
  42375. <stringProp name="-1397214398">Welcome</stringProp>
  42376. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  42377. </collectionProp>
  42378. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  42379. <boolProp name="Assertion.assume_success">false</boolProp>
  42380. <intProp name="Assertion.test_type">2</intProp>
  42381. </ResponseAssertion>
  42382. <hashTree/>
  42383. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  42384. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  42385. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  42386. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  42387. <stringProp name="RegexExtractor.template">$1$</stringProp>
  42388. <stringProp name="RegexExtractor.default"/>
  42389. <stringProp name="RegexExtractor.match_number">1</stringProp>
  42390. </RegexExtractor>
  42391. <hashTree/>
  42392. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  42393. <collectionProp name="Asserion.test_strings">
  42394. <stringProp name="2845929">^.+$</stringProp>
  42395. </collectionProp>
  42396. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  42397. <boolProp name="Assertion.assume_success">false</boolProp>
  42398. <intProp name="Assertion.test_type">1</intProp>
  42399. <stringProp name="Assertion.scope">variable</stringProp>
  42400. <stringProp name="Scope.variable">admin_form_key</stringProp>
  42401. </ResponseAssertion>
  42402. <hashTree/>
  42403. </hashTree>
  42404. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  42405. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42406. <collectionProp name="Arguments.arguments">
  42407. <elementProp name="dummy" elementType="HTTPArgument">
  42408. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42409. <stringProp name="Argument.value"/>
  42410. <stringProp name="Argument.metadata">=</stringProp>
  42411. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42412. <stringProp name="Argument.name">dummy</stringProp>
  42413. </elementProp>
  42414. <elementProp name="form_key" elementType="HTTPArgument">
  42415. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42416. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  42417. <stringProp name="Argument.metadata">=</stringProp>
  42418. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42419. <stringProp name="Argument.name">form_key</stringProp>
  42420. </elementProp>
  42421. <elementProp name="login[password]" elementType="HTTPArgument">
  42422. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42423. <stringProp name="Argument.value">${admin_password}</stringProp>
  42424. <stringProp name="Argument.metadata">=</stringProp>
  42425. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42426. <stringProp name="Argument.name">login[password]</stringProp>
  42427. </elementProp>
  42428. <elementProp name="login[username]" elementType="HTTPArgument">
  42429. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42430. <stringProp name="Argument.value">${admin_user}</stringProp>
  42431. <stringProp name="Argument.metadata">=</stringProp>
  42432. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42433. <stringProp name="Argument.name">login[username]</stringProp>
  42434. </elementProp>
  42435. </collectionProp>
  42436. </elementProp>
  42437. <stringProp name="HTTPSampler.domain"/>
  42438. <stringProp name="HTTPSampler.port"/>
  42439. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42440. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42441. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42442. <stringProp name="HTTPSampler.contentEncoding"/>
  42443. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  42444. <stringProp name="HTTPSampler.method">POST</stringProp>
  42445. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42446. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42447. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42448. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42449. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  42450. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42451. <stringProp name="HTTPSampler.embedded_url_re"/>
  42452. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  42453. </HTTPSamplerProxy>
  42454. <hashTree>
  42455. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  42456. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  42457. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  42458. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  42459. <stringProp name="RegexExtractor.template">$1$</stringProp>
  42460. <stringProp name="RegexExtractor.default"/>
  42461. <stringProp name="RegexExtractor.match_number">1</stringProp>
  42462. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  42463. <hashTree/>
  42464. </hashTree>
  42465. </hashTree>
  42466. <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
  42467. <stringProp name="TestPlan.comments">tool/fragments/ce/once_only_controller.jmx</stringProp>
  42468. </OnceOnlyController>
  42469. <hashTree>
  42470. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Related Product Id" enabled="true">
  42471. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_related_product_id.jmx</stringProp>
  42472. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  42473. import java.util.Random;
  42474. Random random = new Random();
  42475. if (${seedForRandom} &gt; 0) {
  42476. random.setSeed(${seedForRandom});
  42477. }
  42478. relatedIndex = random.nextInt(props.get("simple_products_list").size());
  42479. vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));</stringProp>
  42480. <stringProp name="BeanShellSampler.filename"/>
  42481. <stringProp name="BeanShellSampler.parameters"/>
  42482. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  42483. </BeanShellSampler>
  42484. <hashTree/>
  42485. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Product Attributes" enabled="true">
  42486. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  42487. </GenericController>
  42488. <hashTree>
  42489. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  42490. <collectionProp name="HeaderManager.headers">
  42491. <elementProp name="" elementType="Header">
  42492. <stringProp name="Header.name">Content-Type</stringProp>
  42493. <stringProp name="Header.value">application/json</stringProp>
  42494. </elementProp>
  42495. <elementProp name="" elementType="Header">
  42496. <stringProp name="Header.name">Accept</stringProp>
  42497. <stringProp name="Header.value">*/*</stringProp>
  42498. </elementProp>
  42499. </collectionProp>
  42500. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  42501. <hashTree/>
  42502. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  42503. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  42504. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  42505. <collectionProp name="Arguments.arguments">
  42506. <elementProp name="" elementType="HTTPArgument">
  42507. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  42508. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  42509. <stringProp name="Argument.metadata">=</stringProp>
  42510. </elementProp>
  42511. </collectionProp>
  42512. </elementProp>
  42513. <stringProp name="HTTPSampler.domain"/>
  42514. <stringProp name="HTTPSampler.port"/>
  42515. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42516. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42517. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42518. <stringProp name="HTTPSampler.contentEncoding"/>
  42519. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  42520. <stringProp name="HTTPSampler.method">POST</stringProp>
  42521. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42522. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42523. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42524. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42525. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42526. <stringProp name="HTTPSampler.embedded_url_re"/>
  42527. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  42528. <hashTree>
  42529. <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">
  42530. <stringProp name="VAR">admin_token</stringProp>
  42531. <stringProp name="JSONPATH">$</stringProp>
  42532. <stringProp name="DEFAULT"/>
  42533. <stringProp name="VARIABLE"/>
  42534. <stringProp name="SUBJECT">BODY</stringProp>
  42535. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  42536. <hashTree/>
  42537. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  42538. <collectionProp name="Asserion.test_strings">
  42539. <stringProp name="484395188">^.{10,}$</stringProp>
  42540. </collectionProp>
  42541. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  42542. <boolProp name="Assertion.assume_success">false</boolProp>
  42543. <intProp name="Assertion.test_type">1</intProp>
  42544. <stringProp name="Assertion.scope">variable</stringProp>
  42545. <stringProp name="Scope.variable">admin_token</stringProp>
  42546. </ResponseAssertion>
  42547. <hashTree/>
  42548. </hashTree>
  42549. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  42550. <collectionProp name="HeaderManager.headers">
  42551. <elementProp name="" elementType="Header">
  42552. <stringProp name="Header.name">Authorization</stringProp>
  42553. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  42554. </elementProp>
  42555. </collectionProp>
  42556. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  42557. <hashTree/>
  42558. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get product attributes" enabled="true">
  42559. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42560. <collectionProp name="Arguments.arguments">
  42561. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  42562. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  42563. <stringProp name="Argument.value">mycolor</stringProp>
  42564. <stringProp name="Argument.metadata">=</stringProp>
  42565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42566. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  42567. </elementProp>
  42568. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  42569. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  42570. <stringProp name="Argument.value">attribute_code</stringProp>
  42571. <stringProp name="Argument.metadata">=</stringProp>
  42572. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42573. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  42574. </elementProp>
  42575. <elementProp name="searchCriteria[filterGroups][0][filters][1][value]" elementType="HTTPArgument">
  42576. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  42577. <stringProp name="Argument.value">mysize</stringProp>
  42578. <stringProp name="Argument.metadata">=</stringProp>
  42579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42580. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][value]</stringProp>
  42581. </elementProp>
  42582. <elementProp name="searchCriteria[filterGroups][0][filters][1][field]" elementType="HTTPArgument">
  42583. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  42584. <stringProp name="Argument.value">attribute_code</stringProp>
  42585. <stringProp name="Argument.metadata">=</stringProp>
  42586. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42587. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][field]</stringProp>
  42588. </elementProp>
  42589. </collectionProp>
  42590. </elementProp>
  42591. <stringProp name="HTTPSampler.domain"/>
  42592. <stringProp name="HTTPSampler.port"/>
  42593. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42594. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42595. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42596. <stringProp name="HTTPSampler.contentEncoding"/>
  42597. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes</stringProp>
  42598. <stringProp name="HTTPSampler.method">GET</stringProp>
  42599. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42600. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42601. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42602. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42603. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42604. <stringProp name="HTTPSampler.embedded_url_re"/>
  42605. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_product_attributes.jmx</stringProp></HTTPSamplerProxy>
  42606. <hashTree>
  42607. <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 product attributes" enabled="true">
  42608. <stringProp name="VAR">product_attributes</stringProp>
  42609. <stringProp name="JSONPATH">$.items</stringProp>
  42610. <stringProp name="DEFAULT"/>
  42611. <stringProp name="VARIABLE"/>
  42612. <stringProp name="SUBJECT">BODY</stringProp>
  42613. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  42614. <hashTree/>
  42615. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="SetUp - Prepare product attributes" enabled="true">
  42616. <stringProp name="scriptLanguage">javascript</stringProp>
  42617. <stringProp name="parameters"/>
  42618. <stringProp name="filename"/>
  42619. <stringProp name="cacheKey"/>
  42620. <stringProp name="script">
  42621. var attributesData = JSON.parse(vars.get("product_attributes")),
  42622. maxOptions = 2;
  42623. attributes = [];
  42624. for (i in attributesData) {
  42625. if (i &gt;= 2) {
  42626. break;
  42627. }
  42628. var data = attributesData[i],
  42629. attribute = {
  42630. "id": data.attribute_id,
  42631. "code": data.attribute_code,
  42632. "label": data.default_frontend_label,
  42633. "options": []
  42634. };
  42635. var processedOptions = 0;
  42636. for (optionN in data.options) {
  42637. var option = data.options[optionN];
  42638. if (parseInt(option.value) &gt; 0 &amp;&amp; processedOptions &lt; maxOptions) {
  42639. processedOptions++;
  42640. attribute.options.push(option);
  42641. }
  42642. }
  42643. attributes.push(attribute);
  42644. }
  42645. vars.putObject("product_attributes", attributes);
  42646. </stringProp>
  42647. </JSR223PostProcessor>
  42648. <hashTree/>
  42649. </hashTree>
  42650. </hashTree>
  42651. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Attribute Set Id" enabled="true">
  42652. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42653. <collectionProp name="Arguments.arguments"/>
  42654. </elementProp>
  42655. <stringProp name="HTTPSampler.domain"/>
  42656. <stringProp name="HTTPSampler.port"/>
  42657. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42658. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42659. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42660. <stringProp name="HTTPSampler.contentEncoding"/>
  42661. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter}</stringProp>
  42662. <stringProp name="HTTPSampler.method">GET</stringProp>
  42663. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42664. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42665. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42666. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42667. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42668. <stringProp name="HTTPSampler.embedded_url_re"/>
  42669. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx</stringProp>
  42670. </HTTPSamplerProxy>
  42671. <hashTree>
  42672. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  42673. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  42674. <stringProp name="RegexExtractor.refname">attribute_set_id</stringProp>
  42675. <stringProp name="RegexExtractor.regex">catalog&amp;#x2F;product_set&amp;#x2F;edit&amp;#x2F;id&amp;#x2F;([\d]+)&amp;#x2F;"[\D\d]*Attribute Set 1</stringProp>
  42676. <stringProp name="RegexExtractor.template">$1$</stringProp>
  42677. <stringProp name="RegexExtractor.default"/>
  42678. <stringProp name="RegexExtractor.match_number">1</stringProp>
  42679. </RegexExtractor>
  42680. <hashTree/>
  42681. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="SetUp - Set Attribute Set Filter" enabled="true">
  42682. <boolProp name="resetInterpreter">false</boolProp>
  42683. <stringProp name="parameters"/>
  42684. <stringProp name="filename"/>
  42685. <stringProp name="script">import org.apache.commons.codec.binary.Base64;
  42686. byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes());
  42687. vars.put("attribute_set_filter", new String(encodedBytes));
  42688. </stringProp>
  42689. </BeanShellPreProcessor>
  42690. <hashTree/>
  42691. </hashTree>
  42692. </hashTree>
  42693. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  42694. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  42695. </GenericController>
  42696. <hashTree>
  42697. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  42698. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  42699. import java.util.Random;
  42700. Random random = new Random();
  42701. int number1;
  42702. if (${seedForRandom} &gt; 0) {
  42703. random.setSeed(${seedForRandom});
  42704. }
  42705. number = random.nextInt(props.get("simple_products_list_for_edit").size());
  42706. simpleList = props.get("simple_products_list_for_edit").get(number);
  42707. vars.put("simple_product_1_id", simpleList.get("id"));
  42708. vars.put("simple_product_1_name", simpleList.get("title"));
  42709. do {
  42710. number1 = random.nextInt(props.get("simple_products_list_for_edit").size());
  42711. } while(number == number1);
  42712. simpleList = props.get("simple_products_list_for_edit").get(number1);
  42713. vars.put("simple_product_2_id", simpleList.get("id"));
  42714. vars.put("simple_product_2_name", simpleList.get("title"));
  42715. number2 = random.nextInt(props.get("configurable_products_list").size());
  42716. configurableList = props.get("configurable_products_list").get(number2);
  42717. vars.put("configurable_product_1_id", configurableList.get("id"));
  42718. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  42719. vars.put("configurable_product_1_name", configurableList.get("title"));
  42720. //Additional category to be added
  42721. //int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  42722. //vars.put("category_additional", (categoryId+1).toString());
  42723. //New price
  42724. vars.put("price_new", "9999");
  42725. //New special price
  42726. vars.put("special_price_new", "8888");
  42727. //New quantity
  42728. vars.put("quantity_new", "100600");
  42729. vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}");
  42730. </stringProp>
  42731. <stringProp name="BeanShellSampler.filename"/>
  42732. <stringProp name="BeanShellSampler.parameters"/>
  42733. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  42734. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/setup.jmx</stringProp></BeanShellSampler>
  42735. <hashTree/>
  42736. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Bundle Product" enabled="true">
  42737. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_bundle_product.jmx</stringProp>
  42738. </TestFragmentController>
  42739. <hashTree>
  42740. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  42741. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42742. <collectionProp name="Arguments.arguments"/>
  42743. </elementProp>
  42744. <stringProp name="HTTPSampler.domain"/>
  42745. <stringProp name="HTTPSampler.port"/>
  42746. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42747. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42748. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42749. <stringProp name="HTTPSampler.contentEncoding"/>
  42750. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  42751. <stringProp name="HTTPSampler.method">GET</stringProp>
  42752. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42753. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42754. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42755. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42756. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42757. <stringProp name="HTTPSampler.embedded_url_re"/>
  42758. </HTTPSamplerProxy>
  42759. <hashTree>
  42760. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  42761. <collectionProp name="Asserion.test_strings">
  42762. <stringProp name="1509986340">records found</stringProp>
  42763. </collectionProp>
  42764. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  42765. <boolProp name="Assertion.assume_success">false</boolProp>
  42766. <intProp name="Assertion.test_type">2</intProp>
  42767. </ResponseAssertion>
  42768. <hashTree/>
  42769. </hashTree>
  42770. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product" enabled="true">
  42771. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42772. <collectionProp name="Arguments.arguments"/>
  42773. </elementProp>
  42774. <stringProp name="HTTPSampler.domain"/>
  42775. <stringProp name="HTTPSampler.port"/>
  42776. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  42777. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  42778. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  42779. <stringProp name="HTTPSampler.contentEncoding"/>
  42780. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/</stringProp>
  42781. <stringProp name="HTTPSampler.method">GET</stringProp>
  42782. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  42783. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  42784. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  42785. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  42786. <boolProp name="HTTPSampler.monitor">false</boolProp>
  42787. <stringProp name="HTTPSampler.embedded_url_re"/>
  42788. </HTTPSamplerProxy>
  42789. <hashTree>
  42790. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  42791. <collectionProp name="Asserion.test_strings">
  42792. <stringProp name="-144461265">New Product</stringProp>
  42793. </collectionProp>
  42794. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  42795. <boolProp name="Assertion.assume_success">false</boolProp>
  42796. <intProp name="Assertion.test_type">2</intProp>
  42797. </ResponseAssertion>
  42798. <hashTree/>
  42799. </hashTree>
  42800. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Validate" enabled="true">
  42801. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  42802. <collectionProp name="Arguments.arguments">
  42803. <elementProp name="ajax" elementType="HTTPArgument">
  42804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42805. <stringProp name="Argument.value">true</stringProp>
  42806. <stringProp name="Argument.metadata">=</stringProp>
  42807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42808. <stringProp name="Argument.name">ajax</stringProp>
  42809. <stringProp name="Argument.desc">false</stringProp>
  42810. </elementProp>
  42811. <elementProp name="isAjax" elementType="HTTPArgument">
  42812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42813. <stringProp name="Argument.value">true</stringProp>
  42814. <stringProp name="Argument.metadata">=</stringProp>
  42815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42816. <stringProp name="Argument.name">isAjax</stringProp>
  42817. <stringProp name="Argument.desc">false</stringProp>
  42818. </elementProp>
  42819. <elementProp name="form_key" elementType="HTTPArgument">
  42820. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42821. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  42822. <stringProp name="Argument.metadata">=</stringProp>
  42823. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42824. <stringProp name="Argument.name">form_key</stringProp>
  42825. <stringProp name="Argument.desc">false</stringProp>
  42826. </elementProp>
  42827. <elementProp name="product[name]" elementType="HTTPArgument">
  42828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42829. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  42830. <stringProp name="Argument.metadata">=</stringProp>
  42831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42832. <stringProp name="Argument.name">product[name]</stringProp>
  42833. <stringProp name="Argument.desc">false</stringProp>
  42834. </elementProp>
  42835. <elementProp name="product[sku]" elementType="HTTPArgument">
  42836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42837. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  42838. <stringProp name="Argument.metadata">=</stringProp>
  42839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42840. <stringProp name="Argument.name">product[sku]</stringProp>
  42841. <stringProp name="Argument.desc">false</stringProp>
  42842. </elementProp>
  42843. <elementProp name="product[price]" elementType="HTTPArgument">
  42844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42845. <stringProp name="Argument.value">42</stringProp>
  42846. <stringProp name="Argument.metadata">=</stringProp>
  42847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42848. <stringProp name="Argument.name">product[price]</stringProp>
  42849. </elementProp>
  42850. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  42851. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42852. <stringProp name="Argument.value">2</stringProp>
  42853. <stringProp name="Argument.metadata">=</stringProp>
  42854. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42855. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  42856. </elementProp>
  42857. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  42858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42859. <stringProp name="Argument.value">111</stringProp>
  42860. <stringProp name="Argument.metadata">=</stringProp>
  42861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42862. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  42863. </elementProp>
  42864. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  42865. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42866. <stringProp name="Argument.value">1</stringProp>
  42867. <stringProp name="Argument.metadata">=</stringProp>
  42868. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42869. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  42870. </elementProp>
  42871. <elementProp name="product[weight]" elementType="HTTPArgument">
  42872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42873. <stringProp name="Argument.value">1.0000</stringProp>
  42874. <stringProp name="Argument.metadata">=</stringProp>
  42875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42876. <stringProp name="Argument.name">product[weight]</stringProp>
  42877. </elementProp>
  42878. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  42879. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42880. <stringProp name="Argument.value">1</stringProp>
  42881. <stringProp name="Argument.metadata">=</stringProp>
  42882. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42883. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  42884. <stringProp name="Argument.desc">true</stringProp>
  42885. </elementProp>
  42886. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  42887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42888. <stringProp name="Argument.value">2</stringProp>
  42889. <stringProp name="Argument.metadata">=</stringProp>
  42890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42891. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  42892. </elementProp>
  42893. <elementProp name="product[description]" elementType="HTTPArgument">
  42894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42895. <stringProp name="Argument.value">&lt;p&gt;Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  42896. <stringProp name="Argument.metadata">=</stringProp>
  42897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42898. <stringProp name="Argument.name">product[description]</stringProp>
  42899. </elementProp>
  42900. <elementProp name="product[short_description]" elementType="HTTPArgument">
  42901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42902. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  42903. <stringProp name="Argument.metadata">=</stringProp>
  42904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42905. <stringProp name="Argument.name">product[short_description]</stringProp>
  42906. </elementProp>
  42907. <elementProp name="product[status]" elementType="HTTPArgument">
  42908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42909. <stringProp name="Argument.value">1</stringProp>
  42910. <stringProp name="Argument.metadata">=</stringProp>
  42911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42912. <stringProp name="Argument.name">product[status]</stringProp>
  42913. </elementProp>
  42914. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  42915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42916. <stringProp name="Argument.value"/>
  42917. <stringProp name="Argument.metadata">=</stringProp>
  42918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42919. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  42920. </elementProp>
  42921. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  42922. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42923. <stringProp name="Argument.value">1</stringProp>
  42924. <stringProp name="Argument.metadata">=</stringProp>
  42925. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42926. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  42927. </elementProp>
  42928. <elementProp name="product[image]" elementType="HTTPArgument">
  42929. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42930. <stringProp name="Argument.value"/>
  42931. <stringProp name="Argument.metadata">=</stringProp>
  42932. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42933. <stringProp name="Argument.name">product[image]</stringProp>
  42934. </elementProp>
  42935. <elementProp name="product[small_image]" elementType="HTTPArgument">
  42936. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42937. <stringProp name="Argument.value"/>
  42938. <stringProp name="Argument.metadata">=</stringProp>
  42939. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42940. <stringProp name="Argument.name">product[small_image]</stringProp>
  42941. </elementProp>
  42942. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  42943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42944. <stringProp name="Argument.value"/>
  42945. <stringProp name="Argument.metadata">=</stringProp>
  42946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42947. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  42948. </elementProp>
  42949. <elementProp name="product[url_key]" elementType="HTTPArgument">
  42950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42951. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  42952. <stringProp name="Argument.metadata">=</stringProp>
  42953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42954. <stringProp name="Argument.name">product[url_key]</stringProp>
  42955. </elementProp>
  42956. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  42957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42958. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  42959. <stringProp name="Argument.metadata">=</stringProp>
  42960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42961. <stringProp name="Argument.name">product[meta_title]</stringProp>
  42962. </elementProp>
  42963. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  42964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42965. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  42966. <stringProp name="Argument.metadata">=</stringProp>
  42967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42968. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  42969. </elementProp>
  42970. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  42971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42972. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  42973. <stringProp name="Argument.metadata">=</stringProp>
  42974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42975. <stringProp name="Argument.name">product[meta_description]</stringProp>
  42976. </elementProp>
  42977. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  42978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42979. <stringProp name="Argument.value">1</stringProp>
  42980. <stringProp name="Argument.metadata">=</stringProp>
  42981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42982. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  42983. </elementProp>
  42984. <elementProp name="product[special_price]" elementType="HTTPArgument">
  42985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42986. <stringProp name="Argument.value">99</stringProp>
  42987. <stringProp name="Argument.metadata">=</stringProp>
  42988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42989. <stringProp name="Argument.name">product[special_price]</stringProp>
  42990. </elementProp>
  42991. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  42992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  42993. <stringProp name="Argument.value">1</stringProp>
  42994. <stringProp name="Argument.metadata">=</stringProp>
  42995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  42996. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  42997. </elementProp>
  42998. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  42999. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43000. <stringProp name="Argument.value"/>
  43001. <stringProp name="Argument.metadata">=</stringProp>
  43002. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43003. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  43004. </elementProp>
  43005. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  43006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43007. <stringProp name="Argument.value"/>
  43008. <stringProp name="Argument.metadata">=</stringProp>
  43009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43010. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  43011. </elementProp>
  43012. <elementProp name="product[cost]" elementType="HTTPArgument">
  43013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43014. <stringProp name="Argument.value"/>
  43015. <stringProp name="Argument.metadata">=</stringProp>
  43016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43017. <stringProp name="Argument.name">product[cost]</stringProp>
  43018. </elementProp>
  43019. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  43020. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43021. <stringProp name="Argument.value">0</stringProp>
  43022. <stringProp name="Argument.metadata">=</stringProp>
  43023. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43024. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  43025. </elementProp>
  43026. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  43027. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43028. <stringProp name="Argument.value">32000</stringProp>
  43029. <stringProp name="Argument.metadata">=</stringProp>
  43030. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43031. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  43032. </elementProp>
  43033. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  43034. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43035. <stringProp name="Argument.value">100</stringProp>
  43036. <stringProp name="Argument.metadata">=</stringProp>
  43037. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43038. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  43039. </elementProp>
  43040. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  43041. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43042. <stringProp name="Argument.value">90</stringProp>
  43043. <stringProp name="Argument.metadata">=</stringProp>
  43044. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43045. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  43046. </elementProp>
  43047. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  43048. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43049. <stringProp name="Argument.value"/>
  43050. <stringProp name="Argument.metadata">=</stringProp>
  43051. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43052. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  43053. </elementProp>
  43054. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  43055. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43056. <stringProp name="Argument.value">0</stringProp>
  43057. <stringProp name="Argument.metadata">=</stringProp>
  43058. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43059. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  43060. </elementProp>
  43061. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  43062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43063. <stringProp name="Argument.value">1</stringProp>
  43064. <stringProp name="Argument.metadata">=</stringProp>
  43065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43066. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  43067. </elementProp>
  43068. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  43069. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43070. <stringProp name="Argument.value">101</stringProp>
  43071. <stringProp name="Argument.metadata">=</stringProp>
  43072. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43073. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  43074. </elementProp>
  43075. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  43076. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43077. <stringProp name="Argument.value">99</stringProp>
  43078. <stringProp name="Argument.metadata">=</stringProp>
  43079. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43080. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  43081. </elementProp>
  43082. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  43083. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43084. <stringProp name="Argument.value"/>
  43085. <stringProp name="Argument.metadata">=</stringProp>
  43086. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43087. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  43088. </elementProp>
  43089. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  43090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43091. <stringProp name="Argument.value">1</stringProp>
  43092. <stringProp name="Argument.metadata">=</stringProp>
  43093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43094. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  43095. </elementProp>
  43096. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  43097. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43098. <stringProp name="Argument.value">100500</stringProp>
  43099. <stringProp name="Argument.metadata">=</stringProp>
  43100. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43101. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  43102. </elementProp>
  43103. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  43104. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43105. <stringProp name="Argument.value">100500</stringProp>
  43106. <stringProp name="Argument.metadata">=</stringProp>
  43107. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43108. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  43109. </elementProp>
  43110. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  43111. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43112. <stringProp name="Argument.value">0</stringProp>
  43113. <stringProp name="Argument.metadata">=</stringProp>
  43114. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43115. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  43116. </elementProp>
  43117. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  43118. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43119. <stringProp name="Argument.value">1</stringProp>
  43120. <stringProp name="Argument.metadata">=</stringProp>
  43121. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43122. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  43123. </elementProp>
  43124. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  43125. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43126. <stringProp name="Argument.value">1</stringProp>
  43127. <stringProp name="Argument.metadata">=</stringProp>
  43128. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43129. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  43130. </elementProp>
  43131. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  43132. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43133. <stringProp name="Argument.value">1</stringProp>
  43134. <stringProp name="Argument.metadata">=</stringProp>
  43135. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43136. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  43137. </elementProp>
  43138. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  43139. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43140. <stringProp name="Argument.value">10000</stringProp>
  43141. <stringProp name="Argument.metadata">=</stringProp>
  43142. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43143. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  43144. </elementProp>
  43145. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  43146. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43147. <stringProp name="Argument.value">1</stringProp>
  43148. <stringProp name="Argument.metadata">=</stringProp>
  43149. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43150. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  43151. </elementProp>
  43152. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  43153. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43154. <stringProp name="Argument.value">0</stringProp>
  43155. <stringProp name="Argument.metadata">=</stringProp>
  43156. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43157. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  43158. </elementProp>
  43159. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  43160. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43161. <stringProp name="Argument.value">0</stringProp>
  43162. <stringProp name="Argument.metadata">=</stringProp>
  43163. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43164. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  43165. </elementProp>
  43166. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  43167. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43168. <stringProp name="Argument.value">0</stringProp>
  43169. <stringProp name="Argument.metadata">=</stringProp>
  43170. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43171. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  43172. </elementProp>
  43173. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  43174. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43175. <stringProp name="Argument.value">1</stringProp>
  43176. <stringProp name="Argument.metadata">=</stringProp>
  43177. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43178. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  43179. </elementProp>
  43180. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  43181. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43182. <stringProp name="Argument.value">1</stringProp>
  43183. <stringProp name="Argument.metadata">=</stringProp>
  43184. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43185. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  43186. </elementProp>
  43187. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  43188. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43189. <stringProp name="Argument.value">0</stringProp>
  43190. <stringProp name="Argument.metadata">=</stringProp>
  43191. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43192. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  43193. </elementProp>
  43194. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  43195. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43196. <stringProp name="Argument.value">0</stringProp>
  43197. <stringProp name="Argument.metadata">=</stringProp>
  43198. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43199. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  43200. </elementProp>
  43201. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  43202. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43203. <stringProp name="Argument.value">1</stringProp>
  43204. <stringProp name="Argument.metadata">=</stringProp>
  43205. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43206. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  43207. </elementProp>
  43208. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  43209. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43210. <stringProp name="Argument.value">1</stringProp>
  43211. <stringProp name="Argument.metadata">=</stringProp>
  43212. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43213. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  43214. </elementProp>
  43215. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  43216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43217. <stringProp name="Argument.value"/>
  43218. <stringProp name="Argument.metadata">=</stringProp>
  43219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43220. <stringProp name="Argument.name">product[custom_design]</stringProp>
  43221. </elementProp>
  43222. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  43223. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43224. <stringProp name="Argument.value"/>
  43225. <stringProp name="Argument.metadata">=</stringProp>
  43226. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43227. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  43228. </elementProp>
  43229. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  43230. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43231. <stringProp name="Argument.value"/>
  43232. <stringProp name="Argument.metadata">=</stringProp>
  43233. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43234. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  43235. </elementProp>
  43236. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  43237. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43238. <stringProp name="Argument.value"/>
  43239. <stringProp name="Argument.metadata">=</stringProp>
  43240. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43241. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  43242. </elementProp>
  43243. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  43244. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43245. <stringProp name="Argument.value"/>
  43246. <stringProp name="Argument.metadata">=</stringProp>
  43247. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43248. <stringProp name="Argument.name">product[page_layout]</stringProp>
  43249. </elementProp>
  43250. <elementProp name="product[options_container]" elementType="HTTPArgument">
  43251. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43252. <stringProp name="Argument.value">container2</stringProp>
  43253. <stringProp name="Argument.metadata">=</stringProp>
  43254. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43255. <stringProp name="Argument.name">product[options_container]</stringProp>
  43256. </elementProp>
  43257. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  43258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43259. <stringProp name="Argument.value"/>
  43260. <stringProp name="Argument.metadata">=</stringProp>
  43261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43262. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  43263. </elementProp>
  43264. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  43265. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43266. <stringProp name="Argument.value">0</stringProp>
  43267. <stringProp name="Argument.metadata">=</stringProp>
  43268. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43269. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  43270. </elementProp>
  43271. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  43272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43273. <stringProp name="Argument.value">option title one</stringProp>
  43274. <stringProp name="Argument.metadata">=</stringProp>
  43275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43276. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  43277. </elementProp>
  43278. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  43279. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43280. <stringProp name="Argument.value"/>
  43281. <stringProp name="Argument.metadata">=</stringProp>
  43282. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43283. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  43284. </elementProp>
  43285. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  43286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43287. <stringProp name="Argument.value"/>
  43288. <stringProp name="Argument.metadata">=</stringProp>
  43289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43290. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  43291. </elementProp>
  43292. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  43293. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43294. <stringProp name="Argument.value">select</stringProp>
  43295. <stringProp name="Argument.metadata">=</stringProp>
  43296. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43297. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  43298. </elementProp>
  43299. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  43300. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43301. <stringProp name="Argument.value">1</stringProp>
  43302. <stringProp name="Argument.metadata">=</stringProp>
  43303. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43304. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  43305. </elementProp>
  43306. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  43307. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43308. <stringProp name="Argument.value">0</stringProp>
  43309. <stringProp name="Argument.metadata">=</stringProp>
  43310. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43311. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  43312. </elementProp>
  43313. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  43314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43315. <stringProp name="Argument.value"/>
  43316. <stringProp name="Argument.metadata">=</stringProp>
  43317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43318. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  43319. </elementProp>
  43320. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  43321. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43322. <stringProp name="Argument.value"/>
  43323. <stringProp name="Argument.metadata">=</stringProp>
  43324. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43325. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  43326. </elementProp>
  43327. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  43328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43329. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  43330. <stringProp name="Argument.metadata">=</stringProp>
  43331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43332. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  43333. </elementProp>
  43334. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  43335. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43336. <stringProp name="Argument.value"/>
  43337. <stringProp name="Argument.metadata">=</stringProp>
  43338. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43339. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  43340. </elementProp>
  43341. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  43342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43343. <stringProp name="Argument.value">25</stringProp>
  43344. <stringProp name="Argument.metadata">=</stringProp>
  43345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43346. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  43347. </elementProp>
  43348. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  43349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43350. <stringProp name="Argument.value">1</stringProp>
  43351. <stringProp name="Argument.metadata">=</stringProp>
  43352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43353. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  43354. </elementProp>
  43355. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  43356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43357. <stringProp name="Argument.value">1</stringProp>
  43358. <stringProp name="Argument.metadata">=</stringProp>
  43359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43360. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  43361. </elementProp>
  43362. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  43363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43364. <stringProp name="Argument.value">1</stringProp>
  43365. <stringProp name="Argument.metadata">=</stringProp>
  43366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43367. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  43368. </elementProp>
  43369. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  43370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43371. <stringProp name="Argument.value">0</stringProp>
  43372. <stringProp name="Argument.metadata">=</stringProp>
  43373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43374. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  43375. </elementProp>
  43376. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  43377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43378. <stringProp name="Argument.value"/>
  43379. <stringProp name="Argument.metadata">=</stringProp>
  43380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43381. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  43382. </elementProp>
  43383. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  43384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43385. <stringProp name="Argument.value"/>
  43386. <stringProp name="Argument.metadata">=</stringProp>
  43387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43388. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  43389. </elementProp>
  43390. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  43391. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43392. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  43393. <stringProp name="Argument.metadata">=</stringProp>
  43394. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43395. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  43396. </elementProp>
  43397. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  43398. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43399. <stringProp name="Argument.value"/>
  43400. <stringProp name="Argument.metadata">=</stringProp>
  43401. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43402. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  43403. </elementProp>
  43404. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  43405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43406. <stringProp name="Argument.value">10.99</stringProp>
  43407. <stringProp name="Argument.metadata">=</stringProp>
  43408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43409. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  43410. </elementProp>
  43411. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  43412. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43413. <stringProp name="Argument.value">0</stringProp>
  43414. <stringProp name="Argument.metadata">=</stringProp>
  43415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43416. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  43417. </elementProp>
  43418. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  43419. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43420. <stringProp name="Argument.value">1</stringProp>
  43421. <stringProp name="Argument.metadata">=</stringProp>
  43422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43423. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  43424. </elementProp>
  43425. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  43426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43427. <stringProp name="Argument.value">1</stringProp>
  43428. <stringProp name="Argument.metadata">=</stringProp>
  43429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43430. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  43431. </elementProp>
  43432. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  43433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43434. <stringProp name="Argument.value">1</stringProp>
  43435. <stringProp name="Argument.metadata">=</stringProp>
  43436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43437. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  43438. </elementProp>
  43439. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  43440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43441. <stringProp name="Argument.value">option title two</stringProp>
  43442. <stringProp name="Argument.metadata">=</stringProp>
  43443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43444. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  43445. </elementProp>
  43446. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  43447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43448. <stringProp name="Argument.value"/>
  43449. <stringProp name="Argument.metadata">=</stringProp>
  43450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43451. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  43452. </elementProp>
  43453. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  43454. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43455. <stringProp name="Argument.value"/>
  43456. <stringProp name="Argument.metadata">=</stringProp>
  43457. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43458. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  43459. </elementProp>
  43460. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  43461. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43462. <stringProp name="Argument.value">select</stringProp>
  43463. <stringProp name="Argument.metadata">=</stringProp>
  43464. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43465. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  43466. </elementProp>
  43467. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  43468. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43469. <stringProp name="Argument.value">1</stringProp>
  43470. <stringProp name="Argument.metadata">=</stringProp>
  43471. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43472. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  43473. </elementProp>
  43474. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  43475. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43476. <stringProp name="Argument.value">1</stringProp>
  43477. <stringProp name="Argument.metadata">=</stringProp>
  43478. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43479. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  43480. </elementProp>
  43481. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  43482. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43483. <stringProp name="Argument.value"/>
  43484. <stringProp name="Argument.metadata">=</stringProp>
  43485. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43486. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  43487. <stringProp name="Argument.desc">true</stringProp>
  43488. </elementProp>
  43489. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  43490. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43491. <stringProp name="Argument.value"/>
  43492. <stringProp name="Argument.metadata">=</stringProp>
  43493. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43494. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  43495. <stringProp name="Argument.desc">true</stringProp>
  43496. </elementProp>
  43497. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  43498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43499. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  43500. <stringProp name="Argument.metadata">=</stringProp>
  43501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43502. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  43503. <stringProp name="Argument.desc">true</stringProp>
  43504. </elementProp>
  43505. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  43506. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43507. <stringProp name="Argument.value"/>
  43508. <stringProp name="Argument.metadata">=</stringProp>
  43509. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43510. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  43511. <stringProp name="Argument.desc">true</stringProp>
  43512. </elementProp>
  43513. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  43514. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43515. <stringProp name="Argument.value">5.00</stringProp>
  43516. <stringProp name="Argument.metadata">=</stringProp>
  43517. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43518. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  43519. <stringProp name="Argument.desc">true</stringProp>
  43520. </elementProp>
  43521. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  43522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43523. <stringProp name="Argument.value">0</stringProp>
  43524. <stringProp name="Argument.metadata">=</stringProp>
  43525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43526. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  43527. <stringProp name="Argument.desc">true</stringProp>
  43528. </elementProp>
  43529. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  43530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43531. <stringProp name="Argument.value">1</stringProp>
  43532. <stringProp name="Argument.metadata">=</stringProp>
  43533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43534. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  43535. <stringProp name="Argument.desc">true</stringProp>
  43536. </elementProp>
  43537. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  43538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43539. <stringProp name="Argument.value">1</stringProp>
  43540. <stringProp name="Argument.metadata">=</stringProp>
  43541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43542. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  43543. <stringProp name="Argument.desc">true</stringProp>
  43544. </elementProp>
  43545. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  43546. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43547. <stringProp name="Argument.value">0</stringProp>
  43548. <stringProp name="Argument.metadata">=</stringProp>
  43549. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43550. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  43551. <stringProp name="Argument.desc">true</stringProp>
  43552. </elementProp>
  43553. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  43554. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43555. <stringProp name="Argument.value"/>
  43556. <stringProp name="Argument.metadata">=</stringProp>
  43557. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43558. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  43559. <stringProp name="Argument.desc">true</stringProp>
  43560. </elementProp>
  43561. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  43562. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43563. <stringProp name="Argument.value"/>
  43564. <stringProp name="Argument.metadata">=</stringProp>
  43565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43566. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  43567. <stringProp name="Argument.desc">true</stringProp>
  43568. </elementProp>
  43569. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  43570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43571. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  43572. <stringProp name="Argument.metadata">=</stringProp>
  43573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43574. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  43575. <stringProp name="Argument.desc">true</stringProp>
  43576. </elementProp>
  43577. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  43578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43579. <stringProp name="Argument.value"/>
  43580. <stringProp name="Argument.metadata">=</stringProp>
  43581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43582. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  43583. <stringProp name="Argument.desc">true</stringProp>
  43584. </elementProp>
  43585. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  43586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43587. <stringProp name="Argument.value">7.00</stringProp>
  43588. <stringProp name="Argument.metadata">=</stringProp>
  43589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43590. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  43591. <stringProp name="Argument.desc">true</stringProp>
  43592. </elementProp>
  43593. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  43594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43595. <stringProp name="Argument.value">0</stringProp>
  43596. <stringProp name="Argument.metadata">=</stringProp>
  43597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43598. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  43599. <stringProp name="Argument.desc">true</stringProp>
  43600. </elementProp>
  43601. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  43602. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43603. <stringProp name="Argument.value">1</stringProp>
  43604. <stringProp name="Argument.metadata">=</stringProp>
  43605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43606. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  43607. <stringProp name="Argument.desc">true</stringProp>
  43608. </elementProp>
  43609. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  43610. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43611. <stringProp name="Argument.value">1</stringProp>
  43612. <stringProp name="Argument.metadata">=</stringProp>
  43613. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43614. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  43615. <stringProp name="Argument.desc">true</stringProp>
  43616. </elementProp>
  43617. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  43618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43619. <stringProp name="Argument.value">1</stringProp>
  43620. <stringProp name="Argument.metadata">=</stringProp>
  43621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43622. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  43623. <stringProp name="Argument.desc">true</stringProp>
  43624. </elementProp>
  43625. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  43626. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43627. <stringProp name="Argument.value">2</stringProp>
  43628. <stringProp name="Argument.metadata">=</stringProp>
  43629. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43630. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  43631. <stringProp name="Argument.desc">true</stringProp>
  43632. </elementProp>
  43633. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  43634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43635. <stringProp name="Argument.value">${related_product_id}</stringProp>
  43636. <stringProp name="Argument.metadata">=</stringProp>
  43637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43638. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  43639. </elementProp>
  43640. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  43641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43642. <stringProp name="Argument.value">1</stringProp>
  43643. <stringProp name="Argument.metadata">=</stringProp>
  43644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43645. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  43646. </elementProp>
  43647. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  43648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43649. <stringProp name="Argument.value">${related_product_id}</stringProp>
  43650. <stringProp name="Argument.metadata">=</stringProp>
  43651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43652. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  43653. </elementProp>
  43654. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  43655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43656. <stringProp name="Argument.value">1</stringProp>
  43657. <stringProp name="Argument.metadata">=</stringProp>
  43658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43659. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  43660. </elementProp>
  43661. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  43662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43663. <stringProp name="Argument.value">${related_product_id}</stringProp>
  43664. <stringProp name="Argument.metadata">=</stringProp>
  43665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43666. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  43667. </elementProp>
  43668. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  43669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43670. <stringProp name="Argument.value">1</stringProp>
  43671. <stringProp name="Argument.metadata">=</stringProp>
  43672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43673. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  43674. </elementProp>
  43675. </collectionProp>
  43676. </elementProp>
  43677. <stringProp name="HTTPSampler.domain"/>
  43678. <stringProp name="HTTPSampler.port"/>
  43679. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  43680. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  43681. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  43682. <stringProp name="HTTPSampler.contentEncoding"/>
  43683. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  43684. <stringProp name="HTTPSampler.method">POST</stringProp>
  43685. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  43686. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  43687. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  43688. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  43689. <boolProp name="HTTPSampler.monitor">false</boolProp>
  43690. <stringProp name="HTTPSampler.embedded_url_re"/>
  43691. </HTTPSamplerProxy>
  43692. <hashTree>
  43693. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  43694. <collectionProp name="Asserion.test_strings">
  43695. <stringProp name="1853918323">{"error":false}</stringProp>
  43696. </collectionProp>
  43697. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  43698. <boolProp name="Assertion.assume_success">false</boolProp>
  43699. <intProp name="Assertion.test_type">2</intProp>
  43700. </ResponseAssertion>
  43701. <hashTree/>
  43702. </hashTree>
  43703. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Save" enabled="true">
  43704. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  43705. <collectionProp name="Arguments.arguments">
  43706. <elementProp name="ajax" elementType="HTTPArgument">
  43707. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43708. <stringProp name="Argument.value">true</stringProp>
  43709. <stringProp name="Argument.metadata">=</stringProp>
  43710. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43711. <stringProp name="Argument.name">ajax</stringProp>
  43712. <stringProp name="Argument.desc">false</stringProp>
  43713. </elementProp>
  43714. <elementProp name="isAjax" elementType="HTTPArgument">
  43715. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43716. <stringProp name="Argument.value">true</stringProp>
  43717. <stringProp name="Argument.metadata">=</stringProp>
  43718. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43719. <stringProp name="Argument.name">isAjax</stringProp>
  43720. <stringProp name="Argument.desc">false</stringProp>
  43721. </elementProp>
  43722. <elementProp name="form_key" elementType="HTTPArgument">
  43723. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43724. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  43725. <stringProp name="Argument.metadata">=</stringProp>
  43726. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43727. <stringProp name="Argument.name">form_key</stringProp>
  43728. <stringProp name="Argument.desc">false</stringProp>
  43729. </elementProp>
  43730. <elementProp name="product[name]" elementType="HTTPArgument">
  43731. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43732. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  43733. <stringProp name="Argument.metadata">=</stringProp>
  43734. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43735. <stringProp name="Argument.name">product[name]</stringProp>
  43736. <stringProp name="Argument.desc">false</stringProp>
  43737. </elementProp>
  43738. <elementProp name="product[sku]" elementType="HTTPArgument">
  43739. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43740. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  43741. <stringProp name="Argument.metadata">=</stringProp>
  43742. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43743. <stringProp name="Argument.name">product[sku]</stringProp>
  43744. <stringProp name="Argument.desc">false</stringProp>
  43745. </elementProp>
  43746. <elementProp name="product[price]" elementType="HTTPArgument">
  43747. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43748. <stringProp name="Argument.value">42</stringProp>
  43749. <stringProp name="Argument.metadata">=</stringProp>
  43750. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43751. <stringProp name="Argument.name">product[price]</stringProp>
  43752. </elementProp>
  43753. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  43754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43755. <stringProp name="Argument.value">2</stringProp>
  43756. <stringProp name="Argument.metadata">=</stringProp>
  43757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43758. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  43759. </elementProp>
  43760. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  43761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43762. <stringProp name="Argument.value">111</stringProp>
  43763. <stringProp name="Argument.metadata">=</stringProp>
  43764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43765. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  43766. </elementProp>
  43767. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  43768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43769. <stringProp name="Argument.value">1</stringProp>
  43770. <stringProp name="Argument.metadata">=</stringProp>
  43771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43772. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  43773. </elementProp>
  43774. <elementProp name="product[weight]" elementType="HTTPArgument">
  43775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43776. <stringProp name="Argument.value">1.0000</stringProp>
  43777. <stringProp name="Argument.metadata">=</stringProp>
  43778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43779. <stringProp name="Argument.name">product[weight]</stringProp>
  43780. </elementProp>
  43781. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  43782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43783. <stringProp name="Argument.value">1</stringProp>
  43784. <stringProp name="Argument.metadata">=</stringProp>
  43785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43786. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  43787. <stringProp name="Argument.desc">true</stringProp>
  43788. </elementProp>
  43789. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  43790. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43791. <stringProp name="Argument.value">2</stringProp>
  43792. <stringProp name="Argument.metadata">=</stringProp>
  43793. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43794. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  43795. </elementProp>
  43796. <elementProp name="product[description]" elementType="HTTPArgument">
  43797. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43798. <stringProp name="Argument.value">&lt;p&gt;Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  43799. <stringProp name="Argument.metadata">=</stringProp>
  43800. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43801. <stringProp name="Argument.name">product[description]</stringProp>
  43802. </elementProp>
  43803. <elementProp name="product[short_description]" elementType="HTTPArgument">
  43804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43805. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  43806. <stringProp name="Argument.metadata">=</stringProp>
  43807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43808. <stringProp name="Argument.name">product[short_description]</stringProp>
  43809. </elementProp>
  43810. <elementProp name="product[status]" elementType="HTTPArgument">
  43811. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43812. <stringProp name="Argument.value">1</stringProp>
  43813. <stringProp name="Argument.metadata">=</stringProp>
  43814. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43815. <stringProp name="Argument.name">product[status]</stringProp>
  43816. </elementProp>
  43817. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  43818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43819. <stringProp name="Argument.value"/>
  43820. <stringProp name="Argument.metadata">=</stringProp>
  43821. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43822. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  43823. </elementProp>
  43824. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  43825. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43826. <stringProp name="Argument.value">1</stringProp>
  43827. <stringProp name="Argument.metadata">=</stringProp>
  43828. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43829. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  43830. </elementProp>
  43831. <elementProp name="product[image]" elementType="HTTPArgument">
  43832. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43833. <stringProp name="Argument.value"/>
  43834. <stringProp name="Argument.metadata">=</stringProp>
  43835. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43836. <stringProp name="Argument.name">product[image]</stringProp>
  43837. </elementProp>
  43838. <elementProp name="product[small_image]" elementType="HTTPArgument">
  43839. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43840. <stringProp name="Argument.value"/>
  43841. <stringProp name="Argument.metadata">=</stringProp>
  43842. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43843. <stringProp name="Argument.name">product[small_image]</stringProp>
  43844. </elementProp>
  43845. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  43846. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43847. <stringProp name="Argument.value"/>
  43848. <stringProp name="Argument.metadata">=</stringProp>
  43849. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43850. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  43851. </elementProp>
  43852. <elementProp name="product[url_key]" elementType="HTTPArgument">
  43853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43854. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  43855. <stringProp name="Argument.metadata">=</stringProp>
  43856. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43857. <stringProp name="Argument.name">product[url_key]</stringProp>
  43858. </elementProp>
  43859. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  43860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43861. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  43862. <stringProp name="Argument.metadata">=</stringProp>
  43863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43864. <stringProp name="Argument.name">product[meta_title]</stringProp>
  43865. </elementProp>
  43866. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  43867. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43868. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  43869. <stringProp name="Argument.metadata">=</stringProp>
  43870. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43871. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  43872. </elementProp>
  43873. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  43874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43875. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  43876. <stringProp name="Argument.metadata">=</stringProp>
  43877. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43878. <stringProp name="Argument.name">product[meta_description]</stringProp>
  43879. </elementProp>
  43880. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  43881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43882. <stringProp name="Argument.value">1</stringProp>
  43883. <stringProp name="Argument.metadata">=</stringProp>
  43884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43885. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  43886. </elementProp>
  43887. <elementProp name="product[special_price]" elementType="HTTPArgument">
  43888. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43889. <stringProp name="Argument.value">99</stringProp>
  43890. <stringProp name="Argument.metadata">=</stringProp>
  43891. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43892. <stringProp name="Argument.name">product[special_price]</stringProp>
  43893. </elementProp>
  43894. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  43895. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43896. <stringProp name="Argument.value"/>
  43897. <stringProp name="Argument.metadata">=</stringProp>
  43898. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43899. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  43900. </elementProp>
  43901. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  43902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43903. <stringProp name="Argument.value"/>
  43904. <stringProp name="Argument.metadata">=</stringProp>
  43905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43906. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  43907. </elementProp>
  43908. <elementProp name="product[cost]" elementType="HTTPArgument">
  43909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43910. <stringProp name="Argument.value"/>
  43911. <stringProp name="Argument.metadata">=</stringProp>
  43912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43913. <stringProp name="Argument.name">product[cost]</stringProp>
  43914. </elementProp>
  43915. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  43916. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43917. <stringProp name="Argument.value">0</stringProp>
  43918. <stringProp name="Argument.metadata">=</stringProp>
  43919. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43920. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  43921. </elementProp>
  43922. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  43923. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43924. <stringProp name="Argument.value">32000</stringProp>
  43925. <stringProp name="Argument.metadata">=</stringProp>
  43926. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43927. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  43928. </elementProp>
  43929. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  43930. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43931. <stringProp name="Argument.value">100</stringProp>
  43932. <stringProp name="Argument.metadata">=</stringProp>
  43933. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43934. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  43935. </elementProp>
  43936. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  43937. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43938. <stringProp name="Argument.value">90</stringProp>
  43939. <stringProp name="Argument.metadata">=</stringProp>
  43940. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43941. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  43942. </elementProp>
  43943. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  43944. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43945. <stringProp name="Argument.value"/>
  43946. <stringProp name="Argument.metadata">=</stringProp>
  43947. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43948. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  43949. </elementProp>
  43950. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  43951. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43952. <stringProp name="Argument.value">0</stringProp>
  43953. <stringProp name="Argument.metadata">=</stringProp>
  43954. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43955. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  43956. </elementProp>
  43957. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  43958. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43959. <stringProp name="Argument.value">1</stringProp>
  43960. <stringProp name="Argument.metadata">=</stringProp>
  43961. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43962. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  43963. </elementProp>
  43964. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  43965. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43966. <stringProp name="Argument.value">101</stringProp>
  43967. <stringProp name="Argument.metadata">=</stringProp>
  43968. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43969. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  43970. </elementProp>
  43971. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  43972. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43973. <stringProp name="Argument.value">99</stringProp>
  43974. <stringProp name="Argument.metadata">=</stringProp>
  43975. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43976. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  43977. </elementProp>
  43978. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  43979. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43980. <stringProp name="Argument.value"/>
  43981. <stringProp name="Argument.metadata">=</stringProp>
  43982. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43983. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  43984. </elementProp>
  43985. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  43986. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43987. <stringProp name="Argument.value">1</stringProp>
  43988. <stringProp name="Argument.metadata">=</stringProp>
  43989. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43990. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  43991. </elementProp>
  43992. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  43993. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  43994. <stringProp name="Argument.value">100500</stringProp>
  43995. <stringProp name="Argument.metadata">=</stringProp>
  43996. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  43997. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  43998. </elementProp>
  43999. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  44000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44001. <stringProp name="Argument.value">100500</stringProp>
  44002. <stringProp name="Argument.metadata">=</stringProp>
  44003. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44004. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  44005. </elementProp>
  44006. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  44007. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44008. <stringProp name="Argument.value">0</stringProp>
  44009. <stringProp name="Argument.metadata">=</stringProp>
  44010. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44011. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  44012. </elementProp>
  44013. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  44014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44015. <stringProp name="Argument.value">1</stringProp>
  44016. <stringProp name="Argument.metadata">=</stringProp>
  44017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44018. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  44019. </elementProp>
  44020. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  44021. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44022. <stringProp name="Argument.value">1</stringProp>
  44023. <stringProp name="Argument.metadata">=</stringProp>
  44024. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44025. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  44026. </elementProp>
  44027. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  44028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44029. <stringProp name="Argument.value">1</stringProp>
  44030. <stringProp name="Argument.metadata">=</stringProp>
  44031. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44032. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  44033. </elementProp>
  44034. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  44035. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44036. <stringProp name="Argument.value">10000</stringProp>
  44037. <stringProp name="Argument.metadata">=</stringProp>
  44038. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44039. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  44040. </elementProp>
  44041. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  44042. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44043. <stringProp name="Argument.value">1</stringProp>
  44044. <stringProp name="Argument.metadata">=</stringProp>
  44045. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44046. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  44047. </elementProp>
  44048. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  44049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44050. <stringProp name="Argument.value">0</stringProp>
  44051. <stringProp name="Argument.metadata">=</stringProp>
  44052. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44053. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  44054. </elementProp>
  44055. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  44056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44057. <stringProp name="Argument.value">0</stringProp>
  44058. <stringProp name="Argument.metadata">=</stringProp>
  44059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44060. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  44061. </elementProp>
  44062. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  44063. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44064. <stringProp name="Argument.value">0</stringProp>
  44065. <stringProp name="Argument.metadata">=</stringProp>
  44066. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44067. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  44068. </elementProp>
  44069. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  44070. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44071. <stringProp name="Argument.value">1</stringProp>
  44072. <stringProp name="Argument.metadata">=</stringProp>
  44073. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44074. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  44075. </elementProp>
  44076. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  44077. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44078. <stringProp name="Argument.value">1</stringProp>
  44079. <stringProp name="Argument.metadata">=</stringProp>
  44080. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44081. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  44082. </elementProp>
  44083. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  44084. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44085. <stringProp name="Argument.value">1</stringProp>
  44086. <stringProp name="Argument.metadata">=</stringProp>
  44087. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44088. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  44089. </elementProp>
  44090. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  44091. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44092. <stringProp name="Argument.value">0</stringProp>
  44093. <stringProp name="Argument.metadata">=</stringProp>
  44094. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44095. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  44096. </elementProp>
  44097. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  44098. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44099. <stringProp name="Argument.value">0</stringProp>
  44100. <stringProp name="Argument.metadata">=</stringProp>
  44101. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44102. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  44103. </elementProp>
  44104. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  44105. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44106. <stringProp name="Argument.value">1</stringProp>
  44107. <stringProp name="Argument.metadata">=</stringProp>
  44108. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44109. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  44110. </elementProp>
  44111. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  44112. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44113. <stringProp name="Argument.value">1</stringProp>
  44114. <stringProp name="Argument.metadata">=</stringProp>
  44115. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44116. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  44117. </elementProp>
  44118. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  44119. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44120. <stringProp name="Argument.value"/>
  44121. <stringProp name="Argument.metadata">=</stringProp>
  44122. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44123. <stringProp name="Argument.name">product[custom_design]</stringProp>
  44124. </elementProp>
  44125. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  44126. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44127. <stringProp name="Argument.value"/>
  44128. <stringProp name="Argument.metadata">=</stringProp>
  44129. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44130. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  44131. </elementProp>
  44132. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  44133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44134. <stringProp name="Argument.value"/>
  44135. <stringProp name="Argument.metadata">=</stringProp>
  44136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44137. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  44138. </elementProp>
  44139. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  44140. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44141. <stringProp name="Argument.value"/>
  44142. <stringProp name="Argument.metadata">=</stringProp>
  44143. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44144. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  44145. </elementProp>
  44146. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  44147. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44148. <stringProp name="Argument.value"/>
  44149. <stringProp name="Argument.metadata">=</stringProp>
  44150. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44151. <stringProp name="Argument.name">product[page_layout]</stringProp>
  44152. </elementProp>
  44153. <elementProp name="product[options_container]" elementType="HTTPArgument">
  44154. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44155. <stringProp name="Argument.value">container2</stringProp>
  44156. <stringProp name="Argument.metadata">=</stringProp>
  44157. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44158. <stringProp name="Argument.name">product[options_container]</stringProp>
  44159. </elementProp>
  44160. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  44161. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44162. <stringProp name="Argument.value"/>
  44163. <stringProp name="Argument.metadata">=</stringProp>
  44164. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44165. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  44166. </elementProp>
  44167. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  44168. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44169. <stringProp name="Argument.value">0</stringProp>
  44170. <stringProp name="Argument.metadata">=</stringProp>
  44171. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44172. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  44173. <stringProp name="Argument.desc">false</stringProp>
  44174. </elementProp>
  44175. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  44176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44177. <stringProp name="Argument.value">option title one</stringProp>
  44178. <stringProp name="Argument.metadata">=</stringProp>
  44179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44180. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  44181. <stringProp name="Argument.desc">false</stringProp>
  44182. </elementProp>
  44183. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  44184. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44185. <stringProp name="Argument.value"/>
  44186. <stringProp name="Argument.metadata">=</stringProp>
  44187. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44188. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  44189. <stringProp name="Argument.desc">false</stringProp>
  44190. </elementProp>
  44191. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  44192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44193. <stringProp name="Argument.value"/>
  44194. <stringProp name="Argument.metadata">=</stringProp>
  44195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44196. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  44197. <stringProp name="Argument.desc">false</stringProp>
  44198. </elementProp>
  44199. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  44200. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44201. <stringProp name="Argument.value">select</stringProp>
  44202. <stringProp name="Argument.metadata">=</stringProp>
  44203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44204. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  44205. <stringProp name="Argument.desc">false</stringProp>
  44206. </elementProp>
  44207. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  44208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44209. <stringProp name="Argument.value">1</stringProp>
  44210. <stringProp name="Argument.metadata">=</stringProp>
  44211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44212. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  44213. <stringProp name="Argument.desc">false</stringProp>
  44214. </elementProp>
  44215. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  44216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44217. <stringProp name="Argument.value">0</stringProp>
  44218. <stringProp name="Argument.metadata">=</stringProp>
  44219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44220. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  44221. <stringProp name="Argument.desc">false</stringProp>
  44222. </elementProp>
  44223. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  44224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44225. <stringProp name="Argument.value"/>
  44226. <stringProp name="Argument.metadata">=</stringProp>
  44227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44228. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  44229. <stringProp name="Argument.desc">false</stringProp>
  44230. </elementProp>
  44231. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  44232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44233. <stringProp name="Argument.value"/>
  44234. <stringProp name="Argument.metadata">=</stringProp>
  44235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44236. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  44237. <stringProp name="Argument.desc">false</stringProp>
  44238. </elementProp>
  44239. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  44240. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44241. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  44242. <stringProp name="Argument.metadata">=</stringProp>
  44243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44244. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  44245. <stringProp name="Argument.desc">false</stringProp>
  44246. </elementProp>
  44247. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  44248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44249. <stringProp name="Argument.value"/>
  44250. <stringProp name="Argument.metadata">=</stringProp>
  44251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44252. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  44253. <stringProp name="Argument.desc">false</stringProp>
  44254. </elementProp>
  44255. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  44256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44257. <stringProp name="Argument.value">25</stringProp>
  44258. <stringProp name="Argument.metadata">=</stringProp>
  44259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44260. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  44261. <stringProp name="Argument.desc">false</stringProp>
  44262. </elementProp>
  44263. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  44264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44265. <stringProp name="Argument.value">1</stringProp>
  44266. <stringProp name="Argument.metadata">=</stringProp>
  44267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44268. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  44269. <stringProp name="Argument.desc">false</stringProp>
  44270. </elementProp>
  44271. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  44272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44273. <stringProp name="Argument.value">1</stringProp>
  44274. <stringProp name="Argument.metadata">=</stringProp>
  44275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44276. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  44277. <stringProp name="Argument.desc">false</stringProp>
  44278. </elementProp>
  44279. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  44280. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44281. <stringProp name="Argument.value">1</stringProp>
  44282. <stringProp name="Argument.metadata">=</stringProp>
  44283. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44284. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  44285. <stringProp name="Argument.desc">false</stringProp>
  44286. </elementProp>
  44287. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  44288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44289. <stringProp name="Argument.value">0</stringProp>
  44290. <stringProp name="Argument.metadata">=</stringProp>
  44291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44292. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  44293. <stringProp name="Argument.desc">false</stringProp>
  44294. </elementProp>
  44295. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  44296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44297. <stringProp name="Argument.value"/>
  44298. <stringProp name="Argument.metadata">=</stringProp>
  44299. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44300. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  44301. <stringProp name="Argument.desc">false</stringProp>
  44302. </elementProp>
  44303. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  44304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44305. <stringProp name="Argument.value"/>
  44306. <stringProp name="Argument.metadata">=</stringProp>
  44307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44308. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  44309. <stringProp name="Argument.desc">false</stringProp>
  44310. </elementProp>
  44311. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  44312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44313. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  44314. <stringProp name="Argument.metadata">=</stringProp>
  44315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44316. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  44317. <stringProp name="Argument.desc">false</stringProp>
  44318. </elementProp>
  44319. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  44320. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44321. <stringProp name="Argument.value"/>
  44322. <stringProp name="Argument.metadata">=</stringProp>
  44323. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44324. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  44325. <stringProp name="Argument.desc">false</stringProp>
  44326. </elementProp>
  44327. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  44328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44329. <stringProp name="Argument.value">10.99</stringProp>
  44330. <stringProp name="Argument.metadata">=</stringProp>
  44331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44332. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  44333. <stringProp name="Argument.desc">false</stringProp>
  44334. </elementProp>
  44335. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  44336. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44337. <stringProp name="Argument.value">0</stringProp>
  44338. <stringProp name="Argument.metadata">=</stringProp>
  44339. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44340. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  44341. <stringProp name="Argument.desc">false</stringProp>
  44342. </elementProp>
  44343. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  44344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44345. <stringProp name="Argument.value">1</stringProp>
  44346. <stringProp name="Argument.metadata">=</stringProp>
  44347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44348. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  44349. <stringProp name="Argument.desc">false</stringProp>
  44350. </elementProp>
  44351. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  44352. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44353. <stringProp name="Argument.value">1</stringProp>
  44354. <stringProp name="Argument.metadata">=</stringProp>
  44355. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44356. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  44357. <stringProp name="Argument.desc">false</stringProp>
  44358. </elementProp>
  44359. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  44360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44361. <stringProp name="Argument.value">1</stringProp>
  44362. <stringProp name="Argument.metadata">=</stringProp>
  44363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44364. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  44365. <stringProp name="Argument.desc">false</stringProp>
  44366. </elementProp>
  44367. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  44368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44369. <stringProp name="Argument.value">option title two</stringProp>
  44370. <stringProp name="Argument.metadata">=</stringProp>
  44371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44372. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  44373. <stringProp name="Argument.desc">false</stringProp>
  44374. </elementProp>
  44375. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  44376. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44377. <stringProp name="Argument.value"/>
  44378. <stringProp name="Argument.metadata">=</stringProp>
  44379. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44380. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  44381. <stringProp name="Argument.desc">false</stringProp>
  44382. </elementProp>
  44383. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  44384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44385. <stringProp name="Argument.value"/>
  44386. <stringProp name="Argument.metadata">=</stringProp>
  44387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44388. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  44389. <stringProp name="Argument.desc">false</stringProp>
  44390. </elementProp>
  44391. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  44392. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44393. <stringProp name="Argument.value">select</stringProp>
  44394. <stringProp name="Argument.metadata">=</stringProp>
  44395. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44396. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  44397. <stringProp name="Argument.desc">false</stringProp>
  44398. </elementProp>
  44399. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  44400. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44401. <stringProp name="Argument.value">1</stringProp>
  44402. <stringProp name="Argument.metadata">=</stringProp>
  44403. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44404. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  44405. <stringProp name="Argument.desc">false</stringProp>
  44406. </elementProp>
  44407. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  44408. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44409. <stringProp name="Argument.value">1</stringProp>
  44410. <stringProp name="Argument.metadata">=</stringProp>
  44411. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44412. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  44413. <stringProp name="Argument.desc">false</stringProp>
  44414. </elementProp>
  44415. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  44416. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44417. <stringProp name="Argument.value"/>
  44418. <stringProp name="Argument.metadata">=</stringProp>
  44419. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44420. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  44421. <stringProp name="Argument.desc">false</stringProp>
  44422. </elementProp>
  44423. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  44424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44425. <stringProp name="Argument.value"/>
  44426. <stringProp name="Argument.metadata">=</stringProp>
  44427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44428. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  44429. <stringProp name="Argument.desc">false</stringProp>
  44430. </elementProp>
  44431. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  44432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44433. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  44434. <stringProp name="Argument.metadata">=</stringProp>
  44435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44436. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  44437. <stringProp name="Argument.desc">false</stringProp>
  44438. </elementProp>
  44439. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  44440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44441. <stringProp name="Argument.value"/>
  44442. <stringProp name="Argument.metadata">=</stringProp>
  44443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44444. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  44445. <stringProp name="Argument.desc">false</stringProp>
  44446. </elementProp>
  44447. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  44448. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44449. <stringProp name="Argument.value">5.00</stringProp>
  44450. <stringProp name="Argument.metadata">=</stringProp>
  44451. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44452. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  44453. <stringProp name="Argument.desc">false</stringProp>
  44454. </elementProp>
  44455. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  44456. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44457. <stringProp name="Argument.value">0</stringProp>
  44458. <stringProp name="Argument.metadata">=</stringProp>
  44459. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44460. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  44461. <stringProp name="Argument.desc">false</stringProp>
  44462. </elementProp>
  44463. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  44464. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44465. <stringProp name="Argument.value">1</stringProp>
  44466. <stringProp name="Argument.metadata">=</stringProp>
  44467. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44468. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  44469. <stringProp name="Argument.desc">false</stringProp>
  44470. </elementProp>
  44471. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  44472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44473. <stringProp name="Argument.value">1</stringProp>
  44474. <stringProp name="Argument.metadata">=</stringProp>
  44475. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44476. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  44477. <stringProp name="Argument.desc">false</stringProp>
  44478. </elementProp>
  44479. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  44480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44481. <stringProp name="Argument.value">0</stringProp>
  44482. <stringProp name="Argument.metadata">=</stringProp>
  44483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44484. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  44485. <stringProp name="Argument.desc">false</stringProp>
  44486. </elementProp>
  44487. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  44488. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44489. <stringProp name="Argument.value"/>
  44490. <stringProp name="Argument.metadata">=</stringProp>
  44491. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44492. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  44493. <stringProp name="Argument.desc">false</stringProp>
  44494. </elementProp>
  44495. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  44496. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44497. <stringProp name="Argument.value"/>
  44498. <stringProp name="Argument.metadata">=</stringProp>
  44499. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44500. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  44501. <stringProp name="Argument.desc">false</stringProp>
  44502. </elementProp>
  44503. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  44504. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44505. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  44506. <stringProp name="Argument.metadata">=</stringProp>
  44507. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44508. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  44509. <stringProp name="Argument.desc">false</stringProp>
  44510. </elementProp>
  44511. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  44512. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44513. <stringProp name="Argument.value"/>
  44514. <stringProp name="Argument.metadata">=</stringProp>
  44515. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44516. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  44517. <stringProp name="Argument.desc">false</stringProp>
  44518. </elementProp>
  44519. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  44520. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44521. <stringProp name="Argument.value">7.00</stringProp>
  44522. <stringProp name="Argument.metadata">=</stringProp>
  44523. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44524. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  44525. <stringProp name="Argument.desc">false</stringProp>
  44526. </elementProp>
  44527. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  44528. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44529. <stringProp name="Argument.value">0</stringProp>
  44530. <stringProp name="Argument.metadata">=</stringProp>
  44531. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44532. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  44533. <stringProp name="Argument.desc">false</stringProp>
  44534. </elementProp>
  44535. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  44536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44537. <stringProp name="Argument.value">1</stringProp>
  44538. <stringProp name="Argument.metadata">=</stringProp>
  44539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44540. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  44541. <stringProp name="Argument.desc">false</stringProp>
  44542. </elementProp>
  44543. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  44544. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44545. <stringProp name="Argument.value">1</stringProp>
  44546. <stringProp name="Argument.metadata">=</stringProp>
  44547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44548. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  44549. <stringProp name="Argument.desc">false</stringProp>
  44550. </elementProp>
  44551. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  44552. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44553. <stringProp name="Argument.value">1</stringProp>
  44554. <stringProp name="Argument.metadata">=</stringProp>
  44555. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44556. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  44557. <stringProp name="Argument.desc">false</stringProp>
  44558. </elementProp>
  44559. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  44560. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44561. <stringProp name="Argument.value">2</stringProp>
  44562. <stringProp name="Argument.metadata">=</stringProp>
  44563. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44564. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  44565. <stringProp name="Argument.desc">false</stringProp>
  44566. </elementProp>
  44567. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  44568. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44569. <stringProp name="Argument.value">${related_product_id}</stringProp>
  44570. <stringProp name="Argument.metadata">=</stringProp>
  44571. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44572. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  44573. </elementProp>
  44574. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  44575. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44576. <stringProp name="Argument.value">1</stringProp>
  44577. <stringProp name="Argument.metadata">=</stringProp>
  44578. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44579. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  44580. </elementProp>
  44581. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  44582. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44583. <stringProp name="Argument.value">${related_product_id}</stringProp>
  44584. <stringProp name="Argument.metadata">=</stringProp>
  44585. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44586. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  44587. </elementProp>
  44588. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  44589. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44590. <stringProp name="Argument.value">1</stringProp>
  44591. <stringProp name="Argument.metadata">=</stringProp>
  44592. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44593. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  44594. </elementProp>
  44595. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  44596. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44597. <stringProp name="Argument.value">${related_product_id}</stringProp>
  44598. <stringProp name="Argument.metadata">=</stringProp>
  44599. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44600. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  44601. </elementProp>
  44602. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  44603. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44604. <stringProp name="Argument.value">1</stringProp>
  44605. <stringProp name="Argument.metadata">=</stringProp>
  44606. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44607. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  44608. </elementProp>
  44609. </collectionProp>
  44610. </elementProp>
  44611. <stringProp name="HTTPSampler.domain"/>
  44612. <stringProp name="HTTPSampler.port"/>
  44613. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  44614. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  44615. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  44616. <stringProp name="HTTPSampler.contentEncoding"/>
  44617. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/</stringProp>
  44618. <stringProp name="HTTPSampler.method">POST</stringProp>
  44619. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  44620. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  44621. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  44622. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  44623. <boolProp name="HTTPSampler.monitor">false</boolProp>
  44624. <stringProp name="HTTPSampler.embedded_url_re"/>
  44625. </HTTPSamplerProxy>
  44626. <hashTree>
  44627. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  44628. <collectionProp name="Asserion.test_strings">
  44629. <stringProp name="-583471546">You saved the product</stringProp>
  44630. <stringProp name="-1534079309">option title one</stringProp>
  44631. <stringProp name="-1534074215">option title two</stringProp>
  44632. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  44633. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  44634. </collectionProp>
  44635. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  44636. <boolProp name="Assertion.assume_success">false</boolProp>
  44637. <intProp name="Assertion.test_type">2</intProp>
  44638. </ResponseAssertion>
  44639. <hashTree/>
  44640. </hashTree>
  44641. </hashTree>
  44642. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Create Configurable Product" enabled="true">
  44643. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  44644. </GenericController>
  44645. <hashTree>
  44646. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  44647. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  44648. <collectionProp name="Arguments.arguments"/>
  44649. </elementProp>
  44650. <stringProp name="HTTPSampler.domain"/>
  44651. <stringProp name="HTTPSampler.port"/>
  44652. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  44653. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  44654. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  44655. <stringProp name="HTTPSampler.contentEncoding"/>
  44656. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  44657. <stringProp name="HTTPSampler.method">GET</stringProp>
  44658. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  44659. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  44660. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  44661. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  44662. <boolProp name="HTTPSampler.monitor">false</boolProp>
  44663. <stringProp name="HTTPSampler.embedded_url_re"/>
  44664. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/open_catalog_grid.jmx</stringProp></HTTPSamplerProxy>
  44665. <hashTree>
  44666. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  44667. <collectionProp name="Asserion.test_strings">
  44668. <stringProp name="1509986340">records found</stringProp>
  44669. </collectionProp>
  44670. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  44671. <boolProp name="Assertion.assume_success">false</boolProp>
  44672. <intProp name="Assertion.test_type">2</intProp>
  44673. </ResponseAssertion>
  44674. <hashTree/>
  44675. </hashTree>
  44676. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product" enabled="true">
  44677. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  44678. <collectionProp name="Arguments.arguments"/>
  44679. </elementProp>
  44680. <stringProp name="HTTPSampler.domain"/>
  44681. <stringProp name="HTTPSampler.port"/>
  44682. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  44683. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  44684. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  44685. <stringProp name="HTTPSampler.contentEncoding"/>
  44686. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/${attribute_set_id}/type/configurable/</stringProp>
  44687. <stringProp name="HTTPSampler.method">GET</stringProp>
  44688. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  44689. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  44690. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  44691. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  44692. <boolProp name="HTTPSampler.monitor">false</boolProp>
  44693. <stringProp name="HTTPSampler.embedded_url_re"/>
  44694. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/new_configurable.jmx</stringProp></HTTPSamplerProxy>
  44695. <hashTree>
  44696. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  44697. <collectionProp name="Asserion.test_strings">
  44698. <stringProp name="-144461265">New Product</stringProp>
  44699. </collectionProp>
  44700. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  44701. <boolProp name="Assertion.assume_success">false</boolProp>
  44702. <intProp name="Assertion.test_type">2</intProp>
  44703. </ResponseAssertion>
  44704. <hashTree/>
  44705. </hashTree>
  44706. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Validate" enabled="true">
  44707. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  44708. <collectionProp name="Arguments.arguments">
  44709. <elementProp name="ajax" elementType="HTTPArgument">
  44710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44711. <stringProp name="Argument.value">true</stringProp>
  44712. <stringProp name="Argument.metadata">=</stringProp>
  44713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44714. <stringProp name="Argument.name">ajax</stringProp>
  44715. <stringProp name="Argument.desc">false</stringProp>
  44716. </elementProp>
  44717. <elementProp name="isAjax" elementType="HTTPArgument">
  44718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44719. <stringProp name="Argument.value">true</stringProp>
  44720. <stringProp name="Argument.metadata">=</stringProp>
  44721. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44722. <stringProp name="Argument.name">isAjax</stringProp>
  44723. <stringProp name="Argument.desc">false</stringProp>
  44724. </elementProp>
  44725. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  44726. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44727. <stringProp name="Argument.value">1</stringProp>
  44728. <stringProp name="Argument.metadata">=</stringProp>
  44729. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44730. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  44731. <stringProp name="Argument.desc">true</stringProp>
  44732. </elementProp>
  44733. <elementProp name="form_key" elementType="HTTPArgument">
  44734. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44735. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  44736. <stringProp name="Argument.metadata">=</stringProp>
  44737. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44738. <stringProp name="Argument.name">form_key</stringProp>
  44739. <stringProp name="Argument.desc">true</stringProp>
  44740. </elementProp>
  44741. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  44742. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44743. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  44744. <stringProp name="Argument.metadata">=</stringProp>
  44745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44746. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  44747. <stringProp name="Argument.desc">true</stringProp>
  44748. </elementProp>
  44749. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  44750. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44751. <stringProp name="Argument.value">1</stringProp>
  44752. <stringProp name="Argument.metadata">=</stringProp>
  44753. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44754. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  44755. <stringProp name="Argument.desc">true</stringProp>
  44756. </elementProp>
  44757. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  44758. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44759. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  44760. <stringProp name="Argument.metadata">=</stringProp>
  44761. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44762. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  44763. <stringProp name="Argument.desc">true</stringProp>
  44764. </elementProp>
  44765. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  44766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44767. <stringProp name="Argument.value">4</stringProp>
  44768. <stringProp name="Argument.metadata">=</stringProp>
  44769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44770. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  44771. <stringProp name="Argument.desc">true</stringProp>
  44772. </elementProp>
  44773. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  44774. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44775. <stringProp name="Argument.value"/>
  44776. <stringProp name="Argument.metadata">=</stringProp>
  44777. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44778. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  44779. <stringProp name="Argument.desc">true</stringProp>
  44780. </elementProp>
  44781. <elementProp name="product[description]" elementType="HTTPArgument">
  44782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44783. <stringProp name="Argument.value"/>
  44784. <stringProp name="Argument.metadata">=</stringProp>
  44785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44786. <stringProp name="Argument.name">product[description]</stringProp>
  44787. <stringProp name="Argument.desc">true</stringProp>
  44788. </elementProp>
  44789. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  44790. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44791. <stringProp name="Argument.value">0</stringProp>
  44792. <stringProp name="Argument.metadata">=</stringProp>
  44793. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44794. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  44795. <stringProp name="Argument.desc">true</stringProp>
  44796. </elementProp>
  44797. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  44798. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44799. <stringProp name="Argument.value">1</stringProp>
  44800. <stringProp name="Argument.metadata">=</stringProp>
  44801. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44802. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  44803. <stringProp name="Argument.desc">true</stringProp>
  44804. </elementProp>
  44805. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  44806. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44807. <stringProp name="Argument.value"/>
  44808. <stringProp name="Argument.metadata">=</stringProp>
  44809. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44810. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  44811. <stringProp name="Argument.desc">true</stringProp>
  44812. </elementProp>
  44813. <elementProp name="product[image]" elementType="HTTPArgument">
  44814. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44815. <stringProp name="Argument.value"/>
  44816. <stringProp name="Argument.metadata">=</stringProp>
  44817. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44818. <stringProp name="Argument.name">product[image]</stringProp>
  44819. <stringProp name="Argument.desc">true</stringProp>
  44820. </elementProp>
  44821. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  44822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44823. <stringProp name="Argument.value">2</stringProp>
  44824. <stringProp name="Argument.metadata">=</stringProp>
  44825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44826. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  44827. <stringProp name="Argument.desc">true</stringProp>
  44828. </elementProp>
  44829. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  44830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44831. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  44832. <stringProp name="Argument.metadata">=</stringProp>
  44833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44834. <stringProp name="Argument.name">product[meta_description]</stringProp>
  44835. <stringProp name="Argument.desc">true</stringProp>
  44836. </elementProp>
  44837. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  44838. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44839. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  44840. <stringProp name="Argument.metadata">=</stringProp>
  44841. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44842. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  44843. <stringProp name="Argument.desc">true</stringProp>
  44844. </elementProp>
  44845. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  44846. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44847. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  44848. <stringProp name="Argument.metadata">=</stringProp>
  44849. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44850. <stringProp name="Argument.name">product[meta_title]</stringProp>
  44851. <stringProp name="Argument.desc">true</stringProp>
  44852. </elementProp>
  44853. <elementProp name="product[name]" elementType="HTTPArgument">
  44854. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44855. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  44856. <stringProp name="Argument.metadata">=</stringProp>
  44857. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44858. <stringProp name="Argument.name">product[name]</stringProp>
  44859. <stringProp name="Argument.desc">true</stringProp>
  44860. </elementProp>
  44861. <elementProp name="product[options_container]" elementType="HTTPArgument">
  44862. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44863. <stringProp name="Argument.value">container2</stringProp>
  44864. <stringProp name="Argument.metadata">=</stringProp>
  44865. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44866. <stringProp name="Argument.name">product[options_container]</stringProp>
  44867. <stringProp name="Argument.desc">true</stringProp>
  44868. </elementProp>
  44869. <elementProp name="product[price]" elementType="HTTPArgument">
  44870. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44871. <stringProp name="Argument.value">${price_new}</stringProp>
  44872. <stringProp name="Argument.metadata">=</stringProp>
  44873. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44874. <stringProp name="Argument.name">product[price]</stringProp>
  44875. <stringProp name="Argument.desc">true</stringProp>
  44876. </elementProp>
  44877. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  44878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44879. <stringProp name="Argument.value">1</stringProp>
  44880. <stringProp name="Argument.metadata">=</stringProp>
  44881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44882. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  44883. <stringProp name="Argument.desc">true</stringProp>
  44884. </elementProp>
  44885. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  44886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44887. <stringProp name="Argument.value">1</stringProp>
  44888. <stringProp name="Argument.metadata">=</stringProp>
  44889. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44890. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  44891. <stringProp name="Argument.desc">true</stringProp>
  44892. </elementProp>
  44893. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  44894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44895. <stringProp name="Argument.value">1000</stringProp>
  44896. <stringProp name="Argument.metadata">=</stringProp>
  44897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44898. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  44899. <stringProp name="Argument.desc">true</stringProp>
  44900. </elementProp>
  44901. <elementProp name="product[short_description]" elementType="HTTPArgument">
  44902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44903. <stringProp name="Argument.value"/>
  44904. <stringProp name="Argument.metadata">=</stringProp>
  44905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44906. <stringProp name="Argument.name">product[short_description]</stringProp>
  44907. <stringProp name="Argument.desc">true</stringProp>
  44908. </elementProp>
  44909. <elementProp name="product[sku]" elementType="HTTPArgument">
  44910. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44911. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  44912. <stringProp name="Argument.metadata">=</stringProp>
  44913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44914. <stringProp name="Argument.name">product[sku]</stringProp>
  44915. <stringProp name="Argument.desc">true</stringProp>
  44916. </elementProp>
  44917. <elementProp name="product[small_image]" elementType="HTTPArgument">
  44918. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44919. <stringProp name="Argument.value"/>
  44920. <stringProp name="Argument.metadata">=</stringProp>
  44921. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44922. <stringProp name="Argument.name">product[small_image]</stringProp>
  44923. <stringProp name="Argument.desc">true</stringProp>
  44924. </elementProp>
  44925. <elementProp name="product[special_price]" elementType="HTTPArgument">
  44926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44927. <stringProp name="Argument.value">${special_price_new}</stringProp>
  44928. <stringProp name="Argument.metadata">=</stringProp>
  44929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44930. <stringProp name="Argument.name">product[special_price]</stringProp>
  44931. <stringProp name="Argument.desc">true</stringProp>
  44932. </elementProp>
  44933. <elementProp name="product[status]" elementType="HTTPArgument">
  44934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44935. <stringProp name="Argument.value">1</stringProp>
  44936. <stringProp name="Argument.metadata">=</stringProp>
  44937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44938. <stringProp name="Argument.name">product[status]</stringProp>
  44939. <stringProp name="Argument.desc">true</stringProp>
  44940. </elementProp>
  44941. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  44942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44943. <stringProp name="Argument.value">0</stringProp>
  44944. <stringProp name="Argument.metadata">=</stringProp>
  44945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44946. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  44947. <stringProp name="Argument.desc">true</stringProp>
  44948. </elementProp>
  44949. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  44950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44951. <stringProp name="Argument.value">1</stringProp>
  44952. <stringProp name="Argument.metadata">=</stringProp>
  44953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44954. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  44955. <stringProp name="Argument.desc">true</stringProp>
  44956. </elementProp>
  44957. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  44958. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44959. <stringProp name="Argument.value">0</stringProp>
  44960. <stringProp name="Argument.metadata">=</stringProp>
  44961. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44962. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  44963. <stringProp name="Argument.desc">true</stringProp>
  44964. </elementProp>
  44965. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  44966. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44967. <stringProp name="Argument.value">0</stringProp>
  44968. <stringProp name="Argument.metadata">=</stringProp>
  44969. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44970. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  44971. <stringProp name="Argument.desc">true</stringProp>
  44972. </elementProp>
  44973. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  44974. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44975. <stringProp name="Argument.value">0</stringProp>
  44976. <stringProp name="Argument.metadata">=</stringProp>
  44977. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44978. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  44979. <stringProp name="Argument.desc">true</stringProp>
  44980. </elementProp>
  44981. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  44982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44983. <stringProp name="Argument.value">1</stringProp>
  44984. <stringProp name="Argument.metadata">=</stringProp>
  44985. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44986. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  44987. <stringProp name="Argument.desc">true</stringProp>
  44988. </elementProp>
  44989. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  44990. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44991. <stringProp name="Argument.value">10000</stringProp>
  44992. <stringProp name="Argument.metadata">=</stringProp>
  44993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  44994. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  44995. <stringProp name="Argument.desc">true</stringProp>
  44996. </elementProp>
  44997. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  44998. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  44999. <stringProp name="Argument.value">0</stringProp>
  45000. <stringProp name="Argument.metadata">=</stringProp>
  45001. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45002. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  45003. <stringProp name="Argument.desc">true</stringProp>
  45004. </elementProp>
  45005. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  45006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45007. <stringProp name="Argument.value">1</stringProp>
  45008. <stringProp name="Argument.metadata">=</stringProp>
  45009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45010. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  45011. <stringProp name="Argument.desc">true</stringProp>
  45012. </elementProp>
  45013. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  45014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45015. <stringProp name="Argument.value">1</stringProp>
  45016. <stringProp name="Argument.metadata">=</stringProp>
  45017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45018. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  45019. <stringProp name="Argument.desc">true</stringProp>
  45020. </elementProp>
  45021. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  45022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45023. <stringProp name="Argument.value">1</stringProp>
  45024. <stringProp name="Argument.metadata">=</stringProp>
  45025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45026. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  45027. <stringProp name="Argument.desc">true</stringProp>
  45028. </elementProp>
  45029. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  45030. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45031. <stringProp name="Argument.value">1</stringProp>
  45032. <stringProp name="Argument.metadata">=</stringProp>
  45033. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45034. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  45035. <stringProp name="Argument.desc">true</stringProp>
  45036. </elementProp>
  45037. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  45038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45039. <stringProp name="Argument.value">1</stringProp>
  45040. <stringProp name="Argument.metadata">=</stringProp>
  45041. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45042. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  45043. <stringProp name="Argument.desc">true</stringProp>
  45044. </elementProp>
  45045. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  45046. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45047. <stringProp name="Argument.value">1</stringProp>
  45048. <stringProp name="Argument.metadata">=</stringProp>
  45049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45050. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  45051. <stringProp name="Argument.desc">true</stringProp>
  45052. </elementProp>
  45053. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  45054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45055. <stringProp name="Argument.value">1</stringProp>
  45056. <stringProp name="Argument.metadata">=</stringProp>
  45057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45058. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  45059. <stringProp name="Argument.desc">true</stringProp>
  45060. </elementProp>
  45061. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  45062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45063. <stringProp name="Argument.value">1</stringProp>
  45064. <stringProp name="Argument.metadata">=</stringProp>
  45065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45066. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  45067. <stringProp name="Argument.desc">true</stringProp>
  45068. </elementProp>
  45069. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  45070. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45071. <stringProp name="Argument.value">1</stringProp>
  45072. <stringProp name="Argument.metadata">=</stringProp>
  45073. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45074. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  45075. <stringProp name="Argument.desc">true</stringProp>
  45076. </elementProp>
  45077. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  45078. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45079. <stringProp name="Argument.value">1</stringProp>
  45080. <stringProp name="Argument.metadata">=</stringProp>
  45081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45082. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  45083. <stringProp name="Argument.desc">true</stringProp>
  45084. </elementProp>
  45085. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  45086. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45087. <stringProp name="Argument.value">1</stringProp>
  45088. <stringProp name="Argument.metadata">=</stringProp>
  45089. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45090. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  45091. <stringProp name="Argument.desc">true</stringProp>
  45092. </elementProp>
  45093. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  45094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45095. <stringProp name="Argument.value">1</stringProp>
  45096. <stringProp name="Argument.metadata">=</stringProp>
  45097. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45098. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  45099. <stringProp name="Argument.desc">true</stringProp>
  45100. </elementProp>
  45101. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  45102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45103. <stringProp name="Argument.value">2</stringProp>
  45104. <stringProp name="Argument.metadata">=</stringProp>
  45105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45106. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  45107. <stringProp name="Argument.desc">true</stringProp>
  45108. </elementProp>
  45109. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  45110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45111. <stringProp name="Argument.value"/>
  45112. <stringProp name="Argument.metadata">=</stringProp>
  45113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45114. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  45115. <stringProp name="Argument.desc">true</stringProp>
  45116. </elementProp>
  45117. <elementProp name="product[url_key]" elementType="HTTPArgument">
  45118. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45119. <stringProp name="Argument.value"/>
  45120. <stringProp name="Argument.metadata">=</stringProp>
  45121. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45122. <stringProp name="Argument.name">product[url_key]</stringProp>
  45123. <stringProp name="Argument.desc">true</stringProp>
  45124. </elementProp>
  45125. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  45126. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45127. <stringProp name="Argument.value">1</stringProp>
  45128. <stringProp name="Argument.metadata">=</stringProp>
  45129. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45130. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  45131. <stringProp name="Argument.desc">true</stringProp>
  45132. </elementProp>
  45133. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  45134. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45135. <stringProp name="Argument.value">1</stringProp>
  45136. <stringProp name="Argument.metadata">=</stringProp>
  45137. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45138. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  45139. <stringProp name="Argument.desc">true</stringProp>
  45140. </elementProp>
  45141. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  45142. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45143. <stringProp name="Argument.value">1</stringProp>
  45144. <stringProp name="Argument.metadata">=</stringProp>
  45145. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45146. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  45147. <stringProp name="Argument.desc">true</stringProp>
  45148. </elementProp>
  45149. <elementProp name="product[visibility]" elementType="HTTPArgument">
  45150. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45151. <stringProp name="Argument.value">4</stringProp>
  45152. <stringProp name="Argument.metadata">=</stringProp>
  45153. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45154. <stringProp name="Argument.name">product[visibility]</stringProp>
  45155. <stringProp name="Argument.desc">true</stringProp>
  45156. </elementProp>
  45157. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  45158. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45159. <stringProp name="Argument.value">1</stringProp>
  45160. <stringProp name="Argument.metadata">=</stringProp>
  45161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45162. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  45163. <stringProp name="Argument.desc">true</stringProp>
  45164. </elementProp>
  45165. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  45166. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45167. <stringProp name="Argument.value">${related_product_id}</stringProp>
  45168. <stringProp name="Argument.metadata">=</stringProp>
  45169. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45170. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  45171. </elementProp>
  45172. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  45173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45174. <stringProp name="Argument.value">1</stringProp>
  45175. <stringProp name="Argument.metadata">=</stringProp>
  45176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45177. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  45178. </elementProp>
  45179. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  45180. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45181. <stringProp name="Argument.value">${related_product_id}</stringProp>
  45182. <stringProp name="Argument.metadata">=</stringProp>
  45183. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45184. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  45185. </elementProp>
  45186. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  45187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45188. <stringProp name="Argument.value">1</stringProp>
  45189. <stringProp name="Argument.metadata">=</stringProp>
  45190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45191. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  45192. </elementProp>
  45193. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  45194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45195. <stringProp name="Argument.value">${related_product_id}</stringProp>
  45196. <stringProp name="Argument.metadata">=</stringProp>
  45197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45198. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  45199. </elementProp>
  45200. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  45201. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45202. <stringProp name="Argument.value">1</stringProp>
  45203. <stringProp name="Argument.metadata">=</stringProp>
  45204. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45205. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  45206. </elementProp>
  45207. </collectionProp>
  45208. </elementProp>
  45209. <stringProp name="HTTPSampler.domain"/>
  45210. <stringProp name="HTTPSampler.port"/>
  45211. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  45212. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  45213. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  45214. <stringProp name="HTTPSampler.contentEncoding"/>
  45215. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/${attribute_set_id}/</stringProp>
  45216. <stringProp name="HTTPSampler.method">POST</stringProp>
  45217. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  45218. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  45219. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  45220. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  45221. <boolProp name="HTTPSampler.monitor">false</boolProp>
  45222. <stringProp name="HTTPSampler.embedded_url_re"/>
  45223. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_validate.jmx</stringProp></HTTPSamplerProxy>
  45224. <hashTree>
  45225. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  45226. <collectionProp name="Asserion.test_strings">
  45227. <stringProp name="1853918323">{"error":false}</stringProp>
  45228. </collectionProp>
  45229. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  45230. <boolProp name="Assertion.assume_success">false</boolProp>
  45231. <intProp name="Assertion.test_type">2</intProp>
  45232. </ResponseAssertion>
  45233. <hashTree/>
  45234. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  45235. <stringProp name="scriptLanguage">javascript</stringProp>
  45236. <stringProp name="parameters"/>
  45237. <stringProp name="filename"/>
  45238. <stringProp name="cacheKey"/>
  45239. <stringProp name="script">
  45240. attributes = vars.getObject("product_attributes");
  45241. for (i in attributes) {
  45242. var attribute = attributes[i];
  45243. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  45244. sampler.addArgument("attributes[" + i + "]", attribute.id);
  45245. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  45246. addConfigurableAttributeData(attribute);
  45247. }
  45248. addConfigurableMatrix(attributes);
  45249. function addConfigurableAttributeData(attribute) {
  45250. var attributeId = attribute.id;
  45251. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  45252. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  45253. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  45254. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  45255. attribute.options.forEach(function (option, index) {
  45256. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  45257. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  45258. });
  45259. }
  45260. /**
  45261. * Build 4 simple products for Configurable
  45262. */
  45263. function addConfigurableMatrix(attributes) {
  45264. var attribute1 = attributes[0],
  45265. attribute2 = attributes[1],
  45266. productIndex = 1,
  45267. products = [];
  45268. var variationNames = [];
  45269. attribute1.options.forEach(function (option1) {
  45270. attribute2.options.forEach(function (option2) {
  45271. var productAttributes = {},
  45272. namePart = option1.label + "+" + option2.label,
  45273. variationKey = option1.value + "-" + option2.value;
  45274. productAttributes[attribute1.code] = option1.value;
  45275. productAttributes[attribute2.code] = option2.value;
  45276. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  45277. var product = {
  45278. "id": null,
  45279. "name": namePart + " - " + vars.get("configurable_sku"),
  45280. "sku": namePart + " - " + vars.get("configurable_sku"),
  45281. "status": 1,
  45282. "price": "100",
  45283. "price_currency": "$",
  45284. "price_string": "$100",
  45285. "weight": "6",
  45286. "qty": "50",
  45287. "variationKey": variationKey,
  45288. "configurable_attribute": JSON.stringify(productAttributes),
  45289. "thumbnail_image": "",
  45290. "media_gallery": {"images": {}},
  45291. "image": [],
  45292. "was_changed": true,
  45293. "canEdit": 1,
  45294. "newProduct": 1,
  45295. "record_id": productIndex
  45296. };
  45297. productIndex++;
  45298. products.push(product);
  45299. });
  45300. });
  45301. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  45302. vars.putObject("configurable_variations_assertion", variationNames);
  45303. }
  45304. </stringProp>
  45305. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  45306. <hashTree/>
  45307. </hashTree>
  45308. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Save" enabled="true">
  45309. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  45310. <collectionProp name="Arguments.arguments">
  45311. <elementProp name="ajax" elementType="HTTPArgument">
  45312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45313. <stringProp name="Argument.value">true</stringProp>
  45314. <stringProp name="Argument.metadata">=</stringProp>
  45315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45316. <stringProp name="Argument.name">ajax</stringProp>
  45317. <stringProp name="Argument.desc">false</stringProp>
  45318. </elementProp>
  45319. <elementProp name="isAjax" elementType="HTTPArgument">
  45320. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45321. <stringProp name="Argument.value">true</stringProp>
  45322. <stringProp name="Argument.metadata">=</stringProp>
  45323. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45324. <stringProp name="Argument.name">isAjax</stringProp>
  45325. <stringProp name="Argument.desc">false</stringProp>
  45326. </elementProp>
  45327. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  45328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45329. <stringProp name="Argument.value">1</stringProp>
  45330. <stringProp name="Argument.metadata">=</stringProp>
  45331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45332. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  45333. <stringProp name="Argument.desc">true</stringProp>
  45334. </elementProp>
  45335. <elementProp name="form_key" elementType="HTTPArgument">
  45336. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45337. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  45338. <stringProp name="Argument.metadata">=</stringProp>
  45339. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45340. <stringProp name="Argument.name">form_key</stringProp>
  45341. <stringProp name="Argument.desc">true</stringProp>
  45342. </elementProp>
  45343. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  45344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45345. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  45346. <stringProp name="Argument.metadata">=</stringProp>
  45347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45348. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  45349. <stringProp name="Argument.desc">true</stringProp>
  45350. </elementProp>
  45351. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  45352. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45353. <stringProp name="Argument.value">1</stringProp>
  45354. <stringProp name="Argument.metadata">=</stringProp>
  45355. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45356. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  45357. <stringProp name="Argument.desc">true</stringProp>
  45358. </elementProp>
  45359. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  45360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45361. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  45362. <stringProp name="Argument.metadata">=</stringProp>
  45363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45364. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  45365. <stringProp name="Argument.desc">true</stringProp>
  45366. </elementProp>
  45367. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  45368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45369. <stringProp name="Argument.value">2</stringProp>
  45370. <stringProp name="Argument.metadata">=</stringProp>
  45371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45372. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  45373. <stringProp name="Argument.desc">true</stringProp>
  45374. </elementProp>
  45375. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  45376. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45377. <stringProp name="Argument.value"/>
  45378. <stringProp name="Argument.metadata">=</stringProp>
  45379. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45380. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  45381. <stringProp name="Argument.desc">true</stringProp>
  45382. </elementProp>
  45383. <elementProp name="product[description]" elementType="HTTPArgument">
  45384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45385. <stringProp name="Argument.value"/>
  45386. <stringProp name="Argument.metadata">=</stringProp>
  45387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45388. <stringProp name="Argument.name">product[description]</stringProp>
  45389. <stringProp name="Argument.desc">true</stringProp>
  45390. </elementProp>
  45391. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  45392. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45393. <stringProp name="Argument.value">0</stringProp>
  45394. <stringProp name="Argument.metadata">=</stringProp>
  45395. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45396. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  45397. <stringProp name="Argument.desc">true</stringProp>
  45398. </elementProp>
  45399. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  45400. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45401. <stringProp name="Argument.value">1</stringProp>
  45402. <stringProp name="Argument.metadata">=</stringProp>
  45403. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45404. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  45405. <stringProp name="Argument.desc">true</stringProp>
  45406. </elementProp>
  45407. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  45408. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45409. <stringProp name="Argument.value"/>
  45410. <stringProp name="Argument.metadata">=</stringProp>
  45411. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45412. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  45413. <stringProp name="Argument.desc">true</stringProp>
  45414. </elementProp>
  45415. <elementProp name="product[image]" elementType="HTTPArgument">
  45416. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45417. <stringProp name="Argument.value"/>
  45418. <stringProp name="Argument.metadata">=</stringProp>
  45419. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45420. <stringProp name="Argument.name">product[image]</stringProp>
  45421. <stringProp name="Argument.desc">true</stringProp>
  45422. </elementProp>
  45423. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  45424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45425. <stringProp name="Argument.value">2</stringProp>
  45426. <stringProp name="Argument.metadata">=</stringProp>
  45427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45428. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  45429. <stringProp name="Argument.desc">true</stringProp>
  45430. </elementProp>
  45431. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  45432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45433. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  45434. <stringProp name="Argument.metadata">=</stringProp>
  45435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45436. <stringProp name="Argument.name">product[meta_description]</stringProp>
  45437. <stringProp name="Argument.desc">true</stringProp>
  45438. </elementProp>
  45439. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  45440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45441. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  45442. <stringProp name="Argument.metadata">=</stringProp>
  45443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45444. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  45445. <stringProp name="Argument.desc">true</stringProp>
  45446. </elementProp>
  45447. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  45448. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45449. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  45450. <stringProp name="Argument.metadata">=</stringProp>
  45451. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45452. <stringProp name="Argument.name">product[meta_title]</stringProp>
  45453. <stringProp name="Argument.desc">true</stringProp>
  45454. </elementProp>
  45455. <elementProp name="product[name]" elementType="HTTPArgument">
  45456. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45457. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  45458. <stringProp name="Argument.metadata">=</stringProp>
  45459. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45460. <stringProp name="Argument.name">product[name]</stringProp>
  45461. <stringProp name="Argument.desc">true</stringProp>
  45462. </elementProp>
  45463. <elementProp name="product[options_container]" elementType="HTTPArgument">
  45464. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45465. <stringProp name="Argument.value">container2</stringProp>
  45466. <stringProp name="Argument.metadata">=</stringProp>
  45467. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45468. <stringProp name="Argument.name">product[options_container]</stringProp>
  45469. <stringProp name="Argument.desc">true</stringProp>
  45470. </elementProp>
  45471. <elementProp name="product[price]" elementType="HTTPArgument">
  45472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45473. <stringProp name="Argument.value">${price_new}</stringProp>
  45474. <stringProp name="Argument.metadata">=</stringProp>
  45475. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45476. <stringProp name="Argument.name">product[price]</stringProp>
  45477. <stringProp name="Argument.desc">true</stringProp>
  45478. </elementProp>
  45479. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  45480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45481. <stringProp name="Argument.value">1</stringProp>
  45482. <stringProp name="Argument.metadata">=</stringProp>
  45483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45484. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  45485. <stringProp name="Argument.desc">true</stringProp>
  45486. </elementProp>
  45487. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  45488. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45489. <stringProp name="Argument.value">1</stringProp>
  45490. <stringProp name="Argument.metadata">=</stringProp>
  45491. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45492. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  45493. <stringProp name="Argument.desc">true</stringProp>
  45494. </elementProp>
  45495. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  45496. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45497. <stringProp name="Argument.value">1000</stringProp>
  45498. <stringProp name="Argument.metadata">=</stringProp>
  45499. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45500. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  45501. <stringProp name="Argument.desc">true</stringProp>
  45502. </elementProp>
  45503. <elementProp name="product[short_description]" elementType="HTTPArgument">
  45504. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45505. <stringProp name="Argument.value"/>
  45506. <stringProp name="Argument.metadata">=</stringProp>
  45507. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45508. <stringProp name="Argument.name">product[short_description]</stringProp>
  45509. <stringProp name="Argument.desc">true</stringProp>
  45510. </elementProp>
  45511. <elementProp name="product[sku]" elementType="HTTPArgument">
  45512. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45513. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  45514. <stringProp name="Argument.metadata">=</stringProp>
  45515. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45516. <stringProp name="Argument.name">product[sku]</stringProp>
  45517. <stringProp name="Argument.desc">true</stringProp>
  45518. </elementProp>
  45519. <elementProp name="product[small_image]" elementType="HTTPArgument">
  45520. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45521. <stringProp name="Argument.value"/>
  45522. <stringProp name="Argument.metadata">=</stringProp>
  45523. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45524. <stringProp name="Argument.name">product[small_image]</stringProp>
  45525. <stringProp name="Argument.desc">true</stringProp>
  45526. </elementProp>
  45527. <elementProp name="product[special_price]" elementType="HTTPArgument">
  45528. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45529. <stringProp name="Argument.value">${special_price_new}</stringProp>
  45530. <stringProp name="Argument.metadata">=</stringProp>
  45531. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45532. <stringProp name="Argument.name">product[special_price]</stringProp>
  45533. <stringProp name="Argument.desc">true</stringProp>
  45534. </elementProp>
  45535. <elementProp name="product[status]" elementType="HTTPArgument">
  45536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45537. <stringProp name="Argument.value">1</stringProp>
  45538. <stringProp name="Argument.metadata">=</stringProp>
  45539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45540. <stringProp name="Argument.name">product[status]</stringProp>
  45541. <stringProp name="Argument.desc">true</stringProp>
  45542. </elementProp>
  45543. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  45544. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45545. <stringProp name="Argument.value">0</stringProp>
  45546. <stringProp name="Argument.metadata">=</stringProp>
  45547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45548. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  45549. <stringProp name="Argument.desc">true</stringProp>
  45550. </elementProp>
  45551. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  45552. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45553. <stringProp name="Argument.value">1</stringProp>
  45554. <stringProp name="Argument.metadata">=</stringProp>
  45555. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45556. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  45557. <stringProp name="Argument.desc">true</stringProp>
  45558. </elementProp>
  45559. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  45560. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45561. <stringProp name="Argument.value">0</stringProp>
  45562. <stringProp name="Argument.metadata">=</stringProp>
  45563. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45564. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  45565. <stringProp name="Argument.desc">true</stringProp>
  45566. </elementProp>
  45567. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  45568. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45569. <stringProp name="Argument.value">0</stringProp>
  45570. <stringProp name="Argument.metadata">=</stringProp>
  45571. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45572. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  45573. <stringProp name="Argument.desc">true</stringProp>
  45574. </elementProp>
  45575. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  45576. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45577. <stringProp name="Argument.value">0</stringProp>
  45578. <stringProp name="Argument.metadata">=</stringProp>
  45579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45580. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  45581. <stringProp name="Argument.desc">true</stringProp>
  45582. </elementProp>
  45583. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  45584. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45585. <stringProp name="Argument.value">1</stringProp>
  45586. <stringProp name="Argument.metadata">=</stringProp>
  45587. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45588. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  45589. <stringProp name="Argument.desc">true</stringProp>
  45590. </elementProp>
  45591. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  45592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45593. <stringProp name="Argument.value">10000</stringProp>
  45594. <stringProp name="Argument.metadata">=</stringProp>
  45595. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45596. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  45597. <stringProp name="Argument.desc">true</stringProp>
  45598. </elementProp>
  45599. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  45600. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45601. <stringProp name="Argument.value">0</stringProp>
  45602. <stringProp name="Argument.metadata">=</stringProp>
  45603. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45604. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  45605. <stringProp name="Argument.desc">true</stringProp>
  45606. </elementProp>
  45607. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  45608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45609. <stringProp name="Argument.value">1</stringProp>
  45610. <stringProp name="Argument.metadata">=</stringProp>
  45611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45612. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  45613. <stringProp name="Argument.desc">true</stringProp>
  45614. </elementProp>
  45615. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  45616. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45617. <stringProp name="Argument.value">1</stringProp>
  45618. <stringProp name="Argument.metadata">=</stringProp>
  45619. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45620. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  45621. <stringProp name="Argument.desc">true</stringProp>
  45622. </elementProp>
  45623. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  45624. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45625. <stringProp name="Argument.value">1</stringProp>
  45626. <stringProp name="Argument.metadata">=</stringProp>
  45627. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45628. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  45629. <stringProp name="Argument.desc">true</stringProp>
  45630. </elementProp>
  45631. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  45632. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45633. <stringProp name="Argument.value">1</stringProp>
  45634. <stringProp name="Argument.metadata">=</stringProp>
  45635. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45636. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  45637. <stringProp name="Argument.desc">true</stringProp>
  45638. </elementProp>
  45639. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  45640. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45641. <stringProp name="Argument.value">1</stringProp>
  45642. <stringProp name="Argument.metadata">=</stringProp>
  45643. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45644. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  45645. <stringProp name="Argument.desc">true</stringProp>
  45646. </elementProp>
  45647. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  45648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45649. <stringProp name="Argument.value">1</stringProp>
  45650. <stringProp name="Argument.metadata">=</stringProp>
  45651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45652. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  45653. <stringProp name="Argument.desc">true</stringProp>
  45654. </elementProp>
  45655. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  45656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45657. <stringProp name="Argument.value">1</stringProp>
  45658. <stringProp name="Argument.metadata">=</stringProp>
  45659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45660. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  45661. <stringProp name="Argument.desc">true</stringProp>
  45662. </elementProp>
  45663. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  45664. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45665. <stringProp name="Argument.value">1</stringProp>
  45666. <stringProp name="Argument.metadata">=</stringProp>
  45667. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45668. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  45669. <stringProp name="Argument.desc">true</stringProp>
  45670. </elementProp>
  45671. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  45672. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45673. <stringProp name="Argument.value">1</stringProp>
  45674. <stringProp name="Argument.metadata">=</stringProp>
  45675. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45676. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  45677. <stringProp name="Argument.desc">true</stringProp>
  45678. </elementProp>
  45679. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  45680. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45681. <stringProp name="Argument.value">1</stringProp>
  45682. <stringProp name="Argument.metadata">=</stringProp>
  45683. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45684. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  45685. <stringProp name="Argument.desc">true</stringProp>
  45686. </elementProp>
  45687. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  45688. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45689. <stringProp name="Argument.value">1</stringProp>
  45690. <stringProp name="Argument.metadata">=</stringProp>
  45691. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45692. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  45693. <stringProp name="Argument.desc">true</stringProp>
  45694. </elementProp>
  45695. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  45696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45697. <stringProp name="Argument.value">1</stringProp>
  45698. <stringProp name="Argument.metadata">=</stringProp>
  45699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45700. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  45701. <stringProp name="Argument.desc">true</stringProp>
  45702. </elementProp>
  45703. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  45704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45705. <stringProp name="Argument.value">2</stringProp>
  45706. <stringProp name="Argument.metadata">=</stringProp>
  45707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45708. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  45709. <stringProp name="Argument.desc">true</stringProp>
  45710. </elementProp>
  45711. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  45712. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45713. <stringProp name="Argument.value"/>
  45714. <stringProp name="Argument.metadata">=</stringProp>
  45715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45716. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  45717. <stringProp name="Argument.desc">true</stringProp>
  45718. </elementProp>
  45719. <elementProp name="product[url_key]" elementType="HTTPArgument">
  45720. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45721. <stringProp name="Argument.value"/>
  45722. <stringProp name="Argument.metadata">=</stringProp>
  45723. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45724. <stringProp name="Argument.name">product[url_key]</stringProp>
  45725. <stringProp name="Argument.desc">true</stringProp>
  45726. </elementProp>
  45727. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  45728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45729. <stringProp name="Argument.value">1</stringProp>
  45730. <stringProp name="Argument.metadata">=</stringProp>
  45731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45732. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  45733. <stringProp name="Argument.desc">true</stringProp>
  45734. </elementProp>
  45735. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  45736. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45737. <stringProp name="Argument.value">1</stringProp>
  45738. <stringProp name="Argument.metadata">=</stringProp>
  45739. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45740. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  45741. <stringProp name="Argument.desc">true</stringProp>
  45742. </elementProp>
  45743. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  45744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45745. <stringProp name="Argument.value">1</stringProp>
  45746. <stringProp name="Argument.metadata">=</stringProp>
  45747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45748. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  45749. <stringProp name="Argument.desc">true</stringProp>
  45750. </elementProp>
  45751. <elementProp name="product[visibility]" elementType="HTTPArgument">
  45752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45753. <stringProp name="Argument.value">4</stringProp>
  45754. <stringProp name="Argument.metadata">=</stringProp>
  45755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45756. <stringProp name="Argument.name">product[visibility]</stringProp>
  45757. <stringProp name="Argument.desc">true</stringProp>
  45758. </elementProp>
  45759. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  45760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45761. <stringProp name="Argument.value">1</stringProp>
  45762. <stringProp name="Argument.metadata">=</stringProp>
  45763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45764. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  45765. <stringProp name="Argument.desc">true</stringProp>
  45766. </elementProp>
  45767. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  45768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45769. <stringProp name="Argument.value">${related_product_id}</stringProp>
  45770. <stringProp name="Argument.metadata">=</stringProp>
  45771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45772. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  45773. </elementProp>
  45774. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  45775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45776. <stringProp name="Argument.value">1</stringProp>
  45777. <stringProp name="Argument.metadata">=</stringProp>
  45778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45779. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  45780. </elementProp>
  45781. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  45782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45783. <stringProp name="Argument.value">${related_product_id}</stringProp>
  45784. <stringProp name="Argument.metadata">=</stringProp>
  45785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45786. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  45787. </elementProp>
  45788. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  45789. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45790. <stringProp name="Argument.value">1</stringProp>
  45791. <stringProp name="Argument.metadata">=</stringProp>
  45792. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45793. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  45794. </elementProp>
  45795. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  45796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45797. <stringProp name="Argument.value">${related_product_id}</stringProp>
  45798. <stringProp name="Argument.metadata">=</stringProp>
  45799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45800. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  45801. </elementProp>
  45802. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  45803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  45804. <stringProp name="Argument.value">1</stringProp>
  45805. <stringProp name="Argument.metadata">=</stringProp>
  45806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  45807. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  45808. </elementProp>
  45809. </collectionProp>
  45810. </elementProp>
  45811. <stringProp name="HTTPSampler.domain"/>
  45812. <stringProp name="HTTPSampler.port"/>
  45813. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  45814. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  45815. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  45816. <stringProp name="HTTPSampler.contentEncoding"/>
  45817. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/${attribute_set_id}/type/configurable/back/edit/active_tab/product-details/</stringProp>
  45818. <stringProp name="HTTPSampler.method">POST</stringProp>
  45819. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  45820. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  45821. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  45822. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  45823. <boolProp name="HTTPSampler.monitor">false</boolProp>
  45824. <stringProp name="HTTPSampler.embedded_url_re"/>
  45825. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_save.jmx</stringProp></HTTPSamplerProxy>
  45826. <hashTree>
  45827. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  45828. <collectionProp name="Asserion.test_strings">
  45829. <stringProp name="-583471546">You saved the product</stringProp>
  45830. </collectionProp>
  45831. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  45832. <boolProp name="Assertion.assume_success">false</boolProp>
  45833. <intProp name="Assertion.test_type">2</intProp>
  45834. </ResponseAssertion>
  45835. <hashTree/>
  45836. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert Variation" enabled="true">
  45837. <stringProp name="scriptLanguage">javascript</stringProp>
  45838. <stringProp name="parameters"/>
  45839. <stringProp name="filename"/>
  45840. <stringProp name="cacheKey"/>
  45841. <stringProp name="script">
  45842. var configurableVariations = vars.getObject("configurable_variations_assertion"),
  45843. response = SampleResult.getResponseDataAsString();
  45844. configurableVariations.forEach(function (variation) {
  45845. if (response.indexOf(variation) == -1) {
  45846. AssertionResult.setFailureMessage("Cannot find variation \"" + variation + "\"");
  45847. AssertionResult.setFailure(true);
  45848. }
  45849. });
  45850. </stringProp>
  45851. </JSR223Assertion>
  45852. <hashTree/>
  45853. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  45854. <stringProp name="scriptLanguage">javascript</stringProp>
  45855. <stringProp name="parameters"/>
  45856. <stringProp name="filename"/>
  45857. <stringProp name="cacheKey"/>
  45858. <stringProp name="script">
  45859. attributes = vars.getObject("product_attributes");
  45860. for (i in attributes) {
  45861. var attribute = attributes[i];
  45862. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  45863. sampler.addArgument("attributes[" + i + "]", attribute.id);
  45864. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  45865. addConfigurableAttributeData(attribute);
  45866. }
  45867. addConfigurableMatrix(attributes);
  45868. function addConfigurableAttributeData(attribute) {
  45869. var attributeId = attribute.id;
  45870. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  45871. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  45872. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  45873. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  45874. attribute.options.forEach(function (option, index) {
  45875. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  45876. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  45877. });
  45878. }
  45879. /**
  45880. * Build 4 simple products for Configurable
  45881. */
  45882. function addConfigurableMatrix(attributes) {
  45883. var attribute1 = attributes[0],
  45884. attribute2 = attributes[1],
  45885. productIndex = 1,
  45886. products = [];
  45887. var variationNames = [];
  45888. attribute1.options.forEach(function (option1) {
  45889. attribute2.options.forEach(function (option2) {
  45890. var productAttributes = {},
  45891. namePart = option1.label + "+" + option2.label,
  45892. variationKey = option1.value + "-" + option2.value;
  45893. productAttributes[attribute1.code] = option1.value;
  45894. productAttributes[attribute2.code] = option2.value;
  45895. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  45896. var product = {
  45897. "id": null,
  45898. "name": namePart + " - " + vars.get("configurable_sku"),
  45899. "sku": namePart + " - " + vars.get("configurable_sku"),
  45900. "status": 1,
  45901. "price": "100",
  45902. "price_currency": "$",
  45903. "price_string": "$100",
  45904. "weight": "6",
  45905. "qty": "50",
  45906. "variationKey": variationKey,
  45907. "configurable_attribute": JSON.stringify(productAttributes),
  45908. "thumbnail_image": "",
  45909. "media_gallery": {"images": {}},
  45910. "image": [],
  45911. "was_changed": true,
  45912. "canEdit": 1,
  45913. "newProduct": 1,
  45914. "record_id": productIndex
  45915. };
  45916. productIndex++;
  45917. products.push(product);
  45918. });
  45919. });
  45920. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  45921. vars.putObject("configurable_variations_assertion", variationNames);
  45922. }
  45923. </stringProp>
  45924. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  45925. <hashTree/>
  45926. </hashTree>
  45927. </hashTree>
  45928. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Downloadable Product" enabled="true">
  45929. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_downloadable_product.jmx</stringProp>
  45930. </TestFragmentController>
  45931. <hashTree>
  45932. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  45933. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  45934. <collectionProp name="Arguments.arguments"/>
  45935. </elementProp>
  45936. <stringProp name="HTTPSampler.domain"/>
  45937. <stringProp name="HTTPSampler.port"/>
  45938. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  45939. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  45940. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  45941. <stringProp name="HTTPSampler.contentEncoding"/>
  45942. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  45943. <stringProp name="HTTPSampler.method">GET</stringProp>
  45944. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  45945. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  45946. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  45947. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  45948. <boolProp name="HTTPSampler.monitor">false</boolProp>
  45949. <stringProp name="HTTPSampler.embedded_url_re"/>
  45950. </HTTPSamplerProxy>
  45951. <hashTree>
  45952. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  45953. <collectionProp name="Asserion.test_strings">
  45954. <stringProp name="1509986340">records found</stringProp>
  45955. </collectionProp>
  45956. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  45957. <boolProp name="Assertion.assume_success">false</boolProp>
  45958. <intProp name="Assertion.test_type">2</intProp>
  45959. </ResponseAssertion>
  45960. <hashTree/>
  45961. </hashTree>
  45962. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product" enabled="true">
  45963. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  45964. <collectionProp name="Arguments.arguments"/>
  45965. </elementProp>
  45966. <stringProp name="HTTPSampler.domain"/>
  45967. <stringProp name="HTTPSampler.port"/>
  45968. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  45969. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  45970. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  45971. <stringProp name="HTTPSampler.contentEncoding"/>
  45972. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/</stringProp>
  45973. <stringProp name="HTTPSampler.method">GET</stringProp>
  45974. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  45975. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  45976. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  45977. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  45978. <boolProp name="HTTPSampler.monitor">false</boolProp>
  45979. <stringProp name="HTTPSampler.embedded_url_re"/>
  45980. </HTTPSamplerProxy>
  45981. <hashTree>
  45982. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  45983. <collectionProp name="Asserion.test_strings">
  45984. <stringProp name="-144461265">New Product</stringProp>
  45985. </collectionProp>
  45986. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  45987. <boolProp name="Assertion.assume_success">false</boolProp>
  45988. <intProp name="Assertion.test_type">2</intProp>
  45989. </ResponseAssertion>
  45990. <hashTree/>
  45991. </hashTree>
  45992. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Original File" enabled="true">
  45993. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  45994. <collectionProp name="HTTPFileArgs.files">
  45995. <elementProp name="${files_folder}downloadable_original.txt" elementType="HTTPFileArg">
  45996. <stringProp name="File.path">${files_folder}downloadable_original.txt</stringProp>
  45997. <stringProp name="File.paramname">links</stringProp>
  45998. <stringProp name="File.mimetype">text/plain</stringProp>
  45999. </elementProp>
  46000. </collectionProp>
  46001. </elementProp>
  46002. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  46003. <collectionProp name="Arguments.arguments">
  46004. <elementProp name="form_key" elementType="HTTPArgument">
  46005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46006. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  46007. <stringProp name="Argument.metadata">=</stringProp>
  46008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46009. <stringProp name="Argument.name">form_key</stringProp>
  46010. <stringProp name="Argument.desc">false</stringProp>
  46011. </elementProp>
  46012. </collectionProp>
  46013. </elementProp>
  46014. <stringProp name="HTTPSampler.domain"/>
  46015. <stringProp name="HTTPSampler.port"/>
  46016. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  46017. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  46018. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  46019. <stringProp name="HTTPSampler.contentEncoding"/>
  46020. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true</stringProp>
  46021. <stringProp name="HTTPSampler.method">POST</stringProp>
  46022. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  46023. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  46024. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  46025. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  46026. <boolProp name="HTTPSampler.monitor">false</boolProp>
  46027. <stringProp name="HTTPSampler.embedded_url_re"/>
  46028. </HTTPSamplerProxy>
  46029. <hashTree>
  46030. <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 original file" enabled="true">
  46031. <stringProp name="VAR">original_file</stringProp>
  46032. <stringProp name="JSONPATH">$.file</stringProp>
  46033. <stringProp name="DEFAULT"/>
  46034. <stringProp name="VARIABLE"/>
  46035. <stringProp name="SUBJECT">BODY</stringProp>
  46036. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  46037. <hashTree/>
  46038. </hashTree>
  46039. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Sample File" enabled="true">
  46040. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  46041. <collectionProp name="HTTPFileArgs.files">
  46042. <elementProp name="${files_folder}downloadable_sample.txt" elementType="HTTPFileArg">
  46043. <stringProp name="File.path">${files_folder}downloadable_sample.txt</stringProp>
  46044. <stringProp name="File.paramname">samples</stringProp>
  46045. <stringProp name="File.mimetype">text/plain</stringProp>
  46046. </elementProp>
  46047. </collectionProp>
  46048. </elementProp>
  46049. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  46050. <collectionProp name="Arguments.arguments">
  46051. <elementProp name="form_key" elementType="HTTPArgument">
  46052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46053. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  46054. <stringProp name="Argument.metadata">=</stringProp>
  46055. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46056. <stringProp name="Argument.name">form_key</stringProp>
  46057. <stringProp name="Argument.desc">false</stringProp>
  46058. </elementProp>
  46059. </collectionProp>
  46060. </elementProp>
  46061. <stringProp name="HTTPSampler.domain"/>
  46062. <stringProp name="HTTPSampler.port"/>
  46063. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  46064. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  46065. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  46066. <stringProp name="HTTPSampler.contentEncoding"/>
  46067. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true</stringProp>
  46068. <stringProp name="HTTPSampler.method">POST</stringProp>
  46069. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  46070. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  46071. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  46072. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  46073. <boolProp name="HTTPSampler.monitor">false</boolProp>
  46074. <stringProp name="HTTPSampler.embedded_url_re"/>
  46075. </HTTPSamplerProxy>
  46076. <hashTree>
  46077. <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 sample file" enabled="true">
  46078. <stringProp name="VAR">sample_file</stringProp>
  46079. <stringProp name="JSONPATH">$.file</stringProp>
  46080. <stringProp name="DEFAULT"/>
  46081. <stringProp name="VARIABLE"/>
  46082. <stringProp name="SUBJECT">BODY</stringProp>
  46083. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  46084. <hashTree/>
  46085. </hashTree>
  46086. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Validate" enabled="true">
  46087. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  46088. <collectionProp name="Arguments.arguments">
  46089. <elementProp name="ajax" elementType="HTTPArgument">
  46090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46091. <stringProp name="Argument.value">true</stringProp>
  46092. <stringProp name="Argument.metadata">=</stringProp>
  46093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46094. <stringProp name="Argument.name">ajax</stringProp>
  46095. <stringProp name="Argument.desc">false</stringProp>
  46096. </elementProp>
  46097. <elementProp name="isAjax" elementType="HTTPArgument">
  46098. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46099. <stringProp name="Argument.value">true</stringProp>
  46100. <stringProp name="Argument.metadata">=</stringProp>
  46101. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46102. <stringProp name="Argument.name">isAjax</stringProp>
  46103. <stringProp name="Argument.desc">false</stringProp>
  46104. </elementProp>
  46105. <elementProp name="form_key" elementType="HTTPArgument">
  46106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46107. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  46108. <stringProp name="Argument.metadata">=</stringProp>
  46109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46110. <stringProp name="Argument.name">form_key</stringProp>
  46111. <stringProp name="Argument.desc">false</stringProp>
  46112. </elementProp>
  46113. <elementProp name="product[name]" elementType="HTTPArgument">
  46114. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46115. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  46116. <stringProp name="Argument.metadata">=</stringProp>
  46117. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46118. <stringProp name="Argument.name">product[name]</stringProp>
  46119. <stringProp name="Argument.desc">false</stringProp>
  46120. </elementProp>
  46121. <elementProp name="product[sku]" elementType="HTTPArgument">
  46122. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46123. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  46124. <stringProp name="Argument.metadata">=</stringProp>
  46125. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46126. <stringProp name="Argument.name">product[sku]</stringProp>
  46127. <stringProp name="Argument.desc">false</stringProp>
  46128. </elementProp>
  46129. <elementProp name="product[price]" elementType="HTTPArgument">
  46130. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46131. <stringProp name="Argument.value">123</stringProp>
  46132. <stringProp name="Argument.metadata">=</stringProp>
  46133. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46134. <stringProp name="Argument.name">product[price]</stringProp>
  46135. </elementProp>
  46136. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  46137. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46138. <stringProp name="Argument.value">2</stringProp>
  46139. <stringProp name="Argument.metadata">=</stringProp>
  46140. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46141. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  46142. </elementProp>
  46143. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  46144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46145. <stringProp name="Argument.value">111</stringProp>
  46146. <stringProp name="Argument.metadata">=</stringProp>
  46147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46148. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  46149. </elementProp>
  46150. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  46151. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46152. <stringProp name="Argument.value">1</stringProp>
  46153. <stringProp name="Argument.metadata">=</stringProp>
  46154. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46155. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  46156. </elementProp>
  46157. <elementProp name="product[weight]" elementType="HTTPArgument">
  46158. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46159. <stringProp name="Argument.value">1.0000</stringProp>
  46160. <stringProp name="Argument.metadata">=</stringProp>
  46161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46162. <stringProp name="Argument.name">product[weight]</stringProp>
  46163. </elementProp>
  46164. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  46165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46166. <stringProp name="Argument.value">2</stringProp>
  46167. <stringProp name="Argument.metadata">=</stringProp>
  46168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46169. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  46170. </elementProp>
  46171. <elementProp name="product[description]" elementType="HTTPArgument">
  46172. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46173. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  46174. <stringProp name="Argument.metadata">=</stringProp>
  46175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46176. <stringProp name="Argument.name">product[description]</stringProp>
  46177. </elementProp>
  46178. <elementProp name="product[short_description]" elementType="HTTPArgument">
  46179. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46180. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  46181. <stringProp name="Argument.metadata">=</stringProp>
  46182. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46183. <stringProp name="Argument.name">product[short_description]</stringProp>
  46184. </elementProp>
  46185. <elementProp name="product[status]" elementType="HTTPArgument">
  46186. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46187. <stringProp name="Argument.value">1</stringProp>
  46188. <stringProp name="Argument.metadata">=</stringProp>
  46189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46190. <stringProp name="Argument.name">product[status]</stringProp>
  46191. </elementProp>
  46192. <elementProp name="product[image]" elementType="HTTPArgument">
  46193. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46194. <stringProp name="Argument.value"/>
  46195. <stringProp name="Argument.metadata">=</stringProp>
  46196. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46197. <stringProp name="Argument.name">product[image]</stringProp>
  46198. </elementProp>
  46199. <elementProp name="product[small_image]" elementType="HTTPArgument">
  46200. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46201. <stringProp name="Argument.value"/>
  46202. <stringProp name="Argument.metadata">=</stringProp>
  46203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46204. <stringProp name="Argument.name">product[small_image]</stringProp>
  46205. </elementProp>
  46206. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  46207. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46208. <stringProp name="Argument.value"/>
  46209. <stringProp name="Argument.metadata">=</stringProp>
  46210. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46211. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  46212. </elementProp>
  46213. <elementProp name="product[url_key]" elementType="HTTPArgument">
  46214. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46215. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  46216. <stringProp name="Argument.metadata">=</stringProp>
  46217. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46218. <stringProp name="Argument.name">product[url_key]</stringProp>
  46219. </elementProp>
  46220. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  46221. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46222. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  46223. <stringProp name="Argument.metadata">=</stringProp>
  46224. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46225. <stringProp name="Argument.name">product[meta_title]</stringProp>
  46226. </elementProp>
  46227. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  46228. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46229. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  46230. <stringProp name="Argument.metadata">=</stringProp>
  46231. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46232. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  46233. </elementProp>
  46234. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  46235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46236. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  46237. <stringProp name="Argument.metadata">=</stringProp>
  46238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46239. <stringProp name="Argument.name">product[meta_description]</stringProp>
  46240. </elementProp>
  46241. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  46242. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46243. <stringProp name="Argument.value">1</stringProp>
  46244. <stringProp name="Argument.metadata">=</stringProp>
  46245. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46246. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  46247. </elementProp>
  46248. <elementProp name="product[special_price]" elementType="HTTPArgument">
  46249. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46250. <stringProp name="Argument.value">99</stringProp>
  46251. <stringProp name="Argument.metadata">=</stringProp>
  46252. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46253. <stringProp name="Argument.name">product[special_price]</stringProp>
  46254. </elementProp>
  46255. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  46256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46257. <stringProp name="Argument.value">1</stringProp>
  46258. <stringProp name="Argument.metadata">=</stringProp>
  46259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46260. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  46261. </elementProp>
  46262. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  46263. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46264. <stringProp name="Argument.value"/>
  46265. <stringProp name="Argument.metadata">=</stringProp>
  46266. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46267. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  46268. </elementProp>
  46269. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  46270. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46271. <stringProp name="Argument.value"/>
  46272. <stringProp name="Argument.metadata">=</stringProp>
  46273. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46274. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  46275. </elementProp>
  46276. <elementProp name="product[cost]" elementType="HTTPArgument">
  46277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46278. <stringProp name="Argument.value"/>
  46279. <stringProp name="Argument.metadata">=</stringProp>
  46280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46281. <stringProp name="Argument.name">product[cost]</stringProp>
  46282. </elementProp>
  46283. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  46284. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46285. <stringProp name="Argument.value">0</stringProp>
  46286. <stringProp name="Argument.metadata">=</stringProp>
  46287. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46288. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  46289. </elementProp>
  46290. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  46291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46292. <stringProp name="Argument.value">32000</stringProp>
  46293. <stringProp name="Argument.metadata">=</stringProp>
  46294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46295. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  46296. </elementProp>
  46297. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  46298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46299. <stringProp name="Argument.value">100</stringProp>
  46300. <stringProp name="Argument.metadata">=</stringProp>
  46301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46302. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  46303. </elementProp>
  46304. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  46305. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46306. <stringProp name="Argument.value">90</stringProp>
  46307. <stringProp name="Argument.metadata">=</stringProp>
  46308. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46309. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  46310. </elementProp>
  46311. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  46312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46313. <stringProp name="Argument.value"/>
  46314. <stringProp name="Argument.metadata">=</stringProp>
  46315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46316. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  46317. </elementProp>
  46318. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  46319. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46320. <stringProp name="Argument.value">0</stringProp>
  46321. <stringProp name="Argument.metadata">=</stringProp>
  46322. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46323. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  46324. </elementProp>
  46325. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  46326. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46327. <stringProp name="Argument.value">1</stringProp>
  46328. <stringProp name="Argument.metadata">=</stringProp>
  46329. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46330. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  46331. </elementProp>
  46332. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  46333. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46334. <stringProp name="Argument.value">101</stringProp>
  46335. <stringProp name="Argument.metadata">=</stringProp>
  46336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46337. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  46338. </elementProp>
  46339. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  46340. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46341. <stringProp name="Argument.value">99</stringProp>
  46342. <stringProp name="Argument.metadata">=</stringProp>
  46343. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46344. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  46345. </elementProp>
  46346. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  46347. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46348. <stringProp name="Argument.value"/>
  46349. <stringProp name="Argument.metadata">=</stringProp>
  46350. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46351. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  46352. </elementProp>
  46353. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  46354. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46355. <stringProp name="Argument.value">1</stringProp>
  46356. <stringProp name="Argument.metadata">=</stringProp>
  46357. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46358. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  46359. </elementProp>
  46360. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  46361. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46362. <stringProp name="Argument.value">100500</stringProp>
  46363. <stringProp name="Argument.metadata">=</stringProp>
  46364. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46365. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  46366. </elementProp>
  46367. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  46368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46369. <stringProp name="Argument.value">100500</stringProp>
  46370. <stringProp name="Argument.metadata">=</stringProp>
  46371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46372. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  46373. </elementProp>
  46374. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  46375. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46376. <stringProp name="Argument.value">0</stringProp>
  46377. <stringProp name="Argument.metadata">=</stringProp>
  46378. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46379. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  46380. </elementProp>
  46381. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  46382. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46383. <stringProp name="Argument.value">1</stringProp>
  46384. <stringProp name="Argument.metadata">=</stringProp>
  46385. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46386. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  46387. </elementProp>
  46388. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  46389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46390. <stringProp name="Argument.value">1</stringProp>
  46391. <stringProp name="Argument.metadata">=</stringProp>
  46392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46393. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  46394. </elementProp>
  46395. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  46396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46397. <stringProp name="Argument.value">1</stringProp>
  46398. <stringProp name="Argument.metadata">=</stringProp>
  46399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46400. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  46401. </elementProp>
  46402. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  46403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46404. <stringProp name="Argument.value">10000</stringProp>
  46405. <stringProp name="Argument.metadata">=</stringProp>
  46406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46407. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  46408. </elementProp>
  46409. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  46410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46411. <stringProp name="Argument.value">1</stringProp>
  46412. <stringProp name="Argument.metadata">=</stringProp>
  46413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46414. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  46415. </elementProp>
  46416. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  46417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46418. <stringProp name="Argument.value">0</stringProp>
  46419. <stringProp name="Argument.metadata">=</stringProp>
  46420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46421. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  46422. </elementProp>
  46423. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  46424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46425. <stringProp name="Argument.value">0</stringProp>
  46426. <stringProp name="Argument.metadata">=</stringProp>
  46427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46428. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  46429. </elementProp>
  46430. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  46431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46432. <stringProp name="Argument.value">0</stringProp>
  46433. <stringProp name="Argument.metadata">=</stringProp>
  46434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46435. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  46436. </elementProp>
  46437. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  46438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46439. <stringProp name="Argument.value">1</stringProp>
  46440. <stringProp name="Argument.metadata">=</stringProp>
  46441. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46442. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  46443. </elementProp>
  46444. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  46445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46446. <stringProp name="Argument.value">1</stringProp>
  46447. <stringProp name="Argument.metadata">=</stringProp>
  46448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46449. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  46450. </elementProp>
  46451. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  46452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46453. <stringProp name="Argument.value">0</stringProp>
  46454. <stringProp name="Argument.metadata">=</stringProp>
  46455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46456. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  46457. </elementProp>
  46458. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  46459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46460. <stringProp name="Argument.value">0</stringProp>
  46461. <stringProp name="Argument.metadata">=</stringProp>
  46462. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46463. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  46464. </elementProp>
  46465. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  46466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46467. <stringProp name="Argument.value">1</stringProp>
  46468. <stringProp name="Argument.metadata">=</stringProp>
  46469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46470. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  46471. </elementProp>
  46472. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  46473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46474. <stringProp name="Argument.value">1</stringProp>
  46475. <stringProp name="Argument.metadata">=</stringProp>
  46476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46477. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  46478. </elementProp>
  46479. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  46480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46481. <stringProp name="Argument.value"/>
  46482. <stringProp name="Argument.metadata">=</stringProp>
  46483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46484. <stringProp name="Argument.name">product[custom_design]</stringProp>
  46485. </elementProp>
  46486. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  46487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46488. <stringProp name="Argument.value"/>
  46489. <stringProp name="Argument.metadata">=</stringProp>
  46490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46491. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  46492. </elementProp>
  46493. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  46494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46495. <stringProp name="Argument.value"/>
  46496. <stringProp name="Argument.metadata">=</stringProp>
  46497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46498. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  46499. </elementProp>
  46500. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  46501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46502. <stringProp name="Argument.value"/>
  46503. <stringProp name="Argument.metadata">=</stringProp>
  46504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46505. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  46506. </elementProp>
  46507. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  46508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46509. <stringProp name="Argument.value"/>
  46510. <stringProp name="Argument.metadata">=</stringProp>
  46511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46512. <stringProp name="Argument.name">product[page_layout]</stringProp>
  46513. </elementProp>
  46514. <elementProp name="product[options_container]" elementType="HTTPArgument">
  46515. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46516. <stringProp name="Argument.value">container2</stringProp>
  46517. <stringProp name="Argument.metadata">=</stringProp>
  46518. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46519. <stringProp name="Argument.name">product[options_container]</stringProp>
  46520. </elementProp>
  46521. <elementProp name="is_downloadable" elementType="HTTPArgument">
  46522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46523. <stringProp name="Argument.value">on</stringProp>
  46524. <stringProp name="Argument.metadata">=</stringProp>
  46525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46526. <stringProp name="Argument.name">is_downloadable</stringProp>
  46527. </elementProp>
  46528. <elementProp name="product[links_title]" elementType="HTTPArgument">
  46529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46530. <stringProp name="Argument.value">Links</stringProp>
  46531. <stringProp name="Argument.metadata">=</stringProp>
  46532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46533. <stringProp name="Argument.name">product[links_title]</stringProp>
  46534. </elementProp>
  46535. <elementProp name="product[links_purchased_separately]" elementType="HTTPArgument">
  46536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46537. <stringProp name="Argument.value">0</stringProp>
  46538. <stringProp name="Argument.metadata">=</stringProp>
  46539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46540. <stringProp name="Argument.name">product[links_purchased_separately]</stringProp>
  46541. </elementProp>
  46542. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  46543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46544. <stringProp name="Argument.value">${original_file}</stringProp>
  46545. <stringProp name="Argument.metadata">=</stringProp>
  46546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46547. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  46548. <stringProp name="Argument.desc">false</stringProp>
  46549. </elementProp>
  46550. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  46551. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46552. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  46553. <stringProp name="Argument.metadata">=</stringProp>
  46554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46555. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  46556. <stringProp name="Argument.desc">false</stringProp>
  46557. </elementProp>
  46558. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  46559. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46560. <stringProp name="Argument.value">13</stringProp>
  46561. <stringProp name="Argument.metadata">=</stringProp>
  46562. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46563. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  46564. <stringProp name="Argument.desc">false</stringProp>
  46565. </elementProp>
  46566. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  46567. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46568. <stringProp name="Argument.value">new</stringProp>
  46569. <stringProp name="Argument.metadata">=</stringProp>
  46570. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46571. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  46572. <stringProp name="Argument.desc">false</stringProp>
  46573. </elementProp>
  46574. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  46575. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46576. <stringProp name="Argument.value">1</stringProp>
  46577. <stringProp name="Argument.metadata">=</stringProp>
  46578. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46579. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  46580. </elementProp>
  46581. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  46582. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46583. <stringProp name="Argument.value">0</stringProp>
  46584. <stringProp name="Argument.metadata">=</stringProp>
  46585. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46586. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  46587. </elementProp>
  46588. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  46589. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46590. <stringProp name="Argument.value"/>
  46591. <stringProp name="Argument.metadata">=</stringProp>
  46592. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46593. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  46594. </elementProp>
  46595. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  46596. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46597. <stringProp name="Argument.value">0</stringProp>
  46598. <stringProp name="Argument.metadata">=</stringProp>
  46599. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46600. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  46601. <stringProp name="Argument.desc">true</stringProp>
  46602. </elementProp>
  46603. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  46604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46605. <stringProp name="Argument.value">120</stringProp>
  46606. <stringProp name="Argument.metadata">=</stringProp>
  46607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46608. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  46609. <stringProp name="Argument.desc">true</stringProp>
  46610. </elementProp>
  46611. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  46612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46613. <stringProp name="Argument.value">0</stringProp>
  46614. <stringProp name="Argument.metadata">=</stringProp>
  46615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46616. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  46617. <stringProp name="Argument.desc">true</stringProp>
  46618. </elementProp>
  46619. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  46620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46621. <stringProp name="Argument.value">file</stringProp>
  46622. <stringProp name="Argument.metadata">=</stringProp>
  46623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46624. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  46625. </elementProp>
  46626. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  46627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46628. <stringProp name="Argument.value"/>
  46629. <stringProp name="Argument.metadata">=</stringProp>
  46630. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46631. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  46632. </elementProp>
  46633. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  46634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46635. <stringProp name="Argument.value">1</stringProp>
  46636. <stringProp name="Argument.metadata">=</stringProp>
  46637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46638. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  46639. </elementProp>
  46640. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  46641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46642. <stringProp name="Argument.value">Original Link</stringProp>
  46643. <stringProp name="Argument.metadata">=</stringProp>
  46644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46645. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  46646. </elementProp>
  46647. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  46648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46649. <stringProp name="Argument.value">file</stringProp>
  46650. <stringProp name="Argument.metadata">=</stringProp>
  46651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46652. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  46653. </elementProp>
  46654. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  46655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46656. <stringProp name="Argument.value">${sample_file}</stringProp>
  46657. <stringProp name="Argument.metadata">=</stringProp>
  46658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46659. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  46660. <stringProp name="Argument.desc">true</stringProp>
  46661. </elementProp>
  46662. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  46663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46664. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  46665. <stringProp name="Argument.metadata">=</stringProp>
  46666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46667. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  46668. <stringProp name="Argument.desc">true</stringProp>
  46669. </elementProp>
  46670. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  46671. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46672. <stringProp name="Argument.value">14</stringProp>
  46673. <stringProp name="Argument.metadata">=</stringProp>
  46674. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46675. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  46676. <stringProp name="Argument.desc">true</stringProp>
  46677. </elementProp>
  46678. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  46679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46680. <stringProp name="Argument.value">new</stringProp>
  46681. <stringProp name="Argument.metadata">=</stringProp>
  46682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46683. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  46684. <stringProp name="Argument.desc">true</stringProp>
  46685. </elementProp>
  46686. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  46687. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46688. <stringProp name="Argument.value">0</stringProp>
  46689. <stringProp name="Argument.metadata">=</stringProp>
  46690. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46691. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  46692. <stringProp name="Argument.desc">true</stringProp>
  46693. </elementProp>
  46694. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  46695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46696. <stringProp name="Argument.value"/>
  46697. <stringProp name="Argument.metadata">=</stringProp>
  46698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46699. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  46700. <stringProp name="Argument.desc">true</stringProp>
  46701. </elementProp>
  46702. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  46703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46704. <stringProp name="Argument.value">1</stringProp>
  46705. <stringProp name="Argument.metadata">=</stringProp>
  46706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46707. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  46708. <stringProp name="Argument.desc">true</stringProp>
  46709. </elementProp>
  46710. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  46711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46712. <stringProp name="Argument.value">Sample Link</stringProp>
  46713. <stringProp name="Argument.metadata">=</stringProp>
  46714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46715. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  46716. <stringProp name="Argument.desc">true</stringProp>
  46717. </elementProp>
  46718. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  46719. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46720. <stringProp name="Argument.value">file</stringProp>
  46721. <stringProp name="Argument.metadata">=</stringProp>
  46722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46723. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  46724. <stringProp name="Argument.desc">true</stringProp>
  46725. </elementProp>
  46726. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  46727. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46728. <stringProp name="Argument.value">1</stringProp>
  46729. <stringProp name="Argument.metadata">=</stringProp>
  46730. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46731. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  46732. <stringProp name="Argument.desc">false</stringProp>
  46733. </elementProp>
  46734. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  46735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46736. <stringProp name="Argument.value">4</stringProp>
  46737. <stringProp name="Argument.metadata">=</stringProp>
  46738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46739. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  46740. <stringProp name="Argument.desc">false</stringProp>
  46741. </elementProp>
  46742. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  46743. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46744. <stringProp name="Argument.value"/>
  46745. <stringProp name="Argument.metadata">=</stringProp>
  46746. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46747. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  46748. <stringProp name="Argument.desc">false</stringProp>
  46749. </elementProp>
  46750. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  46751. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46752. <stringProp name="Argument.value">${related_product_id}</stringProp>
  46753. <stringProp name="Argument.metadata">=</stringProp>
  46754. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46755. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  46756. </elementProp>
  46757. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  46758. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46759. <stringProp name="Argument.value">1</stringProp>
  46760. <stringProp name="Argument.metadata">=</stringProp>
  46761. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46762. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  46763. </elementProp>
  46764. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  46765. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46766. <stringProp name="Argument.value">${related_product_id}</stringProp>
  46767. <stringProp name="Argument.metadata">=</stringProp>
  46768. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46769. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  46770. </elementProp>
  46771. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  46772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46773. <stringProp name="Argument.value">1</stringProp>
  46774. <stringProp name="Argument.metadata">=</stringProp>
  46775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46776. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  46777. </elementProp>
  46778. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  46779. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46780. <stringProp name="Argument.value">${related_product_id}</stringProp>
  46781. <stringProp name="Argument.metadata">=</stringProp>
  46782. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46783. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  46784. </elementProp>
  46785. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  46786. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46787. <stringProp name="Argument.value">1</stringProp>
  46788. <stringProp name="Argument.metadata">=</stringProp>
  46789. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46790. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  46791. </elementProp>
  46792. </collectionProp>
  46793. </elementProp>
  46794. <stringProp name="HTTPSampler.domain"/>
  46795. <stringProp name="HTTPSampler.port"/>
  46796. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  46797. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  46798. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  46799. <stringProp name="HTTPSampler.contentEncoding"/>
  46800. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/</stringProp>
  46801. <stringProp name="HTTPSampler.method">POST</stringProp>
  46802. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  46803. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  46804. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  46805. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  46806. <boolProp name="HTTPSampler.monitor">false</boolProp>
  46807. <stringProp name="HTTPSampler.embedded_url_re"/>
  46808. </HTTPSamplerProxy>
  46809. <hashTree>
  46810. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  46811. <collectionProp name="Asserion.test_strings">
  46812. <stringProp name="1853918323">{"error":false}</stringProp>
  46813. </collectionProp>
  46814. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  46815. <boolProp name="Assertion.assume_success">false</boolProp>
  46816. <intProp name="Assertion.test_type">2</intProp>
  46817. </ResponseAssertion>
  46818. <hashTree/>
  46819. </hashTree>
  46820. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Save" enabled="true">
  46821. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  46822. <collectionProp name="Arguments.arguments">
  46823. <elementProp name="ajax" elementType="HTTPArgument">
  46824. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46825. <stringProp name="Argument.value">true</stringProp>
  46826. <stringProp name="Argument.metadata">=</stringProp>
  46827. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46828. <stringProp name="Argument.name">ajax</stringProp>
  46829. <stringProp name="Argument.desc">false</stringProp>
  46830. </elementProp>
  46831. <elementProp name="isAjax" elementType="HTTPArgument">
  46832. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46833. <stringProp name="Argument.value">true</stringProp>
  46834. <stringProp name="Argument.metadata">=</stringProp>
  46835. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46836. <stringProp name="Argument.name">isAjax</stringProp>
  46837. <stringProp name="Argument.desc">false</stringProp>
  46838. </elementProp>
  46839. <elementProp name="form_key" elementType="HTTPArgument">
  46840. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46841. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  46842. <stringProp name="Argument.metadata">=</stringProp>
  46843. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46844. <stringProp name="Argument.name">form_key</stringProp>
  46845. <stringProp name="Argument.desc">false</stringProp>
  46846. </elementProp>
  46847. <elementProp name="product[name]" elementType="HTTPArgument">
  46848. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46849. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  46850. <stringProp name="Argument.metadata">=</stringProp>
  46851. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46852. <stringProp name="Argument.name">product[name]</stringProp>
  46853. <stringProp name="Argument.desc">false</stringProp>
  46854. </elementProp>
  46855. <elementProp name="product[sku]" elementType="HTTPArgument">
  46856. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46857. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  46858. <stringProp name="Argument.metadata">=</stringProp>
  46859. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46860. <stringProp name="Argument.name">product[sku]</stringProp>
  46861. <stringProp name="Argument.desc">false</stringProp>
  46862. </elementProp>
  46863. <elementProp name="product[price]" elementType="HTTPArgument">
  46864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46865. <stringProp name="Argument.value">123</stringProp>
  46866. <stringProp name="Argument.metadata">=</stringProp>
  46867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46868. <stringProp name="Argument.name">product[price]</stringProp>
  46869. </elementProp>
  46870. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  46871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46872. <stringProp name="Argument.value">2</stringProp>
  46873. <stringProp name="Argument.metadata">=</stringProp>
  46874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46875. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  46876. </elementProp>
  46877. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  46878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46879. <stringProp name="Argument.value">111</stringProp>
  46880. <stringProp name="Argument.metadata">=</stringProp>
  46881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46882. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  46883. </elementProp>
  46884. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  46885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46886. <stringProp name="Argument.value">1</stringProp>
  46887. <stringProp name="Argument.metadata">=</stringProp>
  46888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46889. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  46890. </elementProp>
  46891. <elementProp name="product[weight]" elementType="HTTPArgument">
  46892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46893. <stringProp name="Argument.value">1.0000</stringProp>
  46894. <stringProp name="Argument.metadata">=</stringProp>
  46895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46896. <stringProp name="Argument.name">product[weight]</stringProp>
  46897. </elementProp>
  46898. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  46899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46900. <stringProp name="Argument.value">2</stringProp>
  46901. <stringProp name="Argument.metadata">=</stringProp>
  46902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46903. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  46904. </elementProp>
  46905. <elementProp name="product[description]" elementType="HTTPArgument">
  46906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46907. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  46908. <stringProp name="Argument.metadata">=</stringProp>
  46909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46910. <stringProp name="Argument.name">product[description]</stringProp>
  46911. </elementProp>
  46912. <elementProp name="product[short_description]" elementType="HTTPArgument">
  46913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46914. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  46915. <stringProp name="Argument.metadata">=</stringProp>
  46916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46917. <stringProp name="Argument.name">product[short_description]</stringProp>
  46918. <stringProp name="Argument.desc">false</stringProp>
  46919. </elementProp>
  46920. <elementProp name="product[status]" elementType="HTTPArgument">
  46921. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46922. <stringProp name="Argument.value">1</stringProp>
  46923. <stringProp name="Argument.metadata">=</stringProp>
  46924. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46925. <stringProp name="Argument.name">product[status]</stringProp>
  46926. </elementProp>
  46927. <elementProp name="product[image]" elementType="HTTPArgument">
  46928. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46929. <stringProp name="Argument.value"/>
  46930. <stringProp name="Argument.metadata">=</stringProp>
  46931. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46932. <stringProp name="Argument.name">product[image]</stringProp>
  46933. </elementProp>
  46934. <elementProp name="product[small_image]" elementType="HTTPArgument">
  46935. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46936. <stringProp name="Argument.value"/>
  46937. <stringProp name="Argument.metadata">=</stringProp>
  46938. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46939. <stringProp name="Argument.name">product[small_image]</stringProp>
  46940. </elementProp>
  46941. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  46942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46943. <stringProp name="Argument.value"/>
  46944. <stringProp name="Argument.metadata">=</stringProp>
  46945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46946. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  46947. </elementProp>
  46948. <elementProp name="product[url_key]" elementType="HTTPArgument">
  46949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46950. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  46951. <stringProp name="Argument.metadata">=</stringProp>
  46952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46953. <stringProp name="Argument.name">product[url_key]</stringProp>
  46954. </elementProp>
  46955. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  46956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46957. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  46958. <stringProp name="Argument.metadata">=</stringProp>
  46959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46960. <stringProp name="Argument.name">product[meta_title]</stringProp>
  46961. </elementProp>
  46962. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  46963. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46964. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  46965. <stringProp name="Argument.metadata">=</stringProp>
  46966. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46967. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  46968. </elementProp>
  46969. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  46970. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46971. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  46972. <stringProp name="Argument.metadata">=</stringProp>
  46973. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46974. <stringProp name="Argument.name">product[meta_description]</stringProp>
  46975. </elementProp>
  46976. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  46977. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46978. <stringProp name="Argument.value">1</stringProp>
  46979. <stringProp name="Argument.metadata">=</stringProp>
  46980. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46981. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  46982. </elementProp>
  46983. <elementProp name="product[special_price]" elementType="HTTPArgument">
  46984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46985. <stringProp name="Argument.value">99</stringProp>
  46986. <stringProp name="Argument.metadata">=</stringProp>
  46987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46988. <stringProp name="Argument.name">product[special_price]</stringProp>
  46989. </elementProp>
  46990. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  46991. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46992. <stringProp name="Argument.value"/>
  46993. <stringProp name="Argument.metadata">=</stringProp>
  46994. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  46995. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  46996. </elementProp>
  46997. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  46998. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  46999. <stringProp name="Argument.value"/>
  47000. <stringProp name="Argument.metadata">=</stringProp>
  47001. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47002. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  47003. </elementProp>
  47004. <elementProp name="product[cost]" elementType="HTTPArgument">
  47005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47006. <stringProp name="Argument.value"/>
  47007. <stringProp name="Argument.metadata">=</stringProp>
  47008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47009. <stringProp name="Argument.name">product[cost]</stringProp>
  47010. </elementProp>
  47011. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  47012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47013. <stringProp name="Argument.value">0</stringProp>
  47014. <stringProp name="Argument.metadata">=</stringProp>
  47015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47016. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  47017. </elementProp>
  47018. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  47019. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47020. <stringProp name="Argument.value">32000</stringProp>
  47021. <stringProp name="Argument.metadata">=</stringProp>
  47022. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47023. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  47024. </elementProp>
  47025. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  47026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47027. <stringProp name="Argument.value">100</stringProp>
  47028. <stringProp name="Argument.metadata">=</stringProp>
  47029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47030. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  47031. </elementProp>
  47032. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  47033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47034. <stringProp name="Argument.value">90</stringProp>
  47035. <stringProp name="Argument.metadata">=</stringProp>
  47036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47037. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  47038. </elementProp>
  47039. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  47040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47041. <stringProp name="Argument.value"/>
  47042. <stringProp name="Argument.metadata">=</stringProp>
  47043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47044. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  47045. </elementProp>
  47046. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  47047. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47048. <stringProp name="Argument.value">0</stringProp>
  47049. <stringProp name="Argument.metadata">=</stringProp>
  47050. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47051. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  47052. </elementProp>
  47053. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  47054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47055. <stringProp name="Argument.value">1</stringProp>
  47056. <stringProp name="Argument.metadata">=</stringProp>
  47057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47058. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  47059. </elementProp>
  47060. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  47061. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47062. <stringProp name="Argument.value">101</stringProp>
  47063. <stringProp name="Argument.metadata">=</stringProp>
  47064. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47065. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  47066. </elementProp>
  47067. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  47068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47069. <stringProp name="Argument.value">99</stringProp>
  47070. <stringProp name="Argument.metadata">=</stringProp>
  47071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47072. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  47073. </elementProp>
  47074. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  47075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47076. <stringProp name="Argument.value"/>
  47077. <stringProp name="Argument.metadata">=</stringProp>
  47078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47079. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  47080. </elementProp>
  47081. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  47082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47083. <stringProp name="Argument.value">1</stringProp>
  47084. <stringProp name="Argument.metadata">=</stringProp>
  47085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47086. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  47087. </elementProp>
  47088. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  47089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47090. <stringProp name="Argument.value">100500</stringProp>
  47091. <stringProp name="Argument.metadata">=</stringProp>
  47092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47093. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  47094. </elementProp>
  47095. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  47096. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47097. <stringProp name="Argument.value">100500</stringProp>
  47098. <stringProp name="Argument.metadata">=</stringProp>
  47099. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47100. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  47101. </elementProp>
  47102. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  47103. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47104. <stringProp name="Argument.value">0</stringProp>
  47105. <stringProp name="Argument.metadata">=</stringProp>
  47106. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47107. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  47108. </elementProp>
  47109. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  47110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47111. <stringProp name="Argument.value">1</stringProp>
  47112. <stringProp name="Argument.metadata">=</stringProp>
  47113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47114. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  47115. </elementProp>
  47116. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  47117. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47118. <stringProp name="Argument.value">1</stringProp>
  47119. <stringProp name="Argument.metadata">=</stringProp>
  47120. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47121. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  47122. </elementProp>
  47123. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  47124. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47125. <stringProp name="Argument.value">1</stringProp>
  47126. <stringProp name="Argument.metadata">=</stringProp>
  47127. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47128. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  47129. </elementProp>
  47130. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  47131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47132. <stringProp name="Argument.value">10000</stringProp>
  47133. <stringProp name="Argument.metadata">=</stringProp>
  47134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47135. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  47136. </elementProp>
  47137. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  47138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47139. <stringProp name="Argument.value">1</stringProp>
  47140. <stringProp name="Argument.metadata">=</stringProp>
  47141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47142. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  47143. </elementProp>
  47144. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  47145. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47146. <stringProp name="Argument.value">0</stringProp>
  47147. <stringProp name="Argument.metadata">=</stringProp>
  47148. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47149. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  47150. </elementProp>
  47151. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  47152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47153. <stringProp name="Argument.value">0</stringProp>
  47154. <stringProp name="Argument.metadata">=</stringProp>
  47155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47156. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  47157. </elementProp>
  47158. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  47159. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47160. <stringProp name="Argument.value">0</stringProp>
  47161. <stringProp name="Argument.metadata">=</stringProp>
  47162. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47163. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  47164. </elementProp>
  47165. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  47166. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47167. <stringProp name="Argument.value">1</stringProp>
  47168. <stringProp name="Argument.metadata">=</stringProp>
  47169. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47170. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  47171. </elementProp>
  47172. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  47173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47174. <stringProp name="Argument.value">1</stringProp>
  47175. <stringProp name="Argument.metadata">=</stringProp>
  47176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47177. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  47178. </elementProp>
  47179. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  47180. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47181. <stringProp name="Argument.value">1</stringProp>
  47182. <stringProp name="Argument.metadata">=</stringProp>
  47183. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47184. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  47185. </elementProp>
  47186. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  47187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47188. <stringProp name="Argument.value">0</stringProp>
  47189. <stringProp name="Argument.metadata">=</stringProp>
  47190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47191. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  47192. </elementProp>
  47193. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  47194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47195. <stringProp name="Argument.value">0</stringProp>
  47196. <stringProp name="Argument.metadata">=</stringProp>
  47197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47198. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  47199. </elementProp>
  47200. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  47201. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47202. <stringProp name="Argument.value">1</stringProp>
  47203. <stringProp name="Argument.metadata">=</stringProp>
  47204. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47205. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  47206. </elementProp>
  47207. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  47208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47209. <stringProp name="Argument.value">1</stringProp>
  47210. <stringProp name="Argument.metadata">=</stringProp>
  47211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47212. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  47213. </elementProp>
  47214. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  47215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47216. <stringProp name="Argument.value"/>
  47217. <stringProp name="Argument.metadata">=</stringProp>
  47218. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47219. <stringProp name="Argument.name">product[custom_design]</stringProp>
  47220. </elementProp>
  47221. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  47222. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47223. <stringProp name="Argument.value"/>
  47224. <stringProp name="Argument.metadata">=</stringProp>
  47225. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47226. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  47227. </elementProp>
  47228. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  47229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47230. <stringProp name="Argument.value"/>
  47231. <stringProp name="Argument.metadata">=</stringProp>
  47232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47233. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  47234. </elementProp>
  47235. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  47236. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47237. <stringProp name="Argument.value"/>
  47238. <stringProp name="Argument.metadata">=</stringProp>
  47239. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47240. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  47241. </elementProp>
  47242. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  47243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47244. <stringProp name="Argument.value"/>
  47245. <stringProp name="Argument.metadata">=</stringProp>
  47246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47247. <stringProp name="Argument.name">product[page_layout]</stringProp>
  47248. </elementProp>
  47249. <elementProp name="product[options_container]" elementType="HTTPArgument">
  47250. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47251. <stringProp name="Argument.value">container2</stringProp>
  47252. <stringProp name="Argument.metadata">=</stringProp>
  47253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47254. <stringProp name="Argument.name">product[options_container]</stringProp>
  47255. </elementProp>
  47256. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  47257. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47258. <stringProp name="Argument.value">${original_file}</stringProp>
  47259. <stringProp name="Argument.metadata">=</stringProp>
  47260. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47261. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  47262. <stringProp name="Argument.desc">false</stringProp>
  47263. </elementProp>
  47264. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  47265. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47266. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  47267. <stringProp name="Argument.metadata">=</stringProp>
  47268. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47269. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  47270. <stringProp name="Argument.desc">false</stringProp>
  47271. </elementProp>
  47272. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  47273. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47274. <stringProp name="Argument.value">13</stringProp>
  47275. <stringProp name="Argument.metadata">=</stringProp>
  47276. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47277. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  47278. <stringProp name="Argument.desc">false</stringProp>
  47279. </elementProp>
  47280. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  47281. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47282. <stringProp name="Argument.value">new</stringProp>
  47283. <stringProp name="Argument.metadata">=</stringProp>
  47284. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47285. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  47286. <stringProp name="Argument.desc">false</stringProp>
  47287. </elementProp>
  47288. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  47289. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47290. <stringProp name="Argument.value">1</stringProp>
  47291. <stringProp name="Argument.metadata">=</stringProp>
  47292. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47293. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  47294. <stringProp name="Argument.desc">true</stringProp>
  47295. </elementProp>
  47296. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  47297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47298. <stringProp name="Argument.value">0</stringProp>
  47299. <stringProp name="Argument.metadata">=</stringProp>
  47300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47301. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  47302. <stringProp name="Argument.desc">true</stringProp>
  47303. </elementProp>
  47304. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  47305. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47306. <stringProp name="Argument.value"/>
  47307. <stringProp name="Argument.metadata">=</stringProp>
  47308. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47309. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  47310. <stringProp name="Argument.desc">true</stringProp>
  47311. </elementProp>
  47312. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  47313. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47314. <stringProp name="Argument.value">0</stringProp>
  47315. <stringProp name="Argument.metadata">=</stringProp>
  47316. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47317. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  47318. <stringProp name="Argument.desc">false</stringProp>
  47319. </elementProp>
  47320. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  47321. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47322. <stringProp name="Argument.value">120</stringProp>
  47323. <stringProp name="Argument.metadata">=</stringProp>
  47324. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47325. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  47326. <stringProp name="Argument.desc">false</stringProp>
  47327. </elementProp>
  47328. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  47329. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47330. <stringProp name="Argument.value">0</stringProp>
  47331. <stringProp name="Argument.metadata">=</stringProp>
  47332. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47333. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  47334. <stringProp name="Argument.desc">false</stringProp>
  47335. </elementProp>
  47336. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  47337. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47338. <stringProp name="Argument.value">file</stringProp>
  47339. <stringProp name="Argument.metadata">=</stringProp>
  47340. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47341. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  47342. <stringProp name="Argument.desc">true</stringProp>
  47343. </elementProp>
  47344. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  47345. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47346. <stringProp name="Argument.value"/>
  47347. <stringProp name="Argument.metadata">=</stringProp>
  47348. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47349. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  47350. <stringProp name="Argument.desc">true</stringProp>
  47351. </elementProp>
  47352. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  47353. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47354. <stringProp name="Argument.value">1</stringProp>
  47355. <stringProp name="Argument.metadata">=</stringProp>
  47356. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47357. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  47358. <stringProp name="Argument.desc">true</stringProp>
  47359. </elementProp>
  47360. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  47361. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47362. <stringProp name="Argument.value">Original Link</stringProp>
  47363. <stringProp name="Argument.metadata">=</stringProp>
  47364. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47365. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  47366. <stringProp name="Argument.desc">true</stringProp>
  47367. </elementProp>
  47368. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  47369. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47370. <stringProp name="Argument.value">file</stringProp>
  47371. <stringProp name="Argument.metadata">=</stringProp>
  47372. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47373. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  47374. <stringProp name="Argument.desc">true</stringProp>
  47375. </elementProp>
  47376. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  47377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47378. <stringProp name="Argument.value">${sample_file}</stringProp>
  47379. <stringProp name="Argument.metadata">=</stringProp>
  47380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47381. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  47382. <stringProp name="Argument.desc">true</stringProp>
  47383. </elementProp>
  47384. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  47385. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47386. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  47387. <stringProp name="Argument.metadata">=</stringProp>
  47388. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47389. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  47390. <stringProp name="Argument.desc">true</stringProp>
  47391. </elementProp>
  47392. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  47393. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47394. <stringProp name="Argument.value">14</stringProp>
  47395. <stringProp name="Argument.metadata">=</stringProp>
  47396. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47397. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  47398. <stringProp name="Argument.desc">true</stringProp>
  47399. </elementProp>
  47400. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  47401. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47402. <stringProp name="Argument.value">new</stringProp>
  47403. <stringProp name="Argument.metadata">=</stringProp>
  47404. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47405. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  47406. <stringProp name="Argument.desc">true</stringProp>
  47407. </elementProp>
  47408. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  47409. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47410. <stringProp name="Argument.value">0</stringProp>
  47411. <stringProp name="Argument.metadata">=</stringProp>
  47412. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47413. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  47414. <stringProp name="Argument.desc">true</stringProp>
  47415. </elementProp>
  47416. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  47417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47418. <stringProp name="Argument.value"/>
  47419. <stringProp name="Argument.metadata">=</stringProp>
  47420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47421. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  47422. <stringProp name="Argument.desc">true</stringProp>
  47423. </elementProp>
  47424. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  47425. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47426. <stringProp name="Argument.value">1</stringProp>
  47427. <stringProp name="Argument.metadata">=</stringProp>
  47428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47429. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  47430. <stringProp name="Argument.desc">true</stringProp>
  47431. </elementProp>
  47432. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  47433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47434. <stringProp name="Argument.value">Sample Link</stringProp>
  47435. <stringProp name="Argument.metadata">=</stringProp>
  47436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47437. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  47438. <stringProp name="Argument.desc">true</stringProp>
  47439. </elementProp>
  47440. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  47441. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47442. <stringProp name="Argument.value">file</stringProp>
  47443. <stringProp name="Argument.metadata">=</stringProp>
  47444. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47445. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  47446. <stringProp name="Argument.desc">true</stringProp>
  47447. </elementProp>
  47448. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  47449. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47450. <stringProp name="Argument.value">1</stringProp>
  47451. <stringProp name="Argument.metadata">=</stringProp>
  47452. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47453. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  47454. <stringProp name="Argument.desc">false</stringProp>
  47455. </elementProp>
  47456. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  47457. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47458. <stringProp name="Argument.value">4</stringProp>
  47459. <stringProp name="Argument.metadata">=</stringProp>
  47460. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47461. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  47462. <stringProp name="Argument.desc">false</stringProp>
  47463. </elementProp>
  47464. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  47465. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47466. <stringProp name="Argument.value"/>
  47467. <stringProp name="Argument.metadata">=</stringProp>
  47468. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47469. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  47470. <stringProp name="Argument.desc">false</stringProp>
  47471. </elementProp>
  47472. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  47473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47474. <stringProp name="Argument.value">${related_product_id}</stringProp>
  47475. <stringProp name="Argument.metadata">=</stringProp>
  47476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47477. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  47478. </elementProp>
  47479. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  47480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47481. <stringProp name="Argument.value">1</stringProp>
  47482. <stringProp name="Argument.metadata">=</stringProp>
  47483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47484. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  47485. </elementProp>
  47486. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  47487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47488. <stringProp name="Argument.value">${related_product_id}</stringProp>
  47489. <stringProp name="Argument.metadata">=</stringProp>
  47490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47491. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  47492. </elementProp>
  47493. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  47494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47495. <stringProp name="Argument.value">1</stringProp>
  47496. <stringProp name="Argument.metadata">=</stringProp>
  47497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47498. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  47499. </elementProp>
  47500. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  47501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47502. <stringProp name="Argument.value">${related_product_id}</stringProp>
  47503. <stringProp name="Argument.metadata">=</stringProp>
  47504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47505. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  47506. </elementProp>
  47507. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  47508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47509. <stringProp name="Argument.value">1</stringProp>
  47510. <stringProp name="Argument.metadata">=</stringProp>
  47511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47512. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  47513. </elementProp>
  47514. </collectionProp>
  47515. </elementProp>
  47516. <stringProp name="HTTPSampler.domain"/>
  47517. <stringProp name="HTTPSampler.port"/>
  47518. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  47519. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  47520. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  47521. <stringProp name="HTTPSampler.contentEncoding"/>
  47522. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/</stringProp>
  47523. <stringProp name="HTTPSampler.method">POST</stringProp>
  47524. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  47525. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  47526. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  47527. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  47528. <boolProp name="HTTPSampler.monitor">false</boolProp>
  47529. <stringProp name="HTTPSampler.embedded_url_re"/>
  47530. </HTTPSamplerProxy>
  47531. <hashTree>
  47532. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  47533. <collectionProp name="Asserion.test_strings">
  47534. <stringProp name="-583471546">You saved the product</stringProp>
  47535. </collectionProp>
  47536. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  47537. <boolProp name="Assertion.assume_success">false</boolProp>
  47538. <intProp name="Assertion.test_type">2</intProp>
  47539. </ResponseAssertion>
  47540. <hashTree/>
  47541. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  47542. <collectionProp name="Asserion.test_strings">
  47543. <stringProp name="-1600986843">violation</stringProp>
  47544. </collectionProp>
  47545. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  47546. <boolProp name="Assertion.assume_success">false</boolProp>
  47547. <intProp name="Assertion.test_type">6</intProp>
  47548. </ResponseAssertion>
  47549. <hashTree/>
  47550. </hashTree>
  47551. </hashTree>
  47552. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Simple Product" enabled="true">
  47553. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_simple_product.jmx</stringProp>
  47554. </TestFragmentController>
  47555. <hashTree>
  47556. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  47557. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  47558. <collectionProp name="Arguments.arguments"/>
  47559. </elementProp>
  47560. <stringProp name="HTTPSampler.domain"/>
  47561. <stringProp name="HTTPSampler.port"/>
  47562. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  47563. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  47564. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  47565. <stringProp name="HTTPSampler.contentEncoding"/>
  47566. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  47567. <stringProp name="HTTPSampler.method">GET</stringProp>
  47568. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  47569. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  47570. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  47571. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  47572. <boolProp name="HTTPSampler.monitor">false</boolProp>
  47573. <stringProp name="HTTPSampler.embedded_url_re"/>
  47574. </HTTPSamplerProxy>
  47575. <hashTree>
  47576. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  47577. <collectionProp name="Asserion.test_strings">
  47578. <stringProp name="1509986340">records found</stringProp>
  47579. </collectionProp>
  47580. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  47581. <boolProp name="Assertion.assume_success">false</boolProp>
  47582. <intProp name="Assertion.test_type">2</intProp>
  47583. </ResponseAssertion>
  47584. <hashTree/>
  47585. </hashTree>
  47586. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product" enabled="true">
  47587. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  47588. <collectionProp name="Arguments.arguments"/>
  47589. </elementProp>
  47590. <stringProp name="HTTPSampler.domain"/>
  47591. <stringProp name="HTTPSampler.port"/>
  47592. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  47593. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  47594. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  47595. <stringProp name="HTTPSampler.contentEncoding"/>
  47596. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/simple/</stringProp>
  47597. <stringProp name="HTTPSampler.method">GET</stringProp>
  47598. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  47599. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  47600. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  47601. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  47602. <boolProp name="HTTPSampler.monitor">false</boolProp>
  47603. <stringProp name="HTTPSampler.embedded_url_re"/>
  47604. </HTTPSamplerProxy>
  47605. <hashTree>
  47606. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  47607. <collectionProp name="Asserion.test_strings">
  47608. <stringProp name="-144461265">New Product</stringProp>
  47609. </collectionProp>
  47610. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  47611. <boolProp name="Assertion.assume_success">false</boolProp>
  47612. <intProp name="Assertion.test_type">2</intProp>
  47613. </ResponseAssertion>
  47614. <hashTree/>
  47615. </hashTree>
  47616. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Validate" enabled="true">
  47617. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  47618. <collectionProp name="Arguments.arguments">
  47619. <elementProp name="ajax" elementType="HTTPArgument">
  47620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47621. <stringProp name="Argument.value">true</stringProp>
  47622. <stringProp name="Argument.metadata">=</stringProp>
  47623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47624. <stringProp name="Argument.name">ajax</stringProp>
  47625. <stringProp name="Argument.desc">false</stringProp>
  47626. </elementProp>
  47627. <elementProp name="isAjax" elementType="HTTPArgument">
  47628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47629. <stringProp name="Argument.value">true</stringProp>
  47630. <stringProp name="Argument.metadata">=</stringProp>
  47631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47632. <stringProp name="Argument.name">isAjax</stringProp>
  47633. <stringProp name="Argument.desc">false</stringProp>
  47634. </elementProp>
  47635. <elementProp name="form_key" elementType="HTTPArgument">
  47636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47637. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  47638. <stringProp name="Argument.metadata">=</stringProp>
  47639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47640. <stringProp name="Argument.name">form_key</stringProp>
  47641. <stringProp name="Argument.desc">false</stringProp>
  47642. </elementProp>
  47643. <elementProp name="product[name]" elementType="HTTPArgument">
  47644. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47645. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  47646. <stringProp name="Argument.metadata">=</stringProp>
  47647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47648. <stringProp name="Argument.name">product[name]</stringProp>
  47649. <stringProp name="Argument.desc">false</stringProp>
  47650. </elementProp>
  47651. <elementProp name="product[sku]" elementType="HTTPArgument">
  47652. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47653. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  47654. <stringProp name="Argument.metadata">=</stringProp>
  47655. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47656. <stringProp name="Argument.name">product[sku]</stringProp>
  47657. <stringProp name="Argument.desc">false</stringProp>
  47658. </elementProp>
  47659. <elementProp name="product[price]" elementType="HTTPArgument">
  47660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47661. <stringProp name="Argument.value">123</stringProp>
  47662. <stringProp name="Argument.metadata">=</stringProp>
  47663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47664. <stringProp name="Argument.name">product[price]</stringProp>
  47665. </elementProp>
  47666. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  47667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47668. <stringProp name="Argument.value">2</stringProp>
  47669. <stringProp name="Argument.metadata">=</stringProp>
  47670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47671. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  47672. </elementProp>
  47673. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  47674. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47675. <stringProp name="Argument.value">111</stringProp>
  47676. <stringProp name="Argument.metadata">=</stringProp>
  47677. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47678. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  47679. </elementProp>
  47680. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  47681. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47682. <stringProp name="Argument.value">1</stringProp>
  47683. <stringProp name="Argument.metadata">=</stringProp>
  47684. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47685. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  47686. </elementProp>
  47687. <elementProp name="product[weight]" elementType="HTTPArgument">
  47688. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47689. <stringProp name="Argument.value">1.0000</stringProp>
  47690. <stringProp name="Argument.metadata">=</stringProp>
  47691. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47692. <stringProp name="Argument.name">product[weight]</stringProp>
  47693. </elementProp>
  47694. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  47695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47696. <stringProp name="Argument.value">1</stringProp>
  47697. <stringProp name="Argument.metadata">=</stringProp>
  47698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47699. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  47700. <stringProp name="Argument.desc">true</stringProp>
  47701. </elementProp>
  47702. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  47703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47704. <stringProp name="Argument.value">2</stringProp>
  47705. <stringProp name="Argument.metadata">=</stringProp>
  47706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47707. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  47708. </elementProp>
  47709. <elementProp name="product[description]" elementType="HTTPArgument">
  47710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47711. <stringProp name="Argument.value">&lt;p&gt;Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  47712. <stringProp name="Argument.metadata">=</stringProp>
  47713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47714. <stringProp name="Argument.name">product[description]</stringProp>
  47715. </elementProp>
  47716. <elementProp name="product[short_description]" elementType="HTTPArgument">
  47717. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47718. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  47719. <stringProp name="Argument.metadata">=</stringProp>
  47720. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47721. <stringProp name="Argument.name">product[short_description]</stringProp>
  47722. </elementProp>
  47723. <elementProp name="product[status]" elementType="HTTPArgument">
  47724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47725. <stringProp name="Argument.value">1</stringProp>
  47726. <stringProp name="Argument.metadata">=</stringProp>
  47727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47728. <stringProp name="Argument.name">product[status]</stringProp>
  47729. </elementProp>
  47730. <elementProp name="product[image]" elementType="HTTPArgument">
  47731. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47732. <stringProp name="Argument.value"/>
  47733. <stringProp name="Argument.metadata">=</stringProp>
  47734. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47735. <stringProp name="Argument.name">product[image]</stringProp>
  47736. </elementProp>
  47737. <elementProp name="product[small_image]" elementType="HTTPArgument">
  47738. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47739. <stringProp name="Argument.value"/>
  47740. <stringProp name="Argument.metadata">=</stringProp>
  47741. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47742. <stringProp name="Argument.name">product[small_image]</stringProp>
  47743. </elementProp>
  47744. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  47745. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47746. <stringProp name="Argument.value"/>
  47747. <stringProp name="Argument.metadata">=</stringProp>
  47748. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47749. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  47750. </elementProp>
  47751. <elementProp name="product[url_key]" elementType="HTTPArgument">
  47752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47753. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  47754. <stringProp name="Argument.metadata">=</stringProp>
  47755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47756. <stringProp name="Argument.name">product[url_key]</stringProp>
  47757. </elementProp>
  47758. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  47759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47760. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  47761. <stringProp name="Argument.metadata">=</stringProp>
  47762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47763. <stringProp name="Argument.name">product[meta_title]</stringProp>
  47764. </elementProp>
  47765. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  47766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47767. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  47768. <stringProp name="Argument.metadata">=</stringProp>
  47769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47770. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  47771. </elementProp>
  47772. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  47773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47774. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  47775. <stringProp name="Argument.metadata">=</stringProp>
  47776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47777. <stringProp name="Argument.name">product[meta_description]</stringProp>
  47778. </elementProp>
  47779. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  47780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47781. <stringProp name="Argument.value">1</stringProp>
  47782. <stringProp name="Argument.metadata">=</stringProp>
  47783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47784. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  47785. </elementProp>
  47786. <elementProp name="product[special_price]" elementType="HTTPArgument">
  47787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47788. <stringProp name="Argument.value">99</stringProp>
  47789. <stringProp name="Argument.metadata">=</stringProp>
  47790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47791. <stringProp name="Argument.name">product[special_price]</stringProp>
  47792. </elementProp>
  47793. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  47794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47795. <stringProp name="Argument.value">1</stringProp>
  47796. <stringProp name="Argument.metadata">=</stringProp>
  47797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47798. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  47799. </elementProp>
  47800. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  47801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47802. <stringProp name="Argument.value"/>
  47803. <stringProp name="Argument.metadata">=</stringProp>
  47804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47805. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  47806. </elementProp>
  47807. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  47808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47809. <stringProp name="Argument.value"/>
  47810. <stringProp name="Argument.metadata">=</stringProp>
  47811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47812. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  47813. </elementProp>
  47814. <elementProp name="product[cost]" elementType="HTTPArgument">
  47815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47816. <stringProp name="Argument.value"/>
  47817. <stringProp name="Argument.metadata">=</stringProp>
  47818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47819. <stringProp name="Argument.name">product[cost]</stringProp>
  47820. </elementProp>
  47821. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  47822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47823. <stringProp name="Argument.value">0</stringProp>
  47824. <stringProp name="Argument.metadata">=</stringProp>
  47825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47826. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  47827. </elementProp>
  47828. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  47829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47830. <stringProp name="Argument.value">32000</stringProp>
  47831. <stringProp name="Argument.metadata">=</stringProp>
  47832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47833. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  47834. </elementProp>
  47835. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  47836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47837. <stringProp name="Argument.value">100</stringProp>
  47838. <stringProp name="Argument.metadata">=</stringProp>
  47839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47840. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  47841. </elementProp>
  47842. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  47843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47844. <stringProp name="Argument.value">90</stringProp>
  47845. <stringProp name="Argument.metadata">=</stringProp>
  47846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47847. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  47848. </elementProp>
  47849. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  47850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47851. <stringProp name="Argument.value"/>
  47852. <stringProp name="Argument.metadata">=</stringProp>
  47853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47854. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  47855. </elementProp>
  47856. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  47857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47858. <stringProp name="Argument.value">0</stringProp>
  47859. <stringProp name="Argument.metadata">=</stringProp>
  47860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47861. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  47862. </elementProp>
  47863. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  47864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47865. <stringProp name="Argument.value">1</stringProp>
  47866. <stringProp name="Argument.metadata">=</stringProp>
  47867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47868. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  47869. </elementProp>
  47870. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  47871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47872. <stringProp name="Argument.value">101</stringProp>
  47873. <stringProp name="Argument.metadata">=</stringProp>
  47874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47875. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  47876. </elementProp>
  47877. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  47878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47879. <stringProp name="Argument.value">99</stringProp>
  47880. <stringProp name="Argument.metadata">=</stringProp>
  47881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47882. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  47883. </elementProp>
  47884. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  47885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47886. <stringProp name="Argument.value"/>
  47887. <stringProp name="Argument.metadata">=</stringProp>
  47888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47889. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  47890. </elementProp>
  47891. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  47892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47893. <stringProp name="Argument.value">1</stringProp>
  47894. <stringProp name="Argument.metadata">=</stringProp>
  47895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47896. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  47897. </elementProp>
  47898. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  47899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47900. <stringProp name="Argument.value">100500</stringProp>
  47901. <stringProp name="Argument.metadata">=</stringProp>
  47902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47903. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  47904. </elementProp>
  47905. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  47906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47907. <stringProp name="Argument.value">100500</stringProp>
  47908. <stringProp name="Argument.metadata">=</stringProp>
  47909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47910. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  47911. </elementProp>
  47912. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  47913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47914. <stringProp name="Argument.value">0</stringProp>
  47915. <stringProp name="Argument.metadata">=</stringProp>
  47916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47917. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  47918. </elementProp>
  47919. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  47920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47921. <stringProp name="Argument.value">1</stringProp>
  47922. <stringProp name="Argument.metadata">=</stringProp>
  47923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47924. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  47925. </elementProp>
  47926. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  47927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47928. <stringProp name="Argument.value">1</stringProp>
  47929. <stringProp name="Argument.metadata">=</stringProp>
  47930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47931. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  47932. </elementProp>
  47933. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  47934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47935. <stringProp name="Argument.value">1</stringProp>
  47936. <stringProp name="Argument.metadata">=</stringProp>
  47937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47938. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  47939. </elementProp>
  47940. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  47941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47942. <stringProp name="Argument.value">10000</stringProp>
  47943. <stringProp name="Argument.metadata">=</stringProp>
  47944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47945. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  47946. </elementProp>
  47947. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  47948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47949. <stringProp name="Argument.value">1</stringProp>
  47950. <stringProp name="Argument.metadata">=</stringProp>
  47951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47952. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  47953. </elementProp>
  47954. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  47955. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47956. <stringProp name="Argument.value">0</stringProp>
  47957. <stringProp name="Argument.metadata">=</stringProp>
  47958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47959. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  47960. </elementProp>
  47961. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  47962. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47963. <stringProp name="Argument.value">0</stringProp>
  47964. <stringProp name="Argument.metadata">=</stringProp>
  47965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47966. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  47967. </elementProp>
  47968. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  47969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47970. <stringProp name="Argument.value">0</stringProp>
  47971. <stringProp name="Argument.metadata">=</stringProp>
  47972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47973. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  47974. </elementProp>
  47975. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  47976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47977. <stringProp name="Argument.value">1</stringProp>
  47978. <stringProp name="Argument.metadata">=</stringProp>
  47979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47980. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  47981. </elementProp>
  47982. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  47983. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47984. <stringProp name="Argument.value">1</stringProp>
  47985. <stringProp name="Argument.metadata">=</stringProp>
  47986. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47987. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  47988. </elementProp>
  47989. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  47990. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47991. <stringProp name="Argument.value">0</stringProp>
  47992. <stringProp name="Argument.metadata">=</stringProp>
  47993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  47994. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  47995. </elementProp>
  47996. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  47997. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  47998. <stringProp name="Argument.value">0</stringProp>
  47999. <stringProp name="Argument.metadata">=</stringProp>
  48000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48001. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  48002. </elementProp>
  48003. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  48004. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48005. <stringProp name="Argument.value">1</stringProp>
  48006. <stringProp name="Argument.metadata">=</stringProp>
  48007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48008. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  48009. </elementProp>
  48010. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  48011. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48012. <stringProp name="Argument.value">1</stringProp>
  48013. <stringProp name="Argument.metadata">=</stringProp>
  48014. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48015. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  48016. </elementProp>
  48017. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  48018. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48019. <stringProp name="Argument.value"/>
  48020. <stringProp name="Argument.metadata">=</stringProp>
  48021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48022. <stringProp name="Argument.name">product[custom_design]</stringProp>
  48023. </elementProp>
  48024. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  48025. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48026. <stringProp name="Argument.value"/>
  48027. <stringProp name="Argument.metadata">=</stringProp>
  48028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48029. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  48030. </elementProp>
  48031. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  48032. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48033. <stringProp name="Argument.value"/>
  48034. <stringProp name="Argument.metadata">=</stringProp>
  48035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48036. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  48037. </elementProp>
  48038. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  48039. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48040. <stringProp name="Argument.value"/>
  48041. <stringProp name="Argument.metadata">=</stringProp>
  48042. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48043. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  48044. </elementProp>
  48045. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  48046. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48047. <stringProp name="Argument.value"/>
  48048. <stringProp name="Argument.metadata">=</stringProp>
  48049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48050. <stringProp name="Argument.name">product[page_layout]</stringProp>
  48051. </elementProp>
  48052. <elementProp name="product[options_container]" elementType="HTTPArgument">
  48053. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48054. <stringProp name="Argument.value">container2</stringProp>
  48055. <stringProp name="Argument.metadata">=</stringProp>
  48056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48057. <stringProp name="Argument.name">product[options_container]</stringProp>
  48058. </elementProp>
  48059. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  48060. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48061. <stringProp name="Argument.value"/>
  48062. <stringProp name="Argument.metadata">=</stringProp>
  48063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48064. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  48065. <stringProp name="Argument.desc">false</stringProp>
  48066. </elementProp>
  48067. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  48068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48069. <stringProp name="Argument.value">1</stringProp>
  48070. <stringProp name="Argument.metadata">=</stringProp>
  48071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48072. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  48073. <stringProp name="Argument.desc">false</stringProp>
  48074. </elementProp>
  48075. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  48076. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48077. <stringProp name="Argument.value">select</stringProp>
  48078. <stringProp name="Argument.metadata">=</stringProp>
  48079. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48080. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  48081. <stringProp name="Argument.desc">false</stringProp>
  48082. </elementProp>
  48083. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  48084. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48085. <stringProp name="Argument.value">drop_down</stringProp>
  48086. <stringProp name="Argument.metadata">=</stringProp>
  48087. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48088. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  48089. <stringProp name="Argument.desc">false</stringProp>
  48090. </elementProp>
  48091. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  48092. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48093. <stringProp name="Argument.value">0</stringProp>
  48094. <stringProp name="Argument.metadata">=</stringProp>
  48095. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48096. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  48097. <stringProp name="Argument.desc">false</stringProp>
  48098. </elementProp>
  48099. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  48100. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48101. <stringProp name="Argument.value">Product Option Title One</stringProp>
  48102. <stringProp name="Argument.metadata">=</stringProp>
  48103. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48104. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  48105. <stringProp name="Argument.desc">false</stringProp>
  48106. </elementProp>
  48107. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  48108. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48109. <stringProp name="Argument.value">drop_down</stringProp>
  48110. <stringProp name="Argument.metadata">=</stringProp>
  48111. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48112. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  48113. <stringProp name="Argument.desc">false</stringProp>
  48114. </elementProp>
  48115. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  48116. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48117. <stringProp name="Argument.value"/>
  48118. <stringProp name="Argument.metadata">=</stringProp>
  48119. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48120. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  48121. <stringProp name="Argument.desc">false</stringProp>
  48122. </elementProp>
  48123. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  48124. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48125. <stringProp name="Argument.value">200</stringProp>
  48126. <stringProp name="Argument.metadata">=</stringProp>
  48127. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48128. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  48129. <stringProp name="Argument.desc">false</stringProp>
  48130. </elementProp>
  48131. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  48132. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48133. <stringProp name="Argument.value">fixed</stringProp>
  48134. <stringProp name="Argument.metadata">=</stringProp>
  48135. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48136. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  48137. <stringProp name="Argument.desc">false</stringProp>
  48138. </elementProp>
  48139. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  48140. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48141. <stringProp name="Argument.value">sku-one</stringProp>
  48142. <stringProp name="Argument.metadata">=</stringProp>
  48143. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48144. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  48145. <stringProp name="Argument.desc">false</stringProp>
  48146. </elementProp>
  48147. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  48148. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48149. <stringProp name="Argument.value">0</stringProp>
  48150. <stringProp name="Argument.metadata">=</stringProp>
  48151. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48152. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  48153. <stringProp name="Argument.desc">false</stringProp>
  48154. </elementProp>
  48155. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  48156. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48157. <stringProp name="Argument.value">Row Title</stringProp>
  48158. <stringProp name="Argument.metadata">=</stringProp>
  48159. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48160. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  48161. <stringProp name="Argument.desc">false</stringProp>
  48162. </elementProp>
  48163. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  48164. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48165. <stringProp name="Argument.value"/>
  48166. <stringProp name="Argument.metadata">=</stringProp>
  48167. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48168. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  48169. <stringProp name="Argument.desc">false</stringProp>
  48170. </elementProp>
  48171. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  48172. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48173. <stringProp name="Argument.value">1</stringProp>
  48174. <stringProp name="Argument.metadata">=</stringProp>
  48175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48176. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  48177. <stringProp name="Argument.desc">false</stringProp>
  48178. </elementProp>
  48179. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  48180. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48181. <stringProp name="Argument.value">250</stringProp>
  48182. <stringProp name="Argument.metadata">=</stringProp>
  48183. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48184. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  48185. <stringProp name="Argument.desc">false</stringProp>
  48186. </elementProp>
  48187. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  48188. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48189. <stringProp name="Argument.value">text</stringProp>
  48190. <stringProp name="Argument.metadata">=</stringProp>
  48191. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48192. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  48193. <stringProp name="Argument.desc">false</stringProp>
  48194. </elementProp>
  48195. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  48196. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48197. <stringProp name="Argument.value">field</stringProp>
  48198. <stringProp name="Argument.metadata">=</stringProp>
  48199. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48200. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  48201. <stringProp name="Argument.desc">false</stringProp>
  48202. </elementProp>
  48203. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  48204. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48205. <stringProp name="Argument.value">500</stringProp>
  48206. <stringProp name="Argument.metadata">=</stringProp>
  48207. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48208. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  48209. <stringProp name="Argument.desc">false</stringProp>
  48210. </elementProp>
  48211. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  48212. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48213. <stringProp name="Argument.value">fixed</stringProp>
  48214. <stringProp name="Argument.metadata">=</stringProp>
  48215. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48216. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  48217. <stringProp name="Argument.desc">false</stringProp>
  48218. </elementProp>
  48219. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  48220. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48221. <stringProp name="Argument.value">sku-two</stringProp>
  48222. <stringProp name="Argument.metadata">=</stringProp>
  48223. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48224. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  48225. <stringProp name="Argument.desc">false</stringProp>
  48226. </elementProp>
  48227. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  48228. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48229. <stringProp name="Argument.value">1</stringProp>
  48230. <stringProp name="Argument.metadata">=</stringProp>
  48231. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48232. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  48233. <stringProp name="Argument.desc">false</stringProp>
  48234. </elementProp>
  48235. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  48236. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48237. <stringProp name="Argument.value">Field Title</stringProp>
  48238. <stringProp name="Argument.metadata">=</stringProp>
  48239. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48240. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  48241. <stringProp name="Argument.desc">false</stringProp>
  48242. </elementProp>
  48243. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  48244. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48245. <stringProp name="Argument.value">field</stringProp>
  48246. <stringProp name="Argument.metadata">=</stringProp>
  48247. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48248. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  48249. <stringProp name="Argument.desc">false</stringProp>
  48250. </elementProp>
  48251. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  48252. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48253. <stringProp name="Argument.value">1</stringProp>
  48254. <stringProp name="Argument.metadata">=</stringProp>
  48255. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48256. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  48257. <stringProp name="Argument.desc">true</stringProp>
  48258. </elementProp>
  48259. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  48260. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48261. <stringProp name="Argument.value">4</stringProp>
  48262. <stringProp name="Argument.metadata">=</stringProp>
  48263. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48264. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  48265. <stringProp name="Argument.desc">true</stringProp>
  48266. </elementProp>
  48267. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  48268. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48269. <stringProp name="Argument.value"/>
  48270. <stringProp name="Argument.metadata">=</stringProp>
  48271. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48272. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  48273. <stringProp name="Argument.desc">true</stringProp>
  48274. </elementProp>
  48275. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  48276. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48277. <stringProp name="Argument.value">${related_product_id}</stringProp>
  48278. <stringProp name="Argument.metadata">=</stringProp>
  48279. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48280. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  48281. </elementProp>
  48282. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  48283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48284. <stringProp name="Argument.value">1</stringProp>
  48285. <stringProp name="Argument.metadata">=</stringProp>
  48286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48287. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  48288. </elementProp>
  48289. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  48290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48291. <stringProp name="Argument.value">${related_product_id}</stringProp>
  48292. <stringProp name="Argument.metadata">=</stringProp>
  48293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48294. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  48295. </elementProp>
  48296. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  48297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48298. <stringProp name="Argument.value">1</stringProp>
  48299. <stringProp name="Argument.metadata">=</stringProp>
  48300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48301. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  48302. </elementProp>
  48303. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  48304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48305. <stringProp name="Argument.value">${related_product_id}</stringProp>
  48306. <stringProp name="Argument.metadata">=</stringProp>
  48307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48308. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  48309. </elementProp>
  48310. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  48311. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48312. <stringProp name="Argument.value">1</stringProp>
  48313. <stringProp name="Argument.metadata">=</stringProp>
  48314. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48315. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  48316. </elementProp>
  48317. </collectionProp>
  48318. </elementProp>
  48319. <stringProp name="HTTPSampler.domain"/>
  48320. <stringProp name="HTTPSampler.port"/>
  48321. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  48322. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  48323. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  48324. <stringProp name="HTTPSampler.contentEncoding"/>
  48325. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  48326. <stringProp name="HTTPSampler.method">POST</stringProp>
  48327. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  48328. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  48329. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  48330. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  48331. <boolProp name="HTTPSampler.monitor">false</boolProp>
  48332. <stringProp name="HTTPSampler.embedded_url_re"/>
  48333. </HTTPSamplerProxy>
  48334. <hashTree>
  48335. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  48336. <collectionProp name="Asserion.test_strings">
  48337. <stringProp name="1853918323">{"error":false}</stringProp>
  48338. </collectionProp>
  48339. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  48340. <boolProp name="Assertion.assume_success">false</boolProp>
  48341. <intProp name="Assertion.test_type">2</intProp>
  48342. </ResponseAssertion>
  48343. <hashTree/>
  48344. </hashTree>
  48345. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Save" enabled="true">
  48346. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  48347. <collectionProp name="Arguments.arguments">
  48348. <elementProp name="ajax" elementType="HTTPArgument">
  48349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48350. <stringProp name="Argument.value">true</stringProp>
  48351. <stringProp name="Argument.metadata">=</stringProp>
  48352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48353. <stringProp name="Argument.name">ajax</stringProp>
  48354. <stringProp name="Argument.desc">false</stringProp>
  48355. </elementProp>
  48356. <elementProp name="isAjax" elementType="HTTPArgument">
  48357. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48358. <stringProp name="Argument.value">true</stringProp>
  48359. <stringProp name="Argument.metadata">=</stringProp>
  48360. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48361. <stringProp name="Argument.name">isAjax</stringProp>
  48362. <stringProp name="Argument.desc">false</stringProp>
  48363. </elementProp>
  48364. <elementProp name="form_key" elementType="HTTPArgument">
  48365. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48366. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  48367. <stringProp name="Argument.metadata">=</stringProp>
  48368. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48369. <stringProp name="Argument.name">form_key</stringProp>
  48370. <stringProp name="Argument.desc">false</stringProp>
  48371. </elementProp>
  48372. <elementProp name="product[name]" elementType="HTTPArgument">
  48373. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48374. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  48375. <stringProp name="Argument.metadata">=</stringProp>
  48376. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48377. <stringProp name="Argument.name">product[name]</stringProp>
  48378. <stringProp name="Argument.desc">false</stringProp>
  48379. </elementProp>
  48380. <elementProp name="product[sku]" elementType="HTTPArgument">
  48381. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48382. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  48383. <stringProp name="Argument.metadata">=</stringProp>
  48384. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48385. <stringProp name="Argument.name">product[sku]</stringProp>
  48386. <stringProp name="Argument.desc">false</stringProp>
  48387. </elementProp>
  48388. <elementProp name="product[price]" elementType="HTTPArgument">
  48389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48390. <stringProp name="Argument.value">123</stringProp>
  48391. <stringProp name="Argument.metadata">=</stringProp>
  48392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48393. <stringProp name="Argument.name">product[price]</stringProp>
  48394. </elementProp>
  48395. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  48396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48397. <stringProp name="Argument.value">2</stringProp>
  48398. <stringProp name="Argument.metadata">=</stringProp>
  48399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48400. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  48401. </elementProp>
  48402. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  48403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48404. <stringProp name="Argument.value">111</stringProp>
  48405. <stringProp name="Argument.metadata">=</stringProp>
  48406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48407. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  48408. </elementProp>
  48409. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  48410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48411. <stringProp name="Argument.value">1</stringProp>
  48412. <stringProp name="Argument.metadata">=</stringProp>
  48413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48414. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  48415. </elementProp>
  48416. <elementProp name="product[weight]" elementType="HTTPArgument">
  48417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48418. <stringProp name="Argument.value">1.0000</stringProp>
  48419. <stringProp name="Argument.metadata">=</stringProp>
  48420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48421. <stringProp name="Argument.name">product[weight]</stringProp>
  48422. </elementProp>
  48423. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  48424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48425. <stringProp name="Argument.value">1</stringProp>
  48426. <stringProp name="Argument.metadata">=</stringProp>
  48427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48428. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  48429. <stringProp name="Argument.desc">true</stringProp>
  48430. </elementProp>
  48431. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  48432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48433. <stringProp name="Argument.value">2</stringProp>
  48434. <stringProp name="Argument.metadata">=</stringProp>
  48435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48436. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  48437. </elementProp>
  48438. <elementProp name="product[description]" elementType="HTTPArgument">
  48439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48440. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  48441. <stringProp name="Argument.metadata">=</stringProp>
  48442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48443. <stringProp name="Argument.name">product[description]</stringProp>
  48444. </elementProp>
  48445. <elementProp name="product[short_description]" elementType="HTTPArgument">
  48446. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48447. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  48448. <stringProp name="Argument.metadata">=</stringProp>
  48449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48450. <stringProp name="Argument.name">product[short_description]</stringProp>
  48451. </elementProp>
  48452. <elementProp name="product[status]" elementType="HTTPArgument">
  48453. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48454. <stringProp name="Argument.value">1</stringProp>
  48455. <stringProp name="Argument.metadata">=</stringProp>
  48456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48457. <stringProp name="Argument.name">product[status]</stringProp>
  48458. </elementProp>
  48459. <elementProp name="product[image]" elementType="HTTPArgument">
  48460. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48461. <stringProp name="Argument.value"/>
  48462. <stringProp name="Argument.metadata">=</stringProp>
  48463. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48464. <stringProp name="Argument.name">product[image]</stringProp>
  48465. </elementProp>
  48466. <elementProp name="product[small_image]" elementType="HTTPArgument">
  48467. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48468. <stringProp name="Argument.value"/>
  48469. <stringProp name="Argument.metadata">=</stringProp>
  48470. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48471. <stringProp name="Argument.name">product[small_image]</stringProp>
  48472. </elementProp>
  48473. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  48474. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48475. <stringProp name="Argument.value"/>
  48476. <stringProp name="Argument.metadata">=</stringProp>
  48477. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48478. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  48479. </elementProp>
  48480. <elementProp name="product[url_key]" elementType="HTTPArgument">
  48481. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48482. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  48483. <stringProp name="Argument.metadata">=</stringProp>
  48484. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48485. <stringProp name="Argument.name">product[url_key]</stringProp>
  48486. </elementProp>
  48487. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  48488. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48489. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  48490. <stringProp name="Argument.metadata">=</stringProp>
  48491. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48492. <stringProp name="Argument.name">product[meta_title]</stringProp>
  48493. </elementProp>
  48494. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  48495. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48496. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  48497. <stringProp name="Argument.metadata">=</stringProp>
  48498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48499. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  48500. </elementProp>
  48501. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  48502. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48503. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  48504. <stringProp name="Argument.metadata">=</stringProp>
  48505. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48506. <stringProp name="Argument.name">product[meta_description]</stringProp>
  48507. </elementProp>
  48508. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  48509. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48510. <stringProp name="Argument.value">1</stringProp>
  48511. <stringProp name="Argument.metadata">=</stringProp>
  48512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48513. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  48514. </elementProp>
  48515. <elementProp name="product[special_price]" elementType="HTTPArgument">
  48516. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48517. <stringProp name="Argument.value">99</stringProp>
  48518. <stringProp name="Argument.metadata">=</stringProp>
  48519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48520. <stringProp name="Argument.name">product[special_price]</stringProp>
  48521. </elementProp>
  48522. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  48523. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48524. <stringProp name="Argument.value"/>
  48525. <stringProp name="Argument.metadata">=</stringProp>
  48526. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48527. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  48528. </elementProp>
  48529. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  48530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48531. <stringProp name="Argument.value"/>
  48532. <stringProp name="Argument.metadata">=</stringProp>
  48533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48534. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  48535. </elementProp>
  48536. <elementProp name="product[cost]" elementType="HTTPArgument">
  48537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48538. <stringProp name="Argument.value"/>
  48539. <stringProp name="Argument.metadata">=</stringProp>
  48540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48541. <stringProp name="Argument.name">product[cost]</stringProp>
  48542. </elementProp>
  48543. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  48544. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48545. <stringProp name="Argument.value">0</stringProp>
  48546. <stringProp name="Argument.metadata">=</stringProp>
  48547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48548. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  48549. </elementProp>
  48550. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  48551. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48552. <stringProp name="Argument.value">32000</stringProp>
  48553. <stringProp name="Argument.metadata">=</stringProp>
  48554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48555. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  48556. </elementProp>
  48557. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  48558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48559. <stringProp name="Argument.value">100</stringProp>
  48560. <stringProp name="Argument.metadata">=</stringProp>
  48561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48562. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  48563. </elementProp>
  48564. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  48565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48566. <stringProp name="Argument.value">90</stringProp>
  48567. <stringProp name="Argument.metadata">=</stringProp>
  48568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48569. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  48570. </elementProp>
  48571. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  48572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48573. <stringProp name="Argument.value"/>
  48574. <stringProp name="Argument.metadata">=</stringProp>
  48575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48576. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  48577. </elementProp>
  48578. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  48579. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48580. <stringProp name="Argument.value">0</stringProp>
  48581. <stringProp name="Argument.metadata">=</stringProp>
  48582. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48583. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  48584. </elementProp>
  48585. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  48586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48587. <stringProp name="Argument.value">1</stringProp>
  48588. <stringProp name="Argument.metadata">=</stringProp>
  48589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48590. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  48591. </elementProp>
  48592. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  48593. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48594. <stringProp name="Argument.value">101</stringProp>
  48595. <stringProp name="Argument.metadata">=</stringProp>
  48596. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48597. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  48598. </elementProp>
  48599. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  48600. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48601. <stringProp name="Argument.value">99</stringProp>
  48602. <stringProp name="Argument.metadata">=</stringProp>
  48603. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48604. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  48605. </elementProp>
  48606. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  48607. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48608. <stringProp name="Argument.value"/>
  48609. <stringProp name="Argument.metadata">=</stringProp>
  48610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48611. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  48612. </elementProp>
  48613. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  48614. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48615. <stringProp name="Argument.value">1</stringProp>
  48616. <stringProp name="Argument.metadata">=</stringProp>
  48617. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48618. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  48619. </elementProp>
  48620. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  48621. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48622. <stringProp name="Argument.value">100500</stringProp>
  48623. <stringProp name="Argument.metadata">=</stringProp>
  48624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48625. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  48626. </elementProp>
  48627. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  48628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48629. <stringProp name="Argument.value">100500</stringProp>
  48630. <stringProp name="Argument.metadata">=</stringProp>
  48631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48632. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  48633. </elementProp>
  48634. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  48635. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48636. <stringProp name="Argument.value">0</stringProp>
  48637. <stringProp name="Argument.metadata">=</stringProp>
  48638. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48639. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  48640. </elementProp>
  48641. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  48642. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48643. <stringProp name="Argument.value">1</stringProp>
  48644. <stringProp name="Argument.metadata">=</stringProp>
  48645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48646. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  48647. </elementProp>
  48648. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  48649. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48650. <stringProp name="Argument.value">1</stringProp>
  48651. <stringProp name="Argument.metadata">=</stringProp>
  48652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48653. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  48654. </elementProp>
  48655. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  48656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48657. <stringProp name="Argument.value">1</stringProp>
  48658. <stringProp name="Argument.metadata">=</stringProp>
  48659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48660. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  48661. </elementProp>
  48662. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  48663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48664. <stringProp name="Argument.value">10000</stringProp>
  48665. <stringProp name="Argument.metadata">=</stringProp>
  48666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48667. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  48668. </elementProp>
  48669. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  48670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48671. <stringProp name="Argument.value">1</stringProp>
  48672. <stringProp name="Argument.metadata">=</stringProp>
  48673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48674. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  48675. </elementProp>
  48676. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  48677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48678. <stringProp name="Argument.value">0</stringProp>
  48679. <stringProp name="Argument.metadata">=</stringProp>
  48680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48681. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  48682. </elementProp>
  48683. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  48684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48685. <stringProp name="Argument.value">0</stringProp>
  48686. <stringProp name="Argument.metadata">=</stringProp>
  48687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48688. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  48689. </elementProp>
  48690. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  48691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48692. <stringProp name="Argument.value">0</stringProp>
  48693. <stringProp name="Argument.metadata">=</stringProp>
  48694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48695. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  48696. </elementProp>
  48697. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  48698. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48699. <stringProp name="Argument.value">1</stringProp>
  48700. <stringProp name="Argument.metadata">=</stringProp>
  48701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48702. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  48703. </elementProp>
  48704. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  48705. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48706. <stringProp name="Argument.value">1</stringProp>
  48707. <stringProp name="Argument.metadata">=</stringProp>
  48708. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48709. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  48710. </elementProp>
  48711. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  48712. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48713. <stringProp name="Argument.value">1</stringProp>
  48714. <stringProp name="Argument.metadata">=</stringProp>
  48715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48716. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  48717. </elementProp>
  48718. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  48719. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48720. <stringProp name="Argument.value">0</stringProp>
  48721. <stringProp name="Argument.metadata">=</stringProp>
  48722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48723. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  48724. </elementProp>
  48725. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  48726. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48727. <stringProp name="Argument.value">0</stringProp>
  48728. <stringProp name="Argument.metadata">=</stringProp>
  48729. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48730. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  48731. </elementProp>
  48732. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  48733. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48734. <stringProp name="Argument.value">1</stringProp>
  48735. <stringProp name="Argument.metadata">=</stringProp>
  48736. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48737. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  48738. </elementProp>
  48739. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  48740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48741. <stringProp name="Argument.value">1</stringProp>
  48742. <stringProp name="Argument.metadata">=</stringProp>
  48743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48744. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  48745. </elementProp>
  48746. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  48747. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48748. <stringProp name="Argument.value"/>
  48749. <stringProp name="Argument.metadata">=</stringProp>
  48750. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48751. <stringProp name="Argument.name">product[custom_design]</stringProp>
  48752. </elementProp>
  48753. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  48754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48755. <stringProp name="Argument.value"/>
  48756. <stringProp name="Argument.metadata">=</stringProp>
  48757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48758. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  48759. </elementProp>
  48760. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  48761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48762. <stringProp name="Argument.value"/>
  48763. <stringProp name="Argument.metadata">=</stringProp>
  48764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48765. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  48766. </elementProp>
  48767. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  48768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48769. <stringProp name="Argument.value"/>
  48770. <stringProp name="Argument.metadata">=</stringProp>
  48771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48772. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  48773. </elementProp>
  48774. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  48775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48776. <stringProp name="Argument.value"/>
  48777. <stringProp name="Argument.metadata">=</stringProp>
  48778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48779. <stringProp name="Argument.name">product[page_layout]</stringProp>
  48780. </elementProp>
  48781. <elementProp name="product[options_container]" elementType="HTTPArgument">
  48782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48783. <stringProp name="Argument.value">container2</stringProp>
  48784. <stringProp name="Argument.metadata">=</stringProp>
  48785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48786. <stringProp name="Argument.name">product[options_container]</stringProp>
  48787. </elementProp>
  48788. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  48789. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48790. <stringProp name="Argument.value"/>
  48791. <stringProp name="Argument.metadata">=</stringProp>
  48792. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48793. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  48794. <stringProp name="Argument.desc">true</stringProp>
  48795. </elementProp>
  48796. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  48797. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48798. <stringProp name="Argument.value">1</stringProp>
  48799. <stringProp name="Argument.metadata">=</stringProp>
  48800. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48801. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  48802. </elementProp>
  48803. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  48804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48805. <stringProp name="Argument.value">select</stringProp>
  48806. <stringProp name="Argument.metadata">=</stringProp>
  48807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48808. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  48809. <stringProp name="Argument.desc">false</stringProp>
  48810. </elementProp>
  48811. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  48812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48813. <stringProp name="Argument.value">drop_down</stringProp>
  48814. <stringProp name="Argument.metadata">=</stringProp>
  48815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48816. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  48817. <stringProp name="Argument.desc">false</stringProp>
  48818. </elementProp>
  48819. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  48820. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48821. <stringProp name="Argument.value">0</stringProp>
  48822. <stringProp name="Argument.metadata">=</stringProp>
  48823. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48824. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  48825. <stringProp name="Argument.desc">false</stringProp>
  48826. </elementProp>
  48827. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  48828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48829. <stringProp name="Argument.value">Product Option Title One</stringProp>
  48830. <stringProp name="Argument.metadata">=</stringProp>
  48831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48832. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  48833. </elementProp>
  48834. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  48835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48836. <stringProp name="Argument.value">drop_down</stringProp>
  48837. <stringProp name="Argument.metadata">=</stringProp>
  48838. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48839. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  48840. </elementProp>
  48841. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  48842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48843. <stringProp name="Argument.value"/>
  48844. <stringProp name="Argument.metadata">=</stringProp>
  48845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48846. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  48847. <stringProp name="Argument.desc">false</stringProp>
  48848. </elementProp>
  48849. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  48850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48851. <stringProp name="Argument.value">200</stringProp>
  48852. <stringProp name="Argument.metadata">=</stringProp>
  48853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48854. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  48855. </elementProp>
  48856. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  48857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48858. <stringProp name="Argument.value">fixed</stringProp>
  48859. <stringProp name="Argument.metadata">=</stringProp>
  48860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48861. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  48862. </elementProp>
  48863. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  48864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48865. <stringProp name="Argument.value">sku-one</stringProp>
  48866. <stringProp name="Argument.metadata">=</stringProp>
  48867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48868. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  48869. </elementProp>
  48870. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  48871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48872. <stringProp name="Argument.value">0</stringProp>
  48873. <stringProp name="Argument.metadata">=</stringProp>
  48874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48875. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  48876. </elementProp>
  48877. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  48878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48879. <stringProp name="Argument.value">Row Title</stringProp>
  48880. <stringProp name="Argument.metadata">=</stringProp>
  48881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48882. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  48883. </elementProp>
  48884. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  48885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48886. <stringProp name="Argument.value"/>
  48887. <stringProp name="Argument.metadata">=</stringProp>
  48888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48889. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  48890. <stringProp name="Argument.desc">false</stringProp>
  48891. </elementProp>
  48892. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  48893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48894. <stringProp name="Argument.value">1</stringProp>
  48895. <stringProp name="Argument.metadata">=</stringProp>
  48896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48897. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  48898. </elementProp>
  48899. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  48900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48901. <stringProp name="Argument.value">250</stringProp>
  48902. <stringProp name="Argument.metadata">=</stringProp>
  48903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48904. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  48905. </elementProp>
  48906. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  48907. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48908. <stringProp name="Argument.value">text</stringProp>
  48909. <stringProp name="Argument.metadata">=</stringProp>
  48910. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48911. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  48912. </elementProp>
  48913. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  48914. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48915. <stringProp name="Argument.value">field</stringProp>
  48916. <stringProp name="Argument.metadata">=</stringProp>
  48917. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48918. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  48919. </elementProp>
  48920. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  48921. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48922. <stringProp name="Argument.value">500</stringProp>
  48923. <stringProp name="Argument.metadata">=</stringProp>
  48924. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48925. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  48926. </elementProp>
  48927. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  48928. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48929. <stringProp name="Argument.value">fixed</stringProp>
  48930. <stringProp name="Argument.metadata">=</stringProp>
  48931. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48932. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  48933. </elementProp>
  48934. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  48935. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48936. <stringProp name="Argument.value">sku-two</stringProp>
  48937. <stringProp name="Argument.metadata">=</stringProp>
  48938. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48939. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  48940. </elementProp>
  48941. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  48942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48943. <stringProp name="Argument.value">1</stringProp>
  48944. <stringProp name="Argument.metadata">=</stringProp>
  48945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48946. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  48947. </elementProp>
  48948. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  48949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48950. <stringProp name="Argument.value">Field Title</stringProp>
  48951. <stringProp name="Argument.metadata">=</stringProp>
  48952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48953. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  48954. </elementProp>
  48955. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  48956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48957. <stringProp name="Argument.value">field</stringProp>
  48958. <stringProp name="Argument.metadata">=</stringProp>
  48959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48960. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  48961. </elementProp>
  48962. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  48963. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48964. <stringProp name="Argument.value">1</stringProp>
  48965. <stringProp name="Argument.metadata">=</stringProp>
  48966. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48967. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  48968. <stringProp name="Argument.desc">true</stringProp>
  48969. </elementProp>
  48970. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  48971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48972. <stringProp name="Argument.value">4</stringProp>
  48973. <stringProp name="Argument.metadata">=</stringProp>
  48974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48975. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  48976. <stringProp name="Argument.desc">true</stringProp>
  48977. </elementProp>
  48978. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  48979. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48980. <stringProp name="Argument.value"/>
  48981. <stringProp name="Argument.metadata">=</stringProp>
  48982. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48983. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  48984. <stringProp name="Argument.desc">true</stringProp>
  48985. </elementProp>
  48986. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  48987. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48988. <stringProp name="Argument.value">${related_product_id}</stringProp>
  48989. <stringProp name="Argument.metadata">=</stringProp>
  48990. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48991. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  48992. </elementProp>
  48993. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  48994. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  48995. <stringProp name="Argument.value">1</stringProp>
  48996. <stringProp name="Argument.metadata">=</stringProp>
  48997. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  48998. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  48999. </elementProp>
  49000. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  49001. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49002. <stringProp name="Argument.value">${related_product_id}</stringProp>
  49003. <stringProp name="Argument.metadata">=</stringProp>
  49004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49005. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  49006. </elementProp>
  49007. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  49008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49009. <stringProp name="Argument.value">1</stringProp>
  49010. <stringProp name="Argument.metadata">=</stringProp>
  49011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49012. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  49013. </elementProp>
  49014. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  49015. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49016. <stringProp name="Argument.value">${related_product_id}</stringProp>
  49017. <stringProp name="Argument.metadata">=</stringProp>
  49018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49019. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  49020. </elementProp>
  49021. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  49022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49023. <stringProp name="Argument.value">1</stringProp>
  49024. <stringProp name="Argument.metadata">=</stringProp>
  49025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49026. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  49027. </elementProp>
  49028. </collectionProp>
  49029. </elementProp>
  49030. <stringProp name="HTTPSampler.domain"/>
  49031. <stringProp name="HTTPSampler.port"/>
  49032. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  49033. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  49034. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  49035. <stringProp name="HTTPSampler.contentEncoding"/>
  49036. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/</stringProp>
  49037. <stringProp name="HTTPSampler.method">POST</stringProp>
  49038. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  49039. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  49040. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  49041. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  49042. <boolProp name="HTTPSampler.monitor">false</boolProp>
  49043. <stringProp name="HTTPSampler.embedded_url_re"/>
  49044. </HTTPSamplerProxy>
  49045. <hashTree>
  49046. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  49047. <collectionProp name="Asserion.test_strings">
  49048. <stringProp name="-583471546">You saved the product</stringProp>
  49049. </collectionProp>
  49050. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  49051. <boolProp name="Assertion.assume_success">false</boolProp>
  49052. <intProp name="Assertion.test_type">2</intProp>
  49053. </ResponseAssertion>
  49054. <hashTree/>
  49055. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  49056. <collectionProp name="Asserion.test_strings">
  49057. <stringProp name="-1600986843">violation</stringProp>
  49058. </collectionProp>
  49059. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  49060. <boolProp name="Assertion.assume_success">false</boolProp>
  49061. <intProp name="Assertion.test_type">6</intProp>
  49062. </ResponseAssertion>
  49063. <hashTree/>
  49064. </hashTree>
  49065. </hashTree>
  49066. </hashTree>
  49067. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  49068. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  49069. <collectionProp name="Arguments.arguments"/>
  49070. </elementProp>
  49071. <stringProp name="HTTPSampler.domain"/>
  49072. <stringProp name="HTTPSampler.port"/>
  49073. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  49074. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  49075. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  49076. <stringProp name="HTTPSampler.contentEncoding"/>
  49077. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  49078. <stringProp name="HTTPSampler.method">GET</stringProp>
  49079. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  49080. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  49081. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  49082. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  49083. <boolProp name="HTTPSampler.monitor">false</boolProp>
  49084. <stringProp name="HTTPSampler.embedded_url_re"/>
  49085. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  49086. <hashTree>
  49087. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  49088. <boolProp name="resetInterpreter">false</boolProp>
  49089. <stringProp name="parameters"/>
  49090. <stringProp name="filename"/>
  49091. <stringProp name="script">
  49092. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  49093. if (adminUsersDistribution == 1) {
  49094. adminUserList = props.get("adminUserList");
  49095. adminUserList.add(vars.get("admin_user"));
  49096. }
  49097. </stringProp>
  49098. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  49099. <hashTree/>
  49100. </hashTree>
  49101. </hashTree>
  49102. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Edit Product" enabled="true">
  49103. <intProp name="ThroughputController.style">1</intProp>
  49104. <boolProp name="ThroughputController.perThread">false</boolProp>
  49105. <intProp name="ThroughputController.maxThroughput">1</intProp>
  49106. <stringProp name="ThroughputController.percentThroughput">${cAdminProductEditingPercentage}</stringProp>
  49107. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  49108. <hashTree>
  49109. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  49110. <stringProp name="script">
  49111. var tmpLabel = vars.get("testLabel")
  49112. if (tmpLabel) {
  49113. var testLabel = " (" + tmpLabel + ")"
  49114. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  49115. if (sampler.getName().indexOf(testLabel) == -1) {
  49116. sampler.setName(sampler.getName() + testLabel);
  49117. }
  49118. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  49119. sampler.setName("SetUp - " + sampler.getName());
  49120. }
  49121. } else {
  49122. testLabel = ""
  49123. }
  49124. </stringProp>
  49125. <stringProp name="scriptLanguage">javascript</stringProp>
  49126. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  49127. <hashTree/>
  49128. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  49129. <stringProp name="BeanShellSampler.query">
  49130. vars.put("testLabel", "[C] Admin Edit Product");
  49131. </stringProp>
  49132. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  49133. </BeanShellSampler>
  49134. <hashTree/>
  49135. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  49136. <stringProp name="script">
  49137. function getFormKeyFromResponse()
  49138. {
  49139. var url = prev.getUrlAsString(),
  49140. responseCode = prev.getResponseCode(),
  49141. formKey = null;
  49142. searchPattern = /var FORM_KEY = '(.+)'/;
  49143. if (responseCode == "200" &amp;&amp; url) {
  49144. response = prev.getResponseDataAsString();
  49145. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  49146. }
  49147. return formKey;
  49148. }
  49149. formKey = vars.get("form_key_storage");
  49150. currentFormKey = getFormKeyFromResponse();
  49151. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  49152. vars.put("form_key_storage", currentFormKey);
  49153. }
  49154. </stringProp>
  49155. <stringProp name="scriptLanguage">javascript</stringProp>
  49156. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  49157. <hashTree/>
  49158. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  49159. <stringProp name="script">
  49160. formKey = vars.get("form_key_storage");
  49161. if (formKey
  49162. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  49163. &amp;&amp; sampler.getMethod() == "POST")
  49164. {
  49165. arguments = sampler.getArguments();
  49166. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  49167. {
  49168. argument = arguments.getArgument(i);
  49169. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  49170. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  49171. argument.setValue(formKey);
  49172. }
  49173. }
  49174. }
  49175. </stringProp>
  49176. <stringProp name="scriptLanguage">javascript</stringProp>
  49177. </JSR223PreProcessor>
  49178. <hashTree/>
  49179. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  49180. <collectionProp name="CookieManager.cookies"/>
  49181. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  49182. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  49183. <hashTree/>
  49184. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  49185. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  49186. </GenericController>
  49187. <hashTree>
  49188. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  49189. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  49190. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  49191. <hashTree>
  49192. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  49193. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  49194. <stringProp name="BeanShellSampler.query">
  49195. adminUser = "none";
  49196. adminUserList = props.get("adminUserList");
  49197. adminUserListIterator = props.get("adminUserListIterator");
  49198. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  49199. if (adminUsersDistribution == 1) {
  49200. adminUser = adminUserList.poll();
  49201. } else {
  49202. if (!adminUserListIterator.hasNext()) {
  49203. adminUserListIterator = adminUserList.descendingIterator();
  49204. }
  49205. adminUser = adminUserListIterator.next();
  49206. }
  49207. if (adminUser == "none") {
  49208. SampleResult.setResponseMessage("adminUser list is empty");
  49209. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  49210. IsSuccess=false;
  49211. SampleResult.setSuccessful(false);
  49212. SampleResult.setStopThread(true);
  49213. }
  49214. vars.put("admin_user", adminUser);
  49215. </stringProp>
  49216. <stringProp name="BeanShellSampler.filename"/>
  49217. <stringProp name="BeanShellSampler.parameters"/>
  49218. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  49219. </BeanShellSampler>
  49220. <hashTree/>
  49221. </hashTree>
  49222. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  49223. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  49224. <collectionProp name="Arguments.arguments"/>
  49225. </elementProp>
  49226. <stringProp name="HTTPSampler.domain"/>
  49227. <stringProp name="HTTPSampler.port"/>
  49228. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  49229. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  49230. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  49231. <stringProp name="HTTPSampler.contentEncoding"/>
  49232. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  49233. <stringProp name="HTTPSampler.method">GET</stringProp>
  49234. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  49235. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  49236. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  49237. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  49238. <boolProp name="HTTPSampler.monitor">false</boolProp>
  49239. <stringProp name="HTTPSampler.embedded_url_re"/>
  49240. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  49241. <hashTree>
  49242. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  49243. <collectionProp name="Asserion.test_strings">
  49244. <stringProp name="-1397214398">Welcome</stringProp>
  49245. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  49246. </collectionProp>
  49247. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  49248. <boolProp name="Assertion.assume_success">false</boolProp>
  49249. <intProp name="Assertion.test_type">2</intProp>
  49250. </ResponseAssertion>
  49251. <hashTree/>
  49252. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  49253. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  49254. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  49255. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  49256. <stringProp name="RegexExtractor.template">$1$</stringProp>
  49257. <stringProp name="RegexExtractor.default"/>
  49258. <stringProp name="RegexExtractor.match_number">1</stringProp>
  49259. </RegexExtractor>
  49260. <hashTree/>
  49261. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  49262. <collectionProp name="Asserion.test_strings">
  49263. <stringProp name="2845929">^.+$</stringProp>
  49264. </collectionProp>
  49265. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  49266. <boolProp name="Assertion.assume_success">false</boolProp>
  49267. <intProp name="Assertion.test_type">1</intProp>
  49268. <stringProp name="Assertion.scope">variable</stringProp>
  49269. <stringProp name="Scope.variable">admin_form_key</stringProp>
  49270. </ResponseAssertion>
  49271. <hashTree/>
  49272. </hashTree>
  49273. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  49274. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  49275. <collectionProp name="Arguments.arguments">
  49276. <elementProp name="dummy" elementType="HTTPArgument">
  49277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49278. <stringProp name="Argument.value"/>
  49279. <stringProp name="Argument.metadata">=</stringProp>
  49280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49281. <stringProp name="Argument.name">dummy</stringProp>
  49282. </elementProp>
  49283. <elementProp name="form_key" elementType="HTTPArgument">
  49284. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49285. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  49286. <stringProp name="Argument.metadata">=</stringProp>
  49287. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49288. <stringProp name="Argument.name">form_key</stringProp>
  49289. </elementProp>
  49290. <elementProp name="login[password]" elementType="HTTPArgument">
  49291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49292. <stringProp name="Argument.value">${admin_password}</stringProp>
  49293. <stringProp name="Argument.metadata">=</stringProp>
  49294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49295. <stringProp name="Argument.name">login[password]</stringProp>
  49296. </elementProp>
  49297. <elementProp name="login[username]" elementType="HTTPArgument">
  49298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49299. <stringProp name="Argument.value">${admin_user}</stringProp>
  49300. <stringProp name="Argument.metadata">=</stringProp>
  49301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49302. <stringProp name="Argument.name">login[username]</stringProp>
  49303. </elementProp>
  49304. </collectionProp>
  49305. </elementProp>
  49306. <stringProp name="HTTPSampler.domain"/>
  49307. <stringProp name="HTTPSampler.port"/>
  49308. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  49309. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  49310. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  49311. <stringProp name="HTTPSampler.contentEncoding"/>
  49312. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  49313. <stringProp name="HTTPSampler.method">POST</stringProp>
  49314. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  49315. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  49316. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  49317. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  49318. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  49319. <boolProp name="HTTPSampler.monitor">false</boolProp>
  49320. <stringProp name="HTTPSampler.embedded_url_re"/>
  49321. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  49322. </HTTPSamplerProxy>
  49323. <hashTree>
  49324. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  49325. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  49326. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  49327. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  49328. <stringProp name="RegexExtractor.template">$1$</stringProp>
  49329. <stringProp name="RegexExtractor.default"/>
  49330. <stringProp name="RegexExtractor.match_number">1</stringProp>
  49331. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  49332. <hashTree/>
  49333. </hashTree>
  49334. </hashTree>
  49335. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  49336. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  49337. </GenericController>
  49338. <hashTree>
  49339. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Edit Product" enabled="true"/>
  49340. <hashTree>
  49341. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  49342. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx</stringProp>
  49343. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  49344. import java.util.HashMap;
  49345. import java.util.Random;
  49346. int relatedIndex;
  49347. try {
  49348. Random random = new Random();
  49349. if (${seedForRandom} &gt; 0) {
  49350. random.setSeed(${seedForRandom} + ${__threadNum});
  49351. }
  49352. simpleCount = props.get("simple_products_list_for_edit").size();
  49353. configCount = props.get("configurable_products_list_for_edit").size();
  49354. productCount = 0;
  49355. if (simpleCount &gt; configCount) {
  49356. productCount = configCount;
  49357. } else {
  49358. productCount = simpleCount;
  49359. }
  49360. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  49361. if (threadsNumber == 0) {
  49362. threadsNumber = 1;
  49363. }
  49364. //Current thread number starts from 0
  49365. currentThreadNum = ctx.getThreadNum();
  49366. String siterator = vars.get("threadIterator_" + currentThreadNum.toString());
  49367. iterator = 0;
  49368. if(siterator == null){
  49369. vars.put("threadIterator_" + currentThreadNum.toString() , "0");
  49370. } else {
  49371. iterator = Integer.parseInt(siterator);
  49372. iterator ++;
  49373. vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString());
  49374. }
  49375. //Number of products for one thread
  49376. productClusterLength = productCount / threadsNumber;
  49377. if (iterator &gt;= productClusterLength) {
  49378. vars.put("threadIterator_" + currentThreadNum.toString(), "0");
  49379. iterator = 0;
  49380. }
  49381. //Index of the current product from the cluster
  49382. i = productClusterLength * currentThreadNum + iterator;
  49383. //ids of simple and configurable products to edit
  49384. vars.put("simple_product_id", props.get("simple_products_list_for_edit").get(i).get("id"));
  49385. vars.put("configurable_product_id", props.get("configurable_products_list_for_edit").get(i).get("id"));
  49386. //id of related product
  49387. do {
  49388. relatedIndex = random.nextInt(props.get("simple_products_list_for_edit").size());
  49389. } while(i == relatedIndex);
  49390. vars.put("related_product_id", props.get("simple_products_list_for_edit").get(relatedIndex).get("id"));
  49391. } catch (Exception ex) {
  49392. log.info("Script execution failed", ex);
  49393. }</stringProp>
  49394. <stringProp name="BeanShellSampler.filename"/>
  49395. <stringProp name="BeanShellSampler.parameters"/>
  49396. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  49397. </BeanShellSampler>
  49398. <hashTree/>
  49399. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product" enabled="true">
  49400. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  49401. <collectionProp name="Arguments.arguments"/>
  49402. </elementProp>
  49403. <stringProp name="HTTPSampler.domain"/>
  49404. <stringProp name="HTTPSampler.port"/>
  49405. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  49406. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  49407. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  49408. <stringProp name="HTTPSampler.contentEncoding"/>
  49409. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/</stringProp>
  49410. <stringProp name="HTTPSampler.method">GET</stringProp>
  49411. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  49412. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  49413. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  49414. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  49415. <boolProp name="HTTPSampler.monitor">false</boolProp>
  49416. <stringProp name="HTTPSampler.embedded_url_re"/>
  49417. </HTTPSamplerProxy>
  49418. <hashTree>
  49419. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  49420. <collectionProp name="Asserion.test_strings">
  49421. <stringProp name="1355179215">Product</stringProp>
  49422. </collectionProp>
  49423. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  49424. <boolProp name="Assertion.assume_success">false</boolProp>
  49425. <intProp name="Assertion.test_type">16</intProp>
  49426. </ResponseAssertion>
  49427. <hashTree/>
  49428. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  49429. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  49430. <stringProp name="RegexExtractor.refname">simple_product_name</stringProp>
  49431. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  49432. <stringProp name="RegexExtractor.template">$1$</stringProp>
  49433. <stringProp name="RegexExtractor.default"/>
  49434. <stringProp name="RegexExtractor.match_number">1</stringProp>
  49435. </RegexExtractor>
  49436. <hashTree/>
  49437. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  49438. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  49439. <stringProp name="RegexExtractor.refname">simple_product_sku</stringProp>
  49440. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  49441. <stringProp name="RegexExtractor.template">$1$</stringProp>
  49442. <stringProp name="RegexExtractor.default"/>
  49443. <stringProp name="RegexExtractor.match_number">1</stringProp>
  49444. </RegexExtractor>
  49445. <hashTree/>
  49446. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  49447. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  49448. <stringProp name="RegexExtractor.refname">simple_product_category_id</stringProp>
  49449. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)".</stringProp>
  49450. <stringProp name="RegexExtractor.template">$1$</stringProp>
  49451. <stringProp name="RegexExtractor.default"/>
  49452. <stringProp name="RegexExtractor.match_number">1</stringProp>
  49453. </RegexExtractor>
  49454. <hashTree/>
  49455. </hashTree>
  49456. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set updated values" enabled="true">
  49457. <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
  49458. <stringProp name="BeanShellSampler.query">//Additional category to be added
  49459. import java.util.Random;
  49460. Random randomGenerator = new Random();
  49461. int newCategoryId;
  49462. if (${seedForRandom} &gt; 0) {
  49463. randomGenerator.setSeed(${seedForRandom} + ${__threadNum});
  49464. }
  49465. int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  49466. categoryList = props.get("admin_category_ids_list");
  49467. if (categoryList.size() &gt; 1) {
  49468. do {
  49469. int index = randomGenerator.nextInt(categoryList.size());
  49470. newCategoryId = Integer.parseInt(categoryList.get(index));
  49471. } while (categoryId == newCategoryId);
  49472. vars.put("category_additional", newCategoryId.toString());
  49473. }
  49474. //New price
  49475. vars.put("price_new", "9999");
  49476. //New special price
  49477. vars.put("special_price_new", "8888");
  49478. //New quantity
  49479. vars.put("quantity_new", "100600");
  49480. </stringProp>
  49481. <stringProp name="BeanShellSampler.filename"/>
  49482. <stringProp name="BeanShellSampler.parameters"/>
  49483. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  49484. </BeanShellSampler>
  49485. <hashTree/>
  49486. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Validate" enabled="true">
  49487. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  49488. <collectionProp name="Arguments.arguments">
  49489. <elementProp name="ajax" elementType="HTTPArgument">
  49490. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49491. <stringProp name="Argument.value">true</stringProp>
  49492. <stringProp name="Argument.metadata">=</stringProp>
  49493. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49494. <stringProp name="Argument.name">ajax</stringProp>
  49495. <stringProp name="Argument.desc">false</stringProp>
  49496. </elementProp>
  49497. <elementProp name="isAjax" elementType="HTTPArgument">
  49498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49499. <stringProp name="Argument.value">true</stringProp>
  49500. <stringProp name="Argument.metadata">=</stringProp>
  49501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49502. <stringProp name="Argument.name">isAjax</stringProp>
  49503. <stringProp name="Argument.desc">false</stringProp>
  49504. </elementProp>
  49505. <elementProp name="form_key" elementType="HTTPArgument">
  49506. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49507. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  49508. <stringProp name="Argument.metadata">=</stringProp>
  49509. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49510. <stringProp name="Argument.name">form_key</stringProp>
  49511. <stringProp name="Argument.desc">false</stringProp>
  49512. </elementProp>
  49513. <elementProp name="product[name]" elementType="HTTPArgument">
  49514. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49515. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  49516. <stringProp name="Argument.metadata">=</stringProp>
  49517. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49518. <stringProp name="Argument.name">product[name]</stringProp>
  49519. <stringProp name="Argument.desc">false</stringProp>
  49520. </elementProp>
  49521. <elementProp name="product[sku]" elementType="HTTPArgument">
  49522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49523. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  49524. <stringProp name="Argument.metadata">=</stringProp>
  49525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49526. <stringProp name="Argument.name">product[sku]</stringProp>
  49527. <stringProp name="Argument.desc">false</stringProp>
  49528. </elementProp>
  49529. <elementProp name="product[price]" elementType="HTTPArgument">
  49530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49531. <stringProp name="Argument.value">${price_new}</stringProp>
  49532. <stringProp name="Argument.metadata">=</stringProp>
  49533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49534. <stringProp name="Argument.name">product[price]</stringProp>
  49535. <stringProp name="Argument.desc">false</stringProp>
  49536. </elementProp>
  49537. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  49538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49539. <stringProp name="Argument.value">2</stringProp>
  49540. <stringProp name="Argument.metadata">=</stringProp>
  49541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49542. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  49543. <stringProp name="Argument.desc">false</stringProp>
  49544. </elementProp>
  49545. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  49546. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49547. <stringProp name="Argument.value">${quantity_new}</stringProp>
  49548. <stringProp name="Argument.metadata">=</stringProp>
  49549. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49550. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  49551. <stringProp name="Argument.desc">false</stringProp>
  49552. </elementProp>
  49553. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  49554. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49555. <stringProp name="Argument.value">1</stringProp>
  49556. <stringProp name="Argument.metadata">=</stringProp>
  49557. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49558. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  49559. <stringProp name="Argument.desc">false</stringProp>
  49560. </elementProp>
  49561. <elementProp name="product[weight]" elementType="HTTPArgument">
  49562. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49563. <stringProp name="Argument.value">1.0000</stringProp>
  49564. <stringProp name="Argument.metadata">=</stringProp>
  49565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49566. <stringProp name="Argument.name">product[weight]</stringProp>
  49567. <stringProp name="Argument.desc">false</stringProp>
  49568. </elementProp>
  49569. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  49570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49571. <stringProp name="Argument.value">1</stringProp>
  49572. <stringProp name="Argument.metadata">=</stringProp>
  49573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49574. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  49575. <stringProp name="Argument.desc">false</stringProp>
  49576. </elementProp>
  49577. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  49578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49579. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  49580. <stringProp name="Argument.metadata">=</stringProp>
  49581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49582. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  49583. <stringProp name="Argument.desc">false</stringProp>
  49584. </elementProp>
  49585. <elementProp name="product[description]" elementType="HTTPArgument">
  49586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49587. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  49588. <stringProp name="Argument.metadata">=</stringProp>
  49589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49590. <stringProp name="Argument.name">product[description]</stringProp>
  49591. <stringProp name="Argument.desc">false</stringProp>
  49592. </elementProp>
  49593. <elementProp name="product[status]" elementType="HTTPArgument">
  49594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49595. <stringProp name="Argument.value">1</stringProp>
  49596. <stringProp name="Argument.metadata">=</stringProp>
  49597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49598. <stringProp name="Argument.name">product[status]</stringProp>
  49599. <stringProp name="Argument.desc">false</stringProp>
  49600. </elementProp>
  49601. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  49602. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49603. <stringProp name="Argument.value"/>
  49604. <stringProp name="Argument.metadata">=</stringProp>
  49605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49606. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  49607. <stringProp name="Argument.desc">false</stringProp>
  49608. </elementProp>
  49609. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  49610. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49611. <stringProp name="Argument.value">1</stringProp>
  49612. <stringProp name="Argument.metadata">=</stringProp>
  49613. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49614. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  49615. <stringProp name="Argument.desc">false</stringProp>
  49616. </elementProp>
  49617. <elementProp name="product[image]" elementType="HTTPArgument">
  49618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49619. <stringProp name="Argument.value"/>
  49620. <stringProp name="Argument.metadata">=</stringProp>
  49621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49622. <stringProp name="Argument.name">product[image]</stringProp>
  49623. <stringProp name="Argument.desc">false</stringProp>
  49624. </elementProp>
  49625. <elementProp name="product[small_image]" elementType="HTTPArgument">
  49626. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49627. <stringProp name="Argument.value"/>
  49628. <stringProp name="Argument.metadata">=</stringProp>
  49629. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49630. <stringProp name="Argument.name">product[small_image]</stringProp>
  49631. <stringProp name="Argument.desc">false</stringProp>
  49632. </elementProp>
  49633. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  49634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49635. <stringProp name="Argument.value"/>
  49636. <stringProp name="Argument.metadata">=</stringProp>
  49637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49638. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  49639. <stringProp name="Argument.desc">false</stringProp>
  49640. </elementProp>
  49641. <elementProp name="product[url_key]" elementType="HTTPArgument">
  49642. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49643. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  49644. <stringProp name="Argument.metadata">=</stringProp>
  49645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49646. <stringProp name="Argument.name">product[url_key]</stringProp>
  49647. <stringProp name="Argument.desc">false</stringProp>
  49648. </elementProp>
  49649. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  49650. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49651. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  49652. <stringProp name="Argument.metadata">=</stringProp>
  49653. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49654. <stringProp name="Argument.name">product[meta_title]</stringProp>
  49655. <stringProp name="Argument.desc">false</stringProp>
  49656. </elementProp>
  49657. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  49658. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49659. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  49660. <stringProp name="Argument.metadata">=</stringProp>
  49661. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49662. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  49663. <stringProp name="Argument.desc">false</stringProp>
  49664. </elementProp>
  49665. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  49666. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49667. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  49668. <stringProp name="Argument.metadata">=</stringProp>
  49669. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49670. <stringProp name="Argument.name">product[meta_description]</stringProp>
  49671. <stringProp name="Argument.desc">false</stringProp>
  49672. </elementProp>
  49673. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  49674. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49675. <stringProp name="Argument.value">1</stringProp>
  49676. <stringProp name="Argument.metadata">=</stringProp>
  49677. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49678. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  49679. <stringProp name="Argument.desc">false</stringProp>
  49680. </elementProp>
  49681. <elementProp name="product[special_price]" elementType="HTTPArgument">
  49682. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49683. <stringProp name="Argument.value">${special_price_new}</stringProp>
  49684. <stringProp name="Argument.metadata">=</stringProp>
  49685. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49686. <stringProp name="Argument.name">product[special_price]</stringProp>
  49687. <stringProp name="Argument.desc">false</stringProp>
  49688. </elementProp>
  49689. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  49690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49691. <stringProp name="Argument.value"/>
  49692. <stringProp name="Argument.metadata">=</stringProp>
  49693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49694. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  49695. <stringProp name="Argument.desc">false</stringProp>
  49696. </elementProp>
  49697. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  49698. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49699. <stringProp name="Argument.value"/>
  49700. <stringProp name="Argument.metadata">=</stringProp>
  49701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49702. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  49703. <stringProp name="Argument.desc">false</stringProp>
  49704. </elementProp>
  49705. <elementProp name="product[cost]" elementType="HTTPArgument">
  49706. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49707. <stringProp name="Argument.value"/>
  49708. <stringProp name="Argument.metadata">=</stringProp>
  49709. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49710. <stringProp name="Argument.name">product[cost]</stringProp>
  49711. <stringProp name="Argument.desc">false</stringProp>
  49712. </elementProp>
  49713. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  49714. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49715. <stringProp name="Argument.value">1</stringProp>
  49716. <stringProp name="Argument.metadata">=</stringProp>
  49717. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49718. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  49719. <stringProp name="Argument.desc">false</stringProp>
  49720. </elementProp>
  49721. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  49722. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49723. <stringProp name="Argument.value">${quantity_new}</stringProp>
  49724. <stringProp name="Argument.metadata">=</stringProp>
  49725. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49726. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  49727. <stringProp name="Argument.desc">false</stringProp>
  49728. </elementProp>
  49729. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  49730. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49731. <stringProp name="Argument.value">${quantity_new}</stringProp>
  49732. <stringProp name="Argument.metadata">=</stringProp>
  49733. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49734. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  49735. <stringProp name="Argument.desc">false</stringProp>
  49736. </elementProp>
  49737. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  49738. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49739. <stringProp name="Argument.value">0</stringProp>
  49740. <stringProp name="Argument.metadata">=</stringProp>
  49741. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49742. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  49743. <stringProp name="Argument.desc">false</stringProp>
  49744. </elementProp>
  49745. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  49746. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49747. <stringProp name="Argument.value">1</stringProp>
  49748. <stringProp name="Argument.metadata">=</stringProp>
  49749. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49750. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  49751. <stringProp name="Argument.desc">false</stringProp>
  49752. </elementProp>
  49753. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  49754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49755. <stringProp name="Argument.value">1</stringProp>
  49756. <stringProp name="Argument.metadata">=</stringProp>
  49757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49758. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  49759. <stringProp name="Argument.desc">false</stringProp>
  49760. </elementProp>
  49761. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  49762. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49763. <stringProp name="Argument.value">1</stringProp>
  49764. <stringProp name="Argument.metadata">=</stringProp>
  49765. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49766. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  49767. <stringProp name="Argument.desc">false</stringProp>
  49768. </elementProp>
  49769. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  49770. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49771. <stringProp name="Argument.value">10000</stringProp>
  49772. <stringProp name="Argument.metadata">=</stringProp>
  49773. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49774. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  49775. <stringProp name="Argument.desc">false</stringProp>
  49776. </elementProp>
  49777. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  49778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49779. <stringProp name="Argument.value">1</stringProp>
  49780. <stringProp name="Argument.metadata">=</stringProp>
  49781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49782. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  49783. <stringProp name="Argument.desc">false</stringProp>
  49784. </elementProp>
  49785. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  49786. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49787. <stringProp name="Argument.value">0</stringProp>
  49788. <stringProp name="Argument.metadata">=</stringProp>
  49789. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49790. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  49791. <stringProp name="Argument.desc">false</stringProp>
  49792. </elementProp>
  49793. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  49794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49795. <stringProp name="Argument.value">0</stringProp>
  49796. <stringProp name="Argument.metadata">=</stringProp>
  49797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49798. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  49799. <stringProp name="Argument.desc">false</stringProp>
  49800. </elementProp>
  49801. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  49802. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49803. <stringProp name="Argument.value">0</stringProp>
  49804. <stringProp name="Argument.metadata">=</stringProp>
  49805. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49806. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  49807. <stringProp name="Argument.desc">false</stringProp>
  49808. </elementProp>
  49809. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  49810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49811. <stringProp name="Argument.value">1</stringProp>
  49812. <stringProp name="Argument.metadata">=</stringProp>
  49813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49814. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  49815. <stringProp name="Argument.desc">false</stringProp>
  49816. </elementProp>
  49817. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  49818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49819. <stringProp name="Argument.value">1</stringProp>
  49820. <stringProp name="Argument.metadata">=</stringProp>
  49821. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49822. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  49823. <stringProp name="Argument.desc">false</stringProp>
  49824. </elementProp>
  49825. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  49826. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49827. <stringProp name="Argument.value">1</stringProp>
  49828. <stringProp name="Argument.metadata">=</stringProp>
  49829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49830. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  49831. <stringProp name="Argument.desc">false</stringProp>
  49832. </elementProp>
  49833. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  49834. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49835. <stringProp name="Argument.value">0</stringProp>
  49836. <stringProp name="Argument.metadata">=</stringProp>
  49837. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49838. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  49839. <stringProp name="Argument.desc">false</stringProp>
  49840. </elementProp>
  49841. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  49842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49843. <stringProp name="Argument.value">0</stringProp>
  49844. <stringProp name="Argument.metadata">=</stringProp>
  49845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49846. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  49847. <stringProp name="Argument.desc">false</stringProp>
  49848. </elementProp>
  49849. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  49850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49851. <stringProp name="Argument.value">1</stringProp>
  49852. <stringProp name="Argument.metadata">=</stringProp>
  49853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49854. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  49855. <stringProp name="Argument.desc">false</stringProp>
  49856. </elementProp>
  49857. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  49858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49859. <stringProp name="Argument.value">1</stringProp>
  49860. <stringProp name="Argument.metadata">=</stringProp>
  49861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49862. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  49863. <stringProp name="Argument.desc">false</stringProp>
  49864. </elementProp>
  49865. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  49866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49867. <stringProp name="Argument.value"/>
  49868. <stringProp name="Argument.metadata">=</stringProp>
  49869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49870. <stringProp name="Argument.name">product[custom_design]</stringProp>
  49871. <stringProp name="Argument.desc">false</stringProp>
  49872. </elementProp>
  49873. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  49874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49875. <stringProp name="Argument.value"/>
  49876. <stringProp name="Argument.metadata">=</stringProp>
  49877. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49878. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  49879. <stringProp name="Argument.desc">false</stringProp>
  49880. </elementProp>
  49881. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  49882. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49883. <stringProp name="Argument.value"/>
  49884. <stringProp name="Argument.metadata">=</stringProp>
  49885. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49886. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  49887. <stringProp name="Argument.desc">false</stringProp>
  49888. </elementProp>
  49889. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  49890. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49891. <stringProp name="Argument.value"/>
  49892. <stringProp name="Argument.metadata">=</stringProp>
  49893. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49894. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  49895. <stringProp name="Argument.desc">false</stringProp>
  49896. </elementProp>
  49897. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  49898. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49899. <stringProp name="Argument.value"/>
  49900. <stringProp name="Argument.metadata">=</stringProp>
  49901. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49902. <stringProp name="Argument.name">product[page_layout]</stringProp>
  49903. <stringProp name="Argument.desc">false</stringProp>
  49904. </elementProp>
  49905. <elementProp name="product[options_container]" elementType="HTTPArgument">
  49906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49907. <stringProp name="Argument.value">container2</stringProp>
  49908. <stringProp name="Argument.metadata">=</stringProp>
  49909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49910. <stringProp name="Argument.name">product[options_container]</stringProp>
  49911. <stringProp name="Argument.desc">false</stringProp>
  49912. </elementProp>
  49913. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  49914. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49915. <stringProp name="Argument.value"/>
  49916. <stringProp name="Argument.metadata">=</stringProp>
  49917. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49918. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  49919. <stringProp name="Argument.desc">false</stringProp>
  49920. </elementProp>
  49921. </collectionProp>
  49922. </elementProp>
  49923. <stringProp name="HTTPSampler.domain"/>
  49924. <stringProp name="HTTPSampler.port"/>
  49925. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  49926. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  49927. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  49928. <stringProp name="HTTPSampler.contentEncoding"/>
  49929. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true</stringProp>
  49930. <stringProp name="HTTPSampler.method">POST</stringProp>
  49931. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  49932. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  49933. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  49934. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  49935. <boolProp name="HTTPSampler.monitor">false</boolProp>
  49936. <stringProp name="HTTPSampler.embedded_url_re"/>
  49937. </HTTPSamplerProxy>
  49938. <hashTree>
  49939. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  49940. <collectionProp name="Asserion.test_strings">
  49941. <stringProp name="1853918323">{"error":false}</stringProp>
  49942. </collectionProp>
  49943. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  49944. <boolProp name="Assertion.assume_success">false</boolProp>
  49945. <intProp name="Assertion.test_type">2</intProp>
  49946. </ResponseAssertion>
  49947. <hashTree/>
  49948. </hashTree>
  49949. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Save" enabled="true">
  49950. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  49951. <collectionProp name="Arguments.arguments">
  49952. <elementProp name="ajax" elementType="HTTPArgument">
  49953. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49954. <stringProp name="Argument.value">true</stringProp>
  49955. <stringProp name="Argument.metadata">=</stringProp>
  49956. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49957. <stringProp name="Argument.name">ajax</stringProp>
  49958. <stringProp name="Argument.desc">false</stringProp>
  49959. </elementProp>
  49960. <elementProp name="isAjax" elementType="HTTPArgument">
  49961. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49962. <stringProp name="Argument.value">true</stringProp>
  49963. <stringProp name="Argument.metadata">=</stringProp>
  49964. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49965. <stringProp name="Argument.name">isAjax</stringProp>
  49966. <stringProp name="Argument.desc">false</stringProp>
  49967. </elementProp>
  49968. <elementProp name="form_key" elementType="HTTPArgument">
  49969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49970. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  49971. <stringProp name="Argument.metadata">=</stringProp>
  49972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49973. <stringProp name="Argument.name">form_key</stringProp>
  49974. <stringProp name="Argument.desc">false</stringProp>
  49975. </elementProp>
  49976. <elementProp name="product[name]" elementType="HTTPArgument">
  49977. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49978. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  49979. <stringProp name="Argument.metadata">=</stringProp>
  49980. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49981. <stringProp name="Argument.name">product[name]</stringProp>
  49982. <stringProp name="Argument.desc">false</stringProp>
  49983. </elementProp>
  49984. <elementProp name="product[sku]" elementType="HTTPArgument">
  49985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49986. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  49987. <stringProp name="Argument.metadata">=</stringProp>
  49988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49989. <stringProp name="Argument.name">product[sku]</stringProp>
  49990. <stringProp name="Argument.desc">false</stringProp>
  49991. </elementProp>
  49992. <elementProp name="product[price]" elementType="HTTPArgument">
  49993. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  49994. <stringProp name="Argument.value">${price_new}</stringProp>
  49995. <stringProp name="Argument.metadata">=</stringProp>
  49996. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  49997. <stringProp name="Argument.name">product[price]</stringProp>
  49998. <stringProp name="Argument.desc">false</stringProp>
  49999. </elementProp>
  50000. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  50001. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50002. <stringProp name="Argument.value">2</stringProp>
  50003. <stringProp name="Argument.metadata">=</stringProp>
  50004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50005. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  50006. <stringProp name="Argument.desc">false</stringProp>
  50007. </elementProp>
  50008. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  50009. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50010. <stringProp name="Argument.value">${quantity_new}</stringProp>
  50011. <stringProp name="Argument.metadata">=</stringProp>
  50012. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50013. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  50014. <stringProp name="Argument.desc">false</stringProp>
  50015. </elementProp>
  50016. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  50017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50018. <stringProp name="Argument.value">1</stringProp>
  50019. <stringProp name="Argument.metadata">=</stringProp>
  50020. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50021. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  50022. <stringProp name="Argument.desc">false</stringProp>
  50023. </elementProp>
  50024. <elementProp name="product[weight]" elementType="HTTPArgument">
  50025. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50026. <stringProp name="Argument.value">1.0000</stringProp>
  50027. <stringProp name="Argument.metadata">=</stringProp>
  50028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50029. <stringProp name="Argument.name">product[weight]</stringProp>
  50030. <stringProp name="Argument.desc">false</stringProp>
  50031. </elementProp>
  50032. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  50033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50034. <stringProp name="Argument.value">1</stringProp>
  50035. <stringProp name="Argument.metadata">=</stringProp>
  50036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50037. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  50038. <stringProp name="Argument.desc">false</stringProp>
  50039. </elementProp>
  50040. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  50041. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50042. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  50043. <stringProp name="Argument.metadata">=</stringProp>
  50044. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50045. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  50046. <stringProp name="Argument.desc">false</stringProp>
  50047. </elementProp>
  50048. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  50049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50050. <stringProp name="Argument.value">${category_additional}</stringProp>
  50051. <stringProp name="Argument.metadata">=</stringProp>
  50052. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50053. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  50054. </elementProp>
  50055. <elementProp name="product[description]" elementType="HTTPArgument">
  50056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50057. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  50058. <stringProp name="Argument.metadata">=</stringProp>
  50059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50060. <stringProp name="Argument.name">product[description]</stringProp>
  50061. <stringProp name="Argument.desc">false</stringProp>
  50062. </elementProp>
  50063. <elementProp name="product[status]" elementType="HTTPArgument">
  50064. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50065. <stringProp name="Argument.value">1</stringProp>
  50066. <stringProp name="Argument.metadata">=</stringProp>
  50067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50068. <stringProp name="Argument.name">product[status]</stringProp>
  50069. <stringProp name="Argument.desc">false</stringProp>
  50070. </elementProp>
  50071. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  50072. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50073. <stringProp name="Argument.value"/>
  50074. <stringProp name="Argument.metadata">=</stringProp>
  50075. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50076. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  50077. <stringProp name="Argument.desc">false</stringProp>
  50078. </elementProp>
  50079. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  50080. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50081. <stringProp name="Argument.value">1</stringProp>
  50082. <stringProp name="Argument.metadata">=</stringProp>
  50083. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50084. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  50085. <stringProp name="Argument.desc">false</stringProp>
  50086. </elementProp>
  50087. <elementProp name="product[image]" elementType="HTTPArgument">
  50088. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50089. <stringProp name="Argument.value"/>
  50090. <stringProp name="Argument.metadata">=</stringProp>
  50091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50092. <stringProp name="Argument.name">product[image]</stringProp>
  50093. <stringProp name="Argument.desc">false</stringProp>
  50094. </elementProp>
  50095. <elementProp name="product[small_image]" elementType="HTTPArgument">
  50096. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50097. <stringProp name="Argument.value"/>
  50098. <stringProp name="Argument.metadata">=</stringProp>
  50099. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50100. <stringProp name="Argument.name">product[small_image]</stringProp>
  50101. <stringProp name="Argument.desc">false</stringProp>
  50102. </elementProp>
  50103. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  50104. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50105. <stringProp name="Argument.value"/>
  50106. <stringProp name="Argument.metadata">=</stringProp>
  50107. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50108. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  50109. <stringProp name="Argument.desc">false</stringProp>
  50110. </elementProp>
  50111. <elementProp name="product[url_key]" elementType="HTTPArgument">
  50112. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50113. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  50114. <stringProp name="Argument.metadata">=</stringProp>
  50115. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50116. <stringProp name="Argument.name">product[url_key]</stringProp>
  50117. <stringProp name="Argument.desc">false</stringProp>
  50118. </elementProp>
  50119. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  50120. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50121. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  50122. <stringProp name="Argument.metadata">=</stringProp>
  50123. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50124. <stringProp name="Argument.name">product[meta_title]</stringProp>
  50125. <stringProp name="Argument.desc">false</stringProp>
  50126. </elementProp>
  50127. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  50128. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50129. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  50130. <stringProp name="Argument.metadata">=</stringProp>
  50131. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50132. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  50133. <stringProp name="Argument.desc">false</stringProp>
  50134. </elementProp>
  50135. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  50136. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50137. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  50138. <stringProp name="Argument.metadata">=</stringProp>
  50139. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50140. <stringProp name="Argument.name">product[meta_description]</stringProp>
  50141. <stringProp name="Argument.desc">false</stringProp>
  50142. </elementProp>
  50143. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  50144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50145. <stringProp name="Argument.value">1</stringProp>
  50146. <stringProp name="Argument.metadata">=</stringProp>
  50147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50148. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  50149. <stringProp name="Argument.desc">false</stringProp>
  50150. </elementProp>
  50151. <elementProp name="product[special_price]" elementType="HTTPArgument">
  50152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50153. <stringProp name="Argument.value">${special_price_new}</stringProp>
  50154. <stringProp name="Argument.metadata">=</stringProp>
  50155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50156. <stringProp name="Argument.name">product[special_price]</stringProp>
  50157. <stringProp name="Argument.desc">false</stringProp>
  50158. </elementProp>
  50159. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  50160. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50161. <stringProp name="Argument.value"/>
  50162. <stringProp name="Argument.metadata">=</stringProp>
  50163. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50164. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  50165. <stringProp name="Argument.desc">false</stringProp>
  50166. </elementProp>
  50167. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  50168. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50169. <stringProp name="Argument.value"/>
  50170. <stringProp name="Argument.metadata">=</stringProp>
  50171. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50172. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  50173. <stringProp name="Argument.desc">false</stringProp>
  50174. </elementProp>
  50175. <elementProp name="product[cost]" elementType="HTTPArgument">
  50176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50177. <stringProp name="Argument.value"/>
  50178. <stringProp name="Argument.metadata">=</stringProp>
  50179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50180. <stringProp name="Argument.name">product[cost]</stringProp>
  50181. <stringProp name="Argument.desc">false</stringProp>
  50182. </elementProp>
  50183. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  50184. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50185. <stringProp name="Argument.value">1</stringProp>
  50186. <stringProp name="Argument.metadata">=</stringProp>
  50187. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50188. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  50189. <stringProp name="Argument.desc">false</stringProp>
  50190. </elementProp>
  50191. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  50192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50193. <stringProp name="Argument.value">${quantity_new}</stringProp>
  50194. <stringProp name="Argument.metadata">=</stringProp>
  50195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50196. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  50197. <stringProp name="Argument.desc">false</stringProp>
  50198. </elementProp>
  50199. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  50200. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50201. <stringProp name="Argument.value">${quantity_new}</stringProp>
  50202. <stringProp name="Argument.metadata">=</stringProp>
  50203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50204. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  50205. <stringProp name="Argument.desc">false</stringProp>
  50206. </elementProp>
  50207. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  50208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50209. <stringProp name="Argument.value">0</stringProp>
  50210. <stringProp name="Argument.metadata">=</stringProp>
  50211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50212. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  50213. <stringProp name="Argument.desc">false</stringProp>
  50214. </elementProp>
  50215. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  50216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50217. <stringProp name="Argument.value">1</stringProp>
  50218. <stringProp name="Argument.metadata">=</stringProp>
  50219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50220. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  50221. <stringProp name="Argument.desc">false</stringProp>
  50222. </elementProp>
  50223. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  50224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50225. <stringProp name="Argument.value">1</stringProp>
  50226. <stringProp name="Argument.metadata">=</stringProp>
  50227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50228. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  50229. <stringProp name="Argument.desc">false</stringProp>
  50230. </elementProp>
  50231. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  50232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50233. <stringProp name="Argument.value">1</stringProp>
  50234. <stringProp name="Argument.metadata">=</stringProp>
  50235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50236. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  50237. <stringProp name="Argument.desc">false</stringProp>
  50238. </elementProp>
  50239. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  50240. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50241. <stringProp name="Argument.value">10000</stringProp>
  50242. <stringProp name="Argument.metadata">=</stringProp>
  50243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50244. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  50245. <stringProp name="Argument.desc">false</stringProp>
  50246. </elementProp>
  50247. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  50248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50249. <stringProp name="Argument.value">1</stringProp>
  50250. <stringProp name="Argument.metadata">=</stringProp>
  50251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50252. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  50253. <stringProp name="Argument.desc">false</stringProp>
  50254. </elementProp>
  50255. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  50256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50257. <stringProp name="Argument.value">0</stringProp>
  50258. <stringProp name="Argument.metadata">=</stringProp>
  50259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50260. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  50261. <stringProp name="Argument.desc">false</stringProp>
  50262. </elementProp>
  50263. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  50264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50265. <stringProp name="Argument.value">0</stringProp>
  50266. <stringProp name="Argument.metadata">=</stringProp>
  50267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50268. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  50269. <stringProp name="Argument.desc">false</stringProp>
  50270. </elementProp>
  50271. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  50272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50273. <stringProp name="Argument.value">0</stringProp>
  50274. <stringProp name="Argument.metadata">=</stringProp>
  50275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50276. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  50277. <stringProp name="Argument.desc">false</stringProp>
  50278. </elementProp>
  50279. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  50280. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50281. <stringProp name="Argument.value">1</stringProp>
  50282. <stringProp name="Argument.metadata">=</stringProp>
  50283. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50284. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  50285. <stringProp name="Argument.desc">false</stringProp>
  50286. </elementProp>
  50287. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  50288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50289. <stringProp name="Argument.value">1</stringProp>
  50290. <stringProp name="Argument.metadata">=</stringProp>
  50291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50292. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  50293. <stringProp name="Argument.desc">false</stringProp>
  50294. </elementProp>
  50295. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  50296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50297. <stringProp name="Argument.value">1</stringProp>
  50298. <stringProp name="Argument.metadata">=</stringProp>
  50299. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50300. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  50301. <stringProp name="Argument.desc">false</stringProp>
  50302. </elementProp>
  50303. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  50304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50305. <stringProp name="Argument.value">0</stringProp>
  50306. <stringProp name="Argument.metadata">=</stringProp>
  50307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50308. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  50309. <stringProp name="Argument.desc">false</stringProp>
  50310. </elementProp>
  50311. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  50312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50313. <stringProp name="Argument.value">0</stringProp>
  50314. <stringProp name="Argument.metadata">=</stringProp>
  50315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50316. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  50317. <stringProp name="Argument.desc">false</stringProp>
  50318. </elementProp>
  50319. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  50320. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50321. <stringProp name="Argument.value">1</stringProp>
  50322. <stringProp name="Argument.metadata">=</stringProp>
  50323. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50324. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  50325. <stringProp name="Argument.desc">false</stringProp>
  50326. </elementProp>
  50327. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  50328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50329. <stringProp name="Argument.value">1</stringProp>
  50330. <stringProp name="Argument.metadata">=</stringProp>
  50331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50332. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  50333. <stringProp name="Argument.desc">false</stringProp>
  50334. </elementProp>
  50335. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  50336. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50337. <stringProp name="Argument.value"/>
  50338. <stringProp name="Argument.metadata">=</stringProp>
  50339. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50340. <stringProp name="Argument.name">product[custom_design]</stringProp>
  50341. <stringProp name="Argument.desc">false</stringProp>
  50342. </elementProp>
  50343. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  50344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50345. <stringProp name="Argument.value"/>
  50346. <stringProp name="Argument.metadata">=</stringProp>
  50347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50348. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  50349. <stringProp name="Argument.desc">false</stringProp>
  50350. </elementProp>
  50351. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  50352. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50353. <stringProp name="Argument.value"/>
  50354. <stringProp name="Argument.metadata">=</stringProp>
  50355. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50356. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  50357. <stringProp name="Argument.desc">false</stringProp>
  50358. </elementProp>
  50359. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  50360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50361. <stringProp name="Argument.value"/>
  50362. <stringProp name="Argument.metadata">=</stringProp>
  50363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50364. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  50365. <stringProp name="Argument.desc">false</stringProp>
  50366. </elementProp>
  50367. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  50368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50369. <stringProp name="Argument.value"/>
  50370. <stringProp name="Argument.metadata">=</stringProp>
  50371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50372. <stringProp name="Argument.name">product[page_layout]</stringProp>
  50373. <stringProp name="Argument.desc">false</stringProp>
  50374. </elementProp>
  50375. <elementProp name="product[options_container]" elementType="HTTPArgument">
  50376. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50377. <stringProp name="Argument.value">container2</stringProp>
  50378. <stringProp name="Argument.metadata">=</stringProp>
  50379. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50380. <stringProp name="Argument.name">product[options_container]</stringProp>
  50381. <stringProp name="Argument.desc">false</stringProp>
  50382. </elementProp>
  50383. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  50384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50385. <stringProp name="Argument.value"/>
  50386. <stringProp name="Argument.metadata">=</stringProp>
  50387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50388. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  50389. <stringProp name="Argument.desc">false</stringProp>
  50390. </elementProp>
  50391. </collectionProp>
  50392. </elementProp>
  50393. <stringProp name="HTTPSampler.domain"/>
  50394. <stringProp name="HTTPSampler.port"/>
  50395. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  50396. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  50397. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  50398. <stringProp name="HTTPSampler.contentEncoding"/>
  50399. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/</stringProp>
  50400. <stringProp name="HTTPSampler.method">POST</stringProp>
  50401. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  50402. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  50403. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  50404. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  50405. <boolProp name="HTTPSampler.monitor">false</boolProp>
  50406. <stringProp name="HTTPSampler.embedded_url_re"/>
  50407. </HTTPSamplerProxy>
  50408. <hashTree>
  50409. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  50410. <collectionProp name="Asserion.test_strings">
  50411. <stringProp name="-583471546">You saved the product</stringProp>
  50412. </collectionProp>
  50413. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  50414. <boolProp name="Assertion.assume_success">false</boolProp>
  50415. <intProp name="Assertion.test_type">2</intProp>
  50416. </ResponseAssertion>
  50417. <hashTree/>
  50418. </hashTree>
  50419. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product" enabled="true">
  50420. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  50421. <collectionProp name="Arguments.arguments"/>
  50422. </elementProp>
  50423. <stringProp name="HTTPSampler.domain"/>
  50424. <stringProp name="HTTPSampler.port"/>
  50425. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  50426. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  50427. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  50428. <stringProp name="HTTPSampler.contentEncoding"/>
  50429. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/</stringProp>
  50430. <stringProp name="HTTPSampler.method">GET</stringProp>
  50431. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  50432. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  50433. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  50434. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  50435. <boolProp name="HTTPSampler.monitor">false</boolProp>
  50436. <stringProp name="HTTPSampler.embedded_url_re"/>
  50437. </HTTPSamplerProxy>
  50438. <hashTree>
  50439. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  50440. <collectionProp name="Asserion.test_strings">
  50441. <stringProp name="1355179215">Product</stringProp>
  50442. </collectionProp>
  50443. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  50444. <boolProp name="Assertion.assume_success">false</boolProp>
  50445. <intProp name="Assertion.test_type">16</intProp>
  50446. </ResponseAssertion>
  50447. <hashTree/>
  50448. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  50449. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50450. <stringProp name="RegexExtractor.refname">configurable_product_name</stringProp>
  50451. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  50452. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50453. <stringProp name="RegexExtractor.default"/>
  50454. <stringProp name="RegexExtractor.match_number">1</stringProp>
  50455. </RegexExtractor>
  50456. <hashTree/>
  50457. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  50458. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50459. <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
  50460. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  50461. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50462. <stringProp name="RegexExtractor.default"/>
  50463. <stringProp name="RegexExtractor.match_number">1</stringProp>
  50464. </RegexExtractor>
  50465. <hashTree/>
  50466. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  50467. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50468. <stringProp name="RegexExtractor.refname">configurable_product_category_id</stringProp>
  50469. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)"</stringProp>
  50470. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50471. <stringProp name="RegexExtractor.default"/>
  50472. <stringProp name="RegexExtractor.match_number">1</stringProp>
  50473. </RegexExtractor>
  50474. <hashTree/>
  50475. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable attribute id" enabled="true">
  50476. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50477. <stringProp name="RegexExtractor.refname">configurable_attribute_id</stringProp>
  50478. <stringProp name="RegexExtractor.regex">,"configurable_variation":"([^'"]+)",</stringProp>
  50479. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50480. <stringProp name="RegexExtractor.default"/>
  50481. <stringProp name="RegexExtractor.match_number">1</stringProp>
  50482. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  50483. </RegexExtractor>
  50484. <hashTree/>
  50485. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable matrix" enabled="true">
  50486. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50487. <stringProp name="RegexExtractor.refname">configurable_matrix</stringProp>
  50488. <stringProp name="RegexExtractor.regex">"configurable-matrix":(\[.*?\])</stringProp>
  50489. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50490. <stringProp name="RegexExtractor.default"/>
  50491. <stringProp name="RegexExtractor.match_number">1</stringProp>
  50492. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  50493. </RegexExtractor>
  50494. <hashTree/>
  50495. <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 associated products ids" enabled="true">
  50496. <stringProp name="VAR">associated_products_ids</stringProp>
  50497. <stringProp name="JSONPATH">$.[*].id</stringProp>
  50498. <stringProp name="DEFAULT"/>
  50499. <stringProp name="VARIABLE">configurable_matrix</stringProp>
  50500. <stringProp name="SUBJECT">VAR</stringProp>
  50501. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  50502. <hashTree/>
  50503. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable product json" enabled="true">
  50504. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50505. <stringProp name="RegexExtractor.refname">configurable_product_data</stringProp>
  50506. <stringProp name="RegexExtractor.regex">(\{"product":.*?configurable_attributes_data.*?\})\s*&lt;</stringProp>
  50507. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50508. <stringProp name="RegexExtractor.default"/>
  50509. <stringProp name="RegexExtractor.match_number">1</stringProp>
  50510. </RegexExtractor>
  50511. <hashTree/>
  50512. <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 configurable attributes data" enabled="true">
  50513. <stringProp name="VAR">configurable_attributes_data</stringProp>
  50514. <stringProp name="JSONPATH">$.product.configurable_attributes_data</stringProp>
  50515. <stringProp name="DEFAULT"/>
  50516. <stringProp name="VARIABLE">configurable_product_data</stringProp>
  50517. <stringProp name="SUBJECT">VAR</stringProp>
  50518. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  50519. <hashTree/>
  50520. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute ids" enabled="true">
  50521. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50522. <stringProp name="RegexExtractor.refname">configurable_attribute_ids</stringProp>
  50523. <stringProp name="RegexExtractor.regex">"attribute_id":"(\d+)"</stringProp>
  50524. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50525. <stringProp name="RegexExtractor.default"/>
  50526. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  50527. <stringProp name="Sample.scope">variable</stringProp>
  50528. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  50529. </RegexExtractor>
  50530. <hashTree/>
  50531. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute codes" enabled="true">
  50532. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50533. <stringProp name="RegexExtractor.refname">configurable_attribute_codes</stringProp>
  50534. <stringProp name="RegexExtractor.regex">"code":"(\w+)"</stringProp>
  50535. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50536. <stringProp name="RegexExtractor.default"/>
  50537. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  50538. <stringProp name="Sample.scope">variable</stringProp>
  50539. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  50540. </RegexExtractor>
  50541. <hashTree/>
  50542. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute labels" enabled="true">
  50543. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50544. <stringProp name="RegexExtractor.refname">configurable_attribute_labels</stringProp>
  50545. <stringProp name="RegexExtractor.regex">"label":"(.*?)"</stringProp>
  50546. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50547. <stringProp name="RegexExtractor.default"/>
  50548. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  50549. <stringProp name="Sample.scope">variable</stringProp>
  50550. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  50551. </RegexExtractor>
  50552. <hashTree/>
  50553. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute values" enabled="true">
  50554. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50555. <stringProp name="RegexExtractor.refname">configurable_attribute_values</stringProp>
  50556. <stringProp name="RegexExtractor.regex">"values":(\{(?:\}|.*?\}\}))</stringProp>
  50557. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50558. <stringProp name="RegexExtractor.default"/>
  50559. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  50560. <stringProp name="Sample.scope">variable</stringProp>
  50561. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  50562. </RegexExtractor>
  50563. <hashTree/>
  50564. </hashTree>
  50565. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach configurable attribute id" enabled="true">
  50566. <stringProp name="ForeachController.inputVal">configurable_attribute_ids</stringProp>
  50567. <stringProp name="ForeachController.returnVal">configurable_attribute_id</stringProp>
  50568. <boolProp name="ForeachController.useSeparator">true</boolProp>
  50569. </ForeachController>
  50570. <hashTree>
  50571. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  50572. <stringProp name="CounterConfig.start">1</stringProp>
  50573. <stringProp name="CounterConfig.end">${configurable_attribute_ids_matchNr}</stringProp>
  50574. <stringProp name="CounterConfig.incr">1</stringProp>
  50575. <stringProp name="CounterConfig.name">attribute_counter</stringProp>
  50576. <stringProp name="CounterConfig.format"/>
  50577. <boolProp name="CounterConfig.per_user">true</boolProp>
  50578. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  50579. </CounterConfig>
  50580. <hashTree/>
  50581. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process configurable attribute values" enabled="true">
  50582. <stringProp name="BeanShellSampler.query">return vars.get("configurable_attribute_values_" + vars.get("attribute_counter"));</stringProp>
  50583. <stringProp name="BeanShellSampler.filename"/>
  50584. <stringProp name="BeanShellSampler.parameters"/>
  50585. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  50586. </BeanShellSampler>
  50587. <hashTree>
  50588. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Exctract attribute values" enabled="true">
  50589. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  50590. <stringProp name="RegexExtractor.refname">attribute_${configurable_attribute_id}_values</stringProp>
  50591. <stringProp name="RegexExtractor.regex">"value_index":"(\d+)"</stringProp>
  50592. <stringProp name="RegexExtractor.template">$1$</stringProp>
  50593. <stringProp name="RegexExtractor.default"/>
  50594. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  50595. <stringProp name="Scope.variable">configurable_attribute_values_${attribute_counter}</stringProp>
  50596. </RegexExtractor>
  50597. <hashTree/>
  50598. </hashTree>
  50599. </hashTree>
  50600. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Validate" enabled="true">
  50601. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  50602. <collectionProp name="Arguments.arguments">
  50603. <elementProp name="isAjax" elementType="HTTPArgument">
  50604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50605. <stringProp name="Argument.value">true</stringProp>
  50606. <stringProp name="Argument.metadata">=</stringProp>
  50607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50608. <stringProp name="Argument.name">isAjax</stringProp>
  50609. <stringProp name="Argument.desc">false</stringProp>
  50610. </elementProp>
  50611. <elementProp name="form_key" elementType="HTTPArgument">
  50612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50613. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  50614. <stringProp name="Argument.metadata">=</stringProp>
  50615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50616. <stringProp name="Argument.name">form_key</stringProp>
  50617. <stringProp name="Argument.desc">false</stringProp>
  50618. </elementProp>
  50619. <elementProp name="product[name]" elementType="HTTPArgument">
  50620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50621. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  50622. <stringProp name="Argument.metadata">=</stringProp>
  50623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50624. <stringProp name="Argument.name">product[name]</stringProp>
  50625. <stringProp name="Argument.desc">false</stringProp>
  50626. </elementProp>
  50627. <elementProp name="product[sku]" elementType="HTTPArgument">
  50628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50629. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  50630. <stringProp name="Argument.metadata">=</stringProp>
  50631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50632. <stringProp name="Argument.name">product[sku]</stringProp>
  50633. <stringProp name="Argument.desc">false</stringProp>
  50634. </elementProp>
  50635. <elementProp name="product[price]" elementType="HTTPArgument">
  50636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50637. <stringProp name="Argument.value">${price_new}</stringProp>
  50638. <stringProp name="Argument.metadata">=</stringProp>
  50639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50640. <stringProp name="Argument.name">product[price]</stringProp>
  50641. <stringProp name="Argument.desc">false</stringProp>
  50642. </elementProp>
  50643. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  50644. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50645. <stringProp name="Argument.value">2</stringProp>
  50646. <stringProp name="Argument.metadata">=</stringProp>
  50647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50648. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  50649. <stringProp name="Argument.desc">false</stringProp>
  50650. </elementProp>
  50651. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  50652. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50653. <stringProp name="Argument.value">1</stringProp>
  50654. <stringProp name="Argument.metadata">=</stringProp>
  50655. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50656. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  50657. <stringProp name="Argument.desc">false</stringProp>
  50658. </elementProp>
  50659. <elementProp name="product[weight]" elementType="HTTPArgument">
  50660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50661. <stringProp name="Argument.value">3</stringProp>
  50662. <stringProp name="Argument.metadata">=</stringProp>
  50663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50664. <stringProp name="Argument.name">product[weight]</stringProp>
  50665. <stringProp name="Argument.desc">false</stringProp>
  50666. </elementProp>
  50667. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  50668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50669. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  50670. <stringProp name="Argument.metadata">=</stringProp>
  50671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50672. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  50673. <stringProp name="Argument.desc">false</stringProp>
  50674. </elementProp>
  50675. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  50676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50677. <stringProp name="Argument.value">${category_additional}</stringProp>
  50678. <stringProp name="Argument.metadata">=</stringProp>
  50679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50680. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  50681. <stringProp name="Argument.desc">false</stringProp>
  50682. </elementProp>
  50683. <elementProp name="product[description]" elementType="HTTPArgument">
  50684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50685. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  50686. <stringProp name="Argument.metadata">=</stringProp>
  50687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50688. <stringProp name="Argument.name">product[description]</stringProp>
  50689. <stringProp name="Argument.desc">false</stringProp>
  50690. </elementProp>
  50691. <elementProp name="product[status]" elementType="HTTPArgument">
  50692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50693. <stringProp name="Argument.value">1</stringProp>
  50694. <stringProp name="Argument.metadata">=</stringProp>
  50695. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50696. <stringProp name="Argument.name">product[status]</stringProp>
  50697. <stringProp name="Argument.desc">false</stringProp>
  50698. </elementProp>
  50699. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  50700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50701. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  50702. <stringProp name="Argument.metadata">=</stringProp>
  50703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50704. <stringProp name="Argument.name">product[meta_title]</stringProp>
  50705. <stringProp name="Argument.desc">false</stringProp>
  50706. </elementProp>
  50707. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  50708. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50709. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  50710. <stringProp name="Argument.metadata">=</stringProp>
  50711. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50712. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  50713. <stringProp name="Argument.desc">false</stringProp>
  50714. </elementProp>
  50715. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  50716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50717. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  50718. <stringProp name="Argument.metadata">=</stringProp>
  50719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50720. <stringProp name="Argument.name">product[meta_description]</stringProp>
  50721. <stringProp name="Argument.desc">false</stringProp>
  50722. </elementProp>
  50723. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  50724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50725. <stringProp name="Argument.value">1</stringProp>
  50726. <stringProp name="Argument.metadata">=</stringProp>
  50727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50728. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  50729. <stringProp name="Argument.desc">false</stringProp>
  50730. </elementProp>
  50731. <elementProp name="product[special_price]" elementType="HTTPArgument">
  50732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50733. <stringProp name="Argument.value">${special_price_new}</stringProp>
  50734. <stringProp name="Argument.metadata">=</stringProp>
  50735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50736. <stringProp name="Argument.name">product[special_price]</stringProp>
  50737. <stringProp name="Argument.desc">false</stringProp>
  50738. </elementProp>
  50739. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  50740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50741. <stringProp name="Argument.value"/>
  50742. <stringProp name="Argument.metadata">=</stringProp>
  50743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50744. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  50745. <stringProp name="Argument.desc">false</stringProp>
  50746. </elementProp>
  50747. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  50748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50749. <stringProp name="Argument.value"/>
  50750. <stringProp name="Argument.metadata">=</stringProp>
  50751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50752. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  50753. <stringProp name="Argument.desc">false</stringProp>
  50754. </elementProp>
  50755. <elementProp name="product[cost]" elementType="HTTPArgument">
  50756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50757. <stringProp name="Argument.value"/>
  50758. <stringProp name="Argument.metadata">=</stringProp>
  50759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50760. <stringProp name="Argument.name">product[cost]</stringProp>
  50761. <stringProp name="Argument.desc">false</stringProp>
  50762. </elementProp>
  50763. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  50764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50765. <stringProp name="Argument.value">1</stringProp>
  50766. <stringProp name="Argument.metadata">=</stringProp>
  50767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50768. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  50769. <stringProp name="Argument.desc">false</stringProp>
  50770. </elementProp>
  50771. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  50772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50773. <stringProp name="Argument.value">0</stringProp>
  50774. <stringProp name="Argument.metadata">=</stringProp>
  50775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50776. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  50777. <stringProp name="Argument.desc">false</stringProp>
  50778. </elementProp>
  50779. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  50780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50781. <stringProp name="Argument.value">1</stringProp>
  50782. <stringProp name="Argument.metadata">=</stringProp>
  50783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50784. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  50785. <stringProp name="Argument.desc">false</stringProp>
  50786. </elementProp>
  50787. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  50788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50789. <stringProp name="Argument.value">1</stringProp>
  50790. <stringProp name="Argument.metadata">=</stringProp>
  50791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50792. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  50793. <stringProp name="Argument.desc">false</stringProp>
  50794. </elementProp>
  50795. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  50796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50797. <stringProp name="Argument.value">1</stringProp>
  50798. <stringProp name="Argument.metadata">=</stringProp>
  50799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50800. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  50801. <stringProp name="Argument.desc">false</stringProp>
  50802. </elementProp>
  50803. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  50804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50805. <stringProp name="Argument.value">1</stringProp>
  50806. <stringProp name="Argument.metadata">=</stringProp>
  50807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50808. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  50809. <stringProp name="Argument.desc">false</stringProp>
  50810. </elementProp>
  50811. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  50812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50813. <stringProp name="Argument.value">0</stringProp>
  50814. <stringProp name="Argument.metadata">=</stringProp>
  50815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50816. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  50817. <stringProp name="Argument.desc">false</stringProp>
  50818. </elementProp>
  50819. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  50820. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50821. <stringProp name="Argument.value">0</stringProp>
  50822. <stringProp name="Argument.metadata">=</stringProp>
  50823. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50824. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  50825. <stringProp name="Argument.desc">false</stringProp>
  50826. </elementProp>
  50827. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  50828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50829. <stringProp name="Argument.value">0</stringProp>
  50830. <stringProp name="Argument.metadata">=</stringProp>
  50831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50832. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  50833. <stringProp name="Argument.desc">false</stringProp>
  50834. </elementProp>
  50835. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  50836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50837. <stringProp name="Argument.value">1</stringProp>
  50838. <stringProp name="Argument.metadata">=</stringProp>
  50839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50840. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  50841. <stringProp name="Argument.desc">false</stringProp>
  50842. </elementProp>
  50843. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  50844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50845. <stringProp name="Argument.value">1</stringProp>
  50846. <stringProp name="Argument.metadata">=</stringProp>
  50847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50848. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  50849. <stringProp name="Argument.desc">false</stringProp>
  50850. </elementProp>
  50851. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  50852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50853. <stringProp name="Argument.value">1</stringProp>
  50854. <stringProp name="Argument.metadata">=</stringProp>
  50855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50856. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  50857. <stringProp name="Argument.desc">false</stringProp>
  50858. </elementProp>
  50859. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  50860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50861. <stringProp name="Argument.value">0</stringProp>
  50862. <stringProp name="Argument.metadata">=</stringProp>
  50863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50864. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  50865. <stringProp name="Argument.desc">false</stringProp>
  50866. </elementProp>
  50867. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  50868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50869. <stringProp name="Argument.value">0</stringProp>
  50870. <stringProp name="Argument.metadata">=</stringProp>
  50871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50872. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  50873. <stringProp name="Argument.desc">false</stringProp>
  50874. </elementProp>
  50875. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  50876. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50877. <stringProp name="Argument.value">1</stringProp>
  50878. <stringProp name="Argument.metadata">=</stringProp>
  50879. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50880. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  50881. <stringProp name="Argument.desc">false</stringProp>
  50882. </elementProp>
  50883. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  50884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50885. <stringProp name="Argument.value">1</stringProp>
  50886. <stringProp name="Argument.metadata">=</stringProp>
  50887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50888. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  50889. <stringProp name="Argument.desc">false</stringProp>
  50890. </elementProp>
  50891. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  50892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50893. <stringProp name="Argument.value"/>
  50894. <stringProp name="Argument.metadata">=</stringProp>
  50895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50896. <stringProp name="Argument.name">product[custom_design]</stringProp>
  50897. <stringProp name="Argument.desc">false</stringProp>
  50898. </elementProp>
  50899. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  50900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50901. <stringProp name="Argument.value"/>
  50902. <stringProp name="Argument.metadata">=</stringProp>
  50903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50904. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  50905. <stringProp name="Argument.desc">false</stringProp>
  50906. </elementProp>
  50907. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  50908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50909. <stringProp name="Argument.value"/>
  50910. <stringProp name="Argument.metadata">=</stringProp>
  50911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50912. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  50913. <stringProp name="Argument.desc">false</stringProp>
  50914. </elementProp>
  50915. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  50916. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50917. <stringProp name="Argument.value"/>
  50918. <stringProp name="Argument.metadata">=</stringProp>
  50919. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50920. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  50921. <stringProp name="Argument.desc">false</stringProp>
  50922. </elementProp>
  50923. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  50924. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50925. <stringProp name="Argument.value"/>
  50926. <stringProp name="Argument.metadata">=</stringProp>
  50927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50928. <stringProp name="Argument.name">product[page_layout]</stringProp>
  50929. <stringProp name="Argument.desc">false</stringProp>
  50930. </elementProp>
  50931. <elementProp name="product[options_container]" elementType="HTTPArgument">
  50932. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50933. <stringProp name="Argument.value">container2</stringProp>
  50934. <stringProp name="Argument.metadata">=</stringProp>
  50935. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50936. <stringProp name="Argument.name">product[options_container]</stringProp>
  50937. <stringProp name="Argument.desc">false</stringProp>
  50938. </elementProp>
  50939. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  50940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50941. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  50942. <stringProp name="Argument.metadata">=</stringProp>
  50943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50944. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  50945. <stringProp name="Argument.desc">false</stringProp>
  50946. </elementProp>
  50947. <elementProp name="product[url_key]" elementType="HTTPArgument">
  50948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50949. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  50950. <stringProp name="Argument.metadata">=</stringProp>
  50951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50952. <stringProp name="Argument.name">product[url_key]</stringProp>
  50953. </elementProp>
  50954. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  50955. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50956. <stringProp name="Argument.value">1</stringProp>
  50957. <stringProp name="Argument.metadata">=</stringProp>
  50958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50959. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  50960. </elementProp>
  50961. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  50962. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50963. <stringProp name="Argument.value">1</stringProp>
  50964. <stringProp name="Argument.metadata">=</stringProp>
  50965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50966. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  50967. </elementProp>
  50968. <elementProp name="product[visibility]" elementType="HTTPArgument">
  50969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50970. <stringProp name="Argument.value">4</stringProp>
  50971. <stringProp name="Argument.metadata">=</stringProp>
  50972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50973. <stringProp name="Argument.name">product[visibility]</stringProp>
  50974. </elementProp>
  50975. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  50976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50977. <stringProp name="Argument.value">1</stringProp>
  50978. <stringProp name="Argument.metadata">=</stringProp>
  50979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50980. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  50981. <stringProp name="Argument.desc">true</stringProp>
  50982. </elementProp>
  50983. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  50984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50985. <stringProp name="Argument.value">50</stringProp>
  50986. <stringProp name="Argument.metadata">=</stringProp>
  50987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50988. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  50989. <stringProp name="Argument.desc">false</stringProp>
  50990. </elementProp>
  50991. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  50992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  50993. <stringProp name="Argument.value">configurable</stringProp>
  50994. <stringProp name="Argument.metadata">=</stringProp>
  50995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  50996. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  50997. <stringProp name="Argument.desc">false</stringProp>
  50998. </elementProp>
  50999. </collectionProp>
  51000. </elementProp>
  51001. <stringProp name="HTTPSampler.domain"/>
  51002. <stringProp name="HTTPSampler.port"/>
  51003. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  51004. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  51005. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  51006. <stringProp name="HTTPSampler.contentEncoding"/>
  51007. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/</stringProp>
  51008. <stringProp name="HTTPSampler.method">POST</stringProp>
  51009. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  51010. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  51011. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  51012. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  51013. <boolProp name="HTTPSampler.monitor">false</boolProp>
  51014. <stringProp name="HTTPSampler.embedded_url_re"/>
  51015. </HTTPSamplerProxy>
  51016. <hashTree>
  51017. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  51018. <boolProp name="resetInterpreter">false</boolProp>
  51019. <stringProp name="parameters"/>
  51020. <stringProp name="filename"/>
  51021. <stringProp name="script">try {
  51022. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  51023. for (int i = 1; i &lt;= attributesCount; i++) {
  51024. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  51025. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  51026. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  51027. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  51028. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  51029. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  51030. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  51031. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  51032. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  51033. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  51034. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  51035. for (int j = 1; j &lt;= valuesCount; j++) {
  51036. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  51037. ctx.getCurrentSampler().addArgument(
  51038. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  51039. "1"
  51040. );
  51041. ctx.getCurrentSampler().addArgument(
  51042. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  51043. attributeValue
  51044. );
  51045. }
  51046. }
  51047. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  51048. } catch (Exception e) {
  51049. log.error("error???", e);
  51050. }</stringProp>
  51051. </BeanShellPreProcessor>
  51052. <hashTree/>
  51053. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  51054. <collectionProp name="Asserion.test_strings">
  51055. <stringProp name="1853918323">{"error":false}</stringProp>
  51056. </collectionProp>
  51057. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  51058. <boolProp name="Assertion.assume_success">false</boolProp>
  51059. <intProp name="Assertion.test_type">2</intProp>
  51060. </ResponseAssertion>
  51061. <hashTree/>
  51062. </hashTree>
  51063. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Save" enabled="true">
  51064. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  51065. <collectionProp name="Arguments.arguments">
  51066. <elementProp name="ajax" elementType="HTTPArgument">
  51067. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51068. <stringProp name="Argument.value">true</stringProp>
  51069. <stringProp name="Argument.metadata">=</stringProp>
  51070. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51071. <stringProp name="Argument.name">ajax</stringProp>
  51072. <stringProp name="Argument.desc">false</stringProp>
  51073. </elementProp>
  51074. <elementProp name="isAjax" elementType="HTTPArgument">
  51075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51076. <stringProp name="Argument.value">true</stringProp>
  51077. <stringProp name="Argument.metadata">=</stringProp>
  51078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51079. <stringProp name="Argument.name">isAjax</stringProp>
  51080. <stringProp name="Argument.desc">false</stringProp>
  51081. </elementProp>
  51082. <elementProp name="form_key" elementType="HTTPArgument">
  51083. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51084. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  51085. <stringProp name="Argument.metadata">=</stringProp>
  51086. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51087. <stringProp name="Argument.name">form_key</stringProp>
  51088. <stringProp name="Argument.desc">false</stringProp>
  51089. </elementProp>
  51090. <elementProp name="product[name]" elementType="HTTPArgument">
  51091. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51092. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  51093. <stringProp name="Argument.metadata">=</stringProp>
  51094. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51095. <stringProp name="Argument.name">product[name]</stringProp>
  51096. <stringProp name="Argument.desc">false</stringProp>
  51097. </elementProp>
  51098. <elementProp name="product[sku]" elementType="HTTPArgument">
  51099. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51100. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  51101. <stringProp name="Argument.metadata">=</stringProp>
  51102. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51103. <stringProp name="Argument.name">product[sku]</stringProp>
  51104. <stringProp name="Argument.desc">false</stringProp>
  51105. </elementProp>
  51106. <elementProp name="product[price]" elementType="HTTPArgument">
  51107. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51108. <stringProp name="Argument.value">${price_new}</stringProp>
  51109. <stringProp name="Argument.metadata">=</stringProp>
  51110. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51111. <stringProp name="Argument.name">product[price]</stringProp>
  51112. <stringProp name="Argument.desc">false</stringProp>
  51113. </elementProp>
  51114. <elementProp name="product[tax_class_id]admin" elementType="HTTPArgument">
  51115. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51116. <stringProp name="Argument.value">2</stringProp>
  51117. <stringProp name="Argument.metadata">=</stringProp>
  51118. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51119. <stringProp name="Argument.name">product[tax_class_id]admin</stringProp>
  51120. <stringProp name="Argument.desc">false</stringProp>
  51121. </elementProp>
  51122. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  51123. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51124. <stringProp name="Argument.value">1</stringProp>
  51125. <stringProp name="Argument.metadata">=</stringProp>
  51126. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51127. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  51128. <stringProp name="Argument.desc">false</stringProp>
  51129. </elementProp>
  51130. <elementProp name="product[weight]" elementType="HTTPArgument">
  51131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51132. <stringProp name="Argument.value">3</stringProp>
  51133. <stringProp name="Argument.metadata">=</stringProp>
  51134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51135. <stringProp name="Argument.name">product[weight]</stringProp>
  51136. <stringProp name="Argument.desc">false</stringProp>
  51137. </elementProp>
  51138. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  51139. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51140. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  51141. <stringProp name="Argument.metadata">=</stringProp>
  51142. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51143. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  51144. <stringProp name="Argument.desc">false</stringProp>
  51145. </elementProp>
  51146. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  51147. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51148. <stringProp name="Argument.value">${category_additional}</stringProp>
  51149. <stringProp name="Argument.metadata">=</stringProp>
  51150. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51151. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  51152. <stringProp name="Argument.desc">false</stringProp>
  51153. </elementProp>
  51154. <elementProp name="product[description]" elementType="HTTPArgument">
  51155. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51156. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  51157. <stringProp name="Argument.metadata">=</stringProp>
  51158. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51159. <stringProp name="Argument.name">product[description]</stringProp>
  51160. <stringProp name="Argument.desc">false</stringProp>
  51161. </elementProp>
  51162. <elementProp name="product[status]" elementType="HTTPArgument">
  51163. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51164. <stringProp name="Argument.value">1</stringProp>
  51165. <stringProp name="Argument.metadata">=</stringProp>
  51166. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51167. <stringProp name="Argument.name">product[status]</stringProp>
  51168. <stringProp name="Argument.desc">false</stringProp>
  51169. </elementProp>
  51170. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  51171. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51172. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  51173. <stringProp name="Argument.metadata">=</stringProp>
  51174. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51175. <stringProp name="Argument.name">product[meta_title]</stringProp>
  51176. <stringProp name="Argument.desc">false</stringProp>
  51177. </elementProp>
  51178. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  51179. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51180. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  51181. <stringProp name="Argument.metadata">=</stringProp>
  51182. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51183. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  51184. <stringProp name="Argument.desc">false</stringProp>
  51185. </elementProp>
  51186. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  51187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51188. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  51189. <stringProp name="Argument.metadata">=</stringProp>
  51190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51191. <stringProp name="Argument.name">product[meta_description]</stringProp>
  51192. <stringProp name="Argument.desc">false</stringProp>
  51193. </elementProp>
  51194. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  51195. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51196. <stringProp name="Argument.value">1</stringProp>
  51197. <stringProp name="Argument.metadata">=</stringProp>
  51198. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51199. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  51200. <stringProp name="Argument.desc">false</stringProp>
  51201. </elementProp>
  51202. <elementProp name="product[special_price]" elementType="HTTPArgument">
  51203. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51204. <stringProp name="Argument.value">${special_price_new}</stringProp>
  51205. <stringProp name="Argument.metadata">=</stringProp>
  51206. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51207. <stringProp name="Argument.name">product[special_price]</stringProp>
  51208. <stringProp name="Argument.desc">false</stringProp>
  51209. </elementProp>
  51210. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  51211. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51212. <stringProp name="Argument.value"/>
  51213. <stringProp name="Argument.metadata">=</stringProp>
  51214. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51215. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  51216. <stringProp name="Argument.desc">false</stringProp>
  51217. </elementProp>
  51218. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  51219. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51220. <stringProp name="Argument.value"/>
  51221. <stringProp name="Argument.metadata">=</stringProp>
  51222. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51223. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  51224. <stringProp name="Argument.desc">false</stringProp>
  51225. </elementProp>
  51226. <elementProp name="product[cost]" elementType="HTTPArgument">
  51227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51228. <stringProp name="Argument.value"/>
  51229. <stringProp name="Argument.metadata">=</stringProp>
  51230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51231. <stringProp name="Argument.name">product[cost]</stringProp>
  51232. <stringProp name="Argument.desc">false</stringProp>
  51233. </elementProp>
  51234. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  51235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51236. <stringProp name="Argument.value">1</stringProp>
  51237. <stringProp name="Argument.metadata">=</stringProp>
  51238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51239. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  51240. <stringProp name="Argument.desc">false</stringProp>
  51241. </elementProp>
  51242. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  51243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51244. <stringProp name="Argument.value">0</stringProp>
  51245. <stringProp name="Argument.metadata">=</stringProp>
  51246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51247. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  51248. <stringProp name="Argument.desc">false</stringProp>
  51249. </elementProp>
  51250. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  51251. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51252. <stringProp name="Argument.value">1</stringProp>
  51253. <stringProp name="Argument.metadata">=</stringProp>
  51254. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51255. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  51256. <stringProp name="Argument.desc">false</stringProp>
  51257. </elementProp>
  51258. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  51259. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51260. <stringProp name="Argument.value">1</stringProp>
  51261. <stringProp name="Argument.metadata">=</stringProp>
  51262. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51263. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  51264. <stringProp name="Argument.desc">false</stringProp>
  51265. </elementProp>
  51266. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  51267. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51268. <stringProp name="Argument.value">1</stringProp>
  51269. <stringProp name="Argument.metadata">=</stringProp>
  51270. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51271. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  51272. <stringProp name="Argument.desc">false</stringProp>
  51273. </elementProp>
  51274. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  51275. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51276. <stringProp name="Argument.value">1</stringProp>
  51277. <stringProp name="Argument.metadata">=</stringProp>
  51278. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51279. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  51280. <stringProp name="Argument.desc">false</stringProp>
  51281. </elementProp>
  51282. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  51283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51284. <stringProp name="Argument.value">0</stringProp>
  51285. <stringProp name="Argument.metadata">=</stringProp>
  51286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51287. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  51288. <stringProp name="Argument.desc">false</stringProp>
  51289. </elementProp>
  51290. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  51291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51292. <stringProp name="Argument.value">0</stringProp>
  51293. <stringProp name="Argument.metadata">=</stringProp>
  51294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51295. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  51296. <stringProp name="Argument.desc">false</stringProp>
  51297. </elementProp>
  51298. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  51299. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51300. <stringProp name="Argument.value">0</stringProp>
  51301. <stringProp name="Argument.metadata">=</stringProp>
  51302. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51303. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  51304. <stringProp name="Argument.desc">false</stringProp>
  51305. </elementProp>
  51306. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  51307. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51308. <stringProp name="Argument.value">1</stringProp>
  51309. <stringProp name="Argument.metadata">=</stringProp>
  51310. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51311. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  51312. <stringProp name="Argument.desc">false</stringProp>
  51313. </elementProp>
  51314. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  51315. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51316. <stringProp name="Argument.value">1</stringProp>
  51317. <stringProp name="Argument.metadata">=</stringProp>
  51318. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51319. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  51320. <stringProp name="Argument.desc">false</stringProp>
  51321. </elementProp>
  51322. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  51323. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51324. <stringProp name="Argument.value">1</stringProp>
  51325. <stringProp name="Argument.metadata">=</stringProp>
  51326. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51327. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  51328. <stringProp name="Argument.desc">false</stringProp>
  51329. </elementProp>
  51330. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  51331. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51332. <stringProp name="Argument.value">0</stringProp>
  51333. <stringProp name="Argument.metadata">=</stringProp>
  51334. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51335. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  51336. <stringProp name="Argument.desc">false</stringProp>
  51337. </elementProp>
  51338. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  51339. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51340. <stringProp name="Argument.value">0</stringProp>
  51341. <stringProp name="Argument.metadata">=</stringProp>
  51342. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51343. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  51344. <stringProp name="Argument.desc">false</stringProp>
  51345. </elementProp>
  51346. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  51347. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51348. <stringProp name="Argument.value">1</stringProp>
  51349. <stringProp name="Argument.metadata">=</stringProp>
  51350. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51351. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  51352. <stringProp name="Argument.desc">false</stringProp>
  51353. </elementProp>
  51354. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  51355. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51356. <stringProp name="Argument.value">1</stringProp>
  51357. <stringProp name="Argument.metadata">=</stringProp>
  51358. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51359. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  51360. <stringProp name="Argument.desc">false</stringProp>
  51361. </elementProp>
  51362. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  51363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51364. <stringProp name="Argument.value"/>
  51365. <stringProp name="Argument.metadata">=</stringProp>
  51366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51367. <stringProp name="Argument.name">product[custom_design]</stringProp>
  51368. <stringProp name="Argument.desc">false</stringProp>
  51369. </elementProp>
  51370. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  51371. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51372. <stringProp name="Argument.value"/>
  51373. <stringProp name="Argument.metadata">=</stringProp>
  51374. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51375. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  51376. <stringProp name="Argument.desc">false</stringProp>
  51377. </elementProp>
  51378. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  51379. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51380. <stringProp name="Argument.value"/>
  51381. <stringProp name="Argument.metadata">=</stringProp>
  51382. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51383. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  51384. <stringProp name="Argument.desc">false</stringProp>
  51385. </elementProp>
  51386. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  51387. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51388. <stringProp name="Argument.value"/>
  51389. <stringProp name="Argument.metadata">=</stringProp>
  51390. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51391. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  51392. <stringProp name="Argument.desc">false</stringProp>
  51393. </elementProp>
  51394. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  51395. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51396. <stringProp name="Argument.value"/>
  51397. <stringProp name="Argument.metadata">=</stringProp>
  51398. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51399. <stringProp name="Argument.name">product[page_layout]</stringProp>
  51400. <stringProp name="Argument.desc">false</stringProp>
  51401. </elementProp>
  51402. <elementProp name="product[options_container]" elementType="HTTPArgument">
  51403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51404. <stringProp name="Argument.value">container2</stringProp>
  51405. <stringProp name="Argument.metadata">=</stringProp>
  51406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51407. <stringProp name="Argument.name">product[options_container]</stringProp>
  51408. <stringProp name="Argument.desc">false</stringProp>
  51409. </elementProp>
  51410. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  51411. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51412. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  51413. <stringProp name="Argument.metadata">=</stringProp>
  51414. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51415. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  51416. <stringProp name="Argument.desc">false</stringProp>
  51417. </elementProp>
  51418. <elementProp name="product[url_key]" elementType="HTTPArgument">
  51419. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51420. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  51421. <stringProp name="Argument.metadata">=</stringProp>
  51422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51423. <stringProp name="Argument.name">product[url_key]</stringProp>
  51424. </elementProp>
  51425. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  51426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51427. <stringProp name="Argument.value">1</stringProp>
  51428. <stringProp name="Argument.metadata">=</stringProp>
  51429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51430. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  51431. </elementProp>
  51432. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  51433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51434. <stringProp name="Argument.value">1</stringProp>
  51435. <stringProp name="Argument.metadata">=</stringProp>
  51436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51437. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  51438. </elementProp>
  51439. <elementProp name="product[visibility]" elementType="HTTPArgument">
  51440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51441. <stringProp name="Argument.value">4</stringProp>
  51442. <stringProp name="Argument.metadata">=</stringProp>
  51443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51444. <stringProp name="Argument.name">product[visibility]</stringProp>
  51445. </elementProp>
  51446. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  51447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51448. <stringProp name="Argument.value">1</stringProp>
  51449. <stringProp name="Argument.metadata">=</stringProp>
  51450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51451. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  51452. <stringProp name="Argument.desc">true</stringProp>
  51453. </elementProp>
  51454. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  51455. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51456. <stringProp name="Argument.value">50</stringProp>
  51457. <stringProp name="Argument.metadata">=</stringProp>
  51458. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51459. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  51460. <stringProp name="Argument.desc">false</stringProp>
  51461. </elementProp>
  51462. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  51463. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51464. <stringProp name="Argument.value">configurable</stringProp>
  51465. <stringProp name="Argument.metadata">=</stringProp>
  51466. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51467. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  51468. <stringProp name="Argument.desc">false</stringProp>
  51469. </elementProp>
  51470. </collectionProp>
  51471. </elementProp>
  51472. <stringProp name="HTTPSampler.domain"/>
  51473. <stringProp name="HTTPSampler.port"/>
  51474. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  51475. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  51476. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  51477. <stringProp name="HTTPSampler.contentEncoding"/>
  51478. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/</stringProp>
  51479. <stringProp name="HTTPSampler.method">POST</stringProp>
  51480. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  51481. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  51482. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  51483. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  51484. <boolProp name="HTTPSampler.monitor">false</boolProp>
  51485. <stringProp name="HTTPSampler.embedded_url_re"/>
  51486. </HTTPSamplerProxy>
  51487. <hashTree>
  51488. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  51489. <boolProp name="resetInterpreter">false</boolProp>
  51490. <stringProp name="parameters"/>
  51491. <stringProp name="filename"/>
  51492. <stringProp name="script">try {
  51493. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  51494. for (int i = 1; i &lt;= attributesCount; i++) {
  51495. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  51496. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  51497. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  51498. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  51499. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  51500. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  51501. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  51502. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  51503. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  51504. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  51505. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  51506. for (int j = 1; j &lt;= valuesCount; j++) {
  51507. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  51508. ctx.getCurrentSampler().addArgument(
  51509. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  51510. "1"
  51511. );
  51512. ctx.getCurrentSampler().addArgument(
  51513. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  51514. attributeValue
  51515. );
  51516. }
  51517. }
  51518. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  51519. } catch (Exception e) {
  51520. log.error("error???", e);
  51521. }</stringProp>
  51522. </BeanShellPreProcessor>
  51523. <hashTree/>
  51524. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  51525. <collectionProp name="Asserion.test_strings">
  51526. <stringProp name="-583471546">You saved the product</stringProp>
  51527. </collectionProp>
  51528. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  51529. <boolProp name="Assertion.assume_success">false</boolProp>
  51530. <intProp name="Assertion.test_type">2</intProp>
  51531. <stringProp name="TestPlan.comments"> if have trouble see messages-message-error </stringProp>
  51532. </ResponseAssertion>
  51533. <hashTree/>
  51534. </hashTree>
  51535. </hashTree>
  51536. </hashTree>
  51537. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  51538. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  51539. <collectionProp name="Arguments.arguments"/>
  51540. </elementProp>
  51541. <stringProp name="HTTPSampler.domain"/>
  51542. <stringProp name="HTTPSampler.port"/>
  51543. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  51544. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  51545. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  51546. <stringProp name="HTTPSampler.contentEncoding"/>
  51547. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  51548. <stringProp name="HTTPSampler.method">GET</stringProp>
  51549. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  51550. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  51551. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  51552. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  51553. <boolProp name="HTTPSampler.monitor">false</boolProp>
  51554. <stringProp name="HTTPSampler.embedded_url_re"/>
  51555. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  51556. <hashTree>
  51557. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  51558. <boolProp name="resetInterpreter">false</boolProp>
  51559. <stringProp name="parameters"/>
  51560. <stringProp name="filename"/>
  51561. <stringProp name="script">
  51562. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  51563. if (adminUsersDistribution == 1) {
  51564. adminUserList = props.get("adminUserList");
  51565. adminUserList.add(vars.get("admin_user"));
  51566. }
  51567. </stringProp>
  51568. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  51569. <hashTree/>
  51570. </hashTree>
  51571. </hashTree>
  51572. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Returns Management" enabled="true">
  51573. <intProp name="ThroughputController.style">1</intProp>
  51574. <boolProp name="ThroughputController.perThread">false</boolProp>
  51575. <intProp name="ThroughputController.maxThroughput">1</intProp>
  51576. <stringProp name="ThroughputController.percentThroughput">${cAdminReturnsManagementPercentage}</stringProp>
  51577. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  51578. <hashTree>
  51579. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  51580. <stringProp name="script">
  51581. var tmpLabel = vars.get("testLabel")
  51582. if (tmpLabel) {
  51583. var testLabel = " (" + tmpLabel + ")"
  51584. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  51585. if (sampler.getName().indexOf(testLabel) == -1) {
  51586. sampler.setName(sampler.getName() + testLabel);
  51587. }
  51588. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  51589. sampler.setName("SetUp - " + sampler.getName());
  51590. }
  51591. } else {
  51592. testLabel = ""
  51593. }
  51594. </stringProp>
  51595. <stringProp name="scriptLanguage">javascript</stringProp>
  51596. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  51597. <hashTree/>
  51598. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  51599. <stringProp name="BeanShellSampler.query">
  51600. vars.put("testLabel", "[C] Admin Returns Management");
  51601. </stringProp>
  51602. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  51603. </BeanShellSampler>
  51604. <hashTree/>
  51605. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  51606. <stringProp name="script">
  51607. function getFormKeyFromResponse()
  51608. {
  51609. var url = prev.getUrlAsString(),
  51610. responseCode = prev.getResponseCode(),
  51611. formKey = null;
  51612. searchPattern = /var FORM_KEY = '(.+)'/;
  51613. if (responseCode == "200" &amp;&amp; url) {
  51614. response = prev.getResponseDataAsString();
  51615. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  51616. }
  51617. return formKey;
  51618. }
  51619. formKey = vars.get("form_key_storage");
  51620. currentFormKey = getFormKeyFromResponse();
  51621. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  51622. vars.put("form_key_storage", currentFormKey);
  51623. }
  51624. </stringProp>
  51625. <stringProp name="scriptLanguage">javascript</stringProp>
  51626. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  51627. <hashTree/>
  51628. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  51629. <stringProp name="script">
  51630. formKey = vars.get("form_key_storage");
  51631. if (formKey
  51632. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  51633. &amp;&amp; sampler.getMethod() == "POST")
  51634. {
  51635. arguments = sampler.getArguments();
  51636. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  51637. {
  51638. argument = arguments.getArgument(i);
  51639. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  51640. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  51641. argument.setValue(formKey);
  51642. }
  51643. }
  51644. }
  51645. </stringProp>
  51646. <stringProp name="scriptLanguage">javascript</stringProp>
  51647. </JSR223PreProcessor>
  51648. <hashTree/>
  51649. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  51650. <collectionProp name="CookieManager.cookies"/>
  51651. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  51652. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  51653. <hashTree/>
  51654. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  51655. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  51656. </GenericController>
  51657. <hashTree>
  51658. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  51659. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  51660. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  51661. <hashTree>
  51662. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  51663. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  51664. <stringProp name="BeanShellSampler.query">
  51665. adminUser = "none";
  51666. adminUserList = props.get("adminUserList");
  51667. adminUserListIterator = props.get("adminUserListIterator");
  51668. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  51669. if (adminUsersDistribution == 1) {
  51670. adminUser = adminUserList.poll();
  51671. } else {
  51672. if (!adminUserListIterator.hasNext()) {
  51673. adminUserListIterator = adminUserList.descendingIterator();
  51674. }
  51675. adminUser = adminUserListIterator.next();
  51676. }
  51677. if (adminUser == "none") {
  51678. SampleResult.setResponseMessage("adminUser list is empty");
  51679. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  51680. IsSuccess=false;
  51681. SampleResult.setSuccessful(false);
  51682. SampleResult.setStopThread(true);
  51683. }
  51684. vars.put("admin_user", adminUser);
  51685. </stringProp>
  51686. <stringProp name="BeanShellSampler.filename"/>
  51687. <stringProp name="BeanShellSampler.parameters"/>
  51688. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  51689. </BeanShellSampler>
  51690. <hashTree/>
  51691. </hashTree>
  51692. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  51693. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  51694. <collectionProp name="Arguments.arguments"/>
  51695. </elementProp>
  51696. <stringProp name="HTTPSampler.domain"/>
  51697. <stringProp name="HTTPSampler.port"/>
  51698. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  51699. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  51700. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  51701. <stringProp name="HTTPSampler.contentEncoding"/>
  51702. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  51703. <stringProp name="HTTPSampler.method">GET</stringProp>
  51704. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  51705. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  51706. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  51707. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  51708. <boolProp name="HTTPSampler.monitor">false</boolProp>
  51709. <stringProp name="HTTPSampler.embedded_url_re"/>
  51710. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  51711. <hashTree>
  51712. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  51713. <collectionProp name="Asserion.test_strings">
  51714. <stringProp name="-1397214398">Welcome</stringProp>
  51715. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  51716. </collectionProp>
  51717. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  51718. <boolProp name="Assertion.assume_success">false</boolProp>
  51719. <intProp name="Assertion.test_type">2</intProp>
  51720. </ResponseAssertion>
  51721. <hashTree/>
  51722. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  51723. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  51724. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  51725. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  51726. <stringProp name="RegexExtractor.template">$1$</stringProp>
  51727. <stringProp name="RegexExtractor.default"/>
  51728. <stringProp name="RegexExtractor.match_number">1</stringProp>
  51729. </RegexExtractor>
  51730. <hashTree/>
  51731. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  51732. <collectionProp name="Asserion.test_strings">
  51733. <stringProp name="2845929">^.+$</stringProp>
  51734. </collectionProp>
  51735. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  51736. <boolProp name="Assertion.assume_success">false</boolProp>
  51737. <intProp name="Assertion.test_type">1</intProp>
  51738. <stringProp name="Assertion.scope">variable</stringProp>
  51739. <stringProp name="Scope.variable">admin_form_key</stringProp>
  51740. </ResponseAssertion>
  51741. <hashTree/>
  51742. </hashTree>
  51743. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  51744. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  51745. <collectionProp name="Arguments.arguments">
  51746. <elementProp name="dummy" elementType="HTTPArgument">
  51747. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51748. <stringProp name="Argument.value"/>
  51749. <stringProp name="Argument.metadata">=</stringProp>
  51750. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51751. <stringProp name="Argument.name">dummy</stringProp>
  51752. </elementProp>
  51753. <elementProp name="form_key" elementType="HTTPArgument">
  51754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51755. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  51756. <stringProp name="Argument.metadata">=</stringProp>
  51757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51758. <stringProp name="Argument.name">form_key</stringProp>
  51759. </elementProp>
  51760. <elementProp name="login[password]" elementType="HTTPArgument">
  51761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51762. <stringProp name="Argument.value">${admin_password}</stringProp>
  51763. <stringProp name="Argument.metadata">=</stringProp>
  51764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51765. <stringProp name="Argument.name">login[password]</stringProp>
  51766. </elementProp>
  51767. <elementProp name="login[username]" elementType="HTTPArgument">
  51768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51769. <stringProp name="Argument.value">${admin_user}</stringProp>
  51770. <stringProp name="Argument.metadata">=</stringProp>
  51771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51772. <stringProp name="Argument.name">login[username]</stringProp>
  51773. </elementProp>
  51774. </collectionProp>
  51775. </elementProp>
  51776. <stringProp name="HTTPSampler.domain"/>
  51777. <stringProp name="HTTPSampler.port"/>
  51778. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  51779. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  51780. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  51781. <stringProp name="HTTPSampler.contentEncoding"/>
  51782. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  51783. <stringProp name="HTTPSampler.method">POST</stringProp>
  51784. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  51785. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  51786. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  51787. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  51788. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  51789. <boolProp name="HTTPSampler.monitor">false</boolProp>
  51790. <stringProp name="HTTPSampler.embedded_url_re"/>
  51791. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  51792. </HTTPSamplerProxy>
  51793. <hashTree>
  51794. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  51795. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  51796. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  51797. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  51798. <stringProp name="RegexExtractor.template">$1$</stringProp>
  51799. <stringProp name="RegexExtractor.default"/>
  51800. <stringProp name="RegexExtractor.match_number">1</stringProp>
  51801. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  51802. <hashTree/>
  51803. </hashTree>
  51804. </hashTree>
  51805. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  51806. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  51807. </GenericController>
  51808. <hashTree>
  51809. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  51810. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  51811. <collectionProp name="Arguments.arguments"/>
  51812. </elementProp>
  51813. <stringProp name="HTTPSampler.domain"/>
  51814. <stringProp name="HTTPSampler.port"/>
  51815. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  51816. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  51817. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  51818. <stringProp name="HTTPSampler.contentEncoding"/>
  51819. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  51820. <stringProp name="HTTPSampler.method">GET</stringProp>
  51821. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  51822. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  51823. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  51824. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  51825. <boolProp name="HTTPSampler.monitor">false</boolProp>
  51826. <stringProp name="HTTPSampler.embedded_url_re"/>
  51827. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  51828. <hashTree>
  51829. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  51830. <collectionProp name="Asserion.test_strings">
  51831. <stringProp name="1204796042">Create New Order</stringProp>
  51832. </collectionProp>
  51833. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  51834. <boolProp name="Assertion.assume_success">false</boolProp>
  51835. <intProp name="Assertion.test_type">2</intProp>
  51836. </ResponseAssertion>
  51837. <hashTree/>
  51838. </hashTree>
  51839. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  51840. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  51841. <collectionProp name="Arguments.arguments">
  51842. <elementProp name="namespace" elementType="HTTPArgument">
  51843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51844. <stringProp name="Argument.value">sales_order_grid</stringProp>
  51845. <stringProp name="Argument.metadata">=</stringProp>
  51846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51847. <stringProp name="Argument.name">namespace</stringProp>
  51848. </elementProp>
  51849. <elementProp name="search" elementType="HTTPArgument">
  51850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51851. <stringProp name="Argument.value"/>
  51852. <stringProp name="Argument.metadata">=</stringProp>
  51853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51854. <stringProp name="Argument.name">search</stringProp>
  51855. </elementProp>
  51856. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  51857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51858. <stringProp name="Argument.value">true</stringProp>
  51859. <stringProp name="Argument.metadata">=</stringProp>
  51860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51861. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  51862. </elementProp>
  51863. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  51864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51865. <stringProp name="Argument.value">200</stringProp>
  51866. <stringProp name="Argument.metadata">=</stringProp>
  51867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51868. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  51869. </elementProp>
  51870. <elementProp name="paging[current]" elementType="HTTPArgument">
  51871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51872. <stringProp name="Argument.value">1</stringProp>
  51873. <stringProp name="Argument.metadata">=</stringProp>
  51874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51875. <stringProp name="Argument.name">paging[current]</stringProp>
  51876. </elementProp>
  51877. <elementProp name="sorting[field]" elementType="HTTPArgument">
  51878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51879. <stringProp name="Argument.value">increment_id</stringProp>
  51880. <stringProp name="Argument.metadata">=</stringProp>
  51881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51882. <stringProp name="Argument.name">sorting[field]</stringProp>
  51883. </elementProp>
  51884. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  51885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51886. <stringProp name="Argument.value">desc</stringProp>
  51887. <stringProp name="Argument.metadata">=</stringProp>
  51888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51889. <stringProp name="Argument.name">sorting[direction]</stringProp>
  51890. </elementProp>
  51891. <elementProp name="isAjax" elementType="HTTPArgument">
  51892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51893. <stringProp name="Argument.value">true</stringProp>
  51894. <stringProp name="Argument.metadata">=</stringProp>
  51895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51896. <stringProp name="Argument.name">isAjax</stringProp>
  51897. </elementProp>
  51898. <elementProp name="form_key" elementType="HTTPArgument">
  51899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51900. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  51901. <stringProp name="Argument.metadata">=</stringProp>
  51902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51903. <stringProp name="Argument.name">form_key</stringProp>
  51904. <stringProp name="Argument.desc">false</stringProp>
  51905. </elementProp>
  51906. <elementProp name="filters[status]" elementType="HTTPArgument">
  51907. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51908. <stringProp name="Argument.value">pending</stringProp>
  51909. <stringProp name="Argument.metadata">=</stringProp>
  51910. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51911. <stringProp name="Argument.name">filters[status]</stringProp>
  51912. <stringProp name="Argument.desc">true</stringProp>
  51913. </elementProp>
  51914. <elementProp name="_" elementType="HTTPArgument">
  51915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51916. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  51917. <stringProp name="Argument.metadata">=</stringProp>
  51918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51919. <stringProp name="Argument.name">_</stringProp>
  51920. </elementProp>
  51921. </collectionProp>
  51922. </elementProp>
  51923. <stringProp name="HTTPSampler.domain"/>
  51924. <stringProp name="HTTPSampler.port"/>
  51925. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  51926. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  51927. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  51928. <stringProp name="HTTPSampler.contentEncoding"/>
  51929. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  51930. <stringProp name="HTTPSampler.method">GET</stringProp>
  51931. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  51932. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  51933. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  51934. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  51935. <boolProp name="HTTPSampler.monitor">false</boolProp>
  51936. <stringProp name="HTTPSampler.embedded_url_re"/>
  51937. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  51938. <hashTree>
  51939. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  51940. <collectionProp name="Asserion.test_strings">
  51941. <stringProp name="1637639774">totalRecords</stringProp>
  51942. </collectionProp>
  51943. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  51944. <boolProp name="Assertion.assume_success">false</boolProp>
  51945. <intProp name="Assertion.test_type">2</intProp>
  51946. </ResponseAssertion>
  51947. <hashTree/>
  51948. </hashTree>
  51949. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  51950. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  51951. <collectionProp name="Arguments.arguments">
  51952. <elementProp name="form_key" elementType="HTTPArgument">
  51953. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51954. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  51955. <stringProp name="Argument.metadata">=</stringProp>
  51956. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51957. <stringProp name="Argument.name">form_key</stringProp>
  51958. </elementProp>
  51959. <elementProp name="namespace" elementType="HTTPArgument">
  51960. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51961. <stringProp name="Argument.value">sales_order_grid</stringProp>
  51962. <stringProp name="Argument.metadata">=</stringProp>
  51963. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51964. <stringProp name="Argument.name">namespace</stringProp>
  51965. <stringProp name="Argument.desc">true</stringProp>
  51966. </elementProp>
  51967. <elementProp name="search" elementType="HTTPArgument">
  51968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51969. <stringProp name="Argument.value"/>
  51970. <stringProp name="Argument.metadata">=</stringProp>
  51971. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51972. <stringProp name="Argument.name">search</stringProp>
  51973. <stringProp name="Argument.desc">true</stringProp>
  51974. </elementProp>
  51975. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  51976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51977. <stringProp name="Argument.value">true</stringProp>
  51978. <stringProp name="Argument.metadata">=</stringProp>
  51979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51980. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  51981. <stringProp name="Argument.desc">true</stringProp>
  51982. </elementProp>
  51983. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  51984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51985. <stringProp name="Argument.value">200</stringProp>
  51986. <stringProp name="Argument.metadata">=</stringProp>
  51987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51988. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  51989. <stringProp name="Argument.desc">true</stringProp>
  51990. </elementProp>
  51991. <elementProp name="paging[current]" elementType="HTTPArgument">
  51992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  51993. <stringProp name="Argument.value">1</stringProp>
  51994. <stringProp name="Argument.metadata">=</stringProp>
  51995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  51996. <stringProp name="Argument.name">paging[current]</stringProp>
  51997. <stringProp name="Argument.desc">true</stringProp>
  51998. </elementProp>
  51999. <elementProp name="sorting[field]" elementType="HTTPArgument">
  52000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52001. <stringProp name="Argument.value">increment_id</stringProp>
  52002. <stringProp name="Argument.metadata">=</stringProp>
  52003. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52004. <stringProp name="Argument.name">sorting[field]</stringProp>
  52005. <stringProp name="Argument.desc">true</stringProp>
  52006. </elementProp>
  52007. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  52008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52009. <stringProp name="Argument.value">asc</stringProp>
  52010. <stringProp name="Argument.metadata">=</stringProp>
  52011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52012. <stringProp name="Argument.name">sorting[direction]</stringProp>
  52013. <stringProp name="Argument.desc">true</stringProp>
  52014. </elementProp>
  52015. <elementProp name="isAjax" elementType="HTTPArgument">
  52016. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52017. <stringProp name="Argument.value">true</stringProp>
  52018. <stringProp name="Argument.metadata">=</stringProp>
  52019. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52020. <stringProp name="Argument.name">isAjax</stringProp>
  52021. <stringProp name="Argument.desc">true</stringProp>
  52022. </elementProp>
  52023. <elementProp name="filters[status]" elementType="HTTPArgument">
  52024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52025. <stringProp name="Argument.value">pending</stringProp>
  52026. <stringProp name="Argument.metadata">=</stringProp>
  52027. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52028. <stringProp name="Argument.name">filters[status]</stringProp>
  52029. </elementProp>
  52030. <elementProp name="_" elementType="HTTPArgument">
  52031. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52032. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  52033. <stringProp name="Argument.metadata">=</stringProp>
  52034. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52035. <stringProp name="Argument.name">_</stringProp>
  52036. </elementProp>
  52037. </collectionProp>
  52038. </elementProp>
  52039. <stringProp name="HTTPSampler.domain"/>
  52040. <stringProp name="HTTPSampler.port"/>
  52041. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52042. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52043. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52044. <stringProp name="HTTPSampler.contentEncoding"/>
  52045. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  52046. <stringProp name="HTTPSampler.method">GET</stringProp>
  52047. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52048. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52049. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52050. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52051. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52052. <stringProp name="HTTPSampler.embedded_url_re"/>
  52053. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  52054. <hashTree>
  52055. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  52056. <collectionProp name="Asserion.test_strings">
  52057. <stringProp name="1637639774">totalRecords</stringProp>
  52058. </collectionProp>
  52059. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52060. <boolProp name="Assertion.assume_success">false</boolProp>
  52061. <intProp name="Assertion.test_type">2</intProp>
  52062. </ResponseAssertion>
  52063. <hashTree/>
  52064. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  52065. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  52066. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  52067. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  52068. <stringProp name="RegexExtractor.template">$1$</stringProp>
  52069. <stringProp name="RegexExtractor.default"/>
  52070. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  52071. <stringProp name="Scope.variable">simple_products</stringProp>
  52072. </RegexExtractor>
  52073. <hashTree/>
  52074. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  52075. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  52076. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  52077. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  52078. <stringProp name="RegexExtractor.template">$1$</stringProp>
  52079. <stringProp name="RegexExtractor.default"/>
  52080. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  52081. <stringProp name="Scope.variable">simple_products</stringProp>
  52082. </RegexExtractor>
  52083. <hashTree/>
  52084. </hashTree>
  52085. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  52086. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  52087. <stringProp name="BeanShellSampler.query">
  52088. import java.util.ArrayList;
  52089. import java.util.HashMap;
  52090. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  52091. import java.util.Random;
  52092. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  52093. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  52094. int clusterLength;
  52095. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  52096. if (threadsNumber == 0) {
  52097. //Number of orders for one thread
  52098. clusterLength = ordersCount;
  52099. } else {
  52100. clusterLength = Math.round(ordersCount / threadsNumber);
  52101. if (clusterLength == 0) {
  52102. clusterLength = 1;
  52103. }
  52104. }
  52105. //Current thread number starts from 0
  52106. int currentThreadNum = ctx.getThreadNum();
  52107. //Index of the current product from the cluster
  52108. Random random = new Random();
  52109. if (${seedForRandom} &gt; 0) {
  52110. random.setSeed(${seedForRandom} + ${__threadNum});
  52111. }
  52112. int iterator = random.nextInt(clusterLength);
  52113. if (iterator == 0) {
  52114. iterator = 1;
  52115. }
  52116. int i = clusterLength * currentThreadNum + iterator;
  52117. orderNumber = vars.get("order_numbers_" + i.toString());
  52118. orderId = vars.get("order_ids_" + i.toString());
  52119. vars.put("order_number", orderNumber);
  52120. vars.put("order_id", orderId);
  52121. </stringProp>
  52122. <stringProp name="BeanShellSampler.filename"/>
  52123. <stringProp name="BeanShellSampler.parameters"/>
  52124. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  52125. </BeanShellSampler>
  52126. <hashTree/>
  52127. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  52128. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52129. <collectionProp name="Arguments.arguments"/>
  52130. </elementProp>
  52131. <stringProp name="HTTPSampler.domain"/>
  52132. <stringProp name="HTTPSampler.port"/>
  52133. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52134. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52135. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52136. <stringProp name="HTTPSampler.contentEncoding"/>
  52137. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  52138. <stringProp name="HTTPSampler.method">GET</stringProp>
  52139. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52140. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52141. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52142. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52143. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52144. <stringProp name="HTTPSampler.embedded_url_re"/>
  52145. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  52146. <hashTree>
  52147. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  52148. <collectionProp name="Asserion.test_strings">
  52149. <stringProp name="2103620713">#${order_number}</stringProp>
  52150. </collectionProp>
  52151. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52152. <boolProp name="Assertion.assume_success">false</boolProp>
  52153. <intProp name="Assertion.test_type">2</intProp>
  52154. </ResponseAssertion>
  52155. <hashTree/>
  52156. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  52157. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  52158. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  52159. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  52160. <stringProp name="RegexExtractor.template">$1$</stringProp>
  52161. <stringProp name="RegexExtractor.default"/>
  52162. <stringProp name="RegexExtractor.match_number">1</stringProp>
  52163. <stringProp name="Scope.variable">simple_products</stringProp>
  52164. </RegexExtractor>
  52165. <hashTree/>
  52166. </hashTree>
  52167. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  52168. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  52169. <boolProp name="IfController.evaluateAll">false</boolProp>
  52170. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  52171. <hashTree>
  52172. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  52173. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52174. <collectionProp name="Arguments.arguments"/>
  52175. </elementProp>
  52176. <stringProp name="HTTPSampler.domain"/>
  52177. <stringProp name="HTTPSampler.port"/>
  52178. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52179. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52180. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52181. <stringProp name="HTTPSampler.contentEncoding"/>
  52182. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  52183. <stringProp name="HTTPSampler.method">GET</stringProp>
  52184. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52185. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52186. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52187. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52188. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52189. <stringProp name="HTTPSampler.embedded_url_re"/>
  52190. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  52191. <hashTree>
  52192. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  52193. <collectionProp name="Asserion.test_strings">
  52194. <stringProp name="-1233850814">Invoice Totals</stringProp>
  52195. </collectionProp>
  52196. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52197. <boolProp name="Assertion.assume_success">false</boolProp>
  52198. <intProp name="Assertion.test_type">2</intProp>
  52199. </ResponseAssertion>
  52200. <hashTree/>
  52201. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  52202. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  52203. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  52204. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  52205. <stringProp name="RegexExtractor.template">$1$</stringProp>
  52206. <stringProp name="RegexExtractor.default"/>
  52207. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  52208. <stringProp name="Scope.variable">simple_products</stringProp>
  52209. </RegexExtractor>
  52210. <hashTree/>
  52211. </hashTree>
  52212. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  52213. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52214. <collectionProp name="Arguments.arguments">
  52215. <elementProp name="form_key" elementType="HTTPArgument">
  52216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52217. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  52218. <stringProp name="Argument.metadata">=</stringProp>
  52219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52220. <stringProp name="Argument.name">form_key</stringProp>
  52221. <stringProp name="Argument.desc">false</stringProp>
  52222. </elementProp>
  52223. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  52224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52225. <stringProp name="Argument.value">1</stringProp>
  52226. <stringProp name="Argument.metadata">=</stringProp>
  52227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52228. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  52229. </elementProp>
  52230. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  52231. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52232. <stringProp name="Argument.value">1</stringProp>
  52233. <stringProp name="Argument.metadata">=</stringProp>
  52234. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52235. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  52236. </elementProp>
  52237. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  52238. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52239. <stringProp name="Argument.value">Invoiced</stringProp>
  52240. <stringProp name="Argument.metadata">=</stringProp>
  52241. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52242. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  52243. </elementProp>
  52244. </collectionProp>
  52245. </elementProp>
  52246. <stringProp name="HTTPSampler.domain"/>
  52247. <stringProp name="HTTPSampler.port"/>
  52248. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52249. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52250. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52251. <stringProp name="HTTPSampler.contentEncoding"/>
  52252. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  52253. <stringProp name="HTTPSampler.method">POST</stringProp>
  52254. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52255. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52256. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52257. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52258. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52259. <stringProp name="HTTPSampler.embedded_url_re"/>
  52260. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  52261. <hashTree>
  52262. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  52263. <collectionProp name="Asserion.test_strings">
  52264. <stringProp name="1740524604">The invoice has been created</stringProp>
  52265. </collectionProp>
  52266. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52267. <boolProp name="Assertion.assume_success">false</boolProp>
  52268. <intProp name="Assertion.test_type">2</intProp>
  52269. </ResponseAssertion>
  52270. <hashTree/>
  52271. </hashTree>
  52272. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Start" enabled="true">
  52273. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52274. <collectionProp name="Arguments.arguments"/>
  52275. </elementProp>
  52276. <stringProp name="HTTPSampler.domain"/>
  52277. <stringProp name="HTTPSampler.port"/>
  52278. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52279. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52280. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52281. <stringProp name="HTTPSampler.contentEncoding"/>
  52282. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/</stringProp>
  52283. <stringProp name="HTTPSampler.method">GET</stringProp>
  52284. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52285. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52286. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52287. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52288. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52289. <stringProp name="HTTPSampler.embedded_url_re"/>
  52290. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx</stringProp></HTTPSamplerProxy>
  52291. <hashTree>
  52292. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  52293. <collectionProp name="Asserion.test_strings">
  52294. <stringProp name="1382627322">New Memo</stringProp>
  52295. </collectionProp>
  52296. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52297. <boolProp name="Assertion.assume_success">false</boolProp>
  52298. <intProp name="Assertion.test_type">2</intProp>
  52299. </ResponseAssertion>
  52300. <hashTree/>
  52301. </hashTree>
  52302. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Submit - Full Refund" enabled="true">
  52303. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52304. <collectionProp name="Arguments.arguments">
  52305. <elementProp name="form_key" elementType="HTTPArgument">
  52306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52307. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  52308. <stringProp name="Argument.metadata">=</stringProp>
  52309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52310. <stringProp name="Argument.name">form_key</stringProp>
  52311. <stringProp name="Argument.desc">false</stringProp>
  52312. </elementProp>
  52313. <elementProp name="creditmemo[items][${item_ids_1}][qty]" elementType="HTTPArgument">
  52314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52315. <stringProp name="Argument.value">1</stringProp>
  52316. <stringProp name="Argument.metadata">=</stringProp>
  52317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52318. <stringProp name="Argument.name">creditmemo[items][${item_ids_1}][qty]</stringProp>
  52319. </elementProp>
  52320. <elementProp name="creditmemo[items][${item_ids_2}][qty]" elementType="HTTPArgument">
  52321. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52322. <stringProp name="Argument.value">1</stringProp>
  52323. <stringProp name="Argument.metadata">=</stringProp>
  52324. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52325. <stringProp name="Argument.name">creditmemo[items][${item_ids_2}][qty]</stringProp>
  52326. </elementProp>
  52327. <elementProp name="creditmemo[do_offline]" elementType="HTTPArgument">
  52328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52329. <stringProp name="Argument.value">1</stringProp>
  52330. <stringProp name="Argument.metadata">=</stringProp>
  52331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52332. <stringProp name="Argument.name">creditmemo[do_offline]</stringProp>
  52333. </elementProp>
  52334. <elementProp name="creditmemo[comment_text]" elementType="HTTPArgument">
  52335. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52336. <stringProp name="Argument.value">Credit Memo added</stringProp>
  52337. <stringProp name="Argument.metadata">=</stringProp>
  52338. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52339. <stringProp name="Argument.name">creditmemo[comment_text]</stringProp>
  52340. </elementProp>
  52341. <elementProp name="creditmemo[shipping_amount]" elementType="HTTPArgument">
  52342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52343. <stringProp name="Argument.value">10</stringProp>
  52344. <stringProp name="Argument.metadata">=</stringProp>
  52345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52346. <stringProp name="Argument.name">creditmemo[shipping_amount]</stringProp>
  52347. </elementProp>
  52348. <elementProp name="creditmemo[adjustment_positive]" elementType="HTTPArgument">
  52349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52350. <stringProp name="Argument.value">0</stringProp>
  52351. <stringProp name="Argument.metadata">=</stringProp>
  52352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52353. <stringProp name="Argument.name">creditmemo[adjustment_positive]</stringProp>
  52354. </elementProp>
  52355. <elementProp name="creditmemo[adjustment_negative]" elementType="HTTPArgument">
  52356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52357. <stringProp name="Argument.value">0</stringProp>
  52358. <stringProp name="Argument.metadata">=</stringProp>
  52359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52360. <stringProp name="Argument.name">creditmemo[adjustment_negative]</stringProp>
  52361. </elementProp>
  52362. </collectionProp>
  52363. </elementProp>
  52364. <stringProp name="HTTPSampler.domain"/>
  52365. <stringProp name="HTTPSampler.port"/>
  52366. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52367. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52368. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52369. <stringProp name="HTTPSampler.contentEncoding"/>
  52370. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/</stringProp>
  52371. <stringProp name="HTTPSampler.method">POST</stringProp>
  52372. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52373. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52374. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52375. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52376. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52377. <stringProp name="HTTPSampler.embedded_url_re"/>
  52378. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_full_refund.jmx</stringProp></HTTPSamplerProxy>
  52379. <hashTree>
  52380. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  52381. <collectionProp name="Asserion.test_strings">
  52382. <stringProp name="-515117447">You created the credit memo</stringProp>
  52383. </collectionProp>
  52384. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52385. <boolProp name="Assertion.assume_success">false</boolProp>
  52386. <intProp name="Assertion.test_type">2</intProp>
  52387. </ResponseAssertion>
  52388. <hashTree/>
  52389. </hashTree>
  52390. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Create/Process Returns - Pause" enabled="true">
  52391. <intProp name="ActionProcessor.action">1</intProp>
  52392. <intProp name="ActionProcessor.target">0</intProp>
  52393. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))}</stringProp>
  52394. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/pause.jmx</stringProp></TestAction>
  52395. <hashTree/>
  52396. </hashTree>
  52397. </hashTree>
  52398. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  52399. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52400. <collectionProp name="Arguments.arguments"/>
  52401. </elementProp>
  52402. <stringProp name="HTTPSampler.domain"/>
  52403. <stringProp name="HTTPSampler.port"/>
  52404. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52405. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52406. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52407. <stringProp name="HTTPSampler.contentEncoding"/>
  52408. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  52409. <stringProp name="HTTPSampler.method">GET</stringProp>
  52410. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52411. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52412. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52413. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52414. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52415. <stringProp name="HTTPSampler.embedded_url_re"/>
  52416. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  52417. <hashTree>
  52418. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  52419. <boolProp name="resetInterpreter">false</boolProp>
  52420. <stringProp name="parameters"/>
  52421. <stringProp name="filename"/>
  52422. <stringProp name="script">
  52423. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  52424. if (adminUsersDistribution == 1) {
  52425. adminUserList = props.get("adminUserList");
  52426. adminUserList.add(vars.get("admin_user"));
  52427. }
  52428. </stringProp>
  52429. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  52430. <hashTree/>
  52431. </hashTree>
  52432. </hashTree>
  52433. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Browse Customer Grid" enabled="true">
  52434. <intProp name="ThroughputController.style">1</intProp>
  52435. <boolProp name="ThroughputController.perThread">false</boolProp>
  52436. <intProp name="ThroughputController.maxThroughput">1</intProp>
  52437. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseCustomerGridPercentage}</stringProp>
  52438. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  52439. <hashTree>
  52440. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  52441. <stringProp name="script">
  52442. var tmpLabel = vars.get("testLabel")
  52443. if (tmpLabel) {
  52444. var testLabel = " (" + tmpLabel + ")"
  52445. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  52446. if (sampler.getName().indexOf(testLabel) == -1) {
  52447. sampler.setName(sampler.getName() + testLabel);
  52448. }
  52449. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  52450. sampler.setName("SetUp - " + sampler.getName());
  52451. }
  52452. } else {
  52453. testLabel = ""
  52454. }
  52455. </stringProp>
  52456. <stringProp name="scriptLanguage">javascript</stringProp>
  52457. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  52458. <hashTree/>
  52459. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  52460. <stringProp name="BeanShellSampler.query">
  52461. vars.put("testLabel", "[C] Admin Browse Customer Grid");
  52462. </stringProp>
  52463. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  52464. </BeanShellSampler>
  52465. <hashTree/>
  52466. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  52467. <stringProp name="script">
  52468. function getFormKeyFromResponse()
  52469. {
  52470. var url = prev.getUrlAsString(),
  52471. responseCode = prev.getResponseCode(),
  52472. formKey = null;
  52473. searchPattern = /var FORM_KEY = '(.+)'/;
  52474. if (responseCode == "200" &amp;&amp; url) {
  52475. response = prev.getResponseDataAsString();
  52476. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  52477. }
  52478. return formKey;
  52479. }
  52480. formKey = vars.get("form_key_storage");
  52481. currentFormKey = getFormKeyFromResponse();
  52482. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  52483. vars.put("form_key_storage", currentFormKey);
  52484. }
  52485. </stringProp>
  52486. <stringProp name="scriptLanguage">javascript</stringProp>
  52487. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  52488. <hashTree/>
  52489. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  52490. <stringProp name="script">
  52491. formKey = vars.get("form_key_storage");
  52492. if (formKey
  52493. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  52494. &amp;&amp; sampler.getMethod() == "POST")
  52495. {
  52496. arguments = sampler.getArguments();
  52497. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  52498. {
  52499. argument = arguments.getArgument(i);
  52500. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  52501. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  52502. argument.setValue(formKey);
  52503. }
  52504. }
  52505. }
  52506. </stringProp>
  52507. <stringProp name="scriptLanguage">javascript</stringProp>
  52508. </JSR223PreProcessor>
  52509. <hashTree/>
  52510. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  52511. <collectionProp name="CookieManager.cookies"/>
  52512. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  52513. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  52514. <hashTree/>
  52515. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  52516. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  52517. </GenericController>
  52518. <hashTree>
  52519. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  52520. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  52521. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  52522. <hashTree>
  52523. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  52524. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  52525. <stringProp name="BeanShellSampler.query">
  52526. adminUser = "none";
  52527. adminUserList = props.get("adminUserList");
  52528. adminUserListIterator = props.get("adminUserListIterator");
  52529. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  52530. if (adminUsersDistribution == 1) {
  52531. adminUser = adminUserList.poll();
  52532. } else {
  52533. if (!adminUserListIterator.hasNext()) {
  52534. adminUserListIterator = adminUserList.descendingIterator();
  52535. }
  52536. adminUser = adminUserListIterator.next();
  52537. }
  52538. if (adminUser == "none") {
  52539. SampleResult.setResponseMessage("adminUser list is empty");
  52540. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  52541. IsSuccess=false;
  52542. SampleResult.setSuccessful(false);
  52543. SampleResult.setStopThread(true);
  52544. }
  52545. vars.put("admin_user", adminUser);
  52546. </stringProp>
  52547. <stringProp name="BeanShellSampler.filename"/>
  52548. <stringProp name="BeanShellSampler.parameters"/>
  52549. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  52550. </BeanShellSampler>
  52551. <hashTree/>
  52552. </hashTree>
  52553. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  52554. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52555. <collectionProp name="Arguments.arguments"/>
  52556. </elementProp>
  52557. <stringProp name="HTTPSampler.domain"/>
  52558. <stringProp name="HTTPSampler.port"/>
  52559. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52560. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52561. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52562. <stringProp name="HTTPSampler.contentEncoding"/>
  52563. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  52564. <stringProp name="HTTPSampler.method">GET</stringProp>
  52565. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52566. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52567. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52568. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52569. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52570. <stringProp name="HTTPSampler.embedded_url_re"/>
  52571. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  52572. <hashTree>
  52573. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  52574. <collectionProp name="Asserion.test_strings">
  52575. <stringProp name="-1397214398">Welcome</stringProp>
  52576. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  52577. </collectionProp>
  52578. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52579. <boolProp name="Assertion.assume_success">false</boolProp>
  52580. <intProp name="Assertion.test_type">2</intProp>
  52581. </ResponseAssertion>
  52582. <hashTree/>
  52583. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  52584. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  52585. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  52586. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  52587. <stringProp name="RegexExtractor.template">$1$</stringProp>
  52588. <stringProp name="RegexExtractor.default"/>
  52589. <stringProp name="RegexExtractor.match_number">1</stringProp>
  52590. </RegexExtractor>
  52591. <hashTree/>
  52592. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  52593. <collectionProp name="Asserion.test_strings">
  52594. <stringProp name="2845929">^.+$</stringProp>
  52595. </collectionProp>
  52596. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  52597. <boolProp name="Assertion.assume_success">false</boolProp>
  52598. <intProp name="Assertion.test_type">1</intProp>
  52599. <stringProp name="Assertion.scope">variable</stringProp>
  52600. <stringProp name="Scope.variable">admin_form_key</stringProp>
  52601. </ResponseAssertion>
  52602. <hashTree/>
  52603. </hashTree>
  52604. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  52605. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52606. <collectionProp name="Arguments.arguments">
  52607. <elementProp name="dummy" elementType="HTTPArgument">
  52608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52609. <stringProp name="Argument.value"/>
  52610. <stringProp name="Argument.metadata">=</stringProp>
  52611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52612. <stringProp name="Argument.name">dummy</stringProp>
  52613. </elementProp>
  52614. <elementProp name="form_key" elementType="HTTPArgument">
  52615. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52616. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  52617. <stringProp name="Argument.metadata">=</stringProp>
  52618. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52619. <stringProp name="Argument.name">form_key</stringProp>
  52620. </elementProp>
  52621. <elementProp name="login[password]" elementType="HTTPArgument">
  52622. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52623. <stringProp name="Argument.value">${admin_password}</stringProp>
  52624. <stringProp name="Argument.metadata">=</stringProp>
  52625. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52626. <stringProp name="Argument.name">login[password]</stringProp>
  52627. </elementProp>
  52628. <elementProp name="login[username]" elementType="HTTPArgument">
  52629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52630. <stringProp name="Argument.value">${admin_user}</stringProp>
  52631. <stringProp name="Argument.metadata">=</stringProp>
  52632. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52633. <stringProp name="Argument.name">login[username]</stringProp>
  52634. </elementProp>
  52635. </collectionProp>
  52636. </elementProp>
  52637. <stringProp name="HTTPSampler.domain"/>
  52638. <stringProp name="HTTPSampler.port"/>
  52639. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52640. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52641. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52642. <stringProp name="HTTPSampler.contentEncoding"/>
  52643. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  52644. <stringProp name="HTTPSampler.method">POST</stringProp>
  52645. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52646. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52647. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52648. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52649. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  52650. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52651. <stringProp name="HTTPSampler.embedded_url_re"/>
  52652. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  52653. </HTTPSamplerProxy>
  52654. <hashTree>
  52655. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  52656. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  52657. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  52658. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  52659. <stringProp name="RegexExtractor.template">$1$</stringProp>
  52660. <stringProp name="RegexExtractor.default"/>
  52661. <stringProp name="RegexExtractor.match_number">1</stringProp>
  52662. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  52663. <hashTree/>
  52664. </hashTree>
  52665. </hashTree>
  52666. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  52667. <stringProp name="script">
  52668. vars.put("gridEntityType" , "Customer");
  52669. pagesCount = parseInt(vars.get("customers_page_size")) || 20;
  52670. vars.put("grid_entity_page_size" , pagesCount);
  52671. vars.put("grid_namespace" , "customer_listing");
  52672. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text"));
  52673. vars.put("grid_filter_field", "name");
  52674. // set sort fields and sort directions
  52675. vars.put("grid_sort_field_1", "name");
  52676. vars.put("grid_sort_field_2", "group_id");
  52677. vars.put("grid_sort_field_3", "billing_country_id");
  52678. vars.put("grid_sort_order_1", "asc");
  52679. vars.put("grid_sort_order_2", "desc");
  52680. </stringProp>
  52681. <stringProp name="scriptLanguage">javascript</stringProp>
  52682. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_customers_grid/setup.jmx</stringProp></JSR223PostProcessor>
  52683. <hashTree/>
  52684. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  52685. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  52686. </GenericController>
  52687. <hashTree>
  52688. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  52689. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52690. <collectionProp name="Arguments.arguments">
  52691. <elementProp name="namespace" elementType="HTTPArgument">
  52692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52693. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  52694. <stringProp name="Argument.metadata">=</stringProp>
  52695. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52696. <stringProp name="Argument.name">namespace</stringProp>
  52697. <stringProp name="Argument.desc">true</stringProp>
  52698. </elementProp>
  52699. <elementProp name="search" elementType="HTTPArgument">
  52700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52701. <stringProp name="Argument.value"/>
  52702. <stringProp name="Argument.metadata">=</stringProp>
  52703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52704. <stringProp name="Argument.name">search</stringProp>
  52705. <stringProp name="Argument.desc">true</stringProp>
  52706. </elementProp>
  52707. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  52708. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52709. <stringProp name="Argument.value">true</stringProp>
  52710. <stringProp name="Argument.metadata">=</stringProp>
  52711. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52712. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  52713. <stringProp name="Argument.desc">true</stringProp>
  52714. </elementProp>
  52715. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  52716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52717. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  52718. <stringProp name="Argument.metadata">=</stringProp>
  52719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52720. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  52721. <stringProp name="Argument.desc">true</stringProp>
  52722. </elementProp>
  52723. <elementProp name="paging[current]" elementType="HTTPArgument">
  52724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52725. <stringProp name="Argument.value">1</stringProp>
  52726. <stringProp name="Argument.metadata">=</stringProp>
  52727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52728. <stringProp name="Argument.name">paging[current]</stringProp>
  52729. <stringProp name="Argument.desc">true</stringProp>
  52730. </elementProp>
  52731. <elementProp name="sorting[field]" elementType="HTTPArgument">
  52732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52733. <stringProp name="Argument.value">entity_id</stringProp>
  52734. <stringProp name="Argument.metadata">=</stringProp>
  52735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52736. <stringProp name="Argument.name">sorting[field]</stringProp>
  52737. <stringProp name="Argument.desc">true</stringProp>
  52738. </elementProp>
  52739. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  52740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52741. <stringProp name="Argument.value">asc</stringProp>
  52742. <stringProp name="Argument.metadata">=</stringProp>
  52743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52744. <stringProp name="Argument.name">sorting[direction]</stringProp>
  52745. <stringProp name="Argument.desc">true</stringProp>
  52746. </elementProp>
  52747. <elementProp name="isAjax" elementType="HTTPArgument">
  52748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52749. <stringProp name="Argument.value">true</stringProp>
  52750. <stringProp name="Argument.metadata">=</stringProp>
  52751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52752. <stringProp name="Argument.name">isAjax</stringProp>
  52753. <stringProp name="Argument.desc">true</stringProp>
  52754. </elementProp>
  52755. </collectionProp>
  52756. </elementProp>
  52757. <stringProp name="HTTPSampler.domain"/>
  52758. <stringProp name="HTTPSampler.port"/>
  52759. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52760. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52761. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52762. <stringProp name="HTTPSampler.contentEncoding"/>
  52763. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  52764. <stringProp name="HTTPSampler.method">GET</stringProp>
  52765. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52766. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52767. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52768. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52769. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52770. <stringProp name="HTTPSampler.embedded_url_re"/>
  52771. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  52772. <hashTree>
  52773. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  52774. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  52775. <stringProp name="EXPECTED_VALUE">0</stringProp>
  52776. <boolProp name="JSONVALIDATION">true</boolProp>
  52777. <boolProp name="EXPECT_NULL">false</boolProp>
  52778. <boolProp name="INVERT">true</boolProp>
  52779. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  52780. <hashTree/>
  52781. <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 total records" enabled="true">
  52782. <stringProp name="VAR">entity_total_records</stringProp>
  52783. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  52784. <stringProp name="DEFAULT"/>
  52785. <stringProp name="VARIABLE"/>
  52786. <stringProp name="SUBJECT">BODY</stringProp>
  52787. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  52788. <hashTree/>
  52789. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  52790. <stringProp name="cacheKey"/>
  52791. <stringProp name="filename"/>
  52792. <stringProp name="parameters"/>
  52793. <stringProp name="script">
  52794. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  52795. var totalsRecord = parseInt(vars.get("entity_total_records"));
  52796. var pageCount = Math.round(totalsRecord/pageSize);
  52797. vars.put("grid_pages_count", pageCount);
  52798. </stringProp>
  52799. <stringProp name="scriptLanguage">javascript</stringProp>
  52800. </JSR223PostProcessor>
  52801. <hashTree/>
  52802. </hashTree>
  52803. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  52804. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52805. <collectionProp name="Arguments.arguments">
  52806. <elementProp name="namespace" elementType="HTTPArgument">
  52807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52808. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  52809. <stringProp name="Argument.metadata">=</stringProp>
  52810. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52811. <stringProp name="Argument.name">namespace</stringProp>
  52812. <stringProp name="Argument.desc">true</stringProp>
  52813. </elementProp>
  52814. <elementProp name="search" elementType="HTTPArgument">
  52815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52816. <stringProp name="Argument.value"/>
  52817. <stringProp name="Argument.metadata">=</stringProp>
  52818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52819. <stringProp name="Argument.name">search</stringProp>
  52820. <stringProp name="Argument.desc">true</stringProp>
  52821. </elementProp>
  52822. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  52823. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52824. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  52825. <stringProp name="Argument.metadata">=</stringProp>
  52826. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52827. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  52828. <stringProp name="Argument.desc">true</stringProp>
  52829. </elementProp>
  52830. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  52831. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52832. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  52833. <stringProp name="Argument.metadata">=</stringProp>
  52834. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52835. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  52836. <stringProp name="Argument.desc">true</stringProp>
  52837. </elementProp>
  52838. <elementProp name="paging[current]" elementType="HTTPArgument">
  52839. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52840. <stringProp name="Argument.value">1</stringProp>
  52841. <stringProp name="Argument.metadata">=</stringProp>
  52842. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52843. <stringProp name="Argument.name">paging[current]</stringProp>
  52844. <stringProp name="Argument.desc">true</stringProp>
  52845. </elementProp>
  52846. <elementProp name="sorting[field]" elementType="HTTPArgument">
  52847. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52848. <stringProp name="Argument.value">entity_id</stringProp>
  52849. <stringProp name="Argument.metadata">=</stringProp>
  52850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52851. <stringProp name="Argument.name">sorting[field]</stringProp>
  52852. <stringProp name="Argument.desc">true</stringProp>
  52853. </elementProp>
  52854. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  52855. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52856. <stringProp name="Argument.value">asc</stringProp>
  52857. <stringProp name="Argument.metadata">=</stringProp>
  52858. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52859. <stringProp name="Argument.name">sorting[direction]</stringProp>
  52860. <stringProp name="Argument.desc">true</stringProp>
  52861. </elementProp>
  52862. <elementProp name="isAjax" elementType="HTTPArgument">
  52863. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52864. <stringProp name="Argument.value">true</stringProp>
  52865. <stringProp name="Argument.metadata">=</stringProp>
  52866. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52867. <stringProp name="Argument.name">isAjax</stringProp>
  52868. <stringProp name="Argument.desc">true</stringProp>
  52869. </elementProp>
  52870. </collectionProp>
  52871. </elementProp>
  52872. <stringProp name="HTTPSampler.domain"/>
  52873. <stringProp name="HTTPSampler.port"/>
  52874. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  52875. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  52876. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  52877. <stringProp name="HTTPSampler.contentEncoding"/>
  52878. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  52879. <stringProp name="HTTPSampler.method">GET</stringProp>
  52880. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  52881. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  52882. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  52883. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  52884. <boolProp name="HTTPSampler.monitor">false</boolProp>
  52885. <stringProp name="HTTPSampler.embedded_url_re"/>
  52886. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  52887. <hashTree>
  52888. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  52889. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  52890. <stringProp name="EXPECTED_VALUE">0</stringProp>
  52891. <boolProp name="JSONVALIDATION">true</boolProp>
  52892. <boolProp name="EXPECT_NULL">false</boolProp>
  52893. <boolProp name="INVERT">true</boolProp>
  52894. <boolProp name="ISREGEX">true</boolProp>
  52895. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  52896. <hashTree/>
  52897. <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 total records" enabled="true">
  52898. <stringProp name="VAR">entity_total_records</stringProp>
  52899. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  52900. <stringProp name="DEFAULT"/>
  52901. <stringProp name="VARIABLE"/>
  52902. <stringProp name="SUBJECT">BODY</stringProp>
  52903. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  52904. <hashTree/>
  52905. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  52906. <stringProp name="parameters"/>
  52907. <stringProp name="filename"/>
  52908. <stringProp name="script">
  52909. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  52910. var totalsRecord = parseInt(vars.get("entity_total_records"));
  52911. var pageCount = Math.round(totalsRecord/pageSize);
  52912. vars.put("grid_pages_count_filtered", pageCount);
  52913. </stringProp>
  52914. <stringProp name="scriptLanguage">javascript</stringProp>
  52915. </JSR223PostProcessor>
  52916. <hashTree/>
  52917. </hashTree>
  52918. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  52919. <stringProp name="CounterConfig.start">1</stringProp>
  52920. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  52921. <stringProp name="CounterConfig.incr">1</stringProp>
  52922. <stringProp name="CounterConfig.name">page_number</stringProp>
  52923. <stringProp name="CounterConfig.format"/>
  52924. <boolProp name="CounterConfig.per_user">true</boolProp>
  52925. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  52926. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  52927. <hashTree/>
  52928. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  52929. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  52930. <collectionProp name="Arguments.arguments">
  52931. <elementProp name="namespace" elementType="HTTPArgument">
  52932. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52933. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  52934. <stringProp name="Argument.metadata">=</stringProp>
  52935. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52936. <stringProp name="Argument.name">namespace</stringProp>
  52937. <stringProp name="Argument.desc">true</stringProp>
  52938. </elementProp>
  52939. <elementProp name="search" elementType="HTTPArgument">
  52940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52941. <stringProp name="Argument.value"/>
  52942. <stringProp name="Argument.metadata">=</stringProp>
  52943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52944. <stringProp name="Argument.name">search</stringProp>
  52945. <stringProp name="Argument.desc">true</stringProp>
  52946. </elementProp>
  52947. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  52948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52949. <stringProp name="Argument.value">true</stringProp>
  52950. <stringProp name="Argument.metadata">=</stringProp>
  52951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52952. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  52953. <stringProp name="Argument.desc">true</stringProp>
  52954. </elementProp>
  52955. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  52956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52957. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  52958. <stringProp name="Argument.metadata">=</stringProp>
  52959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52960. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  52961. <stringProp name="Argument.desc">true</stringProp>
  52962. </elementProp>
  52963. <elementProp name="paging[current]" elementType="HTTPArgument">
  52964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52965. <stringProp name="Argument.value">${page_number}</stringProp>
  52966. <stringProp name="Argument.metadata">=</stringProp>
  52967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52968. <stringProp name="Argument.name">paging[current]</stringProp>
  52969. <stringProp name="Argument.desc">true</stringProp>
  52970. </elementProp>
  52971. <elementProp name="sorting[field]" elementType="HTTPArgument">
  52972. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52973. <stringProp name="Argument.value">entity_id</stringProp>
  52974. <stringProp name="Argument.metadata">=</stringProp>
  52975. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52976. <stringProp name="Argument.name">sorting[field]</stringProp>
  52977. <stringProp name="Argument.desc">true</stringProp>
  52978. </elementProp>
  52979. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  52980. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52981. <stringProp name="Argument.value">asc</stringProp>
  52982. <stringProp name="Argument.metadata">=</stringProp>
  52983. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52984. <stringProp name="Argument.name">sorting[direction]</stringProp>
  52985. <stringProp name="Argument.desc">true</stringProp>
  52986. </elementProp>
  52987. <elementProp name="isAjax" elementType="HTTPArgument">
  52988. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  52989. <stringProp name="Argument.value">true</stringProp>
  52990. <stringProp name="Argument.metadata">=</stringProp>
  52991. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  52992. <stringProp name="Argument.name">isAjax</stringProp>
  52993. <stringProp name="Argument.desc">true</stringProp>
  52994. </elementProp>
  52995. </collectionProp>
  52996. </elementProp>
  52997. <stringProp name="HTTPSampler.domain"/>
  52998. <stringProp name="HTTPSampler.port"/>
  52999. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53000. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53001. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53002. <stringProp name="HTTPSampler.contentEncoding"/>
  53003. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  53004. <stringProp name="HTTPSampler.method">GET</stringProp>
  53005. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53006. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53007. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53008. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53009. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53010. <stringProp name="HTTPSampler.embedded_url_re"/>
  53011. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  53012. <hashTree>
  53013. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  53014. <collectionProp name="Asserion.test_strings">
  53015. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  53016. </collectionProp>
  53017. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  53018. <boolProp name="Assertion.assume_success">false</boolProp>
  53019. <intProp name="Assertion.test_type">2</intProp>
  53020. </ResponseAssertion>
  53021. <hashTree/>
  53022. </hashTree>
  53023. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  53024. <stringProp name="CounterConfig.start">1</stringProp>
  53025. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  53026. <stringProp name="CounterConfig.incr">1</stringProp>
  53027. <stringProp name="CounterConfig.name">page_number</stringProp>
  53028. <stringProp name="CounterConfig.format"/>
  53029. <boolProp name="CounterConfig.per_user">true</boolProp>
  53030. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  53031. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  53032. <hashTree/>
  53033. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  53034. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  53035. </TestFragmentController>
  53036. <hashTree>
  53037. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  53038. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  53039. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  53040. <boolProp name="ForeachController.useSeparator">true</boolProp>
  53041. <stringProp name="ForeachController.startIndex">0</stringProp>
  53042. <stringProp name="ForeachController.endIndex">3</stringProp>
  53043. </ForeachController>
  53044. <hashTree>
  53045. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  53046. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  53047. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  53048. <boolProp name="ForeachController.useSeparator">true</boolProp>
  53049. <stringProp name="ForeachController.startIndex">0</stringProp>
  53050. <stringProp name="ForeachController.endIndex">2</stringProp>
  53051. </ForeachController>
  53052. <hashTree>
  53053. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  53054. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53055. <collectionProp name="Arguments.arguments">
  53056. <elementProp name="namespace" elementType="HTTPArgument">
  53057. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53058. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  53059. <stringProp name="Argument.metadata">=</stringProp>
  53060. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53061. <stringProp name="Argument.name">namespace</stringProp>
  53062. <stringProp name="Argument.desc">false</stringProp>
  53063. </elementProp>
  53064. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  53065. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53066. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  53067. <stringProp name="Argument.metadata">=</stringProp>
  53068. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53069. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  53070. <stringProp name="Argument.desc">false</stringProp>
  53071. </elementProp>
  53072. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  53073. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53074. <stringProp name="Argument.value">true</stringProp>
  53075. <stringProp name="Argument.metadata">=</stringProp>
  53076. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53077. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  53078. <stringProp name="Argument.desc">false</stringProp>
  53079. </elementProp>
  53080. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  53081. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53082. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  53083. <stringProp name="Argument.metadata">=</stringProp>
  53084. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53085. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  53086. <stringProp name="Argument.desc">false</stringProp>
  53087. </elementProp>
  53088. <elementProp name="paging[current]" elementType="HTTPArgument">
  53089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53090. <stringProp name="Argument.value">${page_number}</stringProp>
  53091. <stringProp name="Argument.metadata">=</stringProp>
  53092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53093. <stringProp name="Argument.name">paging[current]</stringProp>
  53094. <stringProp name="Argument.desc">false</stringProp>
  53095. </elementProp>
  53096. <elementProp name="sorting[field]" elementType="HTTPArgument">
  53097. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53098. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  53099. <stringProp name="Argument.metadata">=</stringProp>
  53100. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53101. <stringProp name="Argument.name">sorting[field]</stringProp>
  53102. <stringProp name="Argument.desc">false</stringProp>
  53103. </elementProp>
  53104. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  53105. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53106. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  53107. <stringProp name="Argument.metadata">=</stringProp>
  53108. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53109. <stringProp name="Argument.name">sorting[direction]</stringProp>
  53110. <stringProp name="Argument.desc">false</stringProp>
  53111. </elementProp>
  53112. <elementProp name="isAjax" elementType="HTTPArgument">
  53113. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53114. <stringProp name="Argument.value">true</stringProp>
  53115. <stringProp name="Argument.metadata">=</stringProp>
  53116. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53117. <stringProp name="Argument.name">isAjax</stringProp>
  53118. <stringProp name="Argument.desc">false</stringProp>
  53119. </elementProp>
  53120. </collectionProp>
  53121. </elementProp>
  53122. <stringProp name="HTTPSampler.domain"/>
  53123. <stringProp name="HTTPSampler.port"/>
  53124. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53125. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53126. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53127. <stringProp name="HTTPSampler.contentEncoding"/>
  53128. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  53129. <stringProp name="HTTPSampler.method">GET</stringProp>
  53130. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53131. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53132. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53133. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53134. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53135. <stringProp name="HTTPSampler.embedded_url_re"/>
  53136. </HTTPSamplerProxy>
  53137. <hashTree>
  53138. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  53139. <collectionProp name="Asserion.test_strings">
  53140. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  53141. </collectionProp>
  53142. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  53143. <boolProp name="Assertion.assume_success">false</boolProp>
  53144. <intProp name="Assertion.test_type">2</intProp>
  53145. </ResponseAssertion>
  53146. <hashTree/>
  53147. </hashTree>
  53148. </hashTree>
  53149. </hashTree>
  53150. </hashTree>
  53151. </hashTree>
  53152. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  53153. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53154. <collectionProp name="Arguments.arguments"/>
  53155. </elementProp>
  53156. <stringProp name="HTTPSampler.domain"/>
  53157. <stringProp name="HTTPSampler.port"/>
  53158. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53159. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53160. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53161. <stringProp name="HTTPSampler.contentEncoding"/>
  53162. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  53163. <stringProp name="HTTPSampler.method">GET</stringProp>
  53164. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53165. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53166. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53167. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53168. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53169. <stringProp name="HTTPSampler.embedded_url_re"/>
  53170. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  53171. <hashTree>
  53172. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  53173. <boolProp name="resetInterpreter">false</boolProp>
  53174. <stringProp name="parameters"/>
  53175. <stringProp name="filename"/>
  53176. <stringProp name="script">
  53177. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  53178. if (adminUsersDistribution == 1) {
  53179. adminUserList = props.get("adminUserList");
  53180. adminUserList.add(vars.get("admin_user"));
  53181. }
  53182. </stringProp>
  53183. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  53184. <hashTree/>
  53185. </hashTree>
  53186. </hashTree>
  53187. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Create Order" enabled="true">
  53188. <intProp name="ThroughputController.style">1</intProp>
  53189. <boolProp name="ThroughputController.perThread">false</boolProp>
  53190. <intProp name="ThroughputController.maxThroughput">1</intProp>
  53191. <stringProp name="ThroughputController.percentThroughput">${cAdminCreateOrderPercentage}</stringProp>
  53192. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  53193. <hashTree>
  53194. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  53195. <stringProp name="script">
  53196. var tmpLabel = vars.get("testLabel")
  53197. if (tmpLabel) {
  53198. var testLabel = " (" + tmpLabel + ")"
  53199. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  53200. if (sampler.getName().indexOf(testLabel) == -1) {
  53201. sampler.setName(sampler.getName() + testLabel);
  53202. }
  53203. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  53204. sampler.setName("SetUp - " + sampler.getName());
  53205. }
  53206. } else {
  53207. testLabel = ""
  53208. }
  53209. </stringProp>
  53210. <stringProp name="scriptLanguage">javascript</stringProp>
  53211. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  53212. <hashTree/>
  53213. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  53214. <stringProp name="BeanShellSampler.query">
  53215. vars.put("testLabel", "[C] Admin Create Order");
  53216. </stringProp>
  53217. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  53218. </BeanShellSampler>
  53219. <hashTree/>
  53220. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  53221. <stringProp name="script">
  53222. function getFormKeyFromResponse()
  53223. {
  53224. var url = prev.getUrlAsString(),
  53225. responseCode = prev.getResponseCode(),
  53226. formKey = null;
  53227. searchPattern = /var FORM_KEY = '(.+)'/;
  53228. if (responseCode == "200" &amp;&amp; url) {
  53229. response = prev.getResponseDataAsString();
  53230. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  53231. }
  53232. return formKey;
  53233. }
  53234. formKey = vars.get("form_key_storage");
  53235. currentFormKey = getFormKeyFromResponse();
  53236. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  53237. vars.put("form_key_storage", currentFormKey);
  53238. }
  53239. </stringProp>
  53240. <stringProp name="scriptLanguage">javascript</stringProp>
  53241. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  53242. <hashTree/>
  53243. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  53244. <stringProp name="script">
  53245. formKey = vars.get("form_key_storage");
  53246. if (formKey
  53247. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  53248. &amp;&amp; sampler.getMethod() == "POST")
  53249. {
  53250. arguments = sampler.getArguments();
  53251. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  53252. {
  53253. argument = arguments.getArgument(i);
  53254. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  53255. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  53256. argument.setValue(formKey);
  53257. }
  53258. }
  53259. }
  53260. </stringProp>
  53261. <stringProp name="scriptLanguage">javascript</stringProp>
  53262. </JSR223PreProcessor>
  53263. <hashTree/>
  53264. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  53265. <collectionProp name="CookieManager.cookies"/>
  53266. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  53267. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  53268. <hashTree/>
  53269. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  53270. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  53271. </GenericController>
  53272. <hashTree>
  53273. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  53274. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  53275. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  53276. <hashTree>
  53277. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  53278. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  53279. <stringProp name="BeanShellSampler.query">
  53280. adminUser = "none";
  53281. adminUserList = props.get("adminUserList");
  53282. adminUserListIterator = props.get("adminUserListIterator");
  53283. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  53284. if (adminUsersDistribution == 1) {
  53285. adminUser = adminUserList.poll();
  53286. } else {
  53287. if (!adminUserListIterator.hasNext()) {
  53288. adminUserListIterator = adminUserList.descendingIterator();
  53289. }
  53290. adminUser = adminUserListIterator.next();
  53291. }
  53292. if (adminUser == "none") {
  53293. SampleResult.setResponseMessage("adminUser list is empty");
  53294. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  53295. IsSuccess=false;
  53296. SampleResult.setSuccessful(false);
  53297. SampleResult.setStopThread(true);
  53298. }
  53299. vars.put("admin_user", adminUser);
  53300. </stringProp>
  53301. <stringProp name="BeanShellSampler.filename"/>
  53302. <stringProp name="BeanShellSampler.parameters"/>
  53303. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  53304. </BeanShellSampler>
  53305. <hashTree/>
  53306. </hashTree>
  53307. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  53308. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53309. <collectionProp name="Arguments.arguments"/>
  53310. </elementProp>
  53311. <stringProp name="HTTPSampler.domain"/>
  53312. <stringProp name="HTTPSampler.port"/>
  53313. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53314. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53315. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53316. <stringProp name="HTTPSampler.contentEncoding"/>
  53317. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  53318. <stringProp name="HTTPSampler.method">GET</stringProp>
  53319. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53320. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53321. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53322. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53323. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53324. <stringProp name="HTTPSampler.embedded_url_re"/>
  53325. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  53326. <hashTree>
  53327. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  53328. <collectionProp name="Asserion.test_strings">
  53329. <stringProp name="-1397214398">Welcome</stringProp>
  53330. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  53331. </collectionProp>
  53332. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  53333. <boolProp name="Assertion.assume_success">false</boolProp>
  53334. <intProp name="Assertion.test_type">2</intProp>
  53335. </ResponseAssertion>
  53336. <hashTree/>
  53337. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  53338. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  53339. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  53340. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  53341. <stringProp name="RegexExtractor.template">$1$</stringProp>
  53342. <stringProp name="RegexExtractor.default"/>
  53343. <stringProp name="RegexExtractor.match_number">1</stringProp>
  53344. </RegexExtractor>
  53345. <hashTree/>
  53346. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  53347. <collectionProp name="Asserion.test_strings">
  53348. <stringProp name="2845929">^.+$</stringProp>
  53349. </collectionProp>
  53350. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  53351. <boolProp name="Assertion.assume_success">false</boolProp>
  53352. <intProp name="Assertion.test_type">1</intProp>
  53353. <stringProp name="Assertion.scope">variable</stringProp>
  53354. <stringProp name="Scope.variable">admin_form_key</stringProp>
  53355. </ResponseAssertion>
  53356. <hashTree/>
  53357. </hashTree>
  53358. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  53359. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53360. <collectionProp name="Arguments.arguments">
  53361. <elementProp name="dummy" elementType="HTTPArgument">
  53362. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53363. <stringProp name="Argument.value"/>
  53364. <stringProp name="Argument.metadata">=</stringProp>
  53365. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53366. <stringProp name="Argument.name">dummy</stringProp>
  53367. </elementProp>
  53368. <elementProp name="form_key" elementType="HTTPArgument">
  53369. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53370. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  53371. <stringProp name="Argument.metadata">=</stringProp>
  53372. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53373. <stringProp name="Argument.name">form_key</stringProp>
  53374. </elementProp>
  53375. <elementProp name="login[password]" elementType="HTTPArgument">
  53376. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53377. <stringProp name="Argument.value">${admin_password}</stringProp>
  53378. <stringProp name="Argument.metadata">=</stringProp>
  53379. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53380. <stringProp name="Argument.name">login[password]</stringProp>
  53381. </elementProp>
  53382. <elementProp name="login[username]" elementType="HTTPArgument">
  53383. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53384. <stringProp name="Argument.value">${admin_user}</stringProp>
  53385. <stringProp name="Argument.metadata">=</stringProp>
  53386. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53387. <stringProp name="Argument.name">login[username]</stringProp>
  53388. </elementProp>
  53389. </collectionProp>
  53390. </elementProp>
  53391. <stringProp name="HTTPSampler.domain"/>
  53392. <stringProp name="HTTPSampler.port"/>
  53393. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53394. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53395. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53396. <stringProp name="HTTPSampler.contentEncoding"/>
  53397. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  53398. <stringProp name="HTTPSampler.method">POST</stringProp>
  53399. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53400. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53401. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53402. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53403. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  53404. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53405. <stringProp name="HTTPSampler.embedded_url_re"/>
  53406. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  53407. </HTTPSamplerProxy>
  53408. <hashTree>
  53409. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  53410. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  53411. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  53412. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  53413. <stringProp name="RegexExtractor.template">$1$</stringProp>
  53414. <stringProp name="RegexExtractor.default"/>
  53415. <stringProp name="RegexExtractor.match_number">1</stringProp>
  53416. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  53417. <hashTree/>
  53418. </hashTree>
  53419. </hashTree>
  53420. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  53421. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  53422. </GenericController>
  53423. <hashTree>
  53424. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  53425. <stringProp name="scriptLanguage">javascript</stringProp>
  53426. <stringProp name="parameters"/>
  53427. <stringProp name="filename"/>
  53428. <stringProp name="cacheKey"/>
  53429. <stringProp name="script">
  53430. vars.put("alabama_region_id", props.get("alabama_region_id"));
  53431. vars.put("california_region_id", props.get("california_region_id"));
  53432. </stringProp>
  53433. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  53434. <hashTree/>
  53435. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Order" enabled="true"/>
  53436. <hashTree>
  53437. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  53438. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_order/admin_create_order.jmx</stringProp>
  53439. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  53440. import java.util.Random;
  53441. Random random = new Random();
  53442. if (${seedForRandom} &gt; 0) {
  53443. random.setSeed(${seedForRandom});
  53444. }
  53445. number = random.nextInt(props.get("configurable_products_list").size());
  53446. configurableList = props.get("configurable_products_list").get(number);
  53447. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  53448. vars.put("configurable_product_1_name", configurableList.get("title"));
  53449. vars.put("configurable_product_1_id", configurableList.get("id"));
  53450. vars.put("configurable_product_1_sku", configurableList.get("sku"));
  53451. vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
  53452. vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
  53453. number = random.nextInt(props.get("simple_products_list").size());
  53454. simpleList = props.get("simple_products_list").get(number);
  53455. vars.put("simple_product_1_url_key", simpleList.get("url_key"));
  53456. vars.put("simple_product_1_name", simpleList.get("title"));
  53457. vars.put("simple_product_1_id", simpleList.get("id"));
  53458. number1 = random.nextInt(props.get("configurable_products_list").size());
  53459. do {
  53460. number1 = random.nextInt(props.get("simple_products_list").size());
  53461. } while(number == number1);
  53462. simpleList = props.get("simple_products_list").get(number1);
  53463. vars.put("simple_product_2_url_key", simpleList.get("url_key"));
  53464. vars.put("simple_product_2_name", simpleList.get("title"));
  53465. vars.put("simple_product_2_id", simpleList.get("id"));
  53466. customers_index = 0;
  53467. if (!props.containsKey("customer_ids_index")) {
  53468. props.put("customer_ids_index", customers_index);
  53469. }
  53470. try {
  53471. customers_index = props.get("customer_ids_index");
  53472. customers_list = props.get("customer_ids_list");
  53473. if (customers_index == customers_list.size()) {
  53474. customers_index=0;
  53475. }
  53476. vars.put("customer_id", customers_list.get(customers_index));
  53477. props.put("customer_ids_index", ++customers_index);
  53478. }
  53479. catch (java.lang.Exception e) {
  53480. log.error("Caught Exception in 'Admin Create Order' thread.");
  53481. SampleResult.setStopThread(true);
  53482. }</stringProp>
  53483. <stringProp name="BeanShellSampler.filename"/>
  53484. <stringProp name="BeanShellSampler.parameters"/>
  53485. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  53486. </BeanShellSampler>
  53487. <hashTree/>
  53488. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Start Order" enabled="true">
  53489. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53490. <collectionProp name="Arguments.arguments"/>
  53491. </elementProp>
  53492. <stringProp name="HTTPSampler.domain"/>
  53493. <stringProp name="HTTPSampler.port"/>
  53494. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53495. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53496. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53497. <stringProp name="HTTPSampler.contentEncoding"/>
  53498. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/start/</stringProp>
  53499. <stringProp name="HTTPSampler.method">GET</stringProp>
  53500. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53501. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53502. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53503. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53504. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53505. <stringProp name="HTTPSampler.embedded_url_re"/>
  53506. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  53507. </HTTPSamplerProxy>
  53508. <hashTree/>
  53509. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Configurable Product Options" enabled="true"/>
  53510. <hashTree>
  53511. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  53512. <collectionProp name="HeaderManager.headers">
  53513. <elementProp name="" elementType="Header">
  53514. <stringProp name="Header.name">Content-Type</stringProp>
  53515. <stringProp name="Header.value">application/json</stringProp>
  53516. </elementProp>
  53517. <elementProp name="" elementType="Header">
  53518. <stringProp name="Header.name">Accept</stringProp>
  53519. <stringProp name="Header.value">*/*</stringProp>
  53520. </elementProp>
  53521. </collectionProp>
  53522. </HeaderManager>
  53523. <hashTree/>
  53524. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  53525. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  53526. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  53527. <collectionProp name="Arguments.arguments">
  53528. <elementProp name="" elementType="HTTPArgument">
  53529. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  53530. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  53531. <stringProp name="Argument.metadata">=</stringProp>
  53532. </elementProp>
  53533. </collectionProp>
  53534. </elementProp>
  53535. <stringProp name="HTTPSampler.domain"/>
  53536. <stringProp name="HTTPSampler.port"/>
  53537. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53538. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53539. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53540. <stringProp name="HTTPSampler.contentEncoding"/>
  53541. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  53542. <stringProp name="HTTPSampler.method">POST</stringProp>
  53543. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53544. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53545. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53546. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53547. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53548. <stringProp name="HTTPSampler.embedded_url_re"/>
  53549. </HTTPSamplerProxy>
  53550. <hashTree>
  53551. <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">
  53552. <stringProp name="VAR">admin_token</stringProp>
  53553. <stringProp name="JSONPATH">$</stringProp>
  53554. <stringProp name="DEFAULT"/>
  53555. <stringProp name="VARIABLE"/>
  53556. <stringProp name="SUBJECT">BODY</stringProp>
  53557. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  53558. <hashTree/>
  53559. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  53560. <collectionProp name="Asserion.test_strings">
  53561. <stringProp name="484395188">^.{10,}$</stringProp>
  53562. </collectionProp>
  53563. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  53564. <boolProp name="Assertion.assume_success">false</boolProp>
  53565. <intProp name="Assertion.test_type">1</intProp>
  53566. <stringProp name="Assertion.scope">variable</stringProp>
  53567. <stringProp name="Scope.variable">admin_token</stringProp>
  53568. </ResponseAssertion>
  53569. <hashTree/>
  53570. </hashTree>
  53571. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  53572. <collectionProp name="HeaderManager.headers">
  53573. <elementProp name="" elementType="Header">
  53574. <stringProp name="Header.name">Authorization</stringProp>
  53575. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  53576. </elementProp>
  53577. </collectionProp>
  53578. </HeaderManager>
  53579. <hashTree/>
  53580. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Configurable Product Options" enabled="true">
  53581. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53582. <collectionProp name="Arguments.arguments"/>
  53583. </elementProp>
  53584. <stringProp name="HTTPSampler.domain"/>
  53585. <stringProp name="HTTPSampler.port"/>
  53586. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53587. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53588. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53589. <stringProp name="HTTPSampler.contentEncoding"/>
  53590. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all</stringProp>
  53591. <stringProp name="HTTPSampler.method">GET</stringProp>
  53592. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53593. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53594. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53595. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53596. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53597. <stringProp name="HTTPSampler.embedded_url_re"/>
  53598. </HTTPSamplerProxy>
  53599. <hashTree>
  53600. <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">
  53601. <stringProp name="VAR">attribute_ids</stringProp>
  53602. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  53603. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  53604. <stringProp name="VARIABLE"/>
  53605. <stringProp name="SUBJECT">BODY</stringProp>
  53606. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  53607. <hashTree/>
  53608. <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">
  53609. <stringProp name="VAR">option_values</stringProp>
  53610. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  53611. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  53612. <stringProp name="VARIABLE"/>
  53613. <stringProp name="SUBJECT">BODY</stringProp>
  53614. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  53615. <hashTree/>
  53616. </hashTree>
  53617. </hashTree>
  53618. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Products" enabled="true">
  53619. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53620. <collectionProp name="Arguments.arguments">
  53621. <elementProp name="item[${simple_product_1_id}][qty]" elementType="HTTPArgument">
  53622. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53623. <stringProp name="Argument.name">item[${simple_product_1_id}][qty]</stringProp>
  53624. <stringProp name="Argument.value">1</stringProp>
  53625. <stringProp name="Argument.metadata">=</stringProp>
  53626. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53627. </elementProp>
  53628. <elementProp name="item[${simple_product_2_id}][qty]" elementType="HTTPArgument">
  53629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53630. <stringProp name="Argument.name">item[${simple_product_2_id}][qty]</stringProp>
  53631. <stringProp name="Argument.value">1</stringProp>
  53632. <stringProp name="Argument.metadata">=</stringProp>
  53633. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53634. </elementProp>
  53635. <elementProp name="item[${configurable_product_1_id}][qty]" elementType="HTTPArgument">
  53636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53637. <stringProp name="Argument.name">item[${configurable_product_1_id}][qty]</stringProp>
  53638. <stringProp name="Argument.value">1</stringProp>
  53639. <stringProp name="Argument.metadata">=</stringProp>
  53640. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53641. </elementProp>
  53642. <elementProp name="customer_id" elementType="HTTPArgument">
  53643. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53644. <stringProp name="Argument.name">customer_id</stringProp>
  53645. <stringProp name="Argument.value">${customer_id}</stringProp>
  53646. <stringProp name="Argument.metadata">=</stringProp>
  53647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53648. </elementProp>
  53649. <elementProp name="store_id" elementType="HTTPArgument">
  53650. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53651. <stringProp name="Argument.name">store_id</stringProp>
  53652. <stringProp name="Argument.value">1</stringProp>
  53653. <stringProp name="Argument.metadata">=</stringProp>
  53654. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53655. </elementProp>
  53656. <elementProp name="currency_id" elementType="HTTPArgument">
  53657. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53658. <stringProp name="Argument.name">currency_id</stringProp>
  53659. <stringProp name="Argument.value"/>
  53660. <stringProp name="Argument.metadata">=</stringProp>
  53661. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53662. </elementProp>
  53663. <elementProp name="form_key" elementType="HTTPArgument">
  53664. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53665. <stringProp name="Argument.name">form_key</stringProp>
  53666. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  53667. <stringProp name="Argument.metadata">=</stringProp>
  53668. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53669. </elementProp>
  53670. <elementProp name="payment[method]" elementType="HTTPArgument">
  53671. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53672. <stringProp name="Argument.name">payment[method]</stringProp>
  53673. <stringProp name="Argument.value">checkmo</stringProp>
  53674. <stringProp name="Argument.metadata">=</stringProp>
  53675. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53676. </elementProp>
  53677. <elementProp name="reset_shipping" elementType="HTTPArgument">
  53678. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53679. <stringProp name="Argument.name">reset_shipping</stringProp>
  53680. <stringProp name="Argument.value">1</stringProp>
  53681. <stringProp name="Argument.metadata">=</stringProp>
  53682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53683. </elementProp>
  53684. <elementProp name="json" elementType="HTTPArgument">
  53685. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53686. <stringProp name="Argument.name">json</stringProp>
  53687. <stringProp name="Argument.value">1</stringProp>
  53688. <stringProp name="Argument.metadata">=</stringProp>
  53689. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53690. </elementProp>
  53691. <elementProp name="as_js_varname" elementType="HTTPArgument">
  53692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53693. <stringProp name="Argument.name">as_js_varname</stringProp>
  53694. <stringProp name="Argument.value">iFrameResponse</stringProp>
  53695. <stringProp name="Argument.metadata">=</stringProp>
  53696. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53697. </elementProp>
  53698. <elementProp name="form_key" elementType="HTTPArgument">
  53699. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53700. <stringProp name="Argument.name">form_key</stringProp>
  53701. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  53702. <stringProp name="Argument.metadata">=</stringProp>
  53703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53704. </elementProp>
  53705. </collectionProp>
  53706. </elementProp>
  53707. <stringProp name="HTTPSampler.domain"/>
  53708. <stringProp name="HTTPSampler.port"/>
  53709. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53710. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53711. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53712. <stringProp name="HTTPSampler.contentEncoding"/>
  53713. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true</stringProp>
  53714. <stringProp name="HTTPSampler.method">POST</stringProp>
  53715. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53716. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53717. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53718. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53719. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53720. <stringProp name="HTTPSampler.embedded_url_re"/>
  53721. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  53722. </HTTPSamplerProxy>
  53723. <hashTree>
  53724. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  53725. <boolProp name="resetInterpreter">false</boolProp>
  53726. <stringProp name="parameters"/>
  53727. <stringProp name="filename"/>
  53728. <stringProp name="script">try {
  53729. attribute_ids = vars.get("attribute_ids");
  53730. option_values = vars.get("option_values");
  53731. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  53732. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  53733. attribute_ids_array = attribute_ids.split(",");
  53734. option_values_array = option_values.split(",");
  53735. args = ctx.getCurrentSampler().getArguments();
  53736. it = args.iterator();
  53737. while (it.hasNext()) {
  53738. argument = it.next();
  53739. if (argument.getStringValue().contains("${")) {
  53740. args.removeArgument(argument.getName());
  53741. }
  53742. }
  53743. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  53744. ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]);
  53745. }
  53746. } catch (Exception e) {
  53747. log.error("error???", e);
  53748. }</stringProp>
  53749. </BeanShellPreProcessor>
  53750. <hashTree/>
  53751. </hashTree>
  53752. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Collect Shipping Rates" enabled="true">
  53753. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53754. <collectionProp name="Arguments.arguments">
  53755. <elementProp name="collect_shipping_rates" elementType="HTTPArgument">
  53756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53757. <stringProp name="Argument.name">collect_shipping_rates</stringProp>
  53758. <stringProp name="Argument.value">1</stringProp>
  53759. <stringProp name="Argument.metadata">=</stringProp>
  53760. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53761. </elementProp>
  53762. <elementProp name="customer_id" elementType="HTTPArgument">
  53763. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53764. <stringProp name="Argument.name">customer_id</stringProp>
  53765. <stringProp name="Argument.value">${customer_id}</stringProp>
  53766. <stringProp name="Argument.metadata">=</stringProp>
  53767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53768. </elementProp>
  53769. <elementProp name="store_id" elementType="HTTPArgument">
  53770. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53771. <stringProp name="Argument.name">store_id</stringProp>
  53772. <stringProp name="Argument.value">1</stringProp>
  53773. <stringProp name="Argument.metadata">=</stringProp>
  53774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53775. </elementProp>
  53776. <elementProp name="currency_id" elementType="HTTPArgument">
  53777. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53778. <stringProp name="Argument.name">currency_id</stringProp>
  53779. <stringProp name="Argument.value">false</stringProp>
  53780. <stringProp name="Argument.metadata">=</stringProp>
  53781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53782. </elementProp>
  53783. <elementProp name="form_key" elementType="HTTPArgument">
  53784. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53785. <stringProp name="Argument.name">form_key</stringProp>
  53786. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  53787. <stringProp name="Argument.metadata">=</stringProp>
  53788. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53789. </elementProp>
  53790. <elementProp name="payment[method]" elementType="HTTPArgument">
  53791. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53792. <stringProp name="Argument.name">payment[method]</stringProp>
  53793. <stringProp name="Argument.value">checkmo</stringProp>
  53794. <stringProp name="Argument.metadata">=</stringProp>
  53795. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53796. </elementProp>
  53797. <elementProp name="json" elementType="HTTPArgument">
  53798. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53799. <stringProp name="Argument.name">json</stringProp>
  53800. <stringProp name="Argument.value">true</stringProp>
  53801. <stringProp name="Argument.metadata">=</stringProp>
  53802. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53803. </elementProp>
  53804. </collectionProp>
  53805. </elementProp>
  53806. <stringProp name="HTTPSampler.domain"/>
  53807. <stringProp name="HTTPSampler.port"/>
  53808. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53809. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53810. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53811. <stringProp name="HTTPSampler.contentEncoding"/>
  53812. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true</stringProp>
  53813. <stringProp name="HTTPSampler.method">POST</stringProp>
  53814. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53815. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53816. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53817. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53818. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53819. <stringProp name="HTTPSampler.embedded_url_re"/>
  53820. </HTTPSamplerProxy>
  53821. <hashTree>
  53822. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipping Method" enabled="true">
  53823. <collectionProp name="Asserion.test_strings">
  53824. <stringProp name="-1987784558">shipping_method</stringProp>
  53825. <stringProp name="818779431">Flat Rate</stringProp>
  53826. </collectionProp>
  53827. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  53828. <boolProp name="Assertion.assume_success">false</boolProp>
  53829. <intProp name="Assertion.test_type">2</intProp>
  53830. </ResponseAssertion>
  53831. <hashTree/>
  53832. </hashTree>
  53833. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filled Order Page" enabled="true">
  53834. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53835. <collectionProp name="Arguments.arguments"/>
  53836. </elementProp>
  53837. <stringProp name="HTTPSampler.domain"/>
  53838. <stringProp name="HTTPSampler.port"/>
  53839. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  53840. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  53841. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  53842. <stringProp name="HTTPSampler.contentEncoding"/>
  53843. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/index/</stringProp>
  53844. <stringProp name="HTTPSampler.method">GET</stringProp>
  53845. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  53846. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  53847. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  53848. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  53849. <boolProp name="HTTPSampler.monitor">false</boolProp>
  53850. <stringProp name="HTTPSampler.embedded_url_re"/>
  53851. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  53852. </HTTPSamplerProxy>
  53853. <hashTree>
  53854. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Filled Order Page" enabled="true">
  53855. <collectionProp name="Asserion.test_strings">
  53856. <stringProp name="-37823069">Select from existing customer addresses</stringProp>
  53857. <stringProp name="-13185722">Submit Order</stringProp>
  53858. <stringProp name="-209419315">Items Ordered</stringProp>
  53859. </collectionProp>
  53860. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  53861. <boolProp name="Assertion.assume_success">false</boolProp>
  53862. <intProp name="Assertion.test_type">2</intProp>
  53863. </ResponseAssertion>
  53864. <hashTree/>
  53865. </hashTree>
  53866. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Order" enabled="true">
  53867. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  53868. <collectionProp name="Arguments.arguments">
  53869. <elementProp name="form_key" elementType="HTTPArgument">
  53870. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53871. <stringProp name="Argument.name">form_key</stringProp>
  53872. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  53873. <stringProp name="Argument.metadata">=</stringProp>
  53874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53875. </elementProp>
  53876. <elementProp name="limit" elementType="HTTPArgument">
  53877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53878. <stringProp name="Argument.name">limit</stringProp>
  53879. <stringProp name="Argument.value">20</stringProp>
  53880. <stringProp name="Argument.metadata">=</stringProp>
  53881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53882. </elementProp>
  53883. <elementProp name="entity_id" elementType="HTTPArgument">
  53884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53885. <stringProp name="Argument.name">entity_id</stringProp>
  53886. <stringProp name="Argument.value"/>
  53887. <stringProp name="Argument.metadata">=</stringProp>
  53888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53889. </elementProp>
  53890. <elementProp name="name" elementType="HTTPArgument">
  53891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53892. <stringProp name="Argument.name">name</stringProp>
  53893. <stringProp name="Argument.value"/>
  53894. <stringProp name="Argument.metadata">=</stringProp>
  53895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53896. </elementProp>
  53897. <elementProp name="email" elementType="HTTPArgument">
  53898. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53899. <stringProp name="Argument.name">email</stringProp>
  53900. <stringProp name="Argument.value"/>
  53901. <stringProp name="Argument.metadata">=</stringProp>
  53902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53903. </elementProp>
  53904. <elementProp name="Telephone" elementType="HTTPArgument">
  53905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53906. <stringProp name="Argument.name">Telephone</stringProp>
  53907. <stringProp name="Argument.value"/>
  53908. <stringProp name="Argument.metadata">=</stringProp>
  53909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53910. </elementProp>
  53911. <elementProp name="billing_postcode" elementType="HTTPArgument">
  53912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53913. <stringProp name="Argument.name">billing_postcode</stringProp>
  53914. <stringProp name="Argument.value"/>
  53915. <stringProp name="Argument.metadata">=</stringProp>
  53916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53917. </elementProp>
  53918. <elementProp name="billing_country_id" elementType="HTTPArgument">
  53919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53920. <stringProp name="Argument.name">billing_country_id</stringProp>
  53921. <stringProp name="Argument.value"/>
  53922. <stringProp name="Argument.metadata">=</stringProp>
  53923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53924. </elementProp>
  53925. <elementProp name="billing_regione" elementType="HTTPArgument">
  53926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53927. <stringProp name="Argument.name">billing_regione</stringProp>
  53928. <stringProp name="Argument.value"/>
  53929. <stringProp name="Argument.metadata">=</stringProp>
  53930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53931. </elementProp>
  53932. <elementProp name="store_name" elementType="HTTPArgument">
  53933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53934. <stringProp name="Argument.name">store_name</stringProp>
  53935. <stringProp name="Argument.value"/>
  53936. <stringProp name="Argument.metadata">=</stringProp>
  53937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53938. </elementProp>
  53939. <elementProp name="page" elementType="HTTPArgument">
  53940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53941. <stringProp name="Argument.name">page</stringProp>
  53942. <stringProp name="Argument.value">1</stringProp>
  53943. <stringProp name="Argument.metadata">=</stringProp>
  53944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53945. </elementProp>
  53946. <elementProp name="order[currency]" elementType="HTTPArgument">
  53947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53948. <stringProp name="Argument.name">order[currency]</stringProp>
  53949. <stringProp name="Argument.value">USD</stringProp>
  53950. <stringProp name="Argument.metadata">=</stringProp>
  53951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53952. </elementProp>
  53953. <elementProp name="sku" elementType="HTTPArgument">
  53954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53955. <stringProp name="Argument.name">sku</stringProp>
  53956. <stringProp name="Argument.value"/>
  53957. <stringProp name="Argument.metadata">=</stringProp>
  53958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53959. </elementProp>
  53960. <elementProp name="qty" elementType="HTTPArgument">
  53961. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53962. <stringProp name="Argument.name">qty</stringProp>
  53963. <stringProp name="Argument.value"/>
  53964. <stringProp name="Argument.metadata">=</stringProp>
  53965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53966. </elementProp>
  53967. <elementProp name="limit" elementType="HTTPArgument">
  53968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53969. <stringProp name="Argument.name">limit</stringProp>
  53970. <stringProp name="Argument.value">20</stringProp>
  53971. <stringProp name="Argument.metadata">=</stringProp>
  53972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53973. </elementProp>
  53974. <elementProp name="entity_id" elementType="HTTPArgument">
  53975. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53976. <stringProp name="Argument.name">entity_id</stringProp>
  53977. <stringProp name="Argument.value"/>
  53978. <stringProp name="Argument.metadata">=</stringProp>
  53979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53980. </elementProp>
  53981. <elementProp name="name" elementType="HTTPArgument">
  53982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53983. <stringProp name="Argument.name">name</stringProp>
  53984. <stringProp name="Argument.value"/>
  53985. <stringProp name="Argument.metadata">=</stringProp>
  53986. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53987. </elementProp>
  53988. <elementProp name="sku" elementType="HTTPArgument">
  53989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53990. <stringProp name="Argument.name">sku</stringProp>
  53991. <stringProp name="Argument.value"/>
  53992. <stringProp name="Argument.metadata">=</stringProp>
  53993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  53994. </elementProp>
  53995. <elementProp name="price[from]" elementType="HTTPArgument">
  53996. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  53997. <stringProp name="Argument.name">price[from]</stringProp>
  53998. <stringProp name="Argument.value"/>
  53999. <stringProp name="Argument.metadata">=</stringProp>
  54000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54001. </elementProp>
  54002. <elementProp name="price[to]" elementType="HTTPArgument">
  54003. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54004. <stringProp name="Argument.name">price[to]</stringProp>
  54005. <stringProp name="Argument.value"/>
  54006. <stringProp name="Argument.metadata">=</stringProp>
  54007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54008. </elementProp>
  54009. <elementProp name="in_products" elementType="HTTPArgument">
  54010. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54011. <stringProp name="Argument.name">in_products</stringProp>
  54012. <stringProp name="Argument.value"/>
  54013. <stringProp name="Argument.metadata">=</stringProp>
  54014. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54015. </elementProp>
  54016. <elementProp name="page" elementType="HTTPArgument">
  54017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54018. <stringProp name="Argument.name">page</stringProp>
  54019. <stringProp name="Argument.value">1</stringProp>
  54020. <stringProp name="Argument.metadata">=</stringProp>
  54021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54022. </elementProp>
  54023. <elementProp name="coupon_code" elementType="HTTPArgument">
  54024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54025. <stringProp name="Argument.name">coupon_code</stringProp>
  54026. <stringProp name="Argument.value"/>
  54027. <stringProp name="Argument.metadata">=</stringProp>
  54028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54029. </elementProp>
  54030. <elementProp name="order[account][group_id]" elementType="HTTPArgument">
  54031. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54032. <stringProp name="Argument.name">order[account][group_id]</stringProp>
  54033. <stringProp name="Argument.value">1</stringProp>
  54034. <stringProp name="Argument.metadata">=</stringProp>
  54035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54036. </elementProp>
  54037. <elementProp name="order[account][email]" elementType="HTTPArgument">
  54038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54039. <stringProp name="Argument.name">order[account][email]</stringProp>
  54040. <stringProp name="Argument.value">user_${customer_id}@example.com</stringProp>
  54041. <stringProp name="Argument.metadata">=</stringProp>
  54042. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54043. </elementProp>
  54044. <elementProp name="order[billing_address][customer_address_id]" elementType="HTTPArgument">
  54045. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54046. <stringProp name="Argument.name">order[billing_address][customer_address_id]</stringProp>
  54047. <stringProp name="Argument.value"/>
  54048. <stringProp name="Argument.metadata">=</stringProp>
  54049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54050. </elementProp>
  54051. <elementProp name="order[billing_address][prefix]" elementType="HTTPArgument">
  54052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54053. <stringProp name="Argument.name">order[billing_address][prefix]</stringProp>
  54054. <stringProp name="Argument.value"/>
  54055. <stringProp name="Argument.metadata">=</stringProp>
  54056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54057. </elementProp>
  54058. <elementProp name="order[billing_address][firstname]" elementType="HTTPArgument">
  54059. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54060. <stringProp name="Argument.name">order[billing_address][firstname]</stringProp>
  54061. <stringProp name="Argument.value">Anthony</stringProp>
  54062. <stringProp name="Argument.metadata">=</stringProp>
  54063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54064. </elementProp>
  54065. <elementProp name="order[billing_address][middlename]" elementType="HTTPArgument">
  54066. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54067. <stringProp name="Argument.name">order[billing_address][middlename]</stringProp>
  54068. <stringProp name="Argument.value"/>
  54069. <stringProp name="Argument.metadata">=</stringProp>
  54070. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54071. </elementProp>
  54072. <elementProp name="order[billing_address][lastname]" elementType="HTTPArgument">
  54073. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54074. <stringProp name="Argument.name">order[billing_address][lastname]</stringProp>
  54075. <stringProp name="Argument.value">Nealy</stringProp>
  54076. <stringProp name="Argument.metadata">=</stringProp>
  54077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54078. </elementProp>
  54079. <elementProp name="order[billing_address][suffix]" elementType="HTTPArgument">
  54080. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54081. <stringProp name="Argument.name">order[billing_address][suffix]</stringProp>
  54082. <stringProp name="Argument.value"/>
  54083. <stringProp name="Argument.metadata">=</stringProp>
  54084. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54085. </elementProp>
  54086. <elementProp name="order[billing_address][company]" elementType="HTTPArgument">
  54087. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54088. <stringProp name="Argument.name">order[billing_address][company]</stringProp>
  54089. <stringProp name="Argument.value"/>
  54090. <stringProp name="Argument.metadata">=</stringProp>
  54091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54092. </elementProp>
  54093. <elementProp name="order[billing_address][street][0]" elementType="HTTPArgument">
  54094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54095. <stringProp name="Argument.name">order[billing_address][street][0]</stringProp>
  54096. <stringProp name="Argument.value">123 Freedom Blvd. #123</stringProp>
  54097. <stringProp name="Argument.metadata">=</stringProp>
  54098. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54099. </elementProp>
  54100. <elementProp name="order[billing_address][street][1]" elementType="HTTPArgument">
  54101. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54102. <stringProp name="Argument.name">order[billing_address][street][1]</stringProp>
  54103. <stringProp name="Argument.value"/>
  54104. <stringProp name="Argument.metadata">=</stringProp>
  54105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54106. </elementProp>
  54107. <elementProp name="order[billing_address][city]" elementType="HTTPArgument">
  54108. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54109. <stringProp name="Argument.name">order[billing_address][city]</stringProp>
  54110. <stringProp name="Argument.value">Fayetteville</stringProp>
  54111. <stringProp name="Argument.metadata">=</stringProp>
  54112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54113. </elementProp>
  54114. <elementProp name="order[billing_address][country_id]" elementType="HTTPArgument">
  54115. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54116. <stringProp name="Argument.name">order[billing_address][country_id]</stringProp>
  54117. <stringProp name="Argument.value">US</stringProp>
  54118. <stringProp name="Argument.metadata">=</stringProp>
  54119. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54120. </elementProp>
  54121. <elementProp name="order[billing_address][region]" elementType="HTTPArgument">
  54122. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54123. <stringProp name="Argument.name">order[billing_address][region]</stringProp>
  54124. <stringProp name="Argument.value"/>
  54125. <stringProp name="Argument.metadata">=</stringProp>
  54126. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54127. </elementProp>
  54128. <elementProp name="order[billing_address][region_id]" elementType="HTTPArgument">
  54129. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54130. <stringProp name="Argument.name">order[billing_address][region_id]</stringProp>
  54131. <stringProp name="Argument.value">${alabama_region_id}</stringProp>
  54132. <stringProp name="Argument.metadata">=</stringProp>
  54133. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54134. </elementProp>
  54135. <elementProp name="order[billing_address][postcode]" elementType="HTTPArgument">
  54136. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54137. <stringProp name="Argument.name">order[billing_address][postcode]</stringProp>
  54138. <stringProp name="Argument.value">123123</stringProp>
  54139. <stringProp name="Argument.metadata">=</stringProp>
  54140. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54141. </elementProp>
  54142. <elementProp name="order[billing_address][telephone]" elementType="HTTPArgument">
  54143. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54144. <stringProp name="Argument.name">order[billing_address][telephone]</stringProp>
  54145. <stringProp name="Argument.value">022-333-4455</stringProp>
  54146. <stringProp name="Argument.metadata">=</stringProp>
  54147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54148. </elementProp>
  54149. <elementProp name="order[billing_address][fax]" elementType="HTTPArgument">
  54150. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54151. <stringProp name="Argument.name">order[billing_address][fax]</stringProp>
  54152. <stringProp name="Argument.value"/>
  54153. <stringProp name="Argument.metadata">=</stringProp>
  54154. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54155. </elementProp>
  54156. <elementProp name="order[billing_address][vat_id]" elementType="HTTPArgument">
  54157. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54158. <stringProp name="Argument.name">order[billing_address][vat_id]</stringProp>
  54159. <stringProp name="Argument.value"/>
  54160. <stringProp name="Argument.metadata">=</stringProp>
  54161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54162. </elementProp>
  54163. <elementProp name="shipping_same_as_billing" elementType="HTTPArgument">
  54164. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54165. <stringProp name="Argument.name">shipping_same_as_billing</stringProp>
  54166. <stringProp name="Argument.value">on</stringProp>
  54167. <stringProp name="Argument.metadata">=</stringProp>
  54168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54169. </elementProp>
  54170. <elementProp name="payment[method]" elementType="HTTPArgument">
  54171. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54172. <stringProp name="Argument.name">payment[method]</stringProp>
  54173. <stringProp name="Argument.value">checkmo</stringProp>
  54174. <stringProp name="Argument.metadata">=</stringProp>
  54175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54176. </elementProp>
  54177. <elementProp name="order[shipping_method]" elementType="HTTPArgument">
  54178. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54179. <stringProp name="Argument.name">order[shipping_method]</stringProp>
  54180. <stringProp name="Argument.value">flatrate_flatrate</stringProp>
  54181. <stringProp name="Argument.metadata">=</stringProp>
  54182. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54183. </elementProp>
  54184. <elementProp name="order[comment][customer_note]" elementType="HTTPArgument">
  54185. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54186. <stringProp name="Argument.name">order[comment][customer_note]</stringProp>
  54187. <stringProp name="Argument.value"/>
  54188. <stringProp name="Argument.metadata">=</stringProp>
  54189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54190. </elementProp>
  54191. <elementProp name="order[comment][customer_note_notify]" elementType="HTTPArgument">
  54192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54193. <stringProp name="Argument.name">order[comment][customer_note_notify]</stringProp>
  54194. <stringProp name="Argument.value">1</stringProp>
  54195. <stringProp name="Argument.metadata">=</stringProp>
  54196. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54197. </elementProp>
  54198. <elementProp name="order[send_confirmation]" elementType="HTTPArgument">
  54199. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54200. <stringProp name="Argument.name">order[send_confirmation]</stringProp>
  54201. <stringProp name="Argument.value">1</stringProp>
  54202. <stringProp name="Argument.metadata">=</stringProp>
  54203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54204. </elementProp>
  54205. </collectionProp>
  54206. </elementProp>
  54207. <stringProp name="HTTPSampler.domain"/>
  54208. <stringProp name="HTTPSampler.port"/>
  54209. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54210. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54211. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54212. <stringProp name="HTTPSampler.contentEncoding"/>
  54213. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/save/</stringProp>
  54214. <stringProp name="HTTPSampler.method">POST</stringProp>
  54215. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54216. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54217. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54218. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  54219. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54220. <stringProp name="HTTPSampler.embedded_url_re"/>
  54221. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  54222. </HTTPSamplerProxy>
  54223. <hashTree>
  54224. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Id" enabled="true">
  54225. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  54226. <stringProp name="RegexExtractor.refname">order_id</stringProp>
  54227. <stringProp name="RegexExtractor.regex">${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/</stringProp>
  54228. <stringProp name="RegexExtractor.template">$1$</stringProp>
  54229. <stringProp name="RegexExtractor.default"/>
  54230. <stringProp name="RegexExtractor.match_number">1</stringProp>
  54231. </RegexExtractor>
  54232. <hashTree/>
  54233. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 1" enabled="true">
  54234. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  54235. <stringProp name="RegexExtractor.refname">order_item_1</stringProp>
  54236. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  54237. <stringProp name="RegexExtractor.template">$1$</stringProp>
  54238. <stringProp name="RegexExtractor.default"/>
  54239. <stringProp name="RegexExtractor.match_number">1</stringProp>
  54240. </RegexExtractor>
  54241. <hashTree/>
  54242. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 2" enabled="true">
  54243. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  54244. <stringProp name="RegexExtractor.refname">order_item_2</stringProp>
  54245. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  54246. <stringProp name="RegexExtractor.template">$1$</stringProp>
  54247. <stringProp name="RegexExtractor.default"/>
  54248. <stringProp name="RegexExtractor.match_number">2</stringProp>
  54249. </RegexExtractor>
  54250. <hashTree/>
  54251. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 3" enabled="true">
  54252. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  54253. <stringProp name="RegexExtractor.refname">order_item_3</stringProp>
  54254. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  54255. <stringProp name="RegexExtractor.template">$1$</stringProp>
  54256. <stringProp name="RegexExtractor.default"/>
  54257. <stringProp name="RegexExtractor.match_number">3</stringProp>
  54258. </RegexExtractor>
  54259. <hashTree/>
  54260. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Id" enabled="true">
  54261. <collectionProp name="Asserion.test_strings">
  54262. <stringProp name="89649215">^\d+$</stringProp>
  54263. </collectionProp>
  54264. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54265. <boolProp name="Assertion.assume_success">false</boolProp>
  54266. <intProp name="Assertion.test_type">1</intProp>
  54267. <stringProp name="Assertion.scope">variable</stringProp>
  54268. <stringProp name="Scope.variable">order_id</stringProp>
  54269. </ResponseAssertion>
  54270. <hashTree/>
  54271. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 1" enabled="true">
  54272. <collectionProp name="Asserion.test_strings">
  54273. <stringProp name="89649215">^\d+$</stringProp>
  54274. </collectionProp>
  54275. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54276. <boolProp name="Assertion.assume_success">false</boolProp>
  54277. <intProp name="Assertion.test_type">1</intProp>
  54278. <stringProp name="Assertion.scope">variable</stringProp>
  54279. <stringProp name="Scope.variable">order_item_1</stringProp>
  54280. </ResponseAssertion>
  54281. <hashTree/>
  54282. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 2" enabled="true">
  54283. <collectionProp name="Asserion.test_strings">
  54284. <stringProp name="89649215">^\d+$</stringProp>
  54285. </collectionProp>
  54286. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54287. <boolProp name="Assertion.assume_success">false</boolProp>
  54288. <intProp name="Assertion.test_type">1</intProp>
  54289. <stringProp name="Assertion.scope">variable</stringProp>
  54290. <stringProp name="Scope.variable">order_item_2</stringProp>
  54291. </ResponseAssertion>
  54292. <hashTree/>
  54293. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 3" enabled="true">
  54294. <collectionProp name="Asserion.test_strings">
  54295. <stringProp name="89649215">^\d+$</stringProp>
  54296. </collectionProp>
  54297. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54298. <boolProp name="Assertion.assume_success">false</boolProp>
  54299. <intProp name="Assertion.test_type">1</intProp>
  54300. <stringProp name="Assertion.scope">variable</stringProp>
  54301. <stringProp name="Scope.variable">order_item_3</stringProp>
  54302. </ResponseAssertion>
  54303. <hashTree/>
  54304. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Created" enabled="true">
  54305. <collectionProp name="Asserion.test_strings">
  54306. <stringProp name="563107624">You created the order.</stringProp>
  54307. </collectionProp>
  54308. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54309. <boolProp name="Assertion.assume_success">false</boolProp>
  54310. <intProp name="Assertion.test_type">2</intProp>
  54311. </ResponseAssertion>
  54312. <hashTree/>
  54313. </hashTree>
  54314. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Invoice" enabled="true">
  54315. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54316. <collectionProp name="Arguments.arguments">
  54317. <elementProp name="form_key" elementType="HTTPArgument">
  54318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54319. <stringProp name="Argument.name">form_key</stringProp>
  54320. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  54321. <stringProp name="Argument.metadata">=</stringProp>
  54322. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54323. </elementProp>
  54324. <elementProp name="invoice[items][${order_item_1}]" elementType="HTTPArgument">
  54325. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54326. <stringProp name="Argument.name">invoice[items][${order_item_1}]</stringProp>
  54327. <stringProp name="Argument.value">1</stringProp>
  54328. <stringProp name="Argument.metadata">=</stringProp>
  54329. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54330. </elementProp>
  54331. <elementProp name="invoice[items][${order_item_2}]" elementType="HTTPArgument">
  54332. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54333. <stringProp name="Argument.name">invoice[items][${order_item_2}]</stringProp>
  54334. <stringProp name="Argument.value">1</stringProp>
  54335. <stringProp name="Argument.metadata">=</stringProp>
  54336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54337. </elementProp>
  54338. <elementProp name="invoice[items][${order_item_3}]" elementType="HTTPArgument">
  54339. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54340. <stringProp name="Argument.name">invoice[items][${order_item_3}]</stringProp>
  54341. <stringProp name="Argument.value">1</stringProp>
  54342. <stringProp name="Argument.metadata">=</stringProp>
  54343. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54344. </elementProp>
  54345. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  54346. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54347. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  54348. <stringProp name="Argument.value"/>
  54349. <stringProp name="Argument.metadata">=</stringProp>
  54350. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54351. </elementProp>
  54352. </collectionProp>
  54353. </elementProp>
  54354. <stringProp name="HTTPSampler.domain"/>
  54355. <stringProp name="HTTPSampler.port"/>
  54356. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54357. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54358. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54359. <stringProp name="HTTPSampler.contentEncoding"/>
  54360. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  54361. <stringProp name="HTTPSampler.method">POST</stringProp>
  54362. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54363. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54364. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54365. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54366. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54367. <stringProp name="HTTPSampler.embedded_url_re"/>
  54368. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  54369. </HTTPSamplerProxy>
  54370. <hashTree>
  54371. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Invoice Created" enabled="true">
  54372. <collectionProp name="Asserion.test_strings">
  54373. <stringProp name="-1878312078">The invoice has been created.</stringProp>
  54374. </collectionProp>
  54375. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54376. <boolProp name="Assertion.assume_success">false</boolProp>
  54377. <intProp name="Assertion.test_type">2</intProp>
  54378. </ResponseAssertion>
  54379. <hashTree/>
  54380. </hashTree>
  54381. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Shipment" enabled="true">
  54382. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54383. <collectionProp name="Arguments.arguments">
  54384. <elementProp name="form_key" elementType="HTTPArgument">
  54385. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54386. <stringProp name="Argument.name">form_key</stringProp>
  54387. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  54388. <stringProp name="Argument.metadata">=</stringProp>
  54389. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54390. </elementProp>
  54391. <elementProp name="shipment[items][${order_item_1}]" elementType="HTTPArgument">
  54392. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54393. <stringProp name="Argument.name">shipment[items][${order_item_1}]</stringProp>
  54394. <stringProp name="Argument.value">1</stringProp>
  54395. <stringProp name="Argument.metadata">=</stringProp>
  54396. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54397. </elementProp>
  54398. <elementProp name="shipment[items][${order_item_2}]" elementType="HTTPArgument">
  54399. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54400. <stringProp name="Argument.name">shipment[items][${order_item_2}]</stringProp>
  54401. <stringProp name="Argument.value">1</stringProp>
  54402. <stringProp name="Argument.metadata">=</stringProp>
  54403. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54404. </elementProp>
  54405. <elementProp name="shipment[items][${order_item_3}]" elementType="HTTPArgument">
  54406. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54407. <stringProp name="Argument.name">shipment[items][${order_item_3}]</stringProp>
  54408. <stringProp name="Argument.value">1</stringProp>
  54409. <stringProp name="Argument.metadata">=</stringProp>
  54410. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54411. </elementProp>
  54412. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  54413. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54414. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  54415. <stringProp name="Argument.value"/>
  54416. <stringProp name="Argument.metadata">=</stringProp>
  54417. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54418. </elementProp>
  54419. </collectionProp>
  54420. </elementProp>
  54421. <stringProp name="HTTPSampler.domain"/>
  54422. <stringProp name="HTTPSampler.port"/>
  54423. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54424. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54425. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54426. <stringProp name="HTTPSampler.contentEncoding"/>
  54427. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  54428. <stringProp name="HTTPSampler.method">POST</stringProp>
  54429. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54430. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54431. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54432. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54433. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54434. <stringProp name="HTTPSampler.embedded_url_re"/>
  54435. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  54436. </HTTPSamplerProxy>
  54437. <hashTree>
  54438. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipment Created" enabled="true">
  54439. <collectionProp name="Asserion.test_strings">
  54440. <stringProp name="-348539683">The shipment has been created.</stringProp>
  54441. </collectionProp>
  54442. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54443. <boolProp name="Assertion.assume_success">false</boolProp>
  54444. <intProp name="Assertion.test_type">2</intProp>
  54445. </ResponseAssertion>
  54446. <hashTree/>
  54447. </hashTree>
  54448. </hashTree>
  54449. </hashTree>
  54450. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  54451. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54452. <collectionProp name="Arguments.arguments"/>
  54453. </elementProp>
  54454. <stringProp name="HTTPSampler.domain"/>
  54455. <stringProp name="HTTPSampler.port"/>
  54456. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54457. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54458. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54459. <stringProp name="HTTPSampler.contentEncoding"/>
  54460. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  54461. <stringProp name="HTTPSampler.method">GET</stringProp>
  54462. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54463. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54464. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54465. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54466. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54467. <stringProp name="HTTPSampler.embedded_url_re"/>
  54468. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  54469. <hashTree>
  54470. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  54471. <boolProp name="resetInterpreter">false</boolProp>
  54472. <stringProp name="parameters"/>
  54473. <stringProp name="filename"/>
  54474. <stringProp name="script">
  54475. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  54476. if (adminUsersDistribution == 1) {
  54477. adminUserList = props.get("adminUserList");
  54478. adminUserList.add(vars.get("admin_user"));
  54479. }
  54480. </stringProp>
  54481. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  54482. <hashTree/>
  54483. </hashTree>
  54484. </hashTree>
  54485. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Category Management" enabled="true">
  54486. <intProp name="ThroughputController.style">1</intProp>
  54487. <boolProp name="ThroughputController.perThread">false</boolProp>
  54488. <intProp name="ThroughputController.maxThroughput">1</intProp>
  54489. <stringProp name="ThroughputController.percentThroughput">${cAdminCategoryManagementPercentage}</stringProp>
  54490. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  54491. <hashTree>
  54492. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  54493. <stringProp name="script">
  54494. var tmpLabel = vars.get("testLabel")
  54495. if (tmpLabel) {
  54496. var testLabel = " (" + tmpLabel + ")"
  54497. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  54498. if (sampler.getName().indexOf(testLabel) == -1) {
  54499. sampler.setName(sampler.getName() + testLabel);
  54500. }
  54501. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  54502. sampler.setName("SetUp - " + sampler.getName());
  54503. }
  54504. } else {
  54505. testLabel = ""
  54506. }
  54507. </stringProp>
  54508. <stringProp name="scriptLanguage">javascript</stringProp>
  54509. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  54510. <hashTree/>
  54511. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  54512. <stringProp name="BeanShellSampler.query">
  54513. vars.put("testLabel", "[C] Admin Category Management");
  54514. </stringProp>
  54515. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  54516. </BeanShellSampler>
  54517. <hashTree/>
  54518. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  54519. <stringProp name="script">
  54520. function getFormKeyFromResponse()
  54521. {
  54522. var url = prev.getUrlAsString(),
  54523. responseCode = prev.getResponseCode(),
  54524. formKey = null;
  54525. searchPattern = /var FORM_KEY = '(.+)'/;
  54526. if (responseCode == "200" &amp;&amp; url) {
  54527. response = prev.getResponseDataAsString();
  54528. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  54529. }
  54530. return formKey;
  54531. }
  54532. formKey = vars.get("form_key_storage");
  54533. currentFormKey = getFormKeyFromResponse();
  54534. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  54535. vars.put("form_key_storage", currentFormKey);
  54536. }
  54537. </stringProp>
  54538. <stringProp name="scriptLanguage">javascript</stringProp>
  54539. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  54540. <hashTree/>
  54541. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  54542. <stringProp name="script">
  54543. formKey = vars.get("form_key_storage");
  54544. if (formKey
  54545. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  54546. &amp;&amp; sampler.getMethod() == "POST")
  54547. {
  54548. arguments = sampler.getArguments();
  54549. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  54550. {
  54551. argument = arguments.getArgument(i);
  54552. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  54553. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  54554. argument.setValue(formKey);
  54555. }
  54556. }
  54557. }
  54558. </stringProp>
  54559. <stringProp name="scriptLanguage">javascript</stringProp>
  54560. </JSR223PreProcessor>
  54561. <hashTree/>
  54562. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  54563. <collectionProp name="CookieManager.cookies"/>
  54564. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  54565. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  54566. <hashTree/>
  54567. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  54568. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  54569. </GenericController>
  54570. <hashTree>
  54571. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  54572. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  54573. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  54574. <hashTree>
  54575. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  54576. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  54577. <stringProp name="BeanShellSampler.query">
  54578. adminUser = "none";
  54579. adminUserList = props.get("adminUserList");
  54580. adminUserListIterator = props.get("adminUserListIterator");
  54581. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  54582. if (adminUsersDistribution == 1) {
  54583. adminUser = adminUserList.poll();
  54584. } else {
  54585. if (!adminUserListIterator.hasNext()) {
  54586. adminUserListIterator = adminUserList.descendingIterator();
  54587. }
  54588. adminUser = adminUserListIterator.next();
  54589. }
  54590. if (adminUser == "none") {
  54591. SampleResult.setResponseMessage("adminUser list is empty");
  54592. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  54593. IsSuccess=false;
  54594. SampleResult.setSuccessful(false);
  54595. SampleResult.setStopThread(true);
  54596. }
  54597. vars.put("admin_user", adminUser);
  54598. </stringProp>
  54599. <stringProp name="BeanShellSampler.filename"/>
  54600. <stringProp name="BeanShellSampler.parameters"/>
  54601. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  54602. </BeanShellSampler>
  54603. <hashTree/>
  54604. </hashTree>
  54605. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  54606. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54607. <collectionProp name="Arguments.arguments"/>
  54608. </elementProp>
  54609. <stringProp name="HTTPSampler.domain"/>
  54610. <stringProp name="HTTPSampler.port"/>
  54611. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54612. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54613. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54614. <stringProp name="HTTPSampler.contentEncoding"/>
  54615. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  54616. <stringProp name="HTTPSampler.method">GET</stringProp>
  54617. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54618. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54619. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54620. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54621. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54622. <stringProp name="HTTPSampler.embedded_url_re"/>
  54623. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  54624. <hashTree>
  54625. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  54626. <collectionProp name="Asserion.test_strings">
  54627. <stringProp name="-1397214398">Welcome</stringProp>
  54628. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  54629. </collectionProp>
  54630. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54631. <boolProp name="Assertion.assume_success">false</boolProp>
  54632. <intProp name="Assertion.test_type">2</intProp>
  54633. </ResponseAssertion>
  54634. <hashTree/>
  54635. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  54636. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  54637. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  54638. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  54639. <stringProp name="RegexExtractor.template">$1$</stringProp>
  54640. <stringProp name="RegexExtractor.default"/>
  54641. <stringProp name="RegexExtractor.match_number">1</stringProp>
  54642. </RegexExtractor>
  54643. <hashTree/>
  54644. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  54645. <collectionProp name="Asserion.test_strings">
  54646. <stringProp name="2845929">^.+$</stringProp>
  54647. </collectionProp>
  54648. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54649. <boolProp name="Assertion.assume_success">false</boolProp>
  54650. <intProp name="Assertion.test_type">1</intProp>
  54651. <stringProp name="Assertion.scope">variable</stringProp>
  54652. <stringProp name="Scope.variable">admin_form_key</stringProp>
  54653. </ResponseAssertion>
  54654. <hashTree/>
  54655. </hashTree>
  54656. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  54657. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54658. <collectionProp name="Arguments.arguments">
  54659. <elementProp name="dummy" elementType="HTTPArgument">
  54660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54661. <stringProp name="Argument.value"/>
  54662. <stringProp name="Argument.metadata">=</stringProp>
  54663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54664. <stringProp name="Argument.name">dummy</stringProp>
  54665. </elementProp>
  54666. <elementProp name="form_key" elementType="HTTPArgument">
  54667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54668. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  54669. <stringProp name="Argument.metadata">=</stringProp>
  54670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54671. <stringProp name="Argument.name">form_key</stringProp>
  54672. </elementProp>
  54673. <elementProp name="login[password]" elementType="HTTPArgument">
  54674. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54675. <stringProp name="Argument.value">${admin_password}</stringProp>
  54676. <stringProp name="Argument.metadata">=</stringProp>
  54677. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54678. <stringProp name="Argument.name">login[password]</stringProp>
  54679. </elementProp>
  54680. <elementProp name="login[username]" elementType="HTTPArgument">
  54681. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54682. <stringProp name="Argument.value">${admin_user}</stringProp>
  54683. <stringProp name="Argument.metadata">=</stringProp>
  54684. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54685. <stringProp name="Argument.name">login[username]</stringProp>
  54686. </elementProp>
  54687. </collectionProp>
  54688. </elementProp>
  54689. <stringProp name="HTTPSampler.domain"/>
  54690. <stringProp name="HTTPSampler.port"/>
  54691. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54692. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54693. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54694. <stringProp name="HTTPSampler.contentEncoding"/>
  54695. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  54696. <stringProp name="HTTPSampler.method">POST</stringProp>
  54697. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54698. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54699. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54700. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54701. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  54702. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54703. <stringProp name="HTTPSampler.embedded_url_re"/>
  54704. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  54705. </HTTPSamplerProxy>
  54706. <hashTree>
  54707. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  54708. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  54709. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  54710. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  54711. <stringProp name="RegexExtractor.template">$1$</stringProp>
  54712. <stringProp name="RegexExtractor.default"/>
  54713. <stringProp name="RegexExtractor.match_number">1</stringProp>
  54714. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  54715. <hashTree/>
  54716. </hashTree>
  54717. </hashTree>
  54718. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  54719. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  54720. </GenericController>
  54721. <hashTree>
  54722. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Category Management" enabled="true">
  54723. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_category_management/admin_category_management.jmx</stringProp>
  54724. </TestFragmentController>
  54725. <hashTree>
  54726. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Set Arguments" enabled="true">
  54727. <stringProp name="scriptLanguage">javascript</stringProp>
  54728. <stringProp name="parameters"/>
  54729. <stringProp name="filename"/>
  54730. <stringProp name="cacheKey"/>
  54731. <stringProp name="script">random = new java.util.Random();
  54732. if (${seedForRandom} &gt; 0) {
  54733. random.setSeed(${seedForRandom} + ${__threadNum});
  54734. }
  54735. /**
  54736. * Get unique ids for fix concurrent category saving
  54737. */
  54738. function getNextProductNumber(i) {
  54739. number = productsVariationsSize * ${__threadNum} - i;
  54740. if (number &gt;= productsSize) {
  54741. log.info("${testLabel}: capacity of product list is not enough for support all ${adminPoolUsers} threads");
  54742. return random.nextInt(productsSize);
  54743. }
  54744. return productsVariationsSize * ${__threadNum} - i;
  54745. }
  54746. var productsVariationsSize = 5,
  54747. productsSize = props.get("simple_products_list_for_edit").size();
  54748. for (i = 1; i&lt;= productsVariationsSize; i++) {
  54749. var productVariablePrefix = "simple_product_" + i + "_";
  54750. number = getNextProductNumber(i);
  54751. simpleList = props.get("simple_products_list_for_edit").get(number);
  54752. vars.put(productVariablePrefix + "url_key", simpleList.get("url_key"));
  54753. vars.put(productVariablePrefix + "id", simpleList.get("id"));
  54754. vars.put(productVariablePrefix + "name", simpleList.get("title"));
  54755. }
  54756. categoryIndex = random.nextInt(props.get("admin_category_ids_list").size());
  54757. vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex));
  54758. do {
  54759. categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size());
  54760. } while(categoryIndex == categoryIndexNew);
  54761. vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew));</stringProp>
  54762. </JSR223Sampler>
  54763. <hashTree/>
  54764. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  54765. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54766. <collectionProp name="Arguments.arguments"/>
  54767. </elementProp>
  54768. <stringProp name="HTTPSampler.domain"/>
  54769. <stringProp name="HTTPSampler.port"/>
  54770. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54771. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54772. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54773. <stringProp name="HTTPSampler.contentEncoding"/>
  54774. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/</stringProp>
  54775. <stringProp name="HTTPSampler.method">GET</stringProp>
  54776. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54777. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54778. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54779. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54780. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54781. <stringProp name="HTTPSampler.embedded_url_re"/>
  54782. </HTTPSamplerProxy>
  54783. <hashTree>
  54784. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  54785. <collectionProp name="HeaderManager.headers">
  54786. <elementProp name="Accept-Language" elementType="Header">
  54787. <stringProp name="Header.name">Accept-Language</stringProp>
  54788. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  54789. </elementProp>
  54790. <elementProp name="Accept" elementType="Header">
  54791. <stringProp name="Header.name">Accept</stringProp>
  54792. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  54793. </elementProp>
  54794. <elementProp name="User-Agent" elementType="Header">
  54795. <stringProp name="Header.name">User-Agent</stringProp>
  54796. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  54797. </elementProp>
  54798. <elementProp name="Accept-Encoding" elementType="Header">
  54799. <stringProp name="Header.name">Accept-Encoding</stringProp>
  54800. <stringProp name="Header.value">gzip, deflate</stringProp>
  54801. </elementProp>
  54802. </collectionProp>
  54803. </HeaderManager>
  54804. <hashTree/>
  54805. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  54806. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  54807. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  54808. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  54809. <stringProp name="RegexExtractor.template">$1$</stringProp>
  54810. <stringProp name="RegexExtractor.default"/>
  54811. <stringProp name="RegexExtractor.match_number">1</stringProp>
  54812. </RegexExtractor>
  54813. <hashTree/>
  54814. </hashTree>
  54815. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select parent category" enabled="true">
  54816. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54817. <collectionProp name="Arguments.arguments"/>
  54818. </elementProp>
  54819. <stringProp name="HTTPSampler.domain"/>
  54820. <stringProp name="HTTPSampler.port"/>
  54821. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54822. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54823. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54824. <stringProp name="HTTPSampler.contentEncoding"/>
  54825. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/</stringProp>
  54826. <stringProp name="HTTPSampler.method">GET</stringProp>
  54827. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54828. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54829. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54830. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54831. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54832. <stringProp name="HTTPSampler.embedded_url_re"/>
  54833. </HTTPSamplerProxy>
  54834. <hashTree>
  54835. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  54836. <collectionProp name="HeaderManager.headers">
  54837. <elementProp name="Accept-Language" elementType="Header">
  54838. <stringProp name="Header.name">Accept-Language</stringProp>
  54839. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  54840. </elementProp>
  54841. <elementProp name="Accept" elementType="Header">
  54842. <stringProp name="Header.name">Accept</stringProp>
  54843. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  54844. </elementProp>
  54845. <elementProp name="User-Agent" elementType="Header">
  54846. <stringProp name="Header.name">User-Agent</stringProp>
  54847. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  54848. </elementProp>
  54849. <elementProp name="Accept-Encoding" elementType="Header">
  54850. <stringProp name="Header.name">Accept-Encoding</stringProp>
  54851. <stringProp name="Header.value">gzip, deflate</stringProp>
  54852. </elementProp>
  54853. </collectionProp>
  54854. </HeaderManager>
  54855. <hashTree/>
  54856. </hashTree>
  54857. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open new category page" enabled="true">
  54858. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54859. <collectionProp name="Arguments.arguments"/>
  54860. </elementProp>
  54861. <stringProp name="HTTPSampler.domain"/>
  54862. <stringProp name="HTTPSampler.port"/>
  54863. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  54864. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  54865. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  54866. <stringProp name="HTTPSampler.contentEncoding"/>
  54867. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id}</stringProp>
  54868. <stringProp name="HTTPSampler.method">GET</stringProp>
  54869. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  54870. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  54871. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  54872. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  54873. <boolProp name="HTTPSampler.monitor">false</boolProp>
  54874. <stringProp name="HTTPSampler.embedded_url_re"/>
  54875. </HTTPSamplerProxy>
  54876. <hashTree>
  54877. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  54878. <collectionProp name="Asserion.test_strings">
  54879. <stringProp name="-1903925024">&lt;title&gt;New Category</stringProp>
  54880. </collectionProp>
  54881. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  54882. <boolProp name="Assertion.assume_success">false</boolProp>
  54883. <intProp name="Assertion.test_type">2</intProp>
  54884. </ResponseAssertion>
  54885. <hashTree/>
  54886. </hashTree>
  54887. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create category" enabled="true">
  54888. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  54889. <collectionProp name="Arguments.arguments">
  54890. <elementProp name="id" elementType="HTTPArgument">
  54891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54892. <stringProp name="Argument.value"/>
  54893. <stringProp name="Argument.metadata">=</stringProp>
  54894. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54895. <stringProp name="Argument.name">id</stringProp>
  54896. </elementProp>
  54897. <elementProp name="parent" elementType="HTTPArgument">
  54898. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54899. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  54900. <stringProp name="Argument.metadata">=</stringProp>
  54901. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54902. <stringProp name="Argument.name">parent</stringProp>
  54903. </elementProp>
  54904. <elementProp name="path" elementType="HTTPArgument">
  54905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54906. <stringProp name="Argument.value"/>
  54907. <stringProp name="Argument.metadata">=</stringProp>
  54908. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54909. <stringProp name="Argument.name">path</stringProp>
  54910. </elementProp>
  54911. <elementProp name="store_id" elementType="HTTPArgument">
  54912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54913. <stringProp name="Argument.value"/>
  54914. <stringProp name="Argument.metadata">=</stringProp>
  54915. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54916. <stringProp name="Argument.name">store_id</stringProp>
  54917. </elementProp>
  54918. <elementProp name="is_active" elementType="HTTPArgument">
  54919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54920. <stringProp name="Argument.value">0</stringProp>
  54921. <stringProp name="Argument.metadata">=</stringProp>
  54922. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54923. <stringProp name="Argument.name">is_active</stringProp>
  54924. </elementProp>
  54925. <elementProp name="include_in_menu" elementType="HTTPArgument">
  54926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54927. <stringProp name="Argument.value">0</stringProp>
  54928. <stringProp name="Argument.metadata">=</stringProp>
  54929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54930. <stringProp name="Argument.name">include_in_menu</stringProp>
  54931. </elementProp>
  54932. <elementProp name="is_anchor" elementType="HTTPArgument">
  54933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54934. <stringProp name="Argument.value">1</stringProp>
  54935. <stringProp name="Argument.metadata">=</stringProp>
  54936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54937. <stringProp name="Argument.name">is_anchor</stringProp>
  54938. </elementProp>
  54939. <elementProp name="use_config[available_sort_by]" elementType="HTTPArgument">
  54940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54941. <stringProp name="Argument.value">true</stringProp>
  54942. <stringProp name="Argument.metadata">=</stringProp>
  54943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54944. <stringProp name="Argument.name">use_config[available_sort_by]</stringProp>
  54945. </elementProp>
  54946. <elementProp name="use_config[default_sort_by]" elementType="HTTPArgument">
  54947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54948. <stringProp name="Argument.value">true</stringProp>
  54949. <stringProp name="Argument.metadata">=</stringProp>
  54950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54951. <stringProp name="Argument.name">use_config[default_sort_by]</stringProp>
  54952. </elementProp>
  54953. <elementProp name="use_config[filter_price_range]" elementType="HTTPArgument">
  54954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54955. <stringProp name="Argument.value">true</stringProp>
  54956. <stringProp name="Argument.metadata">=</stringProp>
  54957. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54958. <stringProp name="Argument.name">use_config[filter_price_range]</stringProp>
  54959. </elementProp>
  54960. <elementProp name="use_default[url_key]" elementType="HTTPArgument">
  54961. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54962. <stringProp name="Argument.value">false</stringProp>
  54963. <stringProp name="Argument.metadata">=</stringProp>
  54964. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54965. <stringProp name="Argument.name">use_default[url_key]</stringProp>
  54966. </elementProp>
  54967. <elementProp name="url_key_create_redirect" elementType="HTTPArgument">
  54968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54969. <stringProp name="Argument.value">0</stringProp>
  54970. <stringProp name="Argument.metadata">=</stringProp>
  54971. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54972. <stringProp name="Argument.name">url_key_create_redirect</stringProp>
  54973. </elementProp>
  54974. <elementProp name="custom_use_parent_settings" elementType="HTTPArgument">
  54975. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54976. <stringProp name="Argument.value">0</stringProp>
  54977. <stringProp name="Argument.metadata">=</stringProp>
  54978. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54979. <stringProp name="Argument.name">custom_use_parent_settings</stringProp>
  54980. </elementProp>
  54981. <elementProp name="custom_apply_to_products" elementType="HTTPArgument">
  54982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54983. <stringProp name="Argument.value">0</stringProp>
  54984. <stringProp name="Argument.metadata">=</stringProp>
  54985. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54986. <stringProp name="Argument.name">custom_apply_to_products</stringProp>
  54987. </elementProp>
  54988. <elementProp name="name" elementType="HTTPArgument">
  54989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54990. <stringProp name="Argument.value">Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  54991. <stringProp name="Argument.metadata">=</stringProp>
  54992. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  54993. <stringProp name="Argument.name">name</stringProp>
  54994. </elementProp>
  54995. <elementProp name="url_key" elementType="HTTPArgument">
  54996. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  54997. <stringProp name="Argument.value">admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  54998. <stringProp name="Argument.metadata">=</stringProp>
  54999. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55000. <stringProp name="Argument.name">url_key</stringProp>
  55001. </elementProp>
  55002. <elementProp name="meta_title" elementType="HTTPArgument">
  55003. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55004. <stringProp name="Argument.value"/>
  55005. <stringProp name="Argument.metadata">=</stringProp>
  55006. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55007. <stringProp name="Argument.name">meta_title</stringProp>
  55008. </elementProp>
  55009. <elementProp name="description" elementType="HTTPArgument">
  55010. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55011. <stringProp name="Argument.value"/>
  55012. <stringProp name="Argument.metadata">=</stringProp>
  55013. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55014. <stringProp name="Argument.name">description</stringProp>
  55015. </elementProp>
  55016. <elementProp name="display_mode" elementType="HTTPArgument">
  55017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55018. <stringProp name="Argument.value">PRODUCTS</stringProp>
  55019. <stringProp name="Argument.metadata">=</stringProp>
  55020. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55021. <stringProp name="Argument.name">display_mode</stringProp>
  55022. </elementProp>
  55023. <elementProp name="default_sort_by" elementType="HTTPArgument">
  55024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55025. <stringProp name="Argument.value">position</stringProp>
  55026. <stringProp name="Argument.metadata">=</stringProp>
  55027. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55028. <stringProp name="Argument.name">default_sort_by</stringProp>
  55029. </elementProp>
  55030. <elementProp name="meta_keywords" elementType="HTTPArgument">
  55031. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55032. <stringProp name="Argument.value"/>
  55033. <stringProp name="Argument.metadata">=</stringProp>
  55034. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55035. <stringProp name="Argument.name">meta_keywords</stringProp>
  55036. </elementProp>
  55037. <elementProp name="meta_description" elementType="HTTPArgument">
  55038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55039. <stringProp name="Argument.value"/>
  55040. <stringProp name="Argument.metadata">=</stringProp>
  55041. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55042. <stringProp name="Argument.name">meta_description</stringProp>
  55043. </elementProp>
  55044. <elementProp name="custom_layout_update" elementType="HTTPArgument">
  55045. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55046. <stringProp name="Argument.value"/>
  55047. <stringProp name="Argument.metadata">=</stringProp>
  55048. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55049. <stringProp name="Argument.name">custom_layout_update</stringProp>
  55050. </elementProp>
  55051. <elementProp name="category_products" elementType="HTTPArgument">
  55052. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  55053. <stringProp name="Argument.value">{"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""}</stringProp>
  55054. <stringProp name="Argument.metadata">=</stringProp>
  55055. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55056. <stringProp name="Argument.name">category_products</stringProp>
  55057. </elementProp>
  55058. <elementProp name="form_key" elementType="HTTPArgument">
  55059. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55060. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  55061. <stringProp name="Argument.metadata">=</stringProp>
  55062. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55063. <stringProp name="Argument.name">form_key</stringProp>
  55064. </elementProp>
  55065. </collectionProp>
  55066. </elementProp>
  55067. <stringProp name="HTTPSampler.domain"/>
  55068. <stringProp name="HTTPSampler.port"/>
  55069. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55070. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55071. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55072. <stringProp name="HTTPSampler.contentEncoding"/>
  55073. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/save/</stringProp>
  55074. <stringProp name="HTTPSampler.method">POST</stringProp>
  55075. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55076. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55077. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55078. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55079. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55080. <stringProp name="HTTPSampler.embedded_url_re"/>
  55081. </HTTPSamplerProxy>
  55082. <hashTree>
  55083. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category id" enabled="true">
  55084. <stringProp name="RegexExtractor.useHeaders">URL</stringProp>
  55085. <stringProp name="RegexExtractor.refname">admin_category_id</stringProp>
  55086. <stringProp name="RegexExtractor.regex">/catalog/category/edit/id/(\d+)/</stringProp>
  55087. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55088. <stringProp name="RegexExtractor.default"/>
  55089. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55090. </RegexExtractor>
  55091. <hashTree/>
  55092. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category id" enabled="true">
  55093. <collectionProp name="Asserion.test_strings">
  55094. <stringProp name="89649215">^\d+$</stringProp>
  55095. </collectionProp>
  55096. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55097. <boolProp name="Assertion.assume_success">false</boolProp>
  55098. <intProp name="Assertion.test_type">1</intProp>
  55099. <stringProp name="Assertion.scope">variable</stringProp>
  55100. <stringProp name="Scope.variable">admin_category_id</stringProp>
  55101. </ResponseAssertion>
  55102. <hashTree/>
  55103. </hashTree>
  55104. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select created category" enabled="true">
  55105. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55106. <collectionProp name="Arguments.arguments"/>
  55107. </elementProp>
  55108. <stringProp name="HTTPSampler.domain"/>
  55109. <stringProp name="HTTPSampler.port"/>
  55110. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55111. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55112. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55113. <stringProp name="HTTPSampler.contentEncoding"/>
  55114. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/</stringProp>
  55115. <stringProp name="HTTPSampler.method">GET</stringProp>
  55116. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55117. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55118. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55119. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55120. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55121. <stringProp name="HTTPSampler.embedded_url_re"/>
  55122. </HTTPSamplerProxy>
  55123. <hashTree>
  55124. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  55125. <collectionProp name="HeaderManager.headers">
  55126. <elementProp name="Accept-Language" elementType="Header">
  55127. <stringProp name="Header.name">Accept-Language</stringProp>
  55128. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  55129. </elementProp>
  55130. <elementProp name="Accept" elementType="Header">
  55131. <stringProp name="Header.name">Accept</stringProp>
  55132. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  55133. </elementProp>
  55134. <elementProp name="User-Agent" elementType="Header">
  55135. <stringProp name="Header.name">User-Agent</stringProp>
  55136. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  55137. </elementProp>
  55138. <elementProp name="Accept-Encoding" elementType="Header">
  55139. <stringProp name="Header.name">Accept-Encoding</stringProp>
  55140. <stringProp name="Header.value">gzip, deflate</stringProp>
  55141. </elementProp>
  55142. </collectionProp>
  55143. </HeaderManager>
  55144. <hashTree/>
  55145. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category row id" enabled="true">
  55146. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55147. <stringProp name="RegexExtractor.refname">admin_category_entity_id</stringProp>
  55148. <stringProp name="RegexExtractor.regex">"entity_id":"([^"]+)"</stringProp>
  55149. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55150. <stringProp name="RegexExtractor.default"/>
  55151. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55152. </RegexExtractor>
  55153. <hashTree/>
  55154. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category attribute set id" enabled="true">
  55155. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55156. <stringProp name="RegexExtractor.refname">admin_category_attribute_set_id</stringProp>
  55157. <stringProp name="RegexExtractor.regex">"attribute_set_id":"([^"]+)"</stringProp>
  55158. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55159. <stringProp name="RegexExtractor.default"/>
  55160. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55161. </RegexExtractor>
  55162. <hashTree/>
  55163. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category parent Id" enabled="true">
  55164. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55165. <stringProp name="RegexExtractor.refname">admin_category_parent_id</stringProp>
  55166. <stringProp name="RegexExtractor.regex">"parent_id":"([^"]+)"</stringProp>
  55167. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55168. <stringProp name="RegexExtractor.default"/>
  55169. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55170. </RegexExtractor>
  55171. <hashTree/>
  55172. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category created at" enabled="true">
  55173. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55174. <stringProp name="RegexExtractor.refname">admin_category_created_at</stringProp>
  55175. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  55176. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55177. <stringProp name="RegexExtractor.default"/>
  55178. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55179. </RegexExtractor>
  55180. <hashTree/>
  55181. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category updated at" enabled="true">
  55182. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55183. <stringProp name="RegexExtractor.refname">admin_category_updated_at</stringProp>
  55184. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  55185. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55186. <stringProp name="RegexExtractor.default"/>
  55187. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55188. </RegexExtractor>
  55189. <hashTree/>
  55190. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category path" enabled="true">
  55191. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55192. <stringProp name="RegexExtractor.refname">admin_category_path</stringProp>
  55193. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"path":"([^\"]+)"</stringProp>
  55194. <stringProp name="RegexExtractor.template">$2$</stringProp>
  55195. <stringProp name="RegexExtractor.default"/>
  55196. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55197. </RegexExtractor>
  55198. <hashTree/>
  55199. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category level" enabled="true">
  55200. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55201. <stringProp name="RegexExtractor.refname">admin_category_level</stringProp>
  55202. <stringProp name="RegexExtractor.regex">"level":"([^"]+)"</stringProp>
  55203. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55204. <stringProp name="RegexExtractor.default"/>
  55205. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55206. </RegexExtractor>
  55207. <hashTree/>
  55208. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category name" enabled="true">
  55209. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55210. <stringProp name="RegexExtractor.refname">admin_category_name</stringProp>
  55211. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"name":"([^"]+)"</stringProp>
  55212. <stringProp name="RegexExtractor.template">$2$</stringProp>
  55213. <stringProp name="RegexExtractor.default"/>
  55214. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55215. </RegexExtractor>
  55216. <hashTree/>
  55217. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url key" enabled="true">
  55218. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55219. <stringProp name="RegexExtractor.refname">admin_category_url_key</stringProp>
  55220. <stringProp name="RegexExtractor.regex">"url_key":"([^"]+)"</stringProp>
  55221. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55222. <stringProp name="RegexExtractor.default"/>
  55223. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55224. </RegexExtractor>
  55225. <hashTree/>
  55226. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url path" enabled="true">
  55227. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55228. <stringProp name="RegexExtractor.refname">admin_category_url_path</stringProp>
  55229. <stringProp name="RegexExtractor.regex">"url_path":"([^"]+)"</stringProp>
  55230. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55231. <stringProp name="RegexExtractor.default"/>
  55232. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55233. </RegexExtractor>
  55234. <hashTree/>
  55235. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category row id" enabled="true">
  55236. <collectionProp name="Asserion.test_strings">
  55237. <stringProp name="89649215">^\d+$</stringProp>
  55238. </collectionProp>
  55239. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55240. <boolProp name="Assertion.assume_success">false</boolProp>
  55241. <intProp name="Assertion.test_type">1</intProp>
  55242. <stringProp name="Assertion.scope">variable</stringProp>
  55243. <stringProp name="Scope.variable">admin_category_entity_id</stringProp>
  55244. </ResponseAssertion>
  55245. <hashTree/>
  55246. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category attribute set id" enabled="true">
  55247. <collectionProp name="Asserion.test_strings">
  55248. <stringProp name="89649215">^\d+$</stringProp>
  55249. </collectionProp>
  55250. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55251. <boolProp name="Assertion.assume_success">false</boolProp>
  55252. <intProp name="Assertion.test_type">1</intProp>
  55253. <stringProp name="Assertion.scope">variable</stringProp>
  55254. <stringProp name="Scope.variable">admin_category_attribute_set_id</stringProp>
  55255. </ResponseAssertion>
  55256. <hashTree/>
  55257. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category parent id" enabled="true">
  55258. <collectionProp name="Asserion.test_strings">
  55259. <stringProp name="89649215">^\d+$</stringProp>
  55260. </collectionProp>
  55261. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55262. <boolProp name="Assertion.assume_success">false</boolProp>
  55263. <intProp name="Assertion.test_type">1</intProp>
  55264. <stringProp name="Assertion.scope">variable</stringProp>
  55265. <stringProp name="Scope.variable">admin_category_parent_id</stringProp>
  55266. </ResponseAssertion>
  55267. <hashTree/>
  55268. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category created at" enabled="true">
  55269. <collectionProp name="Asserion.test_strings">
  55270. <stringProp name="2845929">^.+$</stringProp>
  55271. </collectionProp>
  55272. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55273. <boolProp name="Assertion.assume_success">false</boolProp>
  55274. <intProp name="Assertion.test_type">1</intProp>
  55275. <stringProp name="Assertion.scope">variable</stringProp>
  55276. <stringProp name="Scope.variable">admin_category_created_at</stringProp>
  55277. </ResponseAssertion>
  55278. <hashTree/>
  55279. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category updated at" enabled="true">
  55280. <collectionProp name="Asserion.test_strings">
  55281. <stringProp name="2845929">^.+$</stringProp>
  55282. </collectionProp>
  55283. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55284. <boolProp name="Assertion.assume_success">false</boolProp>
  55285. <intProp name="Assertion.test_type">1</intProp>
  55286. <stringProp name="Assertion.scope">variable</stringProp>
  55287. <stringProp name="Scope.variable">admin_category_updated_at</stringProp>
  55288. </ResponseAssertion>
  55289. <hashTree/>
  55290. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category path" enabled="true">
  55291. <collectionProp name="Asserion.test_strings">
  55292. <stringProp name="59022110">^[\d\\\/]+$</stringProp>
  55293. </collectionProp>
  55294. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55295. <boolProp name="Assertion.assume_success">false</boolProp>
  55296. <intProp name="Assertion.test_type">1</intProp>
  55297. <stringProp name="Assertion.scope">variable</stringProp>
  55298. <stringProp name="Scope.variable">admin_category_path</stringProp>
  55299. </ResponseAssertion>
  55300. <hashTree/>
  55301. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category level" enabled="true">
  55302. <collectionProp name="Asserion.test_strings">
  55303. <stringProp name="89649215">^\d+$</stringProp>
  55304. </collectionProp>
  55305. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55306. <boolProp name="Assertion.assume_success">false</boolProp>
  55307. <intProp name="Assertion.test_type">1</intProp>
  55308. <stringProp name="Assertion.scope">variable</stringProp>
  55309. <stringProp name="Scope.variable">admin_category_level</stringProp>
  55310. </ResponseAssertion>
  55311. <hashTree/>
  55312. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category name" enabled="true">
  55313. <collectionProp name="Asserion.test_strings">
  55314. <stringProp name="2845929">^.+$</stringProp>
  55315. </collectionProp>
  55316. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55317. <boolProp name="Assertion.assume_success">false</boolProp>
  55318. <intProp name="Assertion.test_type">1</intProp>
  55319. <stringProp name="Assertion.scope">variable</stringProp>
  55320. <stringProp name="Scope.variable">admin_category_name</stringProp>
  55321. </ResponseAssertion>
  55322. <hashTree/>
  55323. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url key" enabled="true">
  55324. <collectionProp name="Asserion.test_strings">
  55325. <stringProp name="2845929">^.+$</stringProp>
  55326. </collectionProp>
  55327. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55328. <boolProp name="Assertion.assume_success">false</boolProp>
  55329. <intProp name="Assertion.test_type">1</intProp>
  55330. <stringProp name="Assertion.scope">variable</stringProp>
  55331. <stringProp name="Scope.variable">admin_category_url_key</stringProp>
  55332. </ResponseAssertion>
  55333. <hashTree/>
  55334. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url path" enabled="true">
  55335. <collectionProp name="Asserion.test_strings">
  55336. <stringProp name="2845929">^.+$</stringProp>
  55337. </collectionProp>
  55338. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55339. <boolProp name="Assertion.assume_success">false</boolProp>
  55340. <intProp name="Assertion.test_type">1</intProp>
  55341. <stringProp name="Assertion.scope">variable</stringProp>
  55342. <stringProp name="Scope.variable">admin_category_url_path</stringProp>
  55343. </ResponseAssertion>
  55344. <hashTree/>
  55345. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert products added" enabled="true">
  55346. <collectionProp name="Asserion.test_strings">
  55347. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  55348. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  55349. <stringProp name="-2102674944">${simple_product_3_name}</stringProp>
  55350. <stringProp name="-1215171263">${simple_product_4_name}</stringProp>
  55351. <stringProp name="-327667582">${simple_product_5_name}</stringProp>
  55352. </collectionProp>
  55353. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55354. <boolProp name="Assertion.assume_success">false</boolProp>
  55355. <intProp name="Assertion.test_type">2</intProp>
  55356. </ResponseAssertion>
  55357. <hashTree/>
  55358. </hashTree>
  55359. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Move category" enabled="true">
  55360. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55361. <collectionProp name="Arguments.arguments">
  55362. <elementProp name="id" elementType="HTTPArgument">
  55363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55364. <stringProp name="Argument.value">${admin_category_id}</stringProp>
  55365. <stringProp name="Argument.metadata">=</stringProp>
  55366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55367. <stringProp name="Argument.name">id</stringProp>
  55368. </elementProp>
  55369. <elementProp name="form_key" elementType="HTTPArgument">
  55370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55371. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  55372. <stringProp name="Argument.metadata">=</stringProp>
  55373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55374. <stringProp name="Argument.name">form_key</stringProp>
  55375. </elementProp>
  55376. <elementProp name="point" elementType="HTTPArgument">
  55377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55378. <stringProp name="Argument.value">append</stringProp>
  55379. <stringProp name="Argument.metadata">=</stringProp>
  55380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55381. <stringProp name="Argument.name">point</stringProp>
  55382. </elementProp>
  55383. <elementProp name="pid" elementType="HTTPArgument">
  55384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55385. <stringProp name="Argument.value">${new_parent_category_id}</stringProp>
  55386. <stringProp name="Argument.metadata">=</stringProp>
  55387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55388. <stringProp name="Argument.name">pid</stringProp>
  55389. </elementProp>
  55390. <elementProp name="paid" elementType="HTTPArgument">
  55391. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55392. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  55393. <stringProp name="Argument.metadata">=</stringProp>
  55394. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55395. <stringProp name="Argument.name">paid</stringProp>
  55396. </elementProp>
  55397. <elementProp name="aid" elementType="HTTPArgument">
  55398. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55399. <stringProp name="Argument.value">0</stringProp>
  55400. <stringProp name="Argument.metadata">=</stringProp>
  55401. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55402. <stringProp name="Argument.name">aid</stringProp>
  55403. </elementProp>
  55404. <elementProp name="isAjax" elementType="HTTPArgument">
  55405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55406. <stringProp name="Argument.value">true</stringProp>
  55407. <stringProp name="Argument.metadata">=</stringProp>
  55408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55409. <stringProp name="Argument.name">isAjax</stringProp>
  55410. </elementProp>
  55411. </collectionProp>
  55412. </elementProp>
  55413. <stringProp name="HTTPSampler.domain"/>
  55414. <stringProp name="HTTPSampler.port"/>
  55415. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55416. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55417. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55418. <stringProp name="HTTPSampler.contentEncoding"/>
  55419. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/move/</stringProp>
  55420. <stringProp name="HTTPSampler.method">POST</stringProp>
  55421. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55422. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55423. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55424. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55425. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55426. <stringProp name="HTTPSampler.embedded_url_re"/>
  55427. </HTTPSamplerProxy>
  55428. <hashTree/>
  55429. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete category" enabled="true">
  55430. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55431. <collectionProp name="Arguments.arguments">
  55432. <elementProp name="form_key" elementType="HTTPArgument">
  55433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55434. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  55435. <stringProp name="Argument.metadata">=</stringProp>
  55436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55437. <stringProp name="Argument.name">form_key</stringProp>
  55438. </elementProp>
  55439. </collectionProp>
  55440. </elementProp>
  55441. <stringProp name="HTTPSampler.domain"/>
  55442. <stringProp name="HTTPSampler.port"/>
  55443. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55444. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55445. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55446. <stringProp name="HTTPSampler.contentEncoding"/>
  55447. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/</stringProp>
  55448. <stringProp name="HTTPSampler.method">POST</stringProp>
  55449. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55450. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55451. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55452. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55453. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55454. <stringProp name="HTTPSampler.embedded_url_re"/>
  55455. </HTTPSamplerProxy>
  55456. <hashTree>
  55457. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category deleted" enabled="true">
  55458. <collectionProp name="Asserion.test_strings">
  55459. <stringProp name="1277069529">You deleted the category.</stringProp>
  55460. </collectionProp>
  55461. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55462. <boolProp name="Assertion.assume_success">false</boolProp>
  55463. <intProp name="Assertion.test_type">2</intProp>
  55464. </ResponseAssertion>
  55465. <hashTree/>
  55466. </hashTree>
  55467. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  55468. <intProp name="ActionProcessor.action">1</intProp>
  55469. <intProp name="ActionProcessor.target">0</intProp>
  55470. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))}</stringProp>
  55471. </TestAction>
  55472. <hashTree/>
  55473. </hashTree>
  55474. </hashTree>
  55475. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  55476. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55477. <collectionProp name="Arguments.arguments"/>
  55478. </elementProp>
  55479. <stringProp name="HTTPSampler.domain"/>
  55480. <stringProp name="HTTPSampler.port"/>
  55481. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55482. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55483. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55484. <stringProp name="HTTPSampler.contentEncoding"/>
  55485. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  55486. <stringProp name="HTTPSampler.method">GET</stringProp>
  55487. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55488. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55489. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55490. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55491. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55492. <stringProp name="HTTPSampler.embedded_url_re"/>
  55493. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  55494. <hashTree>
  55495. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  55496. <boolProp name="resetInterpreter">false</boolProp>
  55497. <stringProp name="parameters"/>
  55498. <stringProp name="filename"/>
  55499. <stringProp name="script">
  55500. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  55501. if (adminUsersDistribution == 1) {
  55502. adminUserList = props.get("adminUserList");
  55503. adminUserList.add(vars.get("admin_user"));
  55504. }
  55505. </stringProp>
  55506. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  55507. <hashTree/>
  55508. </hashTree>
  55509. </hashTree>
  55510. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Promotion Rules" enabled="true">
  55511. <intProp name="ThroughputController.style">1</intProp>
  55512. <boolProp name="ThroughputController.perThread">false</boolProp>
  55513. <intProp name="ThroughputController.maxThroughput">1</intProp>
  55514. <stringProp name="ThroughputController.percentThroughput">${cAdminPromotionRulesPercentage}</stringProp>
  55515. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  55516. <hashTree>
  55517. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  55518. <stringProp name="script">
  55519. var tmpLabel = vars.get("testLabel")
  55520. if (tmpLabel) {
  55521. var testLabel = " (" + tmpLabel + ")"
  55522. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  55523. if (sampler.getName().indexOf(testLabel) == -1) {
  55524. sampler.setName(sampler.getName() + testLabel);
  55525. }
  55526. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  55527. sampler.setName("SetUp - " + sampler.getName());
  55528. }
  55529. } else {
  55530. testLabel = ""
  55531. }
  55532. </stringProp>
  55533. <stringProp name="scriptLanguage">javascript</stringProp>
  55534. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  55535. <hashTree/>
  55536. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  55537. <stringProp name="BeanShellSampler.query">
  55538. vars.put("testLabel", "[C] Admin Promotion Rules");
  55539. </stringProp>
  55540. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  55541. </BeanShellSampler>
  55542. <hashTree/>
  55543. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  55544. <stringProp name="script">
  55545. function getFormKeyFromResponse()
  55546. {
  55547. var url = prev.getUrlAsString(),
  55548. responseCode = prev.getResponseCode(),
  55549. formKey = null;
  55550. searchPattern = /var FORM_KEY = '(.+)'/;
  55551. if (responseCode == "200" &amp;&amp; url) {
  55552. response = prev.getResponseDataAsString();
  55553. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  55554. }
  55555. return formKey;
  55556. }
  55557. formKey = vars.get("form_key_storage");
  55558. currentFormKey = getFormKeyFromResponse();
  55559. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  55560. vars.put("form_key_storage", currentFormKey);
  55561. }
  55562. </stringProp>
  55563. <stringProp name="scriptLanguage">javascript</stringProp>
  55564. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  55565. <hashTree/>
  55566. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  55567. <stringProp name="script">
  55568. formKey = vars.get("form_key_storage");
  55569. if (formKey
  55570. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  55571. &amp;&amp; sampler.getMethod() == "POST")
  55572. {
  55573. arguments = sampler.getArguments();
  55574. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  55575. {
  55576. argument = arguments.getArgument(i);
  55577. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  55578. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  55579. argument.setValue(formKey);
  55580. }
  55581. }
  55582. }
  55583. </stringProp>
  55584. <stringProp name="scriptLanguage">javascript</stringProp>
  55585. </JSR223PreProcessor>
  55586. <hashTree/>
  55587. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  55588. <collectionProp name="CookieManager.cookies"/>
  55589. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  55590. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  55591. <hashTree/>
  55592. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  55593. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  55594. </GenericController>
  55595. <hashTree>
  55596. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  55597. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  55598. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  55599. <hashTree>
  55600. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  55601. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  55602. <stringProp name="BeanShellSampler.query">
  55603. adminUser = "none";
  55604. adminUserList = props.get("adminUserList");
  55605. adminUserListIterator = props.get("adminUserListIterator");
  55606. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  55607. if (adminUsersDistribution == 1) {
  55608. adminUser = adminUserList.poll();
  55609. } else {
  55610. if (!adminUserListIterator.hasNext()) {
  55611. adminUserListIterator = adminUserList.descendingIterator();
  55612. }
  55613. adminUser = adminUserListIterator.next();
  55614. }
  55615. if (adminUser == "none") {
  55616. SampleResult.setResponseMessage("adminUser list is empty");
  55617. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  55618. IsSuccess=false;
  55619. SampleResult.setSuccessful(false);
  55620. SampleResult.setStopThread(true);
  55621. }
  55622. vars.put("admin_user", adminUser);
  55623. </stringProp>
  55624. <stringProp name="BeanShellSampler.filename"/>
  55625. <stringProp name="BeanShellSampler.parameters"/>
  55626. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  55627. </BeanShellSampler>
  55628. <hashTree/>
  55629. </hashTree>
  55630. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  55631. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55632. <collectionProp name="Arguments.arguments"/>
  55633. </elementProp>
  55634. <stringProp name="HTTPSampler.domain"/>
  55635. <stringProp name="HTTPSampler.port"/>
  55636. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55637. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55638. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55639. <stringProp name="HTTPSampler.contentEncoding"/>
  55640. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  55641. <stringProp name="HTTPSampler.method">GET</stringProp>
  55642. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55643. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55644. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55645. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55646. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55647. <stringProp name="HTTPSampler.embedded_url_re"/>
  55648. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  55649. <hashTree>
  55650. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  55651. <collectionProp name="Asserion.test_strings">
  55652. <stringProp name="-1397214398">Welcome</stringProp>
  55653. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  55654. </collectionProp>
  55655. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55656. <boolProp name="Assertion.assume_success">false</boolProp>
  55657. <intProp name="Assertion.test_type">2</intProp>
  55658. </ResponseAssertion>
  55659. <hashTree/>
  55660. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  55661. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55662. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  55663. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  55664. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55665. <stringProp name="RegexExtractor.default"/>
  55666. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55667. </RegexExtractor>
  55668. <hashTree/>
  55669. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  55670. <collectionProp name="Asserion.test_strings">
  55671. <stringProp name="2845929">^.+$</stringProp>
  55672. </collectionProp>
  55673. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  55674. <boolProp name="Assertion.assume_success">false</boolProp>
  55675. <intProp name="Assertion.test_type">1</intProp>
  55676. <stringProp name="Assertion.scope">variable</stringProp>
  55677. <stringProp name="Scope.variable">admin_form_key</stringProp>
  55678. </ResponseAssertion>
  55679. <hashTree/>
  55680. </hashTree>
  55681. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  55682. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55683. <collectionProp name="Arguments.arguments">
  55684. <elementProp name="dummy" elementType="HTTPArgument">
  55685. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55686. <stringProp name="Argument.value"/>
  55687. <stringProp name="Argument.metadata">=</stringProp>
  55688. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55689. <stringProp name="Argument.name">dummy</stringProp>
  55690. </elementProp>
  55691. <elementProp name="form_key" elementType="HTTPArgument">
  55692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55693. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  55694. <stringProp name="Argument.metadata">=</stringProp>
  55695. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55696. <stringProp name="Argument.name">form_key</stringProp>
  55697. </elementProp>
  55698. <elementProp name="login[password]" elementType="HTTPArgument">
  55699. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55700. <stringProp name="Argument.value">${admin_password}</stringProp>
  55701. <stringProp name="Argument.metadata">=</stringProp>
  55702. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55703. <stringProp name="Argument.name">login[password]</stringProp>
  55704. </elementProp>
  55705. <elementProp name="login[username]" elementType="HTTPArgument">
  55706. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55707. <stringProp name="Argument.value">${admin_user}</stringProp>
  55708. <stringProp name="Argument.metadata">=</stringProp>
  55709. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55710. <stringProp name="Argument.name">login[username]</stringProp>
  55711. </elementProp>
  55712. </collectionProp>
  55713. </elementProp>
  55714. <stringProp name="HTTPSampler.domain"/>
  55715. <stringProp name="HTTPSampler.port"/>
  55716. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55717. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55718. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55719. <stringProp name="HTTPSampler.contentEncoding"/>
  55720. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  55721. <stringProp name="HTTPSampler.method">POST</stringProp>
  55722. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55723. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55724. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55725. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55726. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  55727. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55728. <stringProp name="HTTPSampler.embedded_url_re"/>
  55729. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  55730. </HTTPSamplerProxy>
  55731. <hashTree>
  55732. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  55733. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  55734. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  55735. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  55736. <stringProp name="RegexExtractor.template">$1$</stringProp>
  55737. <stringProp name="RegexExtractor.default"/>
  55738. <stringProp name="RegexExtractor.match_number">1</stringProp>
  55739. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  55740. <hashTree/>
  55741. </hashTree>
  55742. </hashTree>
  55743. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  55744. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  55745. </GenericController>
  55746. <hashTree>
  55747. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Promotions Management" enabled="true">
  55748. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx</stringProp>
  55749. </TestFragmentController>
  55750. <hashTree>
  55751. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  55752. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55753. <collectionProp name="Arguments.arguments"/>
  55754. </elementProp>
  55755. <stringProp name="HTTPSampler.domain"/>
  55756. <stringProp name="HTTPSampler.port"/>
  55757. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55758. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55759. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55760. <stringProp name="HTTPSampler.contentEncoding"/>
  55761. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/</stringProp>
  55762. <stringProp name="HTTPSampler.method">GET</stringProp>
  55763. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55764. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55765. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55766. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55767. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55768. <stringProp name="HTTPSampler.embedded_url_re"/>
  55769. </HTTPSamplerProxy>
  55770. <hashTree/>
  55771. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  55772. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55773. <collectionProp name="Arguments.arguments"/>
  55774. </elementProp>
  55775. <stringProp name="HTTPSampler.domain"/>
  55776. <stringProp name="HTTPSampler.port"/>
  55777. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55778. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55779. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55780. <stringProp name="HTTPSampler.contentEncoding"/>
  55781. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/new</stringProp>
  55782. <stringProp name="HTTPSampler.method">GET</stringProp>
  55783. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55784. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55785. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55786. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55787. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55788. <stringProp name="HTTPSampler.embedded_url_re"/>
  55789. </HTTPSamplerProxy>
  55790. <hashTree/>
  55791. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New Conditional" enabled="true">
  55792. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55793. <collectionProp name="Arguments.arguments">
  55794. <elementProp name="isAjax" elementType="HTTPArgument">
  55795. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55796. <stringProp name="Argument.value">true</stringProp>
  55797. <stringProp name="Argument.metadata">=</stringProp>
  55798. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55799. <stringProp name="Argument.name">isAjax</stringProp>
  55800. </elementProp>
  55801. <elementProp name="form_key" elementType="HTTPArgument">
  55802. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55803. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  55804. <stringProp name="Argument.metadata">=</stringProp>
  55805. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55806. <stringProp name="Argument.name">form_key</stringProp>
  55807. <stringProp name="Argument.desc">true</stringProp>
  55808. </elementProp>
  55809. <elementProp name="id" elementType="HTTPArgument">
  55810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55811. <stringProp name="Argument.value">1--1</stringProp>
  55812. <stringProp name="Argument.metadata">=</stringProp>
  55813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55814. <stringProp name="Argument.name">id</stringProp>
  55815. </elementProp>
  55816. <elementProp name="type" elementType="HTTPArgument">
  55817. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55818. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal</stringProp>
  55819. <stringProp name="Argument.metadata">=</stringProp>
  55820. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55821. <stringProp name="Argument.name">type</stringProp>
  55822. </elementProp>
  55823. </collectionProp>
  55824. </elementProp>
  55825. <stringProp name="HTTPSampler.domain"/>
  55826. <stringProp name="HTTPSampler.port"/>
  55827. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  55828. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  55829. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  55830. <stringProp name="HTTPSampler.contentEncoding"/>
  55831. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form</stringProp>
  55832. <stringProp name="HTTPSampler.method">POST</stringProp>
  55833. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  55834. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  55835. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  55836. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  55837. <boolProp name="HTTPSampler.monitor">false</boolProp>
  55838. <stringProp name="HTTPSampler.embedded_url_re"/>
  55839. </HTTPSamplerProxy>
  55840. <hashTree/>
  55841. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  55842. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  55843. <collectionProp name="Arguments.arguments">
  55844. <elementProp name="name" elementType="HTTPArgument">
  55845. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55846. <stringProp name="Argument.value">Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  55847. <stringProp name="Argument.metadata">=</stringProp>
  55848. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55849. <stringProp name="Argument.name">name</stringProp>
  55850. </elementProp>
  55851. <elementProp name="is_active" elementType="HTTPArgument">
  55852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55853. <stringProp name="Argument.value">0</stringProp>
  55854. <stringProp name="Argument.metadata">=</stringProp>
  55855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55856. <stringProp name="Argument.name">is_active</stringProp>
  55857. </elementProp>
  55858. <elementProp name="use_auto_generation" elementType="HTTPArgument">
  55859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55860. <stringProp name="Argument.value">0</stringProp>
  55861. <stringProp name="Argument.metadata">=</stringProp>
  55862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55863. <stringProp name="Argument.name">use_auto_generation</stringProp>
  55864. </elementProp>
  55865. <elementProp name="is_rss" elementType="HTTPArgument">
  55866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55867. <stringProp name="Argument.value">1</stringProp>
  55868. <stringProp name="Argument.metadata">=</stringProp>
  55869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55870. <stringProp name="Argument.name">is_rss</stringProp>
  55871. </elementProp>
  55872. <elementProp name="apply_to_shipping" elementType="HTTPArgument">
  55873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55874. <stringProp name="Argument.value">0</stringProp>
  55875. <stringProp name="Argument.metadata">=</stringProp>
  55876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55877. <stringProp name="Argument.name">apply_to_shipping</stringProp>
  55878. </elementProp>
  55879. <elementProp name="stop_rules_processing" elementType="HTTPArgument">
  55880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55881. <stringProp name="Argument.value">0</stringProp>
  55882. <stringProp name="Argument.metadata">=</stringProp>
  55883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55884. <stringProp name="Argument.name">stop_rules_processing</stringProp>
  55885. </elementProp>
  55886. <elementProp name="coupon_code" elementType="HTTPArgument">
  55887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55888. <stringProp name="Argument.value"/>
  55889. <stringProp name="Argument.metadata">=</stringProp>
  55890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55891. <stringProp name="Argument.name">coupon_code</stringProp>
  55892. </elementProp>
  55893. <elementProp name="uses_per_coupon" elementType="HTTPArgument">
  55894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55895. <stringProp name="Argument.value"/>
  55896. <stringProp name="Argument.metadata">=</stringProp>
  55897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55898. <stringProp name="Argument.name">uses_per_coupon</stringProp>
  55899. </elementProp>
  55900. <elementProp name="uses_per_customer" elementType="HTTPArgument">
  55901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55902. <stringProp name="Argument.value"/>
  55903. <stringProp name="Argument.metadata">=</stringProp>
  55904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55905. <stringProp name="Argument.name">uses_per_customer</stringProp>
  55906. </elementProp>
  55907. <elementProp name="sort_order" elementType="HTTPArgument">
  55908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55909. <stringProp name="Argument.value"/>
  55910. <stringProp name="Argument.metadata">=</stringProp>
  55911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55912. <stringProp name="Argument.name">sort_order</stringProp>
  55913. </elementProp>
  55914. <elementProp name="discount_amount" elementType="HTTPArgument">
  55915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55916. <stringProp name="Argument.value">5</stringProp>
  55917. <stringProp name="Argument.metadata">=</stringProp>
  55918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55919. <stringProp name="Argument.name">discount_amount</stringProp>
  55920. </elementProp>
  55921. <elementProp name="discount_qty" elementType="HTTPArgument">
  55922. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55923. <stringProp name="Argument.value">0</stringProp>
  55924. <stringProp name="Argument.metadata">=</stringProp>
  55925. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55926. <stringProp name="Argument.name">discount_qty</stringProp>
  55927. </elementProp>
  55928. <elementProp name="discount_step" elementType="HTTPArgument">
  55929. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55930. <stringProp name="Argument.value"/>
  55931. <stringProp name="Argument.metadata">=</stringProp>
  55932. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55933. <stringProp name="Argument.name">discount_step</stringProp>
  55934. </elementProp>
  55935. <elementProp name="reward_points_delta" elementType="HTTPArgument">
  55936. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55937. <stringProp name="Argument.value"/>
  55938. <stringProp name="Argument.metadata">=</stringProp>
  55939. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55940. <stringProp name="Argument.name">reward_points_delta</stringProp>
  55941. </elementProp>
  55942. <elementProp name="store_labels[0]" elementType="HTTPArgument">
  55943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55944. <stringProp name="Argument.value"/>
  55945. <stringProp name="Argument.metadata">=</stringProp>
  55946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55947. <stringProp name="Argument.name">store_labels[0]</stringProp>
  55948. </elementProp>
  55949. <elementProp name="description" elementType="HTTPArgument">
  55950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55951. <stringProp name="Argument.value">Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  55952. <stringProp name="Argument.metadata">=</stringProp>
  55953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55954. <stringProp name="Argument.name">description</stringProp>
  55955. </elementProp>
  55956. <elementProp name="coupon_type" elementType="HTTPArgument">
  55957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55958. <stringProp name="Argument.value">1</stringProp>
  55959. <stringProp name="Argument.metadata">=</stringProp>
  55960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55961. <stringProp name="Argument.name">coupon_type</stringProp>
  55962. </elementProp>
  55963. <elementProp name="simple_action" elementType="HTTPArgument">
  55964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55965. <stringProp name="Argument.value">cart_fixed</stringProp>
  55966. <stringProp name="Argument.metadata">=</stringProp>
  55967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55968. <stringProp name="Argument.name">simple_action</stringProp>
  55969. </elementProp>
  55970. <elementProp name="website_ids[0]" elementType="HTTPArgument">
  55971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55972. <stringProp name="Argument.value">1</stringProp>
  55973. <stringProp name="Argument.metadata">=</stringProp>
  55974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55975. <stringProp name="Argument.name">website_ids[0]</stringProp>
  55976. </elementProp>
  55977. <elementProp name="customer_group_ids[0]" elementType="HTTPArgument">
  55978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55979. <stringProp name="Argument.value">0</stringProp>
  55980. <stringProp name="Argument.metadata">=</stringProp>
  55981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55982. <stringProp name="Argument.name">customer_group_ids[0]</stringProp>
  55983. </elementProp>
  55984. <elementProp name="from_date" elementType="HTTPArgument">
  55985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55986. <stringProp name="Argument.value"/>
  55987. <stringProp name="Argument.metadata">=</stringProp>
  55988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55989. <stringProp name="Argument.name">from_date</stringProp>
  55990. </elementProp>
  55991. <elementProp name="to_date" elementType="HTTPArgument">
  55992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  55993. <stringProp name="Argument.value"/>
  55994. <stringProp name="Argument.metadata">=</stringProp>
  55995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  55996. <stringProp name="Argument.name">to_date</stringProp>
  55997. </elementProp>
  55998. <elementProp name="rule[conditions][1][type]" elementType="HTTPArgument">
  55999. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56000. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Combine</stringProp>
  56001. <stringProp name="Argument.metadata">=</stringProp>
  56002. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56003. <stringProp name="Argument.name">rule[conditions][1][type]</stringProp>
  56004. </elementProp>
  56005. <elementProp name="rule[conditions][1][aggregator]" elementType="HTTPArgument">
  56006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56007. <stringProp name="Argument.value">all</stringProp>
  56008. <stringProp name="Argument.metadata">=</stringProp>
  56009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56010. <stringProp name="Argument.name">rule[conditions][1][aggregator]</stringProp>
  56011. </elementProp>
  56012. <elementProp name="rule[conditions][1][value]" elementType="HTTPArgument">
  56013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56014. <stringProp name="Argument.value">1</stringProp>
  56015. <stringProp name="Argument.metadata">=</stringProp>
  56016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56017. <stringProp name="Argument.name">rule[conditions][1][value]</stringProp>
  56018. </elementProp>
  56019. <elementProp name="rule[conditions][1--1][type]" elementType="HTTPArgument">
  56020. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56021. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address</stringProp>
  56022. <stringProp name="Argument.metadata">=</stringProp>
  56023. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56024. <stringProp name="Argument.name">rule[conditions][1--1][type]</stringProp>
  56025. </elementProp>
  56026. <elementProp name="rule[conditions][1--1][attribute]" elementType="HTTPArgument">
  56027. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56028. <stringProp name="Argument.value">base_subtotal</stringProp>
  56029. <stringProp name="Argument.metadata">=</stringProp>
  56030. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56031. <stringProp name="Argument.name">rule[conditions][1--1][attribute]</stringProp>
  56032. </elementProp>
  56033. <elementProp name="rule[conditions][1--1][operator]" elementType="HTTPArgument">
  56034. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56035. <stringProp name="Argument.value">&gt;=</stringProp>
  56036. <stringProp name="Argument.metadata">=</stringProp>
  56037. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56038. <stringProp name="Argument.name">rule[conditions][1--1][operator]</stringProp>
  56039. </elementProp>
  56040. <elementProp name="rule[conditions][1--1][value]" elementType="HTTPArgument">
  56041. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56042. <stringProp name="Argument.value">100</stringProp>
  56043. <stringProp name="Argument.metadata">=</stringProp>
  56044. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56045. <stringProp name="Argument.name">rule[conditions][1--1][value]</stringProp>
  56046. </elementProp>
  56047. <elementProp name="rule[conditions][1][new_chlid]" elementType="HTTPArgument">
  56048. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56049. <stringProp name="Argument.value"/>
  56050. <stringProp name="Argument.metadata">=</stringProp>
  56051. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56052. <stringProp name="Argument.name">rule[conditions][1][new_chlid]</stringProp>
  56053. </elementProp>
  56054. <elementProp name="rule[actions][1][type]" elementType="HTTPArgument">
  56055. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56056. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Product\Combine</stringProp>
  56057. <stringProp name="Argument.metadata">=</stringProp>
  56058. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56059. <stringProp name="Argument.name">rule[actions][1][type]</stringProp>
  56060. </elementProp>
  56061. <elementProp name="rule[actions][1][aggregator]" elementType="HTTPArgument">
  56062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56063. <stringProp name="Argument.value">all</stringProp>
  56064. <stringProp name="Argument.metadata">=</stringProp>
  56065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56066. <stringProp name="Argument.name">rule[actions][1][aggregator]</stringProp>
  56067. </elementProp>
  56068. <elementProp name="rule[actions][1][value]" elementType="HTTPArgument">
  56069. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56070. <stringProp name="Argument.value">1</stringProp>
  56071. <stringProp name="Argument.metadata">=</stringProp>
  56072. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56073. <stringProp name="Argument.name">rule[actions][1][value]</stringProp>
  56074. </elementProp>
  56075. <elementProp name="rule[actions][1][new_child]" elementType="HTTPArgument">
  56076. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56077. <stringProp name="Argument.value"/>
  56078. <stringProp name="Argument.metadata">=</stringProp>
  56079. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56080. <stringProp name="Argument.name">rule[actions][1][new_child]</stringProp>
  56081. </elementProp>
  56082. <elementProp name="store_labels[1]" elementType="HTTPArgument">
  56083. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56084. <stringProp name="Argument.value"/>
  56085. <stringProp name="Argument.metadata">=</stringProp>
  56086. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56087. <stringProp name="Argument.name">store_labels[1]</stringProp>
  56088. </elementProp>
  56089. <elementProp name="store_labels[2]" elementType="HTTPArgument">
  56090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56091. <stringProp name="Argument.value"/>
  56092. <stringProp name="Argument.metadata">=</stringProp>
  56093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56094. <stringProp name="Argument.name">store_labels[2]</stringProp>
  56095. </elementProp>
  56096. <elementProp name="related_banners" elementType="HTTPArgument">
  56097. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56098. <stringProp name="Argument.value"/>
  56099. <stringProp name="Argument.metadata">=</stringProp>
  56100. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56101. <stringProp name="Argument.name">related_banners</stringProp>
  56102. </elementProp>
  56103. <elementProp name="form_key" elementType="HTTPArgument">
  56104. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56105. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  56106. <stringProp name="Argument.metadata">=</stringProp>
  56107. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56108. <stringProp name="Argument.name">form_key</stringProp>
  56109. </elementProp>
  56110. </collectionProp>
  56111. </elementProp>
  56112. <stringProp name="HTTPSampler.domain"/>
  56113. <stringProp name="HTTPSampler.port"/>
  56114. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56115. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56116. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56117. <stringProp name="HTTPSampler.contentEncoding"/>
  56118. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/save/</stringProp>
  56119. <stringProp name="HTTPSampler.method">POST</stringProp>
  56120. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56121. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56122. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56123. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56124. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56125. <stringProp name="HTTPSampler.embedded_url_re"/>
  56126. </HTTPSamplerProxy>
  56127. <hashTree>
  56128. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  56129. <collectionProp name="Asserion.test_strings">
  56130. <stringProp name="-396438583">You saved the rule.</stringProp>
  56131. </collectionProp>
  56132. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56133. <boolProp name="Assertion.assume_success">false</boolProp>
  56134. <intProp name="Assertion.test_type">16</intProp>
  56135. </ResponseAssertion>
  56136. <hashTree/>
  56137. </hashTree>
  56138. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  56139. <intProp name="ActionProcessor.action">1</intProp>
  56140. <intProp name="ActionProcessor.target">0</intProp>
  56141. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))}</stringProp>
  56142. </TestAction>
  56143. <hashTree/>
  56144. </hashTree>
  56145. </hashTree>
  56146. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  56147. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  56148. <collectionProp name="Arguments.arguments"/>
  56149. </elementProp>
  56150. <stringProp name="HTTPSampler.domain"/>
  56151. <stringProp name="HTTPSampler.port"/>
  56152. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56153. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56154. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56155. <stringProp name="HTTPSampler.contentEncoding"/>
  56156. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  56157. <stringProp name="HTTPSampler.method">GET</stringProp>
  56158. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56159. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56160. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56161. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56162. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56163. <stringProp name="HTTPSampler.embedded_url_re"/>
  56164. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  56165. <hashTree>
  56166. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  56167. <boolProp name="resetInterpreter">false</boolProp>
  56168. <stringProp name="parameters"/>
  56169. <stringProp name="filename"/>
  56170. <stringProp name="script">
  56171. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  56172. if (adminUsersDistribution == 1) {
  56173. adminUserList = props.get("adminUserList");
  56174. adminUserList.add(vars.get("admin_user"));
  56175. }
  56176. </stringProp>
  56177. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  56178. <hashTree/>
  56179. </hashTree>
  56180. </hashTree>
  56181. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Customer Management" enabled="true">
  56182. <intProp name="ThroughputController.style">1</intProp>
  56183. <boolProp name="ThroughputController.perThread">false</boolProp>
  56184. <intProp name="ThroughputController.maxThroughput">1</intProp>
  56185. <stringProp name="ThroughputController.percentThroughput">${cAdminCustomerManagementPercentage}</stringProp>
  56186. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  56187. <hashTree>
  56188. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  56189. <stringProp name="script">
  56190. var tmpLabel = vars.get("testLabel")
  56191. if (tmpLabel) {
  56192. var testLabel = " (" + tmpLabel + ")"
  56193. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  56194. if (sampler.getName().indexOf(testLabel) == -1) {
  56195. sampler.setName(sampler.getName() + testLabel);
  56196. }
  56197. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  56198. sampler.setName("SetUp - " + sampler.getName());
  56199. }
  56200. } else {
  56201. testLabel = ""
  56202. }
  56203. </stringProp>
  56204. <stringProp name="scriptLanguage">javascript</stringProp>
  56205. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  56206. <hashTree/>
  56207. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  56208. <stringProp name="BeanShellSampler.query">
  56209. vars.put("testLabel", "[C] Admin Customer Management");
  56210. </stringProp>
  56211. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  56212. </BeanShellSampler>
  56213. <hashTree/>
  56214. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  56215. <stringProp name="script">
  56216. function getFormKeyFromResponse()
  56217. {
  56218. var url = prev.getUrlAsString(),
  56219. responseCode = prev.getResponseCode(),
  56220. formKey = null;
  56221. searchPattern = /var FORM_KEY = '(.+)'/;
  56222. if (responseCode == "200" &amp;&amp; url) {
  56223. response = prev.getResponseDataAsString();
  56224. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  56225. }
  56226. return formKey;
  56227. }
  56228. formKey = vars.get("form_key_storage");
  56229. currentFormKey = getFormKeyFromResponse();
  56230. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  56231. vars.put("form_key_storage", currentFormKey);
  56232. }
  56233. </stringProp>
  56234. <stringProp name="scriptLanguage">javascript</stringProp>
  56235. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  56236. <hashTree/>
  56237. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  56238. <stringProp name="script">
  56239. formKey = vars.get("form_key_storage");
  56240. if (formKey
  56241. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  56242. &amp;&amp; sampler.getMethod() == "POST")
  56243. {
  56244. arguments = sampler.getArguments();
  56245. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  56246. {
  56247. argument = arguments.getArgument(i);
  56248. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  56249. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  56250. argument.setValue(formKey);
  56251. }
  56252. }
  56253. }
  56254. </stringProp>
  56255. <stringProp name="scriptLanguage">javascript</stringProp>
  56256. </JSR223PreProcessor>
  56257. <hashTree/>
  56258. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  56259. <collectionProp name="CookieManager.cookies"/>
  56260. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  56261. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  56262. <hashTree/>
  56263. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  56264. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  56265. </GenericController>
  56266. <hashTree>
  56267. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  56268. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  56269. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  56270. <hashTree>
  56271. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  56272. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  56273. <stringProp name="BeanShellSampler.query">
  56274. adminUser = "none";
  56275. adminUserList = props.get("adminUserList");
  56276. adminUserListIterator = props.get("adminUserListIterator");
  56277. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  56278. if (adminUsersDistribution == 1) {
  56279. adminUser = adminUserList.poll();
  56280. } else {
  56281. if (!adminUserListIterator.hasNext()) {
  56282. adminUserListIterator = adminUserList.descendingIterator();
  56283. }
  56284. adminUser = adminUserListIterator.next();
  56285. }
  56286. if (adminUser == "none") {
  56287. SampleResult.setResponseMessage("adminUser list is empty");
  56288. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  56289. IsSuccess=false;
  56290. SampleResult.setSuccessful(false);
  56291. SampleResult.setStopThread(true);
  56292. }
  56293. vars.put("admin_user", adminUser);
  56294. </stringProp>
  56295. <stringProp name="BeanShellSampler.filename"/>
  56296. <stringProp name="BeanShellSampler.parameters"/>
  56297. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  56298. </BeanShellSampler>
  56299. <hashTree/>
  56300. </hashTree>
  56301. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  56302. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  56303. <collectionProp name="Arguments.arguments"/>
  56304. </elementProp>
  56305. <stringProp name="HTTPSampler.domain"/>
  56306. <stringProp name="HTTPSampler.port"/>
  56307. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56308. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56309. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56310. <stringProp name="HTTPSampler.contentEncoding"/>
  56311. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  56312. <stringProp name="HTTPSampler.method">GET</stringProp>
  56313. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56314. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56315. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56316. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56317. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56318. <stringProp name="HTTPSampler.embedded_url_re"/>
  56319. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  56320. <hashTree>
  56321. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  56322. <collectionProp name="Asserion.test_strings">
  56323. <stringProp name="-1397214398">Welcome</stringProp>
  56324. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  56325. </collectionProp>
  56326. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56327. <boolProp name="Assertion.assume_success">false</boolProp>
  56328. <intProp name="Assertion.test_type">2</intProp>
  56329. </ResponseAssertion>
  56330. <hashTree/>
  56331. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  56332. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56333. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  56334. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  56335. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56336. <stringProp name="RegexExtractor.default"/>
  56337. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56338. </RegexExtractor>
  56339. <hashTree/>
  56340. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  56341. <collectionProp name="Asserion.test_strings">
  56342. <stringProp name="2845929">^.+$</stringProp>
  56343. </collectionProp>
  56344. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56345. <boolProp name="Assertion.assume_success">false</boolProp>
  56346. <intProp name="Assertion.test_type">1</intProp>
  56347. <stringProp name="Assertion.scope">variable</stringProp>
  56348. <stringProp name="Scope.variable">admin_form_key</stringProp>
  56349. </ResponseAssertion>
  56350. <hashTree/>
  56351. </hashTree>
  56352. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  56353. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  56354. <collectionProp name="Arguments.arguments">
  56355. <elementProp name="dummy" elementType="HTTPArgument">
  56356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56357. <stringProp name="Argument.value"/>
  56358. <stringProp name="Argument.metadata">=</stringProp>
  56359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56360. <stringProp name="Argument.name">dummy</stringProp>
  56361. </elementProp>
  56362. <elementProp name="form_key" elementType="HTTPArgument">
  56363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56364. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  56365. <stringProp name="Argument.metadata">=</stringProp>
  56366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56367. <stringProp name="Argument.name">form_key</stringProp>
  56368. </elementProp>
  56369. <elementProp name="login[password]" elementType="HTTPArgument">
  56370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56371. <stringProp name="Argument.value">${admin_password}</stringProp>
  56372. <stringProp name="Argument.metadata">=</stringProp>
  56373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56374. <stringProp name="Argument.name">login[password]</stringProp>
  56375. </elementProp>
  56376. <elementProp name="login[username]" elementType="HTTPArgument">
  56377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56378. <stringProp name="Argument.value">${admin_user}</stringProp>
  56379. <stringProp name="Argument.metadata">=</stringProp>
  56380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56381. <stringProp name="Argument.name">login[username]</stringProp>
  56382. </elementProp>
  56383. </collectionProp>
  56384. </elementProp>
  56385. <stringProp name="HTTPSampler.domain"/>
  56386. <stringProp name="HTTPSampler.port"/>
  56387. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56388. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56389. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56390. <stringProp name="HTTPSampler.contentEncoding"/>
  56391. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  56392. <stringProp name="HTTPSampler.method">POST</stringProp>
  56393. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56394. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56395. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56396. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56397. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  56398. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56399. <stringProp name="HTTPSampler.embedded_url_re"/>
  56400. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  56401. </HTTPSamplerProxy>
  56402. <hashTree>
  56403. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  56404. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56405. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  56406. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  56407. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56408. <stringProp name="RegexExtractor.default"/>
  56409. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56410. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  56411. <hashTree/>
  56412. </hashTree>
  56413. </hashTree>
  56414. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  56415. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  56416. </GenericController>
  56417. <hashTree>
  56418. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Customer Management" enabled="true">
  56419. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_customer_management/admin_customer_management.jmx</stringProp>
  56420. </TestFragmentController>
  56421. <hashTree>
  56422. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  56423. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  56424. <collectionProp name="Arguments.arguments"/>
  56425. </elementProp>
  56426. <stringProp name="HTTPSampler.domain"/>
  56427. <stringProp name="HTTPSampler.port"/>
  56428. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56429. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56430. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56431. <stringProp name="HTTPSampler.contentEncoding"/>
  56432. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index</stringProp>
  56433. <stringProp name="HTTPSampler.method">GET</stringProp>
  56434. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56435. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56436. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56437. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56438. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56439. <stringProp name="HTTPSampler.embedded_url_re"/>
  56440. </HTTPSamplerProxy>
  56441. <hashTree>
  56442. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  56443. <collectionProp name="HeaderManager.headers">
  56444. <elementProp name="Accept-Language" elementType="Header">
  56445. <stringProp name="Header.name">Accept-Language</stringProp>
  56446. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  56447. </elementProp>
  56448. <elementProp name="Accept" elementType="Header">
  56449. <stringProp name="Header.name">Accept</stringProp>
  56450. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  56451. </elementProp>
  56452. <elementProp name="User-Agent" elementType="Header">
  56453. <stringProp name="Header.name">User-Agent</stringProp>
  56454. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  56455. </elementProp>
  56456. <elementProp name="Accept-Encoding" elementType="Header">
  56457. <stringProp name="Header.name">Accept-Encoding</stringProp>
  56458. <stringProp name="Header.value">gzip, deflate</stringProp>
  56459. </elementProp>
  56460. </collectionProp>
  56461. </HeaderManager>
  56462. <hashTree/>
  56463. </hashTree>
  56464. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Render" enabled="true">
  56465. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  56466. <collectionProp name="Arguments.arguments">
  56467. <elementProp name="namespace" elementType="HTTPArgument">
  56468. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56469. <stringProp name="Argument.value">customer_listing</stringProp>
  56470. <stringProp name="Argument.metadata">=</stringProp>
  56471. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56472. <stringProp name="Argument.name">namespace</stringProp>
  56473. </elementProp>
  56474. <elementProp name="search" elementType="HTTPArgument">
  56475. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56476. <stringProp name="Argument.value"/>
  56477. <stringProp name="Argument.metadata">=</stringProp>
  56478. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56479. <stringProp name="Argument.name">search</stringProp>
  56480. </elementProp>
  56481. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  56482. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56483. <stringProp name="Argument.value">true</stringProp>
  56484. <stringProp name="Argument.metadata">=</stringProp>
  56485. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56486. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  56487. </elementProp>
  56488. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  56489. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56490. <stringProp name="Argument.value">20</stringProp>
  56491. <stringProp name="Argument.metadata">=</stringProp>
  56492. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56493. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  56494. </elementProp>
  56495. <elementProp name="paging[current]" elementType="HTTPArgument">
  56496. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56497. <stringProp name="Argument.value">1</stringProp>
  56498. <stringProp name="Argument.metadata">=</stringProp>
  56499. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56500. <stringProp name="Argument.name">paging[current]</stringProp>
  56501. </elementProp>
  56502. <elementProp name="sorting[field]" elementType="HTTPArgument">
  56503. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56504. <stringProp name="Argument.value">entity_id</stringProp>
  56505. <stringProp name="Argument.metadata">=</stringProp>
  56506. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56507. <stringProp name="Argument.name">sorting[field]</stringProp>
  56508. </elementProp>
  56509. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  56510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56511. <stringProp name="Argument.value">asc</stringProp>
  56512. <stringProp name="Argument.metadata">=</stringProp>
  56513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56514. <stringProp name="Argument.name">sorting[direction]</stringProp>
  56515. </elementProp>
  56516. <elementProp name="isAjax" elementType="HTTPArgument">
  56517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56518. <stringProp name="Argument.value">true</stringProp>
  56519. <stringProp name="Argument.metadata">=</stringProp>
  56520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56521. <stringProp name="Argument.name">isAjax</stringProp>
  56522. </elementProp>
  56523. </collectionProp>
  56524. </elementProp>
  56525. <stringProp name="HTTPSampler.domain"/>
  56526. <stringProp name="HTTPSampler.port"/>
  56527. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56528. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56529. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56530. <stringProp name="HTTPSampler.contentEncoding"/>
  56531. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  56532. <stringProp name="HTTPSampler.method">GET</stringProp>
  56533. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56534. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56535. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56536. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56537. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56538. <stringProp name="HTTPSampler.embedded_url_re"/>
  56539. </HTTPSamplerProxy>
  56540. <hashTree>
  56541. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  56542. <collectionProp name="HeaderManager.headers">
  56543. <elementProp name="" elementType="Header">
  56544. <stringProp name="Header.name">X-Requested-With</stringProp>
  56545. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  56546. </elementProp>
  56547. </collectionProp>
  56548. </HeaderManager>
  56549. <hashTree/>
  56550. </hashTree>
  56551. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Render" enabled="true">
  56552. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  56553. <collectionProp name="Arguments.arguments">
  56554. <elementProp name="namespace" elementType="HTTPArgument">
  56555. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56556. <stringProp name="Argument.value">customer_listing</stringProp>
  56557. <stringProp name="Argument.metadata">=</stringProp>
  56558. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56559. <stringProp name="Argument.name">namespace</stringProp>
  56560. </elementProp>
  56561. <elementProp name="search" elementType="HTTPArgument">
  56562. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56563. <stringProp name="Argument.value">Lastname</stringProp>
  56564. <stringProp name="Argument.metadata">=</stringProp>
  56565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56566. <stringProp name="Argument.name">search</stringProp>
  56567. </elementProp>
  56568. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  56569. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56570. <stringProp name="Argument.value">true</stringProp>
  56571. <stringProp name="Argument.metadata">=</stringProp>
  56572. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56573. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  56574. </elementProp>
  56575. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  56576. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56577. <stringProp name="Argument.value">20</stringProp>
  56578. <stringProp name="Argument.metadata">=</stringProp>
  56579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56580. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  56581. </elementProp>
  56582. <elementProp name="paging[current]" elementType="HTTPArgument">
  56583. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56584. <stringProp name="Argument.value">1</stringProp>
  56585. <stringProp name="Argument.metadata">=</stringProp>
  56586. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56587. <stringProp name="Argument.name">paging[current]</stringProp>
  56588. </elementProp>
  56589. <elementProp name="sorting[field]" elementType="HTTPArgument">
  56590. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56591. <stringProp name="Argument.value">entity_id</stringProp>
  56592. <stringProp name="Argument.metadata">=</stringProp>
  56593. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56594. <stringProp name="Argument.name">sorting[field]</stringProp>
  56595. </elementProp>
  56596. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  56597. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56598. <stringProp name="Argument.value">asc</stringProp>
  56599. <stringProp name="Argument.metadata">=</stringProp>
  56600. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56601. <stringProp name="Argument.name">sorting[direction]</stringProp>
  56602. </elementProp>
  56603. <elementProp name="isAjax" elementType="HTTPArgument">
  56604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  56605. <stringProp name="Argument.value">true</stringProp>
  56606. <stringProp name="Argument.metadata">=</stringProp>
  56607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  56608. <stringProp name="Argument.name">isAjax</stringProp>
  56609. </elementProp>
  56610. </collectionProp>
  56611. </elementProp>
  56612. <stringProp name="HTTPSampler.domain"/>
  56613. <stringProp name="HTTPSampler.port"/>
  56614. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56615. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56616. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56617. <stringProp name="HTTPSampler.contentEncoding"/>
  56618. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  56619. <stringProp name="HTTPSampler.method">GET</stringProp>
  56620. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56621. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56622. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56623. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56624. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56625. <stringProp name="HTTPSampler.embedded_url_re"/>
  56626. </HTTPSamplerProxy>
  56627. <hashTree>
  56628. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  56629. <collectionProp name="HeaderManager.headers">
  56630. <elementProp name="" elementType="Header">
  56631. <stringProp name="Header.name">X-Requested-With</stringProp>
  56632. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  56633. </elementProp>
  56634. </collectionProp>
  56635. </HeaderManager>
  56636. <hashTree/>
  56637. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer edit url" enabled="true">
  56638. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56639. <stringProp name="RegexExtractor.refname">customer_edit_url_path</stringProp>
  56640. <stringProp name="RegexExtractor.regex">actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/",</stringProp>
  56641. <stringProp name="RegexExtractor.template">/customer/index/edit/id/$2$/</stringProp>
  56642. <stringProp name="RegexExtractor.default"/>
  56643. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56644. </RegexExtractor>
  56645. <hashTree/>
  56646. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer edit url" enabled="true">
  56647. <collectionProp name="Asserion.test_strings">
  56648. <stringProp name="2845929">^.+$</stringProp>
  56649. </collectionProp>
  56650. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56651. <boolProp name="Assertion.assume_success">false</boolProp>
  56652. <intProp name="Assertion.test_type">1</intProp>
  56653. <stringProp name="Assertion.scope">variable</stringProp>
  56654. <stringProp name="Scope.variable">customer_edit_url_path</stringProp>
  56655. </ResponseAssertion>
  56656. <hashTree/>
  56657. </hashTree>
  56658. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Customer" enabled="true">
  56659. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  56660. <collectionProp name="Arguments.arguments"/>
  56661. </elementProp>
  56662. <stringProp name="HTTPSampler.domain"/>
  56663. <stringProp name="HTTPSampler.port"/>
  56664. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  56665. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  56666. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  56667. <stringProp name="HTTPSampler.contentEncoding"/>
  56668. <stringProp name="HTTPSampler.path">${base_path}${admin_path}${customer_edit_url_path}</stringProp>
  56669. <stringProp name="HTTPSampler.method">GET</stringProp>
  56670. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  56671. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  56672. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  56673. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  56674. <boolProp name="HTTPSampler.monitor">false</boolProp>
  56675. <stringProp name="HTTPSampler.embedded_url_re"/>
  56676. </HTTPSamplerProxy>
  56677. <hashTree>
  56678. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert edit customer page" enabled="true">
  56679. <collectionProp name="Asserion.test_strings">
  56680. <stringProp name="-1422614550">Customer Information</stringProp>
  56681. </collectionProp>
  56682. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56683. <boolProp name="Assertion.assume_success">false</boolProp>
  56684. <intProp name="Assertion.test_type">2</intProp>
  56685. </ResponseAssertion>
  56686. <hashTree/>
  56687. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer entity_id" enabled="true">
  56688. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56689. <stringProp name="RegexExtractor.refname">admin_customer_entity_id</stringProp>
  56690. <stringProp name="RegexExtractor.regex">"entity_id":"(\d+)"</stringProp>
  56691. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56692. <stringProp name="RegexExtractor.default"/>
  56693. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56694. </RegexExtractor>
  56695. <hashTree/>
  56696. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract website_id" enabled="true">
  56697. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56698. <stringProp name="RegexExtractor.refname">admin_customer_website_id</stringProp>
  56699. <stringProp name="RegexExtractor.regex">"website_id":"(\d+)"</stringProp>
  56700. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56701. <stringProp name="RegexExtractor.default"/>
  56702. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56703. </RegexExtractor>
  56704. <hashTree/>
  56705. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer firstname" enabled="true">
  56706. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56707. <stringProp name="RegexExtractor.refname">admin_customer_firstname</stringProp>
  56708. <stringProp name="RegexExtractor.regex">"firstname":"([^"]+)"</stringProp>
  56709. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56710. <stringProp name="RegexExtractor.default"/>
  56711. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56712. </RegexExtractor>
  56713. <hashTree/>
  56714. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer lastname" enabled="true">
  56715. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56716. <stringProp name="RegexExtractor.refname">admin_customer_lastname</stringProp>
  56717. <stringProp name="RegexExtractor.regex">"lastname":"([^"]+)"</stringProp>
  56718. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56719. <stringProp name="RegexExtractor.default"/>
  56720. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56721. </RegexExtractor>
  56722. <hashTree/>
  56723. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer email" enabled="true">
  56724. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56725. <stringProp name="RegexExtractor.refname">admin_customer_email</stringProp>
  56726. <stringProp name="RegexExtractor.regex">"email":"([^\@]+@[^.]+.[^"]+)"</stringProp>
  56727. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56728. <stringProp name="RegexExtractor.default"/>
  56729. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56730. </RegexExtractor>
  56731. <hashTree/>
  56732. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract group_id" enabled="true">
  56733. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56734. <stringProp name="RegexExtractor.refname">admin_customer_group_id</stringProp>
  56735. <stringProp name="RegexExtractor.regex">"group_id":"(\d+)"</stringProp>
  56736. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56737. <stringProp name="RegexExtractor.default"/>
  56738. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56739. </RegexExtractor>
  56740. <hashTree/>
  56741. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract store_id" enabled="true">
  56742. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56743. <stringProp name="RegexExtractor.refname">admin_customer_store_id</stringProp>
  56744. <stringProp name="RegexExtractor.regex">"store_id":"(\d+)"</stringProp>
  56745. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56746. <stringProp name="RegexExtractor.default"/>
  56747. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56748. </RegexExtractor>
  56749. <hashTree/>
  56750. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extact created_at" enabled="true">
  56751. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56752. <stringProp name="RegexExtractor.refname">admin_customer_created_at</stringProp>
  56753. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  56754. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56755. <stringProp name="RegexExtractor.default"/>
  56756. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56757. </RegexExtractor>
  56758. <hashTree/>
  56759. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract updated_at" enabled="true">
  56760. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56761. <stringProp name="RegexExtractor.refname">admin_customer_updated_at</stringProp>
  56762. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  56763. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56764. <stringProp name="RegexExtractor.default"/>
  56765. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56766. </RegexExtractor>
  56767. <hashTree/>
  56768. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract is_active" enabled="true">
  56769. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56770. <stringProp name="RegexExtractor.refname">admin_customer_is_active</stringProp>
  56771. <stringProp name="RegexExtractor.regex">"is_active":"(\d+)"</stringProp>
  56772. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56773. <stringProp name="RegexExtractor.default"/>
  56774. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56775. </RegexExtractor>
  56776. <hashTree/>
  56777. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract disable_auto_group_change" enabled="true">
  56778. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56779. <stringProp name="RegexExtractor.refname">admin_customer_disable_auto_group_change</stringProp>
  56780. <stringProp name="RegexExtractor.regex">"disable_auto_group_change":"(\d+)"</stringProp>
  56781. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56782. <stringProp name="RegexExtractor.default"/>
  56783. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56784. </RegexExtractor>
  56785. <hashTree/>
  56786. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract created_in" enabled="true">
  56787. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56788. <stringProp name="RegexExtractor.refname">admin_customer_created_in</stringProp>
  56789. <stringProp name="RegexExtractor.regex">"created_in":"([^"]+)"</stringProp>
  56790. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56791. <stringProp name="RegexExtractor.default"/>
  56792. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56793. </RegexExtractor>
  56794. <hashTree/>
  56795. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract dob" enabled="true">
  56796. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56797. <stringProp name="RegexExtractor.refname">admin_customer_dob</stringProp>
  56798. <stringProp name="RegexExtractor.regex">"dob":"(\d+)-(\d+)-(\d+)"</stringProp>
  56799. <stringProp name="RegexExtractor.template">$2$/$3$/$1$</stringProp>
  56800. <stringProp name="RegexExtractor.default"/>
  56801. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56802. </RegexExtractor>
  56803. <hashTree/>
  56804. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_billing" enabled="true">
  56805. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56806. <stringProp name="RegexExtractor.refname">admin_customer_default_billing</stringProp>
  56807. <stringProp name="RegexExtractor.regex">"default_billing":"(\d+)"</stringProp>
  56808. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56809. <stringProp name="RegexExtractor.default"/>
  56810. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56811. </RegexExtractor>
  56812. <hashTree/>
  56813. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_shipping" enabled="true">
  56814. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56815. <stringProp name="RegexExtractor.refname">admin_customer_default_shipping</stringProp>
  56816. <stringProp name="RegexExtractor.regex">"default_shipping":"(\d+)"</stringProp>
  56817. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56818. <stringProp name="RegexExtractor.default"/>
  56819. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56820. </RegexExtractor>
  56821. <hashTree/>
  56822. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract gender" enabled="true">
  56823. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56824. <stringProp name="RegexExtractor.refname">admin_customer_gender</stringProp>
  56825. <stringProp name="RegexExtractor.regex">"gender":"(\d+)"</stringProp>
  56826. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56827. <stringProp name="RegexExtractor.default"/>
  56828. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56829. </RegexExtractor>
  56830. <hashTree/>
  56831. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract failures_num" enabled="true">
  56832. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56833. <stringProp name="RegexExtractor.refname">admin_customer_failures_num</stringProp>
  56834. <stringProp name="RegexExtractor.regex">"failures_num":"(\d+)"</stringProp>
  56835. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56836. <stringProp name="RegexExtractor.default"/>
  56837. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56838. </RegexExtractor>
  56839. <hashTree/>
  56840. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_entity_id" enabled="true">
  56841. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56842. <stringProp name="RegexExtractor.refname">admin_customer_address_entity_id</stringProp>
  56843. <stringProp name="RegexExtractor.regex">_address":\{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}"</stringProp>
  56844. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56845. <stringProp name="RegexExtractor.default"/>
  56846. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56847. </RegexExtractor>
  56848. <hashTree/>
  56849. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_created_at" enabled="true">
  56850. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56851. <stringProp name="RegexExtractor.refname">admin_customer_address_created_at</stringProp>
  56852. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)"</stringProp>
  56853. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56854. <stringProp name="RegexExtractor.default"/>
  56855. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56856. </RegexExtractor>
  56857. <hashTree/>
  56858. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_updated_at" enabled="true">
  56859. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56860. <stringProp name="RegexExtractor.refname">admin_customer_address_updated_at</stringProp>
  56861. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)"</stringProp>
  56862. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56863. <stringProp name="RegexExtractor.default"/>
  56864. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56865. </RegexExtractor>
  56866. <hashTree/>
  56867. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_is_active" enabled="true">
  56868. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56869. <stringProp name="RegexExtractor.refname">admin_customer_address_is_active</stringProp>
  56870. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)"</stringProp>
  56871. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56872. <stringProp name="RegexExtractor.default"/>
  56873. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56874. </RegexExtractor>
  56875. <hashTree/>
  56876. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_city" enabled="true">
  56877. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56878. <stringProp name="RegexExtractor.refname">admin_customer_address_city</stringProp>
  56879. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)"</stringProp>
  56880. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56881. <stringProp name="RegexExtractor.default"/>
  56882. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56883. </RegexExtractor>
  56884. <hashTree/>
  56885. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_country_id" enabled="true">
  56886. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56887. <stringProp name="RegexExtractor.refname">admin_customer_address_country_id</stringProp>
  56888. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)"</stringProp>
  56889. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56890. <stringProp name="RegexExtractor.default"/>
  56891. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56892. </RegexExtractor>
  56893. <hashTree/>
  56894. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_firstname" enabled="true">
  56895. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56896. <stringProp name="RegexExtractor.refname">admin_customer_address_firstname</stringProp>
  56897. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)"</stringProp>
  56898. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56899. <stringProp name="RegexExtractor.default"/>
  56900. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56901. </RegexExtractor>
  56902. <hashTree/>
  56903. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_lastname" enabled="true">
  56904. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56905. <stringProp name="RegexExtractor.refname">admin_customer_address_lastname</stringProp>
  56906. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)"</stringProp>
  56907. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56908. <stringProp name="RegexExtractor.default"/>
  56909. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56910. </RegexExtractor>
  56911. <hashTree/>
  56912. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_postcode" enabled="true">
  56913. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56914. <stringProp name="RegexExtractor.refname">admin_customer_address_postcode</stringProp>
  56915. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)"</stringProp>
  56916. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56917. <stringProp name="RegexExtractor.default"/>
  56918. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56919. </RegexExtractor>
  56920. <hashTree/>
  56921. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region" enabled="true">
  56922. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56923. <stringProp name="RegexExtractor.refname">admin_customer_address_region</stringProp>
  56924. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)"</stringProp>
  56925. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56926. <stringProp name="RegexExtractor.default"/>
  56927. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56928. </RegexExtractor>
  56929. <hashTree/>
  56930. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region_id" enabled="true">
  56931. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56932. <stringProp name="RegexExtractor.refname">admin_customer_address_region_id</stringProp>
  56933. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)"</stringProp>
  56934. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56935. <stringProp name="RegexExtractor.default"/>
  56936. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56937. </RegexExtractor>
  56938. <hashTree/>
  56939. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address street" enabled="true">
  56940. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56941. <stringProp name="RegexExtractor.refname">admin_customer_address_street</stringProp>
  56942. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\]</stringProp>
  56943. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56944. <stringProp name="RegexExtractor.default"/>
  56945. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56946. </RegexExtractor>
  56947. <hashTree/>
  56948. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_telephone" enabled="true">
  56949. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56950. <stringProp name="RegexExtractor.refname">admin_customer_address_telephone</stringProp>
  56951. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)"</stringProp>
  56952. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56953. <stringProp name="RegexExtractor.default"/>
  56954. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56955. </RegexExtractor>
  56956. <hashTree/>
  56957. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_customer_id" enabled="true">
  56958. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  56959. <stringProp name="RegexExtractor.refname">admin_customer_address_customer_id</stringProp>
  56960. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)"</stringProp>
  56961. <stringProp name="RegexExtractor.template">$1$</stringProp>
  56962. <stringProp name="RegexExtractor.default"/>
  56963. <stringProp name="RegexExtractor.match_number">1</stringProp>
  56964. </RegexExtractor>
  56965. <hashTree/>
  56966. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer entity_id" enabled="true">
  56967. <collectionProp name="Asserion.test_strings">
  56968. <stringProp name="89649215">^\d+$</stringProp>
  56969. </collectionProp>
  56970. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56971. <boolProp name="Assertion.assume_success">false</boolProp>
  56972. <intProp name="Assertion.test_type">1</intProp>
  56973. <stringProp name="Assertion.scope">variable</stringProp>
  56974. <stringProp name="Scope.variable">admin_customer_entity_id</stringProp>
  56975. </ResponseAssertion>
  56976. <hashTree/>
  56977. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert website_id" enabled="true">
  56978. <collectionProp name="Asserion.test_strings">
  56979. <stringProp name="89649215">^\d+$</stringProp>
  56980. </collectionProp>
  56981. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56982. <boolProp name="Assertion.assume_success">false</boolProp>
  56983. <intProp name="Assertion.test_type">1</intProp>
  56984. <stringProp name="Assertion.scope">variable</stringProp>
  56985. <stringProp name="Scope.variable">admin_customer_website_id</stringProp>
  56986. </ResponseAssertion>
  56987. <hashTree/>
  56988. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer firstname" enabled="true">
  56989. <collectionProp name="Asserion.test_strings">
  56990. <stringProp name="2845929">^.+$</stringProp>
  56991. </collectionProp>
  56992. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  56993. <boolProp name="Assertion.assume_success">false</boolProp>
  56994. <intProp name="Assertion.test_type">1</intProp>
  56995. <stringProp name="Assertion.scope">variable</stringProp>
  56996. <stringProp name="Scope.variable">admin_customer_firstname</stringProp>
  56997. </ResponseAssertion>
  56998. <hashTree/>
  56999. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer lastname" enabled="true">
  57000. <collectionProp name="Asserion.test_strings">
  57001. <stringProp name="2845929">^.+$</stringProp>
  57002. </collectionProp>
  57003. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57004. <boolProp name="Assertion.assume_success">false</boolProp>
  57005. <intProp name="Assertion.test_type">1</intProp>
  57006. <stringProp name="Assertion.scope">variable</stringProp>
  57007. <stringProp name="Scope.variable">admin_customer_lastname</stringProp>
  57008. </ResponseAssertion>
  57009. <hashTree/>
  57010. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer email" enabled="true">
  57011. <collectionProp name="Asserion.test_strings">
  57012. <stringProp name="2845929">^.+$</stringProp>
  57013. </collectionProp>
  57014. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57015. <boolProp name="Assertion.assume_success">false</boolProp>
  57016. <intProp name="Assertion.test_type">1</intProp>
  57017. <stringProp name="Assertion.scope">variable</stringProp>
  57018. <stringProp name="Scope.variable">admin_customer_email</stringProp>
  57019. </ResponseAssertion>
  57020. <hashTree/>
  57021. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer group_id" enabled="true">
  57022. <collectionProp name="Asserion.test_strings">
  57023. <stringProp name="89649215">^\d+$</stringProp>
  57024. </collectionProp>
  57025. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57026. <boolProp name="Assertion.assume_success">false</boolProp>
  57027. <intProp name="Assertion.test_type">1</intProp>
  57028. <stringProp name="Assertion.scope">variable</stringProp>
  57029. <stringProp name="Scope.variable">admin_customer_group_id</stringProp>
  57030. </ResponseAssertion>
  57031. <hashTree/>
  57032. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer store_id" enabled="true">
  57033. <collectionProp name="Asserion.test_strings">
  57034. <stringProp name="89649215">^\d+$</stringProp>
  57035. </collectionProp>
  57036. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57037. <boolProp name="Assertion.assume_success">false</boolProp>
  57038. <intProp name="Assertion.test_type">1</intProp>
  57039. <stringProp name="Assertion.scope">variable</stringProp>
  57040. <stringProp name="Scope.variable">admin_customer_store_id</stringProp>
  57041. </ResponseAssertion>
  57042. <hashTree/>
  57043. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_at" enabled="true">
  57044. <collectionProp name="Asserion.test_strings">
  57045. <stringProp name="2845929">^.+$</stringProp>
  57046. </collectionProp>
  57047. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57048. <boolProp name="Assertion.assume_success">false</boolProp>
  57049. <intProp name="Assertion.test_type">1</intProp>
  57050. <stringProp name="Assertion.scope">variable</stringProp>
  57051. <stringProp name="Scope.variable">admin_customer_created_at</stringProp>
  57052. </ResponseAssertion>
  57053. <hashTree/>
  57054. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer updated_at" enabled="true">
  57055. <collectionProp name="Asserion.test_strings">
  57056. <stringProp name="2845929">^.+$</stringProp>
  57057. </collectionProp>
  57058. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57059. <boolProp name="Assertion.assume_success">false</boolProp>
  57060. <intProp name="Assertion.test_type">1</intProp>
  57061. <stringProp name="Assertion.scope">variable</stringProp>
  57062. <stringProp name="Scope.variable">admin_customer_updated_at</stringProp>
  57063. </ResponseAssertion>
  57064. <hashTree/>
  57065. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer is_active" enabled="true">
  57066. <collectionProp name="Asserion.test_strings">
  57067. <stringProp name="89649215">^\d+$</stringProp>
  57068. </collectionProp>
  57069. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57070. <boolProp name="Assertion.assume_success">false</boolProp>
  57071. <intProp name="Assertion.test_type">1</intProp>
  57072. <stringProp name="Assertion.scope">variable</stringProp>
  57073. <stringProp name="Scope.variable">admin_customer_is_active</stringProp>
  57074. </ResponseAssertion>
  57075. <hashTree/>
  57076. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer disable_auto_group_change" enabled="true">
  57077. <collectionProp name="Asserion.test_strings">
  57078. <stringProp name="89649215">^\d+$</stringProp>
  57079. </collectionProp>
  57080. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57081. <boolProp name="Assertion.assume_success">false</boolProp>
  57082. <intProp name="Assertion.test_type">1</intProp>
  57083. <stringProp name="Assertion.scope">variable</stringProp>
  57084. <stringProp name="Scope.variable">admin_customer_disable_auto_group_change</stringProp>
  57085. </ResponseAssertion>
  57086. <hashTree/>
  57087. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_in" enabled="true">
  57088. <collectionProp name="Asserion.test_strings">
  57089. <stringProp name="2845929">^.+$</stringProp>
  57090. </collectionProp>
  57091. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57092. <boolProp name="Assertion.assume_success">false</boolProp>
  57093. <intProp name="Assertion.test_type">1</intProp>
  57094. <stringProp name="Assertion.scope">variable</stringProp>
  57095. <stringProp name="Scope.variable">admin_customer_created_in</stringProp>
  57096. </ResponseAssertion>
  57097. <hashTree/>
  57098. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer dob" enabled="true">
  57099. <collectionProp name="Asserion.test_strings">
  57100. <stringProp name="221072919">^\d+/\d+/\d+$</stringProp>
  57101. </collectionProp>
  57102. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57103. <boolProp name="Assertion.assume_success">false</boolProp>
  57104. <intProp name="Assertion.test_type">1</intProp>
  57105. <stringProp name="Assertion.scope">variable</stringProp>
  57106. <stringProp name="Scope.variable">admin_customer_dob</stringProp>
  57107. </ResponseAssertion>
  57108. <hashTree/>
  57109. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_billing" enabled="true">
  57110. <collectionProp name="Asserion.test_strings">
  57111. <stringProp name="89649215">^\d+$</stringProp>
  57112. </collectionProp>
  57113. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57114. <boolProp name="Assertion.assume_success">false</boolProp>
  57115. <intProp name="Assertion.test_type">1</intProp>
  57116. <stringProp name="Assertion.scope">variable</stringProp>
  57117. <stringProp name="Scope.variable">admin_customer_default_billing</stringProp>
  57118. </ResponseAssertion>
  57119. <hashTree/>
  57120. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_shipping" enabled="true">
  57121. <collectionProp name="Asserion.test_strings">
  57122. <stringProp name="89649215">^\d+$</stringProp>
  57123. </collectionProp>
  57124. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57125. <boolProp name="Assertion.assume_success">false</boolProp>
  57126. <intProp name="Assertion.test_type">1</intProp>
  57127. <stringProp name="Assertion.scope">variable</stringProp>
  57128. <stringProp name="Scope.variable">admin_customer_default_shipping</stringProp>
  57129. </ResponseAssertion>
  57130. <hashTree/>
  57131. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer gender" enabled="true">
  57132. <collectionProp name="Asserion.test_strings">
  57133. <stringProp name="89649215">^\d+$</stringProp>
  57134. </collectionProp>
  57135. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57136. <boolProp name="Assertion.assume_success">false</boolProp>
  57137. <intProp name="Assertion.test_type">1</intProp>
  57138. <stringProp name="Assertion.scope">variable</stringProp>
  57139. <stringProp name="Scope.variable">admin_customer_gender</stringProp>
  57140. </ResponseAssertion>
  57141. <hashTree/>
  57142. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer failures_num" enabled="true">
  57143. <collectionProp name="Asserion.test_strings">
  57144. <stringProp name="89649215">^\d+$</stringProp>
  57145. </collectionProp>
  57146. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57147. <boolProp name="Assertion.assume_success">false</boolProp>
  57148. <intProp name="Assertion.test_type">1</intProp>
  57149. <stringProp name="Assertion.scope">variable</stringProp>
  57150. <stringProp name="Scope.variable">admin_customer_failures_num</stringProp>
  57151. </ResponseAssertion>
  57152. <hashTree/>
  57153. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_entity_id" enabled="true">
  57154. <collectionProp name="Asserion.test_strings">
  57155. <stringProp name="89649215">^\d+$</stringProp>
  57156. </collectionProp>
  57157. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57158. <boolProp name="Assertion.assume_success">false</boolProp>
  57159. <intProp name="Assertion.test_type">1</intProp>
  57160. <stringProp name="Assertion.scope">variable</stringProp>
  57161. <stringProp name="Scope.variable">admin_customer_address_entity_id</stringProp>
  57162. </ResponseAssertion>
  57163. <hashTree/>
  57164. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_created_at" enabled="true">
  57165. <collectionProp name="Asserion.test_strings">
  57166. <stringProp name="2845929">^.+$</stringProp>
  57167. </collectionProp>
  57168. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57169. <boolProp name="Assertion.assume_success">false</boolProp>
  57170. <intProp name="Assertion.test_type">1</intProp>
  57171. <stringProp name="Assertion.scope">variable</stringProp>
  57172. <stringProp name="Scope.variable">admin_customer_address_created_at</stringProp>
  57173. </ResponseAssertion>
  57174. <hashTree/>
  57175. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_updated_at" enabled="true">
  57176. <collectionProp name="Asserion.test_strings">
  57177. <stringProp name="2845929">^.+$</stringProp>
  57178. </collectionProp>
  57179. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57180. <boolProp name="Assertion.assume_success">false</boolProp>
  57181. <intProp name="Assertion.test_type">1</intProp>
  57182. <stringProp name="Assertion.scope">variable</stringProp>
  57183. <stringProp name="Scope.variable">admin_customer_address_updated_at</stringProp>
  57184. </ResponseAssertion>
  57185. <hashTree/>
  57186. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_is_active" enabled="true">
  57187. <collectionProp name="Asserion.test_strings">
  57188. <stringProp name="89649215">^\d+$</stringProp>
  57189. </collectionProp>
  57190. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57191. <boolProp name="Assertion.assume_success">false</boolProp>
  57192. <intProp name="Assertion.test_type">1</intProp>
  57193. <stringProp name="Assertion.scope">variable</stringProp>
  57194. <stringProp name="Scope.variable">admin_customer_address_is_active</stringProp>
  57195. </ResponseAssertion>
  57196. <hashTree/>
  57197. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_city" enabled="true">
  57198. <collectionProp name="Asserion.test_strings">
  57199. <stringProp name="2845929">^.+$</stringProp>
  57200. </collectionProp>
  57201. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57202. <boolProp name="Assertion.assume_success">false</boolProp>
  57203. <intProp name="Assertion.test_type">1</intProp>
  57204. <stringProp name="Assertion.scope">variable</stringProp>
  57205. <stringProp name="Scope.variable">admin_customer_address_city</stringProp>
  57206. </ResponseAssertion>
  57207. <hashTree/>
  57208. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_country_id" enabled="true">
  57209. <collectionProp name="Asserion.test_strings">
  57210. <stringProp name="2845929">^.+$</stringProp>
  57211. </collectionProp>
  57212. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57213. <boolProp name="Assertion.assume_success">false</boolProp>
  57214. <intProp name="Assertion.test_type">1</intProp>
  57215. <stringProp name="Assertion.scope">variable</stringProp>
  57216. <stringProp name="Scope.variable">admin_customer_address_country_id</stringProp>
  57217. </ResponseAssertion>
  57218. <hashTree/>
  57219. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_firstname" enabled="true">
  57220. <collectionProp name="Asserion.test_strings">
  57221. <stringProp name="2845929">^.+$</stringProp>
  57222. </collectionProp>
  57223. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57224. <boolProp name="Assertion.assume_success">false</boolProp>
  57225. <intProp name="Assertion.test_type">1</intProp>
  57226. <stringProp name="Assertion.scope">variable</stringProp>
  57227. <stringProp name="Scope.variable">admin_customer_address_firstname</stringProp>
  57228. </ResponseAssertion>
  57229. <hashTree/>
  57230. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_lastname" enabled="true">
  57231. <collectionProp name="Asserion.test_strings">
  57232. <stringProp name="2845929">^.+$</stringProp>
  57233. </collectionProp>
  57234. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57235. <boolProp name="Assertion.assume_success">false</boolProp>
  57236. <intProp name="Assertion.test_type">1</intProp>
  57237. <stringProp name="Assertion.scope">variable</stringProp>
  57238. <stringProp name="Scope.variable">admin_customer_address_lastname</stringProp>
  57239. </ResponseAssertion>
  57240. <hashTree/>
  57241. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_postcode" enabled="true">
  57242. <collectionProp name="Asserion.test_strings">
  57243. <stringProp name="2845929">^.+$</stringProp>
  57244. </collectionProp>
  57245. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57246. <boolProp name="Assertion.assume_success">false</boolProp>
  57247. <intProp name="Assertion.test_type">1</intProp>
  57248. <stringProp name="Assertion.scope">variable</stringProp>
  57249. <stringProp name="Scope.variable">admin_customer_address_postcode</stringProp>
  57250. </ResponseAssertion>
  57251. <hashTree/>
  57252. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region" enabled="true">
  57253. <collectionProp name="Asserion.test_strings">
  57254. <stringProp name="2845929">^.+$</stringProp>
  57255. </collectionProp>
  57256. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57257. <boolProp name="Assertion.assume_success">false</boolProp>
  57258. <intProp name="Assertion.test_type">1</intProp>
  57259. <stringProp name="Assertion.scope">variable</stringProp>
  57260. <stringProp name="Scope.variable">admin_customer_address_region</stringProp>
  57261. </ResponseAssertion>
  57262. <hashTree/>
  57263. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region_id" enabled="true">
  57264. <collectionProp name="Asserion.test_strings">
  57265. <stringProp name="89649215">^\d+$</stringProp>
  57266. </collectionProp>
  57267. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57268. <boolProp name="Assertion.assume_success">false</boolProp>
  57269. <intProp name="Assertion.test_type">1</intProp>
  57270. <stringProp name="Assertion.scope">variable</stringProp>
  57271. <stringProp name="Scope.variable">admin_customer_address_region_id</stringProp>
  57272. </ResponseAssertion>
  57273. <hashTree/>
  57274. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_street" enabled="true">
  57275. <collectionProp name="Asserion.test_strings">
  57276. <stringProp name="2845929">^.+$</stringProp>
  57277. </collectionProp>
  57278. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57279. <boolProp name="Assertion.assume_success">false</boolProp>
  57280. <intProp name="Assertion.test_type">1</intProp>
  57281. <stringProp name="Assertion.scope">variable</stringProp>
  57282. <stringProp name="Scope.variable">admin_customer_address_street</stringProp>
  57283. </ResponseAssertion>
  57284. <hashTree/>
  57285. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_telephone" enabled="true">
  57286. <collectionProp name="Asserion.test_strings">
  57287. <stringProp name="2845929">^.+$</stringProp>
  57288. </collectionProp>
  57289. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57290. <boolProp name="Assertion.assume_success">false</boolProp>
  57291. <intProp name="Assertion.test_type">1</intProp>
  57292. <stringProp name="Assertion.scope">variable</stringProp>
  57293. <stringProp name="Scope.variable">admin_customer_address_telephone</stringProp>
  57294. </ResponseAssertion>
  57295. <hashTree/>
  57296. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_customer_id" enabled="true">
  57297. <collectionProp name="Asserion.test_strings">
  57298. <stringProp name="89649215">^\d+$</stringProp>
  57299. </collectionProp>
  57300. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  57301. <boolProp name="Assertion.assume_success">false</boolProp>
  57302. <intProp name="Assertion.test_type">1</intProp>
  57303. <stringProp name="Assertion.scope">variable</stringProp>
  57304. <stringProp name="Scope.variable">admin_customer_address_customer_id</stringProp>
  57305. </ResponseAssertion>
  57306. <hashTree/>
  57307. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  57308. <collectionProp name="HeaderManager.headers">
  57309. <elementProp name="Accept-Language" elementType="Header">
  57310. <stringProp name="Header.name">Accept-Language</stringProp>
  57311. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  57312. </elementProp>
  57313. <elementProp name="Accept" elementType="Header">
  57314. <stringProp name="Header.name">Accept</stringProp>
  57315. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  57316. </elementProp>
  57317. <elementProp name="User-Agent" elementType="Header">
  57318. <stringProp name="Header.name">User-Agent</stringProp>
  57319. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  57320. </elementProp>
  57321. <elementProp name="Accept-Encoding" elementType="Header">
  57322. <stringProp name="Header.name">Accept-Encoding</stringProp>
  57323. <stringProp name="Header.value">gzip, deflate</stringProp>
  57324. </elementProp>
  57325. </collectionProp>
  57326. </HeaderManager>
  57327. <hashTree/>
  57328. </hashTree>
  57329. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Validate" enabled="true">
  57330. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  57331. <collectionProp name="Arguments.arguments">
  57332. <elementProp name="isAjax " elementType="HTTPArgument">
  57333. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57334. <stringProp name="Argument.value">true</stringProp>
  57335. <stringProp name="Argument.metadata">=</stringProp>
  57336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57337. <stringProp name="Argument.name">isAjax </stringProp>
  57338. </elementProp>
  57339. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  57340. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57341. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  57342. <stringProp name="Argument.metadata">=</stringProp>
  57343. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57344. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  57345. </elementProp>
  57346. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  57347. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57348. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  57349. <stringProp name="Argument.metadata">=</stringProp>
  57350. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57351. <stringProp name="Argument.name">customer[website_id]</stringProp>
  57352. </elementProp>
  57353. <elementProp name="customer[email]" elementType="HTTPArgument">
  57354. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57355. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  57356. <stringProp name="Argument.metadata">=</stringProp>
  57357. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57358. <stringProp name="Argument.name">customer[email]</stringProp>
  57359. </elementProp>
  57360. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  57361. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57362. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  57363. <stringProp name="Argument.metadata">=</stringProp>
  57364. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57365. <stringProp name="Argument.name">customer[group_id]</stringProp>
  57366. </elementProp>
  57367. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  57368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57369. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  57370. <stringProp name="Argument.metadata">=</stringProp>
  57371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57372. <stringProp name="Argument.name">customer[store_id]</stringProp>
  57373. </elementProp>
  57374. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  57375. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57376. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  57377. <stringProp name="Argument.metadata">=</stringProp>
  57378. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57379. <stringProp name="Argument.name">customer[created_at]</stringProp>
  57380. </elementProp>
  57381. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  57382. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57383. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  57384. <stringProp name="Argument.metadata">=</stringProp>
  57385. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57386. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  57387. </elementProp>
  57388. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  57389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57390. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  57391. <stringProp name="Argument.metadata">=</stringProp>
  57392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57393. <stringProp name="Argument.name">customer[is_active]</stringProp>
  57394. </elementProp>
  57395. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  57396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57397. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  57398. <stringProp name="Argument.metadata">=</stringProp>
  57399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57400. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  57401. </elementProp>
  57402. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  57403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57404. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  57405. <stringProp name="Argument.metadata">=</stringProp>
  57406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57407. <stringProp name="Argument.name">customer[created_in]</stringProp>
  57408. </elementProp>
  57409. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  57410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57411. <stringProp name="Argument.value"/>
  57412. <stringProp name="Argument.metadata">=</stringProp>
  57413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57414. <stringProp name="Argument.name">customer[prefix]</stringProp>
  57415. </elementProp>
  57416. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  57417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57418. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  57419. <stringProp name="Argument.metadata">=</stringProp>
  57420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57421. <stringProp name="Argument.name">customer[firstname]</stringProp>
  57422. </elementProp>
  57423. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  57424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57425. <stringProp name="Argument.value"/>
  57426. <stringProp name="Argument.metadata">=</stringProp>
  57427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57428. <stringProp name="Argument.name">customer[middlename]</stringProp>
  57429. </elementProp>
  57430. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  57431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57432. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  57433. <stringProp name="Argument.metadata">=</stringProp>
  57434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57435. <stringProp name="Argument.name">customer[lastname]</stringProp>
  57436. </elementProp>
  57437. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  57438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57439. <stringProp name="Argument.value"/>
  57440. <stringProp name="Argument.metadata">=</stringProp>
  57441. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57442. <stringProp name="Argument.name">customer[suffix]</stringProp>
  57443. </elementProp>
  57444. <elementProp name="customer[dob]" elementType="HTTPArgument">
  57445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57446. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  57447. <stringProp name="Argument.metadata">=</stringProp>
  57448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57449. <stringProp name="Argument.name">customer[dob]</stringProp>
  57450. </elementProp>
  57451. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  57452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57453. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  57454. <stringProp name="Argument.metadata">=</stringProp>
  57455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57456. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  57457. </elementProp>
  57458. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  57459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57460. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  57461. <stringProp name="Argument.metadata">=</stringProp>
  57462. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57463. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  57464. </elementProp>
  57465. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  57466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57467. <stringProp name="Argument.value"/>
  57468. <stringProp name="Argument.metadata">=</stringProp>
  57469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57470. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  57471. </elementProp>
  57472. <elementProp name="customer[gender]" elementType="HTTPArgument">
  57473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57474. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  57475. <stringProp name="Argument.metadata">=</stringProp>
  57476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57477. <stringProp name="Argument.name">customer[gender]</stringProp>
  57478. </elementProp>
  57479. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  57480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57481. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  57482. <stringProp name="Argument.metadata">=</stringProp>
  57483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57484. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  57485. </elementProp>
  57486. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  57487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57488. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  57489. <stringProp name="Argument.metadata">=</stringProp>
  57490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57491. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  57492. </elementProp>
  57493. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  57494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57495. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  57496. <stringProp name="Argument.metadata">=</stringProp>
  57497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57498. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  57499. </elementProp>
  57500. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  57501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57502. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  57503. <stringProp name="Argument.metadata">=</stringProp>
  57504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57505. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  57506. </elementProp>
  57507. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  57508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57509. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  57510. <stringProp name="Argument.metadata">=</stringProp>
  57511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57512. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  57513. </elementProp>
  57514. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  57515. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57516. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  57517. <stringProp name="Argument.metadata">=</stringProp>
  57518. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57519. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  57520. </elementProp>
  57521. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  57522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57523. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  57524. <stringProp name="Argument.metadata">=</stringProp>
  57525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57526. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  57527. </elementProp>
  57528. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  57529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57530. <stringProp name="Argument.value"/>
  57531. <stringProp name="Argument.metadata">=</stringProp>
  57532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57533. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  57534. </elementProp>
  57535. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  57536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57537. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  57538. <stringProp name="Argument.metadata">=</stringProp>
  57539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57540. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  57541. </elementProp>
  57542. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  57543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57544. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  57545. <stringProp name="Argument.metadata">=</stringProp>
  57546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57547. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  57548. </elementProp>
  57549. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  57550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57551. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  57552. <stringProp name="Argument.metadata">=</stringProp>
  57553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57554. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  57555. </elementProp>
  57556. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  57557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57558. <stringProp name="Argument.value"/>
  57559. <stringProp name="Argument.metadata">=</stringProp>
  57560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57561. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  57562. </elementProp>
  57563. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  57564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57565. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  57566. <stringProp name="Argument.metadata">=</stringProp>
  57567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57568. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  57569. </elementProp>
  57570. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  57571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57572. <stringProp name="Argument.value"/>
  57573. <stringProp name="Argument.metadata">=</stringProp>
  57574. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57575. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  57576. </elementProp>
  57577. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  57578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57579. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  57580. <stringProp name="Argument.metadata">=</stringProp>
  57581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57582. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  57583. </elementProp>
  57584. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  57585. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57586. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  57587. <stringProp name="Argument.metadata">=</stringProp>
  57588. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57589. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  57590. </elementProp>
  57591. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  57592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57593. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  57594. <stringProp name="Argument.metadata">=</stringProp>
  57595. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57596. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  57597. </elementProp>
  57598. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  57599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57600. <stringProp name="Argument.value"/>
  57601. <stringProp name="Argument.metadata">=</stringProp>
  57602. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57603. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  57604. </elementProp>
  57605. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  57606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57607. <stringProp name="Argument.value"/>
  57608. <stringProp name="Argument.metadata">=</stringProp>
  57609. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57610. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  57611. </elementProp>
  57612. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  57613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57614. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  57615. <stringProp name="Argument.metadata">=</stringProp>
  57616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57617. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  57618. </elementProp>
  57619. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  57620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57621. <stringProp name="Argument.value"/>
  57622. <stringProp name="Argument.metadata">=</stringProp>
  57623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57624. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  57625. </elementProp>
  57626. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  57627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57628. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  57629. <stringProp name="Argument.metadata">=</stringProp>
  57630. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57631. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  57632. </elementProp>
  57633. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  57634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57635. <stringProp name="Argument.value">true</stringProp>
  57636. <stringProp name="Argument.metadata">=</stringProp>
  57637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57638. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  57639. </elementProp>
  57640. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  57641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57642. <stringProp name="Argument.value">true</stringProp>
  57643. <stringProp name="Argument.metadata">=</stringProp>
  57644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57645. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  57646. </elementProp>
  57647. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  57648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57649. <stringProp name="Argument.value"/>
  57650. <stringProp name="Argument.metadata">=</stringProp>
  57651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57652. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  57653. </elementProp>
  57654. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  57655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57656. <stringProp name="Argument.value">John</stringProp>
  57657. <stringProp name="Argument.metadata">=</stringProp>
  57658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57659. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  57660. </elementProp>
  57661. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  57662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57663. <stringProp name="Argument.value"/>
  57664. <stringProp name="Argument.metadata">=</stringProp>
  57665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57666. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  57667. </elementProp>
  57668. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  57669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57670. <stringProp name="Argument.value">Doe</stringProp>
  57671. <stringProp name="Argument.metadata">=</stringProp>
  57672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57673. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  57674. </elementProp>
  57675. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  57676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57677. <stringProp name="Argument.value"/>
  57678. <stringProp name="Argument.metadata">=</stringProp>
  57679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57680. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  57681. </elementProp>
  57682. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  57683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57684. <stringProp name="Argument.value">Test Company</stringProp>
  57685. <stringProp name="Argument.metadata">=</stringProp>
  57686. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57687. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  57688. </elementProp>
  57689. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  57690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57691. <stringProp name="Argument.value">Folsom</stringProp>
  57692. <stringProp name="Argument.metadata">=</stringProp>
  57693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57694. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  57695. </elementProp>
  57696. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  57697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57698. <stringProp name="Argument.value">95630</stringProp>
  57699. <stringProp name="Argument.metadata">=</stringProp>
  57700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57701. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  57702. </elementProp>
  57703. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  57704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57705. <stringProp name="Argument.value">1234567890</stringProp>
  57706. <stringProp name="Argument.metadata">=</stringProp>
  57707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57708. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  57709. </elementProp>
  57710. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  57711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57712. <stringProp name="Argument.value"/>
  57713. <stringProp name="Argument.metadata">=</stringProp>
  57714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57715. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  57716. </elementProp>
  57717. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  57718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57719. <stringProp name="Argument.value">false</stringProp>
  57720. <stringProp name="Argument.metadata">=</stringProp>
  57721. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57722. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  57723. </elementProp>
  57724. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  57725. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57726. <stringProp name="Argument.value">false</stringProp>
  57727. <stringProp name="Argument.metadata">=</stringProp>
  57728. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57729. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  57730. </elementProp>
  57731. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  57732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57733. <stringProp name="Argument.value">123 Main</stringProp>
  57734. <stringProp name="Argument.metadata">=</stringProp>
  57735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57736. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  57737. </elementProp>
  57738. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  57739. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57740. <stringProp name="Argument.value"/>
  57741. <stringProp name="Argument.metadata">=</stringProp>
  57742. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57743. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  57744. </elementProp>
  57745. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  57746. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57747. <stringProp name="Argument.value"/>
  57748. <stringProp name="Argument.metadata">=</stringProp>
  57749. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57750. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  57751. </elementProp>
  57752. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  57753. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57754. <stringProp name="Argument.value">US</stringProp>
  57755. <stringProp name="Argument.metadata">=</stringProp>
  57756. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57757. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  57758. </elementProp>
  57759. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  57760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57761. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  57762. <stringProp name="Argument.metadata">=</stringProp>
  57763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57764. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  57765. </elementProp>
  57766. <elementProp name="form_key" elementType="HTTPArgument">
  57767. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57768. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  57769. <stringProp name="Argument.metadata">=</stringProp>
  57770. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57771. <stringProp name="Argument.name">form_key</stringProp>
  57772. </elementProp>
  57773. </collectionProp>
  57774. </elementProp>
  57775. <stringProp name="HTTPSampler.domain"/>
  57776. <stringProp name="HTTPSampler.port"/>
  57777. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  57778. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  57779. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  57780. <stringProp name="HTTPSampler.contentEncoding"/>
  57781. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/validate/</stringProp>
  57782. <stringProp name="HTTPSampler.method">POST</stringProp>
  57783. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  57784. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  57785. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  57786. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  57787. <boolProp name="HTTPSampler.monitor">false</boolProp>
  57788. <stringProp name="HTTPSampler.embedded_url_re"/>
  57789. </HTTPSamplerProxy>
  57790. <hashTree>
  57791. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  57792. <collectionProp name="Asserion.test_strings">
  57793. <stringProp name="49586">200</stringProp>
  57794. </collectionProp>
  57795. <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
  57796. <boolProp name="Assertion.assume_success">false</boolProp>
  57797. <intProp name="Assertion.test_type">16</intProp>
  57798. </ResponseAssertion>
  57799. <hashTree/>
  57800. </hashTree>
  57801. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Save" enabled="true">
  57802. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  57803. <collectionProp name="Arguments.arguments">
  57804. <elementProp name="isAjax " elementType="HTTPArgument">
  57805. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57806. <stringProp name="Argument.value">true</stringProp>
  57807. <stringProp name="Argument.metadata">=</stringProp>
  57808. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57809. <stringProp name="Argument.name">isAjax </stringProp>
  57810. </elementProp>
  57811. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  57812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57813. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  57814. <stringProp name="Argument.metadata">=</stringProp>
  57815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57816. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  57817. </elementProp>
  57818. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  57819. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57820. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  57821. <stringProp name="Argument.metadata">=</stringProp>
  57822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57823. <stringProp name="Argument.name">customer[website_id]</stringProp>
  57824. </elementProp>
  57825. <elementProp name="customer[email]" elementType="HTTPArgument">
  57826. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57827. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  57828. <stringProp name="Argument.metadata">=</stringProp>
  57829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57830. <stringProp name="Argument.name">customer[email]</stringProp>
  57831. </elementProp>
  57832. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  57833. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57834. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  57835. <stringProp name="Argument.metadata">=</stringProp>
  57836. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57837. <stringProp name="Argument.name">customer[group_id]</stringProp>
  57838. </elementProp>
  57839. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  57840. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57841. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  57842. <stringProp name="Argument.metadata">=</stringProp>
  57843. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57844. <stringProp name="Argument.name">customer[store_id]</stringProp>
  57845. </elementProp>
  57846. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  57847. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57848. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  57849. <stringProp name="Argument.metadata">=</stringProp>
  57850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57851. <stringProp name="Argument.name">customer[created_at]</stringProp>
  57852. </elementProp>
  57853. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  57854. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57855. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  57856. <stringProp name="Argument.metadata">=</stringProp>
  57857. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57858. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  57859. </elementProp>
  57860. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  57861. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57862. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  57863. <stringProp name="Argument.metadata">=</stringProp>
  57864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57865. <stringProp name="Argument.name">customer[is_active]</stringProp>
  57866. </elementProp>
  57867. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  57868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57869. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  57870. <stringProp name="Argument.metadata">=</stringProp>
  57871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57872. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  57873. </elementProp>
  57874. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  57875. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57876. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  57877. <stringProp name="Argument.metadata">=</stringProp>
  57878. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57879. <stringProp name="Argument.name">customer[created_in]</stringProp>
  57880. </elementProp>
  57881. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  57882. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57883. <stringProp name="Argument.value"/>
  57884. <stringProp name="Argument.metadata">=</stringProp>
  57885. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57886. <stringProp name="Argument.name">customer[prefix]</stringProp>
  57887. </elementProp>
  57888. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  57889. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57890. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  57891. <stringProp name="Argument.metadata">=</stringProp>
  57892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57893. <stringProp name="Argument.name">customer[firstname]</stringProp>
  57894. </elementProp>
  57895. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  57896. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57897. <stringProp name="Argument.value"/>
  57898. <stringProp name="Argument.metadata">=</stringProp>
  57899. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57900. <stringProp name="Argument.name">customer[middlename]</stringProp>
  57901. </elementProp>
  57902. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  57903. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57904. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  57905. <stringProp name="Argument.metadata">=</stringProp>
  57906. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57907. <stringProp name="Argument.name">customer[lastname]</stringProp>
  57908. </elementProp>
  57909. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  57910. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57911. <stringProp name="Argument.value"/>
  57912. <stringProp name="Argument.metadata">=</stringProp>
  57913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57914. <stringProp name="Argument.name">customer[suffix]</stringProp>
  57915. </elementProp>
  57916. <elementProp name="customer[dob]" elementType="HTTPArgument">
  57917. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57918. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  57919. <stringProp name="Argument.metadata">=</stringProp>
  57920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57921. <stringProp name="Argument.name">customer[dob]</stringProp>
  57922. </elementProp>
  57923. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  57924. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57925. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  57926. <stringProp name="Argument.metadata">=</stringProp>
  57927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57928. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  57929. </elementProp>
  57930. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  57931. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57932. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  57933. <stringProp name="Argument.metadata">=</stringProp>
  57934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57935. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  57936. </elementProp>
  57937. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  57938. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57939. <stringProp name="Argument.value"/>
  57940. <stringProp name="Argument.metadata">=</stringProp>
  57941. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57942. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  57943. </elementProp>
  57944. <elementProp name="customer[gender]" elementType="HTTPArgument">
  57945. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57946. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  57947. <stringProp name="Argument.metadata">=</stringProp>
  57948. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57949. <stringProp name="Argument.name">customer[gender]</stringProp>
  57950. </elementProp>
  57951. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  57952. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57953. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  57954. <stringProp name="Argument.metadata">=</stringProp>
  57955. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57956. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  57957. </elementProp>
  57958. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  57959. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57960. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  57961. <stringProp name="Argument.metadata">=</stringProp>
  57962. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57963. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  57964. </elementProp>
  57965. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  57966. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57967. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  57968. <stringProp name="Argument.metadata">=</stringProp>
  57969. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57970. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  57971. </elementProp>
  57972. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  57973. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57974. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  57975. <stringProp name="Argument.metadata">=</stringProp>
  57976. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57977. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  57978. </elementProp>
  57979. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  57980. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57981. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  57982. <stringProp name="Argument.metadata">=</stringProp>
  57983. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57984. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  57985. </elementProp>
  57986. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  57987. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57988. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  57989. <stringProp name="Argument.metadata">=</stringProp>
  57990. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57991. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  57992. </elementProp>
  57993. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  57994. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  57995. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  57996. <stringProp name="Argument.metadata">=</stringProp>
  57997. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  57998. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  57999. </elementProp>
  58000. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  58001. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58002. <stringProp name="Argument.value"/>
  58003. <stringProp name="Argument.metadata">=</stringProp>
  58004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58005. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  58006. </elementProp>
  58007. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  58008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58009. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  58010. <stringProp name="Argument.metadata">=</stringProp>
  58011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58012. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  58013. </elementProp>
  58014. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  58015. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58016. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  58017. <stringProp name="Argument.metadata">=</stringProp>
  58018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58019. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  58020. </elementProp>
  58021. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  58022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58023. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  58024. <stringProp name="Argument.metadata">=</stringProp>
  58025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58026. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  58027. </elementProp>
  58028. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  58029. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58030. <stringProp name="Argument.value"/>
  58031. <stringProp name="Argument.metadata">=</stringProp>
  58032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58033. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  58034. </elementProp>
  58035. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  58036. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58037. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  58038. <stringProp name="Argument.metadata">=</stringProp>
  58039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58040. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  58041. </elementProp>
  58042. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  58043. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58044. <stringProp name="Argument.value"/>
  58045. <stringProp name="Argument.metadata">=</stringProp>
  58046. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58047. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  58048. </elementProp>
  58049. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  58050. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58051. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  58052. <stringProp name="Argument.metadata">=</stringProp>
  58053. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58054. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  58055. </elementProp>
  58056. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  58057. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58058. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  58059. <stringProp name="Argument.metadata">=</stringProp>
  58060. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58061. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  58062. </elementProp>
  58063. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  58064. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58065. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  58066. <stringProp name="Argument.metadata">=</stringProp>
  58067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58068. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  58069. </elementProp>
  58070. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  58071. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58072. <stringProp name="Argument.value"/>
  58073. <stringProp name="Argument.metadata">=</stringProp>
  58074. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58075. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  58076. </elementProp>
  58077. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  58078. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58079. <stringProp name="Argument.value"/>
  58080. <stringProp name="Argument.metadata">=</stringProp>
  58081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58082. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  58083. </elementProp>
  58084. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  58085. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58086. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  58087. <stringProp name="Argument.metadata">=</stringProp>
  58088. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58089. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  58090. </elementProp>
  58091. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  58092. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58093. <stringProp name="Argument.value"/>
  58094. <stringProp name="Argument.metadata">=</stringProp>
  58095. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58096. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  58097. </elementProp>
  58098. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  58099. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58100. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  58101. <stringProp name="Argument.metadata">=</stringProp>
  58102. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58103. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  58104. </elementProp>
  58105. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  58106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58107. <stringProp name="Argument.value">true</stringProp>
  58108. <stringProp name="Argument.metadata">=</stringProp>
  58109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58110. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  58111. </elementProp>
  58112. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  58113. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58114. <stringProp name="Argument.value">true</stringProp>
  58115. <stringProp name="Argument.metadata">=</stringProp>
  58116. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58117. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  58118. </elementProp>
  58119. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  58120. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58121. <stringProp name="Argument.value"/>
  58122. <stringProp name="Argument.metadata">=</stringProp>
  58123. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58124. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  58125. </elementProp>
  58126. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  58127. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58128. <stringProp name="Argument.value">John</stringProp>
  58129. <stringProp name="Argument.metadata">=</stringProp>
  58130. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58131. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  58132. </elementProp>
  58133. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  58134. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58135. <stringProp name="Argument.value"/>
  58136. <stringProp name="Argument.metadata">=</stringProp>
  58137. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58138. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  58139. </elementProp>
  58140. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  58141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58142. <stringProp name="Argument.value">Doe</stringProp>
  58143. <stringProp name="Argument.metadata">=</stringProp>
  58144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58145. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  58146. </elementProp>
  58147. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  58148. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58149. <stringProp name="Argument.value"/>
  58150. <stringProp name="Argument.metadata">=</stringProp>
  58151. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58152. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  58153. </elementProp>
  58154. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  58155. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58156. <stringProp name="Argument.value">Test Company</stringProp>
  58157. <stringProp name="Argument.metadata">=</stringProp>
  58158. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58159. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  58160. </elementProp>
  58161. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  58162. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58163. <stringProp name="Argument.value">Folsom</stringProp>
  58164. <stringProp name="Argument.metadata">=</stringProp>
  58165. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58166. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  58167. </elementProp>
  58168. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  58169. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58170. <stringProp name="Argument.value">95630</stringProp>
  58171. <stringProp name="Argument.metadata">=</stringProp>
  58172. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58173. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  58174. </elementProp>
  58175. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  58176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58177. <stringProp name="Argument.value">1234567890</stringProp>
  58178. <stringProp name="Argument.metadata">=</stringProp>
  58179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58180. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  58181. </elementProp>
  58182. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  58183. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58184. <stringProp name="Argument.value"/>
  58185. <stringProp name="Argument.metadata">=</stringProp>
  58186. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58187. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  58188. </elementProp>
  58189. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  58190. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58191. <stringProp name="Argument.value">false</stringProp>
  58192. <stringProp name="Argument.metadata">=</stringProp>
  58193. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58194. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  58195. </elementProp>
  58196. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  58197. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58198. <stringProp name="Argument.value">false</stringProp>
  58199. <stringProp name="Argument.metadata">=</stringProp>
  58200. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58201. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  58202. </elementProp>
  58203. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  58204. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58205. <stringProp name="Argument.value">123 Main</stringProp>
  58206. <stringProp name="Argument.metadata">=</stringProp>
  58207. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58208. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  58209. </elementProp>
  58210. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  58211. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58212. <stringProp name="Argument.value"/>
  58213. <stringProp name="Argument.metadata">=</stringProp>
  58214. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58215. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  58216. </elementProp>
  58217. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  58218. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58219. <stringProp name="Argument.value"/>
  58220. <stringProp name="Argument.metadata">=</stringProp>
  58221. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58222. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  58223. </elementProp>
  58224. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  58225. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58226. <stringProp name="Argument.value">US</stringProp>
  58227. <stringProp name="Argument.metadata">=</stringProp>
  58228. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58229. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  58230. </elementProp>
  58231. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  58232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58233. <stringProp name="Argument.value">12</stringProp>
  58234. <stringProp name="Argument.metadata">=</stringProp>
  58235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58236. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  58237. </elementProp>
  58238. <elementProp name="form_key" elementType="HTTPArgument">
  58239. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58240. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  58241. <stringProp name="Argument.metadata">=</stringProp>
  58242. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58243. <stringProp name="Argument.name">form_key</stringProp>
  58244. </elementProp>
  58245. </collectionProp>
  58246. </elementProp>
  58247. <stringProp name="HTTPSampler.domain"/>
  58248. <stringProp name="HTTPSampler.port"/>
  58249. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58250. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58251. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58252. <stringProp name="HTTPSampler.contentEncoding"/>
  58253. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/save/</stringProp>
  58254. <stringProp name="HTTPSampler.method">POST</stringProp>
  58255. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58256. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58257. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58258. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  58259. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58260. <stringProp name="HTTPSampler.embedded_url_re"/>
  58261. </HTTPSamplerProxy>
  58262. <hashTree>
  58263. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer saved" enabled="true">
  58264. <collectionProp name="Asserion.test_strings">
  58265. <stringProp name="292987815">You saved the customer.</stringProp>
  58266. </collectionProp>
  58267. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58268. <boolProp name="Assertion.assume_success">false</boolProp>
  58269. <intProp name="Assertion.test_type">2</intProp>
  58270. </ResponseAssertion>
  58271. <hashTree/>
  58272. </hashTree>
  58273. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  58274. <intProp name="ActionProcessor.action">1</intProp>
  58275. <intProp name="ActionProcessor.target">0</intProp>
  58276. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))}</stringProp>
  58277. </TestAction>
  58278. <hashTree/>
  58279. </hashTree>
  58280. </hashTree>
  58281. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  58282. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58283. <collectionProp name="Arguments.arguments"/>
  58284. </elementProp>
  58285. <stringProp name="HTTPSampler.domain"/>
  58286. <stringProp name="HTTPSampler.port"/>
  58287. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58288. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58289. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58290. <stringProp name="HTTPSampler.contentEncoding"/>
  58291. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  58292. <stringProp name="HTTPSampler.method">GET</stringProp>
  58293. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58294. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58295. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58296. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58297. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58298. <stringProp name="HTTPSampler.embedded_url_re"/>
  58299. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  58300. <hashTree>
  58301. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  58302. <boolProp name="resetInterpreter">false</boolProp>
  58303. <stringProp name="parameters"/>
  58304. <stringProp name="filename"/>
  58305. <stringProp name="script">
  58306. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  58307. if (adminUsersDistribution == 1) {
  58308. adminUserList = props.get("adminUserList");
  58309. adminUserList.add(vars.get("admin_user"));
  58310. }
  58311. </stringProp>
  58312. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  58313. <hashTree/>
  58314. </hashTree>
  58315. </hashTree>
  58316. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[C] Admin Edit Order" enabled="true">
  58317. <intProp name="ThroughputController.style">1</intProp>
  58318. <boolProp name="ThroughputController.perThread">false</boolProp>
  58319. <intProp name="ThroughputController.maxThroughput">1</intProp>
  58320. <stringProp name="ThroughputController.percentThroughput">${cAdminEditOrderPercentage}</stringProp>
  58321. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  58322. <hashTree>
  58323. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  58324. <stringProp name="script">
  58325. var tmpLabel = vars.get("testLabel")
  58326. if (tmpLabel) {
  58327. var testLabel = " (" + tmpLabel + ")"
  58328. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  58329. if (sampler.getName().indexOf(testLabel) == -1) {
  58330. sampler.setName(sampler.getName() + testLabel);
  58331. }
  58332. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  58333. sampler.setName("SetUp - " + sampler.getName());
  58334. }
  58335. } else {
  58336. testLabel = ""
  58337. }
  58338. </stringProp>
  58339. <stringProp name="scriptLanguage">javascript</stringProp>
  58340. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  58341. <hashTree/>
  58342. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  58343. <stringProp name="BeanShellSampler.query">
  58344. vars.put("testLabel", "[C] Admin Edit Order");
  58345. </stringProp>
  58346. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  58347. </BeanShellSampler>
  58348. <hashTree/>
  58349. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  58350. <stringProp name="script">
  58351. function getFormKeyFromResponse()
  58352. {
  58353. var url = prev.getUrlAsString(),
  58354. responseCode = prev.getResponseCode(),
  58355. formKey = null;
  58356. searchPattern = /var FORM_KEY = '(.+)'/;
  58357. if (responseCode == "200" &amp;&amp; url) {
  58358. response = prev.getResponseDataAsString();
  58359. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  58360. }
  58361. return formKey;
  58362. }
  58363. formKey = vars.get("form_key_storage");
  58364. currentFormKey = getFormKeyFromResponse();
  58365. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  58366. vars.put("form_key_storage", currentFormKey);
  58367. }
  58368. </stringProp>
  58369. <stringProp name="scriptLanguage">javascript</stringProp>
  58370. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  58371. <hashTree/>
  58372. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  58373. <stringProp name="script">
  58374. formKey = vars.get("form_key_storage");
  58375. if (formKey
  58376. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  58377. &amp;&amp; sampler.getMethod() == "POST")
  58378. {
  58379. arguments = sampler.getArguments();
  58380. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  58381. {
  58382. argument = arguments.getArgument(i);
  58383. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  58384. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  58385. argument.setValue(formKey);
  58386. }
  58387. }
  58388. }
  58389. </stringProp>
  58390. <stringProp name="scriptLanguage">javascript</stringProp>
  58391. </JSR223PreProcessor>
  58392. <hashTree/>
  58393. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  58394. <collectionProp name="CookieManager.cookies"/>
  58395. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  58396. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  58397. <hashTree/>
  58398. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  58399. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  58400. </GenericController>
  58401. <hashTree>
  58402. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  58403. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  58404. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  58405. <hashTree>
  58406. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  58407. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  58408. <stringProp name="BeanShellSampler.query">
  58409. adminUser = "none";
  58410. adminUserList = props.get("adminUserList");
  58411. adminUserListIterator = props.get("adminUserListIterator");
  58412. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  58413. if (adminUsersDistribution == 1) {
  58414. adminUser = adminUserList.poll();
  58415. } else {
  58416. if (!adminUserListIterator.hasNext()) {
  58417. adminUserListIterator = adminUserList.descendingIterator();
  58418. }
  58419. adminUser = adminUserListIterator.next();
  58420. }
  58421. if (adminUser == "none") {
  58422. SampleResult.setResponseMessage("adminUser list is empty");
  58423. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  58424. IsSuccess=false;
  58425. SampleResult.setSuccessful(false);
  58426. SampleResult.setStopThread(true);
  58427. }
  58428. vars.put("admin_user", adminUser);
  58429. </stringProp>
  58430. <stringProp name="BeanShellSampler.filename"/>
  58431. <stringProp name="BeanShellSampler.parameters"/>
  58432. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  58433. </BeanShellSampler>
  58434. <hashTree/>
  58435. </hashTree>
  58436. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  58437. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58438. <collectionProp name="Arguments.arguments"/>
  58439. </elementProp>
  58440. <stringProp name="HTTPSampler.domain"/>
  58441. <stringProp name="HTTPSampler.port"/>
  58442. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58443. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58444. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58445. <stringProp name="HTTPSampler.contentEncoding"/>
  58446. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  58447. <stringProp name="HTTPSampler.method">GET</stringProp>
  58448. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58449. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58450. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58451. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58452. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58453. <stringProp name="HTTPSampler.embedded_url_re"/>
  58454. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  58455. <hashTree>
  58456. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  58457. <collectionProp name="Asserion.test_strings">
  58458. <stringProp name="-1397214398">Welcome</stringProp>
  58459. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  58460. </collectionProp>
  58461. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58462. <boolProp name="Assertion.assume_success">false</boolProp>
  58463. <intProp name="Assertion.test_type">2</intProp>
  58464. </ResponseAssertion>
  58465. <hashTree/>
  58466. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  58467. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  58468. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  58469. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  58470. <stringProp name="RegexExtractor.template">$1$</stringProp>
  58471. <stringProp name="RegexExtractor.default"/>
  58472. <stringProp name="RegexExtractor.match_number">1</stringProp>
  58473. </RegexExtractor>
  58474. <hashTree/>
  58475. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  58476. <collectionProp name="Asserion.test_strings">
  58477. <stringProp name="2845929">^.+$</stringProp>
  58478. </collectionProp>
  58479. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58480. <boolProp name="Assertion.assume_success">false</boolProp>
  58481. <intProp name="Assertion.test_type">1</intProp>
  58482. <stringProp name="Assertion.scope">variable</stringProp>
  58483. <stringProp name="Scope.variable">admin_form_key</stringProp>
  58484. </ResponseAssertion>
  58485. <hashTree/>
  58486. </hashTree>
  58487. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  58488. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58489. <collectionProp name="Arguments.arguments">
  58490. <elementProp name="dummy" elementType="HTTPArgument">
  58491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58492. <stringProp name="Argument.value"/>
  58493. <stringProp name="Argument.metadata">=</stringProp>
  58494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58495. <stringProp name="Argument.name">dummy</stringProp>
  58496. </elementProp>
  58497. <elementProp name="form_key" elementType="HTTPArgument">
  58498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58499. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  58500. <stringProp name="Argument.metadata">=</stringProp>
  58501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58502. <stringProp name="Argument.name">form_key</stringProp>
  58503. </elementProp>
  58504. <elementProp name="login[password]" elementType="HTTPArgument">
  58505. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58506. <stringProp name="Argument.value">${admin_password}</stringProp>
  58507. <stringProp name="Argument.metadata">=</stringProp>
  58508. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58509. <stringProp name="Argument.name">login[password]</stringProp>
  58510. </elementProp>
  58511. <elementProp name="login[username]" elementType="HTTPArgument">
  58512. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58513. <stringProp name="Argument.value">${admin_user}</stringProp>
  58514. <stringProp name="Argument.metadata">=</stringProp>
  58515. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58516. <stringProp name="Argument.name">login[username]</stringProp>
  58517. </elementProp>
  58518. </collectionProp>
  58519. </elementProp>
  58520. <stringProp name="HTTPSampler.domain"/>
  58521. <stringProp name="HTTPSampler.port"/>
  58522. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58523. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58524. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58525. <stringProp name="HTTPSampler.contentEncoding"/>
  58526. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  58527. <stringProp name="HTTPSampler.method">POST</stringProp>
  58528. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58529. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58530. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58531. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58532. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  58533. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58534. <stringProp name="HTTPSampler.embedded_url_re"/>
  58535. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  58536. </HTTPSamplerProxy>
  58537. <hashTree>
  58538. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  58539. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  58540. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  58541. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  58542. <stringProp name="RegexExtractor.template">$1$</stringProp>
  58543. <stringProp name="RegexExtractor.default"/>
  58544. <stringProp name="RegexExtractor.match_number">1</stringProp>
  58545. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  58546. <hashTree/>
  58547. </hashTree>
  58548. </hashTree>
  58549. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  58550. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  58551. </GenericController>
  58552. <hashTree>
  58553. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  58554. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58555. <collectionProp name="Arguments.arguments"/>
  58556. </elementProp>
  58557. <stringProp name="HTTPSampler.domain"/>
  58558. <stringProp name="HTTPSampler.port"/>
  58559. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58560. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58561. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58562. <stringProp name="HTTPSampler.contentEncoding"/>
  58563. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  58564. <stringProp name="HTTPSampler.method">GET</stringProp>
  58565. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58566. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58567. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58568. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58569. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58570. <stringProp name="HTTPSampler.embedded_url_re"/>
  58571. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  58572. <hashTree>
  58573. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  58574. <collectionProp name="Asserion.test_strings">
  58575. <stringProp name="1204796042">Create New Order</stringProp>
  58576. </collectionProp>
  58577. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58578. <boolProp name="Assertion.assume_success">false</boolProp>
  58579. <intProp name="Assertion.test_type">2</intProp>
  58580. </ResponseAssertion>
  58581. <hashTree/>
  58582. </hashTree>
  58583. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  58584. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58585. <collectionProp name="Arguments.arguments">
  58586. <elementProp name="namespace" elementType="HTTPArgument">
  58587. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58588. <stringProp name="Argument.value">sales_order_grid</stringProp>
  58589. <stringProp name="Argument.metadata">=</stringProp>
  58590. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58591. <stringProp name="Argument.name">namespace</stringProp>
  58592. </elementProp>
  58593. <elementProp name="search" elementType="HTTPArgument">
  58594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58595. <stringProp name="Argument.value"/>
  58596. <stringProp name="Argument.metadata">=</stringProp>
  58597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58598. <stringProp name="Argument.name">search</stringProp>
  58599. </elementProp>
  58600. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  58601. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58602. <stringProp name="Argument.value">true</stringProp>
  58603. <stringProp name="Argument.metadata">=</stringProp>
  58604. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58605. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  58606. </elementProp>
  58607. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  58608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58609. <stringProp name="Argument.value">200</stringProp>
  58610. <stringProp name="Argument.metadata">=</stringProp>
  58611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58612. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  58613. </elementProp>
  58614. <elementProp name="paging[current]" elementType="HTTPArgument">
  58615. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58616. <stringProp name="Argument.value">1</stringProp>
  58617. <stringProp name="Argument.metadata">=</stringProp>
  58618. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58619. <stringProp name="Argument.name">paging[current]</stringProp>
  58620. </elementProp>
  58621. <elementProp name="sorting[field]" elementType="HTTPArgument">
  58622. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58623. <stringProp name="Argument.value">increment_id</stringProp>
  58624. <stringProp name="Argument.metadata">=</stringProp>
  58625. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58626. <stringProp name="Argument.name">sorting[field]</stringProp>
  58627. </elementProp>
  58628. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  58629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58630. <stringProp name="Argument.value">desc</stringProp>
  58631. <stringProp name="Argument.metadata">=</stringProp>
  58632. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58633. <stringProp name="Argument.name">sorting[direction]</stringProp>
  58634. </elementProp>
  58635. <elementProp name="isAjax" elementType="HTTPArgument">
  58636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58637. <stringProp name="Argument.value">true</stringProp>
  58638. <stringProp name="Argument.metadata">=</stringProp>
  58639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58640. <stringProp name="Argument.name">isAjax</stringProp>
  58641. </elementProp>
  58642. <elementProp name="form_key" elementType="HTTPArgument">
  58643. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58644. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  58645. <stringProp name="Argument.metadata">=</stringProp>
  58646. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58647. <stringProp name="Argument.name">form_key</stringProp>
  58648. <stringProp name="Argument.desc">false</stringProp>
  58649. </elementProp>
  58650. <elementProp name="filters[status]" elementType="HTTPArgument">
  58651. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58652. <stringProp name="Argument.value">pending</stringProp>
  58653. <stringProp name="Argument.metadata">=</stringProp>
  58654. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58655. <stringProp name="Argument.name">filters[status]</stringProp>
  58656. <stringProp name="Argument.desc">true</stringProp>
  58657. </elementProp>
  58658. <elementProp name="_" elementType="HTTPArgument">
  58659. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58660. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  58661. <stringProp name="Argument.metadata">=</stringProp>
  58662. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58663. <stringProp name="Argument.name">_</stringProp>
  58664. </elementProp>
  58665. </collectionProp>
  58666. </elementProp>
  58667. <stringProp name="HTTPSampler.domain"/>
  58668. <stringProp name="HTTPSampler.port"/>
  58669. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58670. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58671. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58672. <stringProp name="HTTPSampler.contentEncoding"/>
  58673. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  58674. <stringProp name="HTTPSampler.method">GET</stringProp>
  58675. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58676. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58677. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58678. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58679. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58680. <stringProp name="HTTPSampler.embedded_url_re"/>
  58681. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  58682. <hashTree>
  58683. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  58684. <collectionProp name="Asserion.test_strings">
  58685. <stringProp name="1637639774">totalRecords</stringProp>
  58686. </collectionProp>
  58687. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58688. <boolProp name="Assertion.assume_success">false</boolProp>
  58689. <intProp name="Assertion.test_type">2</intProp>
  58690. </ResponseAssertion>
  58691. <hashTree/>
  58692. </hashTree>
  58693. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  58694. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58695. <collectionProp name="Arguments.arguments">
  58696. <elementProp name="form_key" elementType="HTTPArgument">
  58697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58698. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  58699. <stringProp name="Argument.metadata">=</stringProp>
  58700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58701. <stringProp name="Argument.name">form_key</stringProp>
  58702. </elementProp>
  58703. <elementProp name="namespace" elementType="HTTPArgument">
  58704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58705. <stringProp name="Argument.value">sales_order_grid</stringProp>
  58706. <stringProp name="Argument.metadata">=</stringProp>
  58707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58708. <stringProp name="Argument.name">namespace</stringProp>
  58709. <stringProp name="Argument.desc">true</stringProp>
  58710. </elementProp>
  58711. <elementProp name="search" elementType="HTTPArgument">
  58712. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58713. <stringProp name="Argument.value"/>
  58714. <stringProp name="Argument.metadata">=</stringProp>
  58715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58716. <stringProp name="Argument.name">search</stringProp>
  58717. <stringProp name="Argument.desc">true</stringProp>
  58718. </elementProp>
  58719. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  58720. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58721. <stringProp name="Argument.value">true</stringProp>
  58722. <stringProp name="Argument.metadata">=</stringProp>
  58723. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58724. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  58725. <stringProp name="Argument.desc">true</stringProp>
  58726. </elementProp>
  58727. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  58728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58729. <stringProp name="Argument.value">200</stringProp>
  58730. <stringProp name="Argument.metadata">=</stringProp>
  58731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58732. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  58733. <stringProp name="Argument.desc">true</stringProp>
  58734. </elementProp>
  58735. <elementProp name="paging[current]" elementType="HTTPArgument">
  58736. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58737. <stringProp name="Argument.value">1</stringProp>
  58738. <stringProp name="Argument.metadata">=</stringProp>
  58739. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58740. <stringProp name="Argument.name">paging[current]</stringProp>
  58741. <stringProp name="Argument.desc">true</stringProp>
  58742. </elementProp>
  58743. <elementProp name="sorting[field]" elementType="HTTPArgument">
  58744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58745. <stringProp name="Argument.value">increment_id</stringProp>
  58746. <stringProp name="Argument.metadata">=</stringProp>
  58747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58748. <stringProp name="Argument.name">sorting[field]</stringProp>
  58749. <stringProp name="Argument.desc">true</stringProp>
  58750. </elementProp>
  58751. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  58752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58753. <stringProp name="Argument.value">asc</stringProp>
  58754. <stringProp name="Argument.metadata">=</stringProp>
  58755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58756. <stringProp name="Argument.name">sorting[direction]</stringProp>
  58757. <stringProp name="Argument.desc">true</stringProp>
  58758. </elementProp>
  58759. <elementProp name="isAjax" elementType="HTTPArgument">
  58760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58761. <stringProp name="Argument.value">true</stringProp>
  58762. <stringProp name="Argument.metadata">=</stringProp>
  58763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58764. <stringProp name="Argument.name">isAjax</stringProp>
  58765. <stringProp name="Argument.desc">true</stringProp>
  58766. </elementProp>
  58767. <elementProp name="filters[status]" elementType="HTTPArgument">
  58768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58769. <stringProp name="Argument.value">pending</stringProp>
  58770. <stringProp name="Argument.metadata">=</stringProp>
  58771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58772. <stringProp name="Argument.name">filters[status]</stringProp>
  58773. </elementProp>
  58774. <elementProp name="_" elementType="HTTPArgument">
  58775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58776. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  58777. <stringProp name="Argument.metadata">=</stringProp>
  58778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58779. <stringProp name="Argument.name">_</stringProp>
  58780. </elementProp>
  58781. </collectionProp>
  58782. </elementProp>
  58783. <stringProp name="HTTPSampler.domain"/>
  58784. <stringProp name="HTTPSampler.port"/>
  58785. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58786. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58787. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58788. <stringProp name="HTTPSampler.contentEncoding"/>
  58789. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  58790. <stringProp name="HTTPSampler.method">GET</stringProp>
  58791. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58792. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58793. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58794. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58795. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58796. <stringProp name="HTTPSampler.embedded_url_re"/>
  58797. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  58798. <hashTree>
  58799. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  58800. <collectionProp name="Asserion.test_strings">
  58801. <stringProp name="1637639774">totalRecords</stringProp>
  58802. </collectionProp>
  58803. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58804. <boolProp name="Assertion.assume_success">false</boolProp>
  58805. <intProp name="Assertion.test_type">2</intProp>
  58806. </ResponseAssertion>
  58807. <hashTree/>
  58808. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  58809. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  58810. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  58811. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  58812. <stringProp name="RegexExtractor.template">$1$</stringProp>
  58813. <stringProp name="RegexExtractor.default"/>
  58814. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  58815. <stringProp name="Scope.variable">simple_products</stringProp>
  58816. </RegexExtractor>
  58817. <hashTree/>
  58818. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  58819. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  58820. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  58821. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  58822. <stringProp name="RegexExtractor.template">$1$</stringProp>
  58823. <stringProp name="RegexExtractor.default"/>
  58824. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  58825. <stringProp name="Scope.variable">simple_products</stringProp>
  58826. </RegexExtractor>
  58827. <hashTree/>
  58828. </hashTree>
  58829. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  58830. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  58831. <stringProp name="BeanShellSampler.query">
  58832. import java.util.ArrayList;
  58833. import java.util.HashMap;
  58834. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  58835. import java.util.Random;
  58836. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  58837. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  58838. int clusterLength;
  58839. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  58840. if (threadsNumber == 0) {
  58841. //Number of orders for one thread
  58842. clusterLength = ordersCount;
  58843. } else {
  58844. clusterLength = Math.round(ordersCount / threadsNumber);
  58845. if (clusterLength == 0) {
  58846. clusterLength = 1;
  58847. }
  58848. }
  58849. //Current thread number starts from 0
  58850. int currentThreadNum = ctx.getThreadNum();
  58851. //Index of the current product from the cluster
  58852. Random random = new Random();
  58853. if (${seedForRandom} &gt; 0) {
  58854. random.setSeed(${seedForRandom} + ${__threadNum});
  58855. }
  58856. int iterator = random.nextInt(clusterLength);
  58857. if (iterator == 0) {
  58858. iterator = 1;
  58859. }
  58860. int i = clusterLength * currentThreadNum + iterator;
  58861. orderNumber = vars.get("order_numbers_" + i.toString());
  58862. orderId = vars.get("order_ids_" + i.toString());
  58863. vars.put("order_number", orderNumber);
  58864. vars.put("order_id", orderId);
  58865. </stringProp>
  58866. <stringProp name="BeanShellSampler.filename"/>
  58867. <stringProp name="BeanShellSampler.parameters"/>
  58868. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  58869. </BeanShellSampler>
  58870. <hashTree/>
  58871. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  58872. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58873. <collectionProp name="Arguments.arguments"/>
  58874. </elementProp>
  58875. <stringProp name="HTTPSampler.domain"/>
  58876. <stringProp name="HTTPSampler.port"/>
  58877. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58878. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58879. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58880. <stringProp name="HTTPSampler.contentEncoding"/>
  58881. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  58882. <stringProp name="HTTPSampler.method">GET</stringProp>
  58883. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58884. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58885. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58886. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58887. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58888. <stringProp name="HTTPSampler.embedded_url_re"/>
  58889. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  58890. <hashTree>
  58891. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  58892. <collectionProp name="Asserion.test_strings">
  58893. <stringProp name="2103620713">#${order_number}</stringProp>
  58894. </collectionProp>
  58895. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58896. <boolProp name="Assertion.assume_success">false</boolProp>
  58897. <intProp name="Assertion.test_type">2</intProp>
  58898. </ResponseAssertion>
  58899. <hashTree/>
  58900. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  58901. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  58902. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  58903. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  58904. <stringProp name="RegexExtractor.template">$1$</stringProp>
  58905. <stringProp name="RegexExtractor.default"/>
  58906. <stringProp name="RegexExtractor.match_number">1</stringProp>
  58907. <stringProp name="Scope.variable">simple_products</stringProp>
  58908. </RegexExtractor>
  58909. <hashTree/>
  58910. </hashTree>
  58911. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  58912. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  58913. <boolProp name="IfController.evaluateAll">false</boolProp>
  58914. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  58915. <hashTree>
  58916. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Comment" enabled="true">
  58917. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58918. <collectionProp name="Arguments.arguments">
  58919. <elementProp name="history[status]" elementType="HTTPArgument">
  58920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58921. <stringProp name="Argument.value">pending</stringProp>
  58922. <stringProp name="Argument.metadata">=</stringProp>
  58923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58924. <stringProp name="Argument.name">history[status]</stringProp>
  58925. <stringProp name="Argument.desc">false</stringProp>
  58926. </elementProp>
  58927. <elementProp name="history[comment]" elementType="HTTPArgument">
  58928. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58929. <stringProp name="Argument.value">Some text</stringProp>
  58930. <stringProp name="Argument.metadata">=</stringProp>
  58931. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58932. <stringProp name="Argument.name">history[comment]</stringProp>
  58933. </elementProp>
  58934. <elementProp name="form_key" elementType="HTTPArgument">
  58935. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  58936. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  58937. <stringProp name="Argument.metadata">=</stringProp>
  58938. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  58939. <stringProp name="Argument.name">form_key</stringProp>
  58940. <stringProp name="Argument.desc">false</stringProp>
  58941. </elementProp>
  58942. </collectionProp>
  58943. </elementProp>
  58944. <stringProp name="HTTPSampler.domain"/>
  58945. <stringProp name="HTTPSampler.port"/>
  58946. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58947. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58948. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58949. <stringProp name="HTTPSampler.contentEncoding"/>
  58950. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true</stringProp>
  58951. <stringProp name="HTTPSampler.method">POST</stringProp>
  58952. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58953. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58954. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58955. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58956. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58957. <stringProp name="HTTPSampler.embedded_url_re"/>
  58958. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/add_comment.jmx</stringProp></HTTPSamplerProxy>
  58959. <hashTree>
  58960. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  58961. <collectionProp name="Asserion.test_strings">
  58962. <stringProp name="-2089278331">Not Notified</stringProp>
  58963. </collectionProp>
  58964. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58965. <boolProp name="Assertion.assume_success">false</boolProp>
  58966. <intProp name="Assertion.test_type">2</intProp>
  58967. </ResponseAssertion>
  58968. <hashTree/>
  58969. </hashTree>
  58970. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  58971. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  58972. <collectionProp name="Arguments.arguments"/>
  58973. </elementProp>
  58974. <stringProp name="HTTPSampler.domain"/>
  58975. <stringProp name="HTTPSampler.port"/>
  58976. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  58977. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  58978. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  58979. <stringProp name="HTTPSampler.contentEncoding"/>
  58980. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  58981. <stringProp name="HTTPSampler.method">GET</stringProp>
  58982. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  58983. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  58984. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  58985. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  58986. <boolProp name="HTTPSampler.monitor">false</boolProp>
  58987. <stringProp name="HTTPSampler.embedded_url_re"/>
  58988. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  58989. <hashTree>
  58990. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  58991. <collectionProp name="Asserion.test_strings">
  58992. <stringProp name="-1233850814">Invoice Totals</stringProp>
  58993. </collectionProp>
  58994. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  58995. <boolProp name="Assertion.assume_success">false</boolProp>
  58996. <intProp name="Assertion.test_type">2</intProp>
  58997. </ResponseAssertion>
  58998. <hashTree/>
  58999. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  59000. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  59001. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  59002. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  59003. <stringProp name="RegexExtractor.template">$1$</stringProp>
  59004. <stringProp name="RegexExtractor.default"/>
  59005. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  59006. <stringProp name="Scope.variable">simple_products</stringProp>
  59007. </RegexExtractor>
  59008. <hashTree/>
  59009. </hashTree>
  59010. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  59011. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  59012. <collectionProp name="Arguments.arguments">
  59013. <elementProp name="form_key" elementType="HTTPArgument">
  59014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59015. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  59016. <stringProp name="Argument.metadata">=</stringProp>
  59017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59018. <stringProp name="Argument.name">form_key</stringProp>
  59019. <stringProp name="Argument.desc">false</stringProp>
  59020. </elementProp>
  59021. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  59022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59023. <stringProp name="Argument.value">1</stringProp>
  59024. <stringProp name="Argument.metadata">=</stringProp>
  59025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59026. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  59027. </elementProp>
  59028. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  59029. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59030. <stringProp name="Argument.value">1</stringProp>
  59031. <stringProp name="Argument.metadata">=</stringProp>
  59032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59033. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  59034. </elementProp>
  59035. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  59036. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59037. <stringProp name="Argument.value">Invoiced</stringProp>
  59038. <stringProp name="Argument.metadata">=</stringProp>
  59039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59040. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  59041. </elementProp>
  59042. </collectionProp>
  59043. </elementProp>
  59044. <stringProp name="HTTPSampler.domain"/>
  59045. <stringProp name="HTTPSampler.port"/>
  59046. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59047. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59048. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59049. <stringProp name="HTTPSampler.contentEncoding"/>
  59050. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  59051. <stringProp name="HTTPSampler.method">POST</stringProp>
  59052. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59053. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59054. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59055. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59056. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59057. <stringProp name="HTTPSampler.embedded_url_re"/>
  59058. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  59059. <hashTree>
  59060. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  59061. <collectionProp name="Asserion.test_strings">
  59062. <stringProp name="1740524604">The invoice has been created</stringProp>
  59063. </collectionProp>
  59064. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  59065. <boolProp name="Assertion.assume_success">false</boolProp>
  59066. <intProp name="Assertion.test_type">2</intProp>
  59067. </ResponseAssertion>
  59068. <hashTree/>
  59069. </hashTree>
  59070. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Start" enabled="true">
  59071. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  59072. <collectionProp name="Arguments.arguments"/>
  59073. </elementProp>
  59074. <stringProp name="HTTPSampler.domain"/>
  59075. <stringProp name="HTTPSampler.port"/>
  59076. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59077. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59078. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59079. <stringProp name="HTTPSampler.contentEncoding"/>
  59080. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/</stringProp>
  59081. <stringProp name="HTTPSampler.method">GET</stringProp>
  59082. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59083. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59084. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59085. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59086. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59087. <stringProp name="HTTPSampler.embedded_url_re"/>
  59088. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_start.jmx</stringProp></HTTPSamplerProxy>
  59089. <hashTree>
  59090. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  59091. <collectionProp name="Asserion.test_strings">
  59092. <stringProp name="304100442">New Shipment</stringProp>
  59093. </collectionProp>
  59094. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  59095. <boolProp name="Assertion.assume_success">false</boolProp>
  59096. <intProp name="Assertion.test_type">2</intProp>
  59097. </ResponseAssertion>
  59098. <hashTree/>
  59099. </hashTree>
  59100. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Submit" enabled="true">
  59101. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  59102. <collectionProp name="Arguments.arguments">
  59103. <elementProp name="form_key" elementType="HTTPArgument">
  59104. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59105. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  59106. <stringProp name="Argument.metadata">=</stringProp>
  59107. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59108. <stringProp name="Argument.name">form_key</stringProp>
  59109. <stringProp name="Argument.desc">false</stringProp>
  59110. </elementProp>
  59111. <elementProp name="shipment[items][${item_ids_1}]" elementType="HTTPArgument">
  59112. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59113. <stringProp name="Argument.value">1</stringProp>
  59114. <stringProp name="Argument.metadata">=</stringProp>
  59115. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59116. <stringProp name="Argument.name">shipment[items][${item_ids_1}]</stringProp>
  59117. </elementProp>
  59118. <elementProp name="shipment[items][${item_ids_2}]" elementType="HTTPArgument">
  59119. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59120. <stringProp name="Argument.value">1</stringProp>
  59121. <stringProp name="Argument.metadata">=</stringProp>
  59122. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59123. <stringProp name="Argument.name">shipment[items][${item_ids_2}]</stringProp>
  59124. </elementProp>
  59125. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  59126. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  59127. <stringProp name="Argument.value">Shipped</stringProp>
  59128. <stringProp name="Argument.metadata">=</stringProp>
  59129. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  59130. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  59131. </elementProp>
  59132. </collectionProp>
  59133. </elementProp>
  59134. <stringProp name="HTTPSampler.domain"/>
  59135. <stringProp name="HTTPSampler.port"/>
  59136. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59137. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59138. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59139. <stringProp name="HTTPSampler.contentEncoding"/>
  59140. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  59141. <stringProp name="HTTPSampler.method">POST</stringProp>
  59142. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59143. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59144. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59145. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59146. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59147. <stringProp name="HTTPSampler.embedded_url_re"/>
  59148. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_submit.jmx</stringProp></HTTPSamplerProxy>
  59149. <hashTree>
  59150. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  59151. <collectionProp name="Asserion.test_strings">
  59152. <stringProp name="-2089453199">The shipment has been created</stringProp>
  59153. </collectionProp>
  59154. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  59155. <boolProp name="Assertion.assume_success">false</boolProp>
  59156. <intProp name="Assertion.test_type">2</intProp>
  59157. </ResponseAssertion>
  59158. <hashTree/>
  59159. </hashTree>
  59160. </hashTree>
  59161. </hashTree>
  59162. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  59163. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  59164. <collectionProp name="Arguments.arguments"/>
  59165. </elementProp>
  59166. <stringProp name="HTTPSampler.domain"/>
  59167. <stringProp name="HTTPSampler.port"/>
  59168. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59169. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59170. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59171. <stringProp name="HTTPSampler.contentEncoding"/>
  59172. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  59173. <stringProp name="HTTPSampler.method">GET</stringProp>
  59174. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59175. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59176. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59177. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59178. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59179. <stringProp name="HTTPSampler.embedded_url_re"/>
  59180. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  59181. <hashTree>
  59182. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  59183. <boolProp name="resetInterpreter">false</boolProp>
  59184. <stringProp name="parameters"/>
  59185. <stringProp name="filename"/>
  59186. <stringProp name="script">
  59187. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  59188. if (adminUsersDistribution == 1) {
  59189. adminUserList = props.get("adminUserList");
  59190. adminUserList.add(vars.get("admin_user"));
  59191. }
  59192. </stringProp>
  59193. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  59194. <hashTree/>
  59195. </hashTree>
  59196. </hashTree>
  59197. </hashTree>
  59198. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="GraphQL Combined Benchmark Pool" enabled="true">
  59199. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  59200. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  59201. <boolProp name="LoopController.continue_forever">false</boolProp>
  59202. <stringProp name="LoopController.loops">${loops}</stringProp>
  59203. </elementProp>
  59204. <stringProp name="ThreadGroup.num_threads">${graphQLcombinedBenchmarkPoolUsers}</stringProp>
  59205. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  59206. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  59207. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  59208. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  59209. <stringProp name="ThreadGroup.duration"/>
  59210. <stringProp name="ThreadGroup.delay"/>
  59211. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  59212. <hashTree>
  59213. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Cache hit miss" enabled="true">
  59214. <stringProp name="scriptLanguage">javascript</stringProp>
  59215. <stringProp name="parameters"/>
  59216. <stringProp name="filename"/>
  59217. <stringProp name="cacheKey"/>
  59218. <stringProp name="script">var cacheHitPercent = vars.get("cache_hits_percentage");
  59219. if (
  59220. cacheHitPercent &lt; 100 &amp;&amp;
  59221. sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  59222. ) {
  59223. doCache();
  59224. }
  59225. function doCache(){
  59226. var random = Math.random() * 100;
  59227. if (cacheHitPercent &lt; random) {
  59228. sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13));
  59229. }
  59230. }
  59231. </stringProp>
  59232. <stringProp name="TestPlan.comments">tool/fragments/ce/common/cache_hit_miss.jmx</stringProp></JSR223PreProcessor>
  59233. <hashTree/>
  59234. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Catalog Browsing By Guest" enabled="true">
  59235. <intProp name="ThroughputController.style">1</intProp>
  59236. <boolProp name="ThroughputController.perThread">false</boolProp>
  59237. <intProp name="ThroughputController.maxThroughput">1</intProp>
  59238. <stringProp name="ThroughputController.percentThroughput">${cBrowseCatalogByGuestPercentage}</stringProp>
  59239. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  59240. <hashTree>
  59241. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  59242. <stringProp name="script">
  59243. var tmpLabel = vars.get("testLabel")
  59244. if (tmpLabel) {
  59245. var testLabel = " (" + tmpLabel + ")"
  59246. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  59247. if (sampler.getName().indexOf(testLabel) == -1) {
  59248. sampler.setName(sampler.getName() + testLabel);
  59249. }
  59250. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  59251. sampler.setName("SetUp - " + sampler.getName());
  59252. }
  59253. } else {
  59254. testLabel = ""
  59255. }
  59256. </stringProp>
  59257. <stringProp name="scriptLanguage">javascript</stringProp>
  59258. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  59259. <hashTree/>
  59260. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  59261. <stringProp name="BeanShellSampler.query">
  59262. vars.put("testLabel", "[GraphQL C] Catalog Browsing By Guest");
  59263. </stringProp>
  59264. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59265. </BeanShellSampler>
  59266. <hashTree/>
  59267. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  59268. <collectionProp name="HeaderManager.headers">
  59269. <elementProp name="" elementType="Header">
  59270. <stringProp name="Header.name">Content-Type</stringProp>
  59271. <stringProp name="Header.value">application/json</stringProp>
  59272. </elementProp>
  59273. <elementProp name="" elementType="Header">
  59274. <stringProp name="Header.name">Accept</stringProp>
  59275. <stringProp name="Header.value">*/*</stringProp>
  59276. </elementProp>
  59277. </collectionProp>
  59278. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  59279. <hashTree/>
  59280. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  59281. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  59282. <stringProp name="BeanShellSampler.query">
  59283. import java.util.Random;
  59284. Random random = new Random();
  59285. if (${seedForRandom} &gt; 0) {
  59286. random.setSeed(${seedForRandom} + ${__threadNum});
  59287. }
  59288. vars.putObject("randomIntGenerator", random);
  59289. </stringProp>
  59290. <stringProp name="BeanShellSampler.filename"/>
  59291. <stringProp name="BeanShellSampler.parameters"/>
  59292. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59293. </BeanShellSampler>
  59294. <hashTree/>
  59295. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  59296. <stringProp name="scriptLanguage">javascript</stringProp>
  59297. <stringProp name="parameters"/>
  59298. <stringProp name="filename"/>
  59299. <stringProp name="cacheKey"/>
  59300. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  59301. var categories = props.get("categories");
  59302. number = random.nextInt(categories.length);
  59303. vars.put("category_url_key", categories[number].url_key);
  59304. vars.put("category_name", categories[number].name);
  59305. vars.put("category_id", categories[number].id);
  59306. vars.putObject("category", categories[number]);
  59307. </stringProp>
  59308. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  59309. <hashTree/>
  59310. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  59311. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59312. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59313. <collectionProp name="Arguments.arguments">
  59314. <elementProp name="" elementType="HTTPArgument">
  59315. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59316. <stringProp name="Argument.value">
  59317. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  59318. </stringProp>
  59319. <stringProp name="Argument.metadata">=</stringProp>
  59320. </elementProp>
  59321. </collectionProp>
  59322. </elementProp>
  59323. <stringProp name="HTTPSampler.domain"/>
  59324. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59325. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59326. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59327. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59328. <stringProp name="HTTPSampler.contentEncoding"/>
  59329. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59330. <stringProp name="HTTPSampler.method">POST</stringProp>
  59331. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59332. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59333. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59334. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59335. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59336. <stringProp name="HTTPSampler.embedded_url_re"/>
  59337. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  59338. </HTTPSamplerProxy>
  59339. <hashTree>
  59340. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  59341. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  59342. <stringProp name="EXPECTED_VALUE"/>
  59343. <boolProp name="JSONVALIDATION">false</boolProp>
  59344. <boolProp name="EXPECT_NULL">false</boolProp>
  59345. <boolProp name="INVERT">false</boolProp>
  59346. <boolProp name="ISREGEX">false</boolProp>
  59347. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  59348. <hashTree/>
  59349. </hashTree>
  59350. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  59351. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59352. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59353. <collectionProp name="Arguments.arguments">
  59354. <elementProp name="" elementType="HTTPArgument">
  59355. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59356. <stringProp name="Argument.value">
  59357. {"query" : "{\n categoryList(filters:{}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"}
  59358. </stringProp>
  59359. <stringProp name="Argument.metadata">=</stringProp>
  59360. </elementProp>
  59361. </collectionProp>
  59362. </elementProp>
  59363. <stringProp name="HTTPSampler.domain"/>
  59364. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59365. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59366. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59367. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59368. <stringProp name="HTTPSampler.contentEncoding"/>
  59369. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59370. <stringProp name="HTTPSampler.method">POST</stringProp>
  59371. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59372. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59373. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59374. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59375. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59376. <stringProp name="HTTPSampler.embedded_url_re"/>
  59377. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_categories.jmx</stringProp>
  59378. </HTTPSamplerProxy>
  59379. <hashTree>
  59380. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  59381. <stringProp name="JSON_PATH">$.data.categoryList</stringProp>
  59382. <stringProp name="EXPECTED_VALUE"/>
  59383. <boolProp name="JSONVALIDATION">false</boolProp>
  59384. <boolProp name="EXPECT_NULL">false</boolProp>
  59385. <boolProp name="INVERT">false</boolProp>
  59386. <boolProp name="ISREGEX">false</boolProp>
  59387. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  59388. <hashTree/>
  59389. </hashTree>
  59390. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  59391. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59392. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59393. <collectionProp name="Arguments.arguments">
  59394. <elementProp name="" elementType="HTTPArgument">
  59395. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59396. <stringProp name="Argument.value">{"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"}</stringProp>
  59397. <stringProp name="Argument.metadata">=</stringProp>
  59398. </elementProp>
  59399. </collectionProp>
  59400. </elementProp>
  59401. <stringProp name="HTTPSampler.domain"/>
  59402. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59403. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59404. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59405. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59406. <stringProp name="HTTPSampler.contentEncoding"/>
  59407. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59408. <stringProp name="HTTPSampler.method">POST</stringProp>
  59409. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59410. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59411. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59412. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59413. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59414. <stringProp name="HTTPSampler.embedded_url_re"/>
  59415. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx</stringProp>
  59416. </HTTPSamplerProxy>
  59417. <hashTree>
  59418. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  59419. <collectionProp name="Asserion.test_strings">
  59420. <stringProp name="1201352014">"name":"${category_name}","id":${category_id},</stringProp>
  59421. </collectionProp>
  59422. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  59423. <boolProp name="Assertion.assume_success">false</boolProp>
  59424. <intProp name="Assertion.test_type">2</intProp>
  59425. </ResponseAssertion>
  59426. <hashTree/>
  59427. </hashTree>
  59428. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  59429. <boolProp name="LoopController.continue_forever">true</boolProp>
  59430. <stringProp name="LoopController.loops">2</stringProp>
  59431. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  59432. <hashTree>
  59433. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  59434. <stringProp name="CounterConfig.start">1</stringProp>
  59435. <stringProp name="CounterConfig.end"/>
  59436. <stringProp name="CounterConfig.incr">1</stringProp>
  59437. <stringProp name="CounterConfig.name">_counter</stringProp>
  59438. <stringProp name="CounterConfig.format"/>
  59439. <boolProp name="CounterConfig.per_user">true</boolProp>
  59440. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  59441. </CounterConfig>
  59442. <hashTree/>
  59443. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  59444. <stringProp name="BeanShellSampler.query">
  59445. import java.util.Random;
  59446. Random random = vars.getObject("randomIntGenerator");
  59447. number = random.nextInt(props.get("simple_products_list").size());
  59448. product = props.get("simple_products_list").get(number);
  59449. vars.put("product_url_key", product.get("url_key"));
  59450. vars.put("product_id", product.get("id"));
  59451. vars.put("product_name", product.get("title"));
  59452. vars.put("product_uenc", product.get("uenc"));
  59453. vars.put("product_sku", product.get("sku"));
  59454. </stringProp>
  59455. <stringProp name="BeanShellSampler.filename"/>
  59456. <stringProp name="BeanShellSampler.parameters"/>
  59457. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59458. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  59459. <hashTree/>
  59460. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  59461. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59462. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59463. <collectionProp name="Arguments.arguments">
  59464. <elementProp name="" elementType="HTTPArgument">
  59465. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59466. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  59467. <stringProp name="Argument.metadata">=</stringProp>
  59468. </elementProp>
  59469. </collectionProp>
  59470. </elementProp>
  59471. <stringProp name="HTTPSampler.domain"/>
  59472. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59473. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59474. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59475. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59476. <stringProp name="HTTPSampler.contentEncoding"/>
  59477. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59478. <stringProp name="HTTPSampler.method">POST</stringProp>
  59479. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59480. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59481. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59482. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59483. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59484. <stringProp name="HTTPSampler.embedded_url_re"/>
  59485. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  59486. </HTTPSamplerProxy>
  59487. <hashTree>
  59488. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  59489. <collectionProp name="Asserion.test_strings">
  59490. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  59491. </collectionProp>
  59492. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  59493. <boolProp name="Assertion.assume_success">false</boolProp>
  59494. <intProp name="Assertion.test_type">2</intProp>
  59495. </ResponseAssertion>
  59496. <hashTree/>
  59497. </hashTree>
  59498. </hashTree>
  59499. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  59500. <boolProp name="LoopController.continue_forever">true</boolProp>
  59501. <stringProp name="LoopController.loops">1</stringProp>
  59502. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  59503. <hashTree>
  59504. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  59505. <stringProp name="CounterConfig.start">1</stringProp>
  59506. <stringProp name="CounterConfig.end"/>
  59507. <stringProp name="CounterConfig.incr">1</stringProp>
  59508. <stringProp name="CounterConfig.name">_counter</stringProp>
  59509. <stringProp name="CounterConfig.format"/>
  59510. <boolProp name="CounterConfig.per_user">true</boolProp>
  59511. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  59512. </CounterConfig>
  59513. <hashTree/>
  59514. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  59515. <stringProp name="BeanShellSampler.query">
  59516. import java.util.Random;
  59517. Random random = vars.getObject("randomIntGenerator");
  59518. number = random.nextInt(props.get("configurable_products_list").size());
  59519. product = props.get("configurable_products_list").get(number);
  59520. vars.put("product_url_key", product.get("url_key"));
  59521. vars.put("product_id", product.get("id"));
  59522. vars.put("product_name", product.get("title"));
  59523. vars.put("product_uenc", product.get("uenc"));
  59524. vars.put("product_sku", product.get("sku"));
  59525. </stringProp>
  59526. <stringProp name="BeanShellSampler.filename"/>
  59527. <stringProp name="BeanShellSampler.parameters"/>
  59528. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59529. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  59530. <hashTree/>
  59531. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  59532. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59533. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59534. <collectionProp name="Arguments.arguments">
  59535. <elementProp name="" elementType="HTTPArgument">
  59536. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59537. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  59538. <stringProp name="Argument.metadata">=</stringProp>
  59539. </elementProp>
  59540. </collectionProp>
  59541. </elementProp>
  59542. <stringProp name="HTTPSampler.domain"/>
  59543. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59544. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59545. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59546. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59547. <stringProp name="HTTPSampler.contentEncoding"/>
  59548. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59549. <stringProp name="HTTPSampler.method">POST</stringProp>
  59550. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59551. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59552. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59553. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59554. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59555. <stringProp name="HTTPSampler.embedded_url_re"/>
  59556. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  59557. </HTTPSamplerProxy>
  59558. <hashTree>
  59559. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  59560. <collectionProp name="Asserion.test_strings">
  59561. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  59562. </collectionProp>
  59563. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  59564. <boolProp name="Assertion.assume_success">false</boolProp>
  59565. <intProp name="Assertion.test_type">2</intProp>
  59566. </ResponseAssertion>
  59567. <hashTree/>
  59568. </hashTree>
  59569. </hashTree>
  59570. </hashTree>
  59571. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Site Search" enabled="true">
  59572. <intProp name="ThroughputController.style">1</intProp>
  59573. <boolProp name="ThroughputController.perThread">false</boolProp>
  59574. <intProp name="ThroughputController.maxThroughput">1</intProp>
  59575. <stringProp name="ThroughputController.percentThroughput">${cSiteSearchPercentage}</stringProp>
  59576. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  59577. <hashTree>
  59578. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  59579. <stringProp name="script">
  59580. var tmpLabel = vars.get("testLabel")
  59581. if (tmpLabel) {
  59582. var testLabel = " (" + tmpLabel + ")"
  59583. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  59584. if (sampler.getName().indexOf(testLabel) == -1) {
  59585. sampler.setName(sampler.getName() + testLabel);
  59586. }
  59587. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  59588. sampler.setName("SetUp - " + sampler.getName());
  59589. }
  59590. } else {
  59591. testLabel = ""
  59592. }
  59593. </stringProp>
  59594. <stringProp name="scriptLanguage">javascript</stringProp>
  59595. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  59596. <hashTree/>
  59597. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  59598. <stringProp name="BeanShellSampler.query">
  59599. vars.put("testLabel", "[GraphQL C] Site Search");
  59600. </stringProp>
  59601. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59602. </BeanShellSampler>
  59603. <hashTree/>
  59604. <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Search Terms" enabled="true">
  59605. <stringProp name="filename">${files_folder}search_terms.csv</stringProp>
  59606. <stringProp name="fileEncoding">UTF-8</stringProp>
  59607. <stringProp name="variableNames"/>
  59608. <stringProp name="delimiter">,</stringProp>
  59609. <boolProp name="quotedData">false</boolProp>
  59610. <boolProp name="recycle">true</boolProp>
  59611. <boolProp name="stopThread">false</boolProp>
  59612. <stringProp name="shareMode">shareMode.thread</stringProp>
  59613. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms.jmx</stringProp></CSVDataSet>
  59614. <hashTree/>
  59615. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Cache hit miss" enabled="true">
  59616. <stringProp name="scriptLanguage">javascript</stringProp>
  59617. <stringProp name="parameters"/>
  59618. <stringProp name="filename"/>
  59619. <stringProp name="cacheKey"/>
  59620. <stringProp name="script">var cacheHitPercent = vars.get("cache_hits_percentage");
  59621. if (
  59622. cacheHitPercent &lt; 100 &amp;&amp;
  59623. sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  59624. ) {
  59625. doCache();
  59626. }
  59627. function doCache(){
  59628. var random = Math.random() * 100;
  59629. if (cacheHitPercent &lt; random) {
  59630. sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13));
  59631. }
  59632. }
  59633. </stringProp>
  59634. <stringProp name="TestPlan.comments">tool/fragments/ce/common/cache_hit_miss.jmx</stringProp></JSR223PreProcessor>
  59635. <hashTree/>
  59636. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  59637. <collectionProp name="HeaderManager.headers">
  59638. <elementProp name="" elementType="Header">
  59639. <stringProp name="Header.name">Content-Type</stringProp>
  59640. <stringProp name="Header.value">application/json</stringProp>
  59641. </elementProp>
  59642. <elementProp name="" elementType="Header">
  59643. <stringProp name="Header.name">Accept</stringProp>
  59644. <stringProp name="Header.value">*/*</stringProp>
  59645. </elementProp>
  59646. </collectionProp>
  59647. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  59648. <hashTree/>
  59649. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  59650. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  59651. <stringProp name="BeanShellSampler.query">
  59652. import java.util.Random;
  59653. Random random = new Random();
  59654. if (${seedForRandom} &gt; 0) {
  59655. random.setSeed(${seedForRandom} + ${__threadNum});
  59656. }
  59657. vars.putObject("randomIntGenerator", random);
  59658. </stringProp>
  59659. <stringProp name="BeanShellSampler.filename"/>
  59660. <stringProp name="BeanShellSampler.parameters"/>
  59661. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59662. </BeanShellSampler>
  59663. <hashTree/>
  59664. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search" enabled="true">
  59665. <intProp name="ThroughputController.style">1</intProp>
  59666. <boolProp name="ThroughputController.perThread">false</boolProp>
  59667. <intProp name="ThroughputController.maxThroughput">1</intProp>
  59668. <stringProp name="ThroughputController.percentThroughput">${searchQuickPercentage}</stringProp>
  59669. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  59670. <hashTree>
  59671. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  59672. <stringProp name="script">
  59673. var tmpLabel = vars.get("testLabel")
  59674. if (tmpLabel) {
  59675. var testLabel = " (" + tmpLabel + ")"
  59676. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  59677. if (sampler.getName().indexOf(testLabel) == -1) {
  59678. sampler.setName(sampler.getName() + testLabel);
  59679. }
  59680. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  59681. sampler.setName("SetUp - " + sampler.getName());
  59682. }
  59683. } else {
  59684. testLabel = ""
  59685. }
  59686. </stringProp>
  59687. <stringProp name="scriptLanguage">javascript</stringProp>
  59688. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  59689. <hashTree/>
  59690. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  59691. <stringProp name="BeanShellSampler.query">
  59692. vars.put("testLabel", "Quick Search");
  59693. </stringProp>
  59694. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59695. </BeanShellSampler>
  59696. <hashTree/>
  59697. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  59698. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59699. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59700. <collectionProp name="Arguments.arguments">
  59701. <elementProp name="" elementType="HTTPArgument">
  59702. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59703. <stringProp name="Argument.value">
  59704. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  59705. </stringProp>
  59706. <stringProp name="Argument.metadata">=</stringProp>
  59707. </elementProp>
  59708. </collectionProp>
  59709. </elementProp>
  59710. <stringProp name="HTTPSampler.domain"/>
  59711. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59712. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59713. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59714. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59715. <stringProp name="HTTPSampler.contentEncoding"/>
  59716. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59717. <stringProp name="HTTPSampler.method">POST</stringProp>
  59718. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59719. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59720. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59721. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59722. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59723. <stringProp name="HTTPSampler.embedded_url_re"/>
  59724. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  59725. </HTTPSamplerProxy>
  59726. <hashTree>
  59727. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  59728. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  59729. <stringProp name="EXPECTED_VALUE"/>
  59730. <boolProp name="JSONVALIDATION">false</boolProp>
  59731. <boolProp name="EXPECT_NULL">false</boolProp>
  59732. <boolProp name="INVERT">false</boolProp>
  59733. <boolProp name="ISREGEX">false</boolProp>
  59734. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  59735. <hashTree/>
  59736. </hashTree>
  59737. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  59738. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59739. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59740. <collectionProp name="Arguments.arguments">
  59741. <elementProp name="" elementType="HTTPArgument">
  59742. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59743. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n search: \"${searchTerm}\"\n sort: {name: ASC}) { \n total_count \n items \n { \n name \n sku \n url_key \n } \n page_info{ \n current_page \n page_size \n total_pages \n } \n filters{ \n name \n request_var \n filter_items_count \n filter_items{ \n label \n items_count \n value_string \n __typename \n } \n } \n aggregations{ \n attribute_code \n count \n label \n options{ \n label \n value \n count \n } \n } \n } \n }\n","variables":null,"operationName":null}</stringProp>
  59744. <stringProp name="Argument.metadata">=</stringProp>
  59745. </elementProp>
  59746. </collectionProp>
  59747. </elementProp>
  59748. <stringProp name="HTTPSampler.domain"/>
  59749. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59750. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59751. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59752. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59753. <stringProp name="HTTPSampler.contentEncoding"/>
  59754. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59755. <stringProp name="HTTPSampler.method">POST</stringProp>
  59756. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59757. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59758. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59759. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59760. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59761. <stringProp name="HTTPSampler.embedded_url_re"/>
  59762. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/search_quick.jmx</stringProp>
  59763. </HTTPSamplerProxy>
  59764. <hashTree>
  59765. <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 total_count" enabled="true">
  59766. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  59767. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  59768. <stringProp name="DEFAULT"/>
  59769. <stringProp name="VARIABLE"/>
  59770. <stringProp name="SUBJECT">BODY</stringProp>
  59771. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  59772. <hashTree/>
  59773. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  59774. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  59775. if (totalCount == null) {
  59776. Failure = true;
  59777. FailureMessage = "Not Expected \"totalCount\" to be null";
  59778. } else {
  59779. if (Integer.parseInt(totalCount) &lt; 1) {
  59780. Failure = true;
  59781. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  59782. } else {
  59783. Failure = false;
  59784. }
  59785. }
  59786. </stringProp>
  59787. <stringProp name="BeanShellAssertion.filename"/>
  59788. <stringProp name="BeanShellAssertion.parameters"/>
  59789. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  59790. </BeanShellAssertion>
  59791. <hashTree/>
  59792. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  59793. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  59794. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  59795. <stringProp name="RegexExtractor.regex">"url_key":"([^'"]+)</stringProp>
  59796. <stringProp name="RegexExtractor.template">$1$</stringProp>
  59797. <stringProp name="RegexExtractor.default"/>
  59798. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  59799. </RegexExtractor>
  59800. <hashTree/>
  59801. <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 attribute code 1" enabled="true">
  59802. <stringProp name="VAR">attribute_code_1</stringProp>
  59803. <stringProp name="JSONPATH">$.data.products.filters[1].request_var</stringProp>
  59804. <stringProp name="DEFAULT"/>
  59805. <stringProp name="VARIABLE"/>
  59806. <stringProp name="SUBJECT">BODY</stringProp>
  59807. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  59808. <hashTree/>
  59809. <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 attribute value 1" enabled="true">
  59810. <stringProp name="VAR">attribute_value_1</stringProp>
  59811. <stringProp name="JSONPATH">$.data.products.filters[1].filter_items[0].value_string</stringProp>
  59812. <stringProp name="DEFAULT"/>
  59813. <stringProp name="VARIABLE"/>
  59814. <stringProp name="SUBJECT">BODY</stringProp>
  59815. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  59816. <hashTree/>
  59817. <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 attribute code 2" enabled="true">
  59818. <stringProp name="VAR">attribute_code_2</stringProp>
  59819. <stringProp name="JSONPATH">$.data.products.filters[2].request_var</stringProp>
  59820. <stringProp name="DEFAULT"/>
  59821. <stringProp name="VARIABLE"/>
  59822. <stringProp name="SUBJECT">BODY</stringProp>
  59823. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  59824. <hashTree/>
  59825. <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 attribute value 2" enabled="true">
  59826. <stringProp name="VAR">attribute_value_2</stringProp>
  59827. <stringProp name="JSONPATH">$.data.products.filters[2].filter_items[0].value_string</stringProp>
  59828. <stringProp name="DEFAULT"/>
  59829. <stringProp name="VARIABLE"/>
  59830. <stringProp name="SUBJECT">BODY</stringProp>
  59831. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  59832. <hashTree/>
  59833. </hashTree>
  59834. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  59835. <stringProp name="BeanShellSampler.query">
  59836. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  59837. if (foundProducts &gt; 3) {
  59838. foundProducts = 3;
  59839. }
  59840. vars.put("foundProducts", String.valueOf(foundProducts));
  59841. </stringProp>
  59842. <stringProp name="BeanShellSampler.filename"/>
  59843. <stringProp name="BeanShellSampler.parameters"/>
  59844. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59845. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  59846. <hashTree/>
  59847. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  59848. <boolProp name="LoopController.continue_forever">true</boolProp>
  59849. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  59850. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  59851. <hashTree>
  59852. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  59853. <stringProp name="CounterConfig.start">1</stringProp>
  59854. <stringProp name="CounterConfig.end"/>
  59855. <stringProp name="CounterConfig.incr">1</stringProp>
  59856. <stringProp name="CounterConfig.name">_counter</stringProp>
  59857. <stringProp name="CounterConfig.format"/>
  59858. <boolProp name="CounterConfig.per_user">true</boolProp>
  59859. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  59860. </CounterConfig>
  59861. <hashTree/>
  59862. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  59863. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  59864. <stringProp name="BeanShellSampler.query">
  59865. number = vars.get("_counter");
  59866. product = vars.get("product_url_keys_"+number);
  59867. vars.put("product_url_key", product);
  59868. </stringProp>
  59869. <stringProp name="BeanShellSampler.filename"/>
  59870. <stringProp name="BeanShellSampler.parameters"/>
  59871. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59872. </BeanShellSampler>
  59873. <hashTree/>
  59874. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  59875. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59876. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59877. <collectionProp name="Arguments.arguments">
  59878. <elementProp name="" elementType="HTTPArgument">
  59879. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59880. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  59881. <stringProp name="Argument.metadata">=</stringProp>
  59882. </elementProp>
  59883. </collectionProp>
  59884. </elementProp>
  59885. <stringProp name="HTTPSampler.domain"/>
  59886. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59887. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59888. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59889. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59890. <stringProp name="HTTPSampler.contentEncoding"/>
  59891. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59892. <stringProp name="HTTPSampler.method">POST</stringProp>
  59893. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59894. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59895. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59896. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59897. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59898. <stringProp name="HTTPSampler.embedded_url_re"/>
  59899. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_product_details_by_product_url_key.jmx</stringProp>
  59900. </HTTPSamplerProxy>
  59901. <hashTree>
  59902. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  59903. <stringProp name="JSON_PATH">$.data.productDetail.items[0].sku</stringProp>
  59904. <stringProp name="EXPECTED_VALUE"/>
  59905. <boolProp name="JSONVALIDATION">false</boolProp>
  59906. <boolProp name="EXPECT_NULL">false</boolProp>
  59907. <boolProp name="INVERT">false</boolProp>
  59908. <boolProp name="ISREGEX">false</boolProp>
  59909. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  59910. <hashTree/>
  59911. </hashTree>
  59912. </hashTree>
  59913. </hashTree>
  59914. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search With Filtration" enabled="true">
  59915. <intProp name="ThroughputController.style">1</intProp>
  59916. <boolProp name="ThroughputController.perThread">false</boolProp>
  59917. <intProp name="ThroughputController.maxThroughput">1</intProp>
  59918. <stringProp name="ThroughputController.percentThroughput">${searchQuickFilterPercentage}</stringProp>
  59919. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  59920. <hashTree>
  59921. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  59922. <stringProp name="script">
  59923. var tmpLabel = vars.get("testLabel")
  59924. if (tmpLabel) {
  59925. var testLabel = " (" + tmpLabel + ")"
  59926. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  59927. if (sampler.getName().indexOf(testLabel) == -1) {
  59928. sampler.setName(sampler.getName() + testLabel);
  59929. }
  59930. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  59931. sampler.setName("SetUp - " + sampler.getName());
  59932. }
  59933. } else {
  59934. testLabel = ""
  59935. }
  59936. </stringProp>
  59937. <stringProp name="scriptLanguage">javascript</stringProp>
  59938. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  59939. <hashTree/>
  59940. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  59941. <stringProp name="BeanShellSampler.query">
  59942. vars.put("testLabel", "Quick Search With Filtration");
  59943. </stringProp>
  59944. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  59945. </BeanShellSampler>
  59946. <hashTree/>
  59947. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  59948. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59949. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59950. <collectionProp name="Arguments.arguments">
  59951. <elementProp name="" elementType="HTTPArgument">
  59952. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59953. <stringProp name="Argument.value">
  59954. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  59955. </stringProp>
  59956. <stringProp name="Argument.metadata">=</stringProp>
  59957. </elementProp>
  59958. </collectionProp>
  59959. </elementProp>
  59960. <stringProp name="HTTPSampler.domain"/>
  59961. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  59962. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  59963. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  59964. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  59965. <stringProp name="HTTPSampler.contentEncoding"/>
  59966. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  59967. <stringProp name="HTTPSampler.method">POST</stringProp>
  59968. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  59969. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  59970. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  59971. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  59972. <boolProp name="HTTPSampler.monitor">false</boolProp>
  59973. <stringProp name="HTTPSampler.embedded_url_re"/>
  59974. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  59975. </HTTPSamplerProxy>
  59976. <hashTree>
  59977. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  59978. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  59979. <stringProp name="EXPECTED_VALUE"/>
  59980. <boolProp name="JSONVALIDATION">false</boolProp>
  59981. <boolProp name="EXPECT_NULL">false</boolProp>
  59982. <boolProp name="INVERT">false</boolProp>
  59983. <boolProp name="ISREGEX">false</boolProp>
  59984. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  59985. <hashTree/>
  59986. </hashTree>
  59987. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  59988. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  59989. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  59990. <collectionProp name="Arguments.arguments">
  59991. <elementProp name="" elementType="HTTPArgument">
  59992. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  59993. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n search: \"${searchTerm}\"\n sort: {name: ASC}) { \n total_count \n items \n { \n name \n sku \n url_key \n } \n page_info{ \n current_page \n page_size \n total_pages \n } \n filters{ \n name \n request_var \n filter_items_count \n filter_items{ \n label \n items_count \n value_string \n __typename \n } \n } \n aggregations{ \n attribute_code \n count \n label \n options{ \n label \n value \n count \n } \n } \n } \n }\n","variables":null,"operationName":null}</stringProp>
  59994. <stringProp name="Argument.metadata">=</stringProp>
  59995. </elementProp>
  59996. </collectionProp>
  59997. </elementProp>
  59998. <stringProp name="HTTPSampler.domain"/>
  59999. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60000. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60001. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60002. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60003. <stringProp name="HTTPSampler.contentEncoding"/>
  60004. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60005. <stringProp name="HTTPSampler.method">POST</stringProp>
  60006. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60007. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60008. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60009. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60010. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60011. <stringProp name="HTTPSampler.embedded_url_re"/>
  60012. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/search_quick.jmx</stringProp>
  60013. </HTTPSamplerProxy>
  60014. <hashTree>
  60015. <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 total_count" enabled="true">
  60016. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  60017. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  60018. <stringProp name="DEFAULT"/>
  60019. <stringProp name="VARIABLE"/>
  60020. <stringProp name="SUBJECT">BODY</stringProp>
  60021. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60022. <hashTree/>
  60023. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  60024. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  60025. if (totalCount == null) {
  60026. Failure = true;
  60027. FailureMessage = "Not Expected \"totalCount\" to be null";
  60028. } else {
  60029. if (Integer.parseInt(totalCount) &lt; 1) {
  60030. Failure = true;
  60031. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  60032. } else {
  60033. Failure = false;
  60034. }
  60035. }
  60036. </stringProp>
  60037. <stringProp name="BeanShellAssertion.filename"/>
  60038. <stringProp name="BeanShellAssertion.parameters"/>
  60039. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  60040. </BeanShellAssertion>
  60041. <hashTree/>
  60042. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  60043. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  60044. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  60045. <stringProp name="RegexExtractor.regex">"url_key":"([^'"]+)</stringProp>
  60046. <stringProp name="RegexExtractor.template">$1$</stringProp>
  60047. <stringProp name="RegexExtractor.default"/>
  60048. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  60049. </RegexExtractor>
  60050. <hashTree/>
  60051. <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 attribute code 1" enabled="true">
  60052. <stringProp name="VAR">attribute_code_1</stringProp>
  60053. <stringProp name="JSONPATH">$.data.products.filters[1].request_var</stringProp>
  60054. <stringProp name="DEFAULT"/>
  60055. <stringProp name="VARIABLE"/>
  60056. <stringProp name="SUBJECT">BODY</stringProp>
  60057. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60058. <hashTree/>
  60059. <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 attribute value 1" enabled="true">
  60060. <stringProp name="VAR">attribute_value_1</stringProp>
  60061. <stringProp name="JSONPATH">$.data.products.filters[1].filter_items[0].value_string</stringProp>
  60062. <stringProp name="DEFAULT"/>
  60063. <stringProp name="VARIABLE"/>
  60064. <stringProp name="SUBJECT">BODY</stringProp>
  60065. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60066. <hashTree/>
  60067. <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 attribute code 2" enabled="true">
  60068. <stringProp name="VAR">attribute_code_2</stringProp>
  60069. <stringProp name="JSONPATH">$.data.products.filters[2].request_var</stringProp>
  60070. <stringProp name="DEFAULT"/>
  60071. <stringProp name="VARIABLE"/>
  60072. <stringProp name="SUBJECT">BODY</stringProp>
  60073. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60074. <hashTree/>
  60075. <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 attribute value 2" enabled="true">
  60076. <stringProp name="VAR">attribute_value_2</stringProp>
  60077. <stringProp name="JSONPATH">$.data.products.filters[2].filter_items[0].value_string</stringProp>
  60078. <stringProp name="DEFAULT"/>
  60079. <stringProp name="VARIABLE"/>
  60080. <stringProp name="SUBJECT">BODY</stringProp>
  60081. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60082. <hashTree/>
  60083. </hashTree>
  60084. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Filter by Attribute" enabled="true">
  60085. <boolProp name="LoopController.continue_forever">true</boolProp>
  60086. <stringProp name="LoopController.loops">2</stringProp>
  60087. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  60088. <hashTree>
  60089. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  60090. <stringProp name="CounterConfig.start">1</stringProp>
  60091. <stringProp name="CounterConfig.end"/>
  60092. <stringProp name="CounterConfig.incr">1</stringProp>
  60093. <stringProp name="CounterConfig.name">_counter</stringProp>
  60094. <stringProp name="CounterConfig.format"/>
  60095. <boolProp name="CounterConfig.per_user">true</boolProp>
  60096. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  60097. </CounterConfig>
  60098. <hashTree/>
  60099. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Attributes Data" enabled="true">
  60100. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/searched_attributes_setup.jmx</stringProp>
  60101. <stringProp name="BeanShellSampler.query">
  60102. number = vars.get("_counter");
  60103. attribute_code = vars.get("attribute_code_"+number);
  60104. vars.put("attribute_code", attribute_code);
  60105. attribute_value = vars.get("attribute_value_"+number);
  60106. vars.put("attribute_value", attribute_value);
  60107. </stringProp>
  60108. <stringProp name="BeanShellSampler.filename"/>
  60109. <stringProp name="BeanShellSampler.parameters"/>
  60110. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60111. </BeanShellSampler>
  60112. <hashTree/>
  60113. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filter by Attribute ${_counter}" enabled="true">
  60114. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60115. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60116. <collectionProp name="Arguments.arguments">
  60117. <elementProp name="" elementType="HTTPArgument">
  60118. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60119. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n search: \"${searchTerm}\"\n filter:{ \n ${attribute_code}: {in:[\"${attribute_value}\"]} \n } \n sort: {name: ASC}) { \n total_count \n items \n { \n name \n sku \n url_key \n } \n page_info{ \n current_page \n page_size \n total_pages \n } \n filters{ \n name \n request_var \n filter_items_count \n filter_items{ \n label \n items_count \n value_string \n __typename \n } \n } \n aggregations{ \n attribute_code \n count \n label \n options{ \n label \n value \n count \n } \n } \n } \n }\n","variables":null,"operationName":null}</stringProp>
  60120. <stringProp name="Argument.metadata">=</stringProp>
  60121. </elementProp>
  60122. </collectionProp>
  60123. </elementProp>
  60124. <stringProp name="HTTPSampler.domain"/>
  60125. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60126. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60127. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60128. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60129. <stringProp name="HTTPSampler.contentEncoding"/>
  60130. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60131. <stringProp name="HTTPSampler.method">POST</stringProp>
  60132. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60133. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60134. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60135. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60136. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60137. <stringProp name="HTTPSampler.embedded_url_re"/>
  60138. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/search_quick_filter_attribute.jmx</stringProp>
  60139. </HTTPSamplerProxy>
  60140. <hashTree>
  60141. <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 total_count" enabled="true">
  60142. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  60143. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  60144. <stringProp name="DEFAULT"/>
  60145. <stringProp name="VARIABLE"/>
  60146. <stringProp name="SUBJECT">BODY</stringProp>
  60147. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60148. <hashTree/>
  60149. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  60150. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  60151. if (totalCount == null) {
  60152. Failure = true;
  60153. FailureMessage = "Not Expected \"totalCount\" to be null";
  60154. } else {
  60155. if (Integer.parseInt(totalCount) &lt; 1) {
  60156. Failure = true;
  60157. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  60158. } else {
  60159. Failure = false;
  60160. }
  60161. }
  60162. </stringProp>
  60163. <stringProp name="BeanShellAssertion.filename"/>
  60164. <stringProp name="BeanShellAssertion.parameters"/>
  60165. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  60166. </BeanShellAssertion>
  60167. <hashTree/>
  60168. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  60169. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  60170. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  60171. <stringProp name="RegexExtractor.regex">"url_key":"([^'"]+)</stringProp>
  60172. <stringProp name="RegexExtractor.template">$1$</stringProp>
  60173. <stringProp name="RegexExtractor.default"/>
  60174. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  60175. </RegexExtractor>
  60176. <hashTree/>
  60177. </hashTree>
  60178. </hashTree>
  60179. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  60180. <stringProp name="BeanShellSampler.query">
  60181. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  60182. if (foundProducts &gt; 3) {
  60183. foundProducts = 3;
  60184. }
  60185. vars.put("foundProducts", String.valueOf(foundProducts));
  60186. </stringProp>
  60187. <stringProp name="BeanShellSampler.filename"/>
  60188. <stringProp name="BeanShellSampler.parameters"/>
  60189. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60190. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  60191. <hashTree/>
  60192. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  60193. <boolProp name="LoopController.continue_forever">true</boolProp>
  60194. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  60195. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  60196. <hashTree>
  60197. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  60198. <stringProp name="CounterConfig.start">1</stringProp>
  60199. <stringProp name="CounterConfig.end"/>
  60200. <stringProp name="CounterConfig.incr">1</stringProp>
  60201. <stringProp name="CounterConfig.name">_counter</stringProp>
  60202. <stringProp name="CounterConfig.format"/>
  60203. <boolProp name="CounterConfig.per_user">true</boolProp>
  60204. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  60205. </CounterConfig>
  60206. <hashTree/>
  60207. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  60208. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  60209. <stringProp name="BeanShellSampler.query">
  60210. number = vars.get("_counter");
  60211. product = vars.get("product_url_keys_"+number);
  60212. vars.put("product_url_key", product);
  60213. </stringProp>
  60214. <stringProp name="BeanShellSampler.filename"/>
  60215. <stringProp name="BeanShellSampler.parameters"/>
  60216. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60217. </BeanShellSampler>
  60218. <hashTree/>
  60219. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  60220. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60221. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60222. <collectionProp name="Arguments.arguments">
  60223. <elementProp name="" elementType="HTTPArgument">
  60224. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60225. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  60226. <stringProp name="Argument.metadata">=</stringProp>
  60227. </elementProp>
  60228. </collectionProp>
  60229. </elementProp>
  60230. <stringProp name="HTTPSampler.domain"/>
  60231. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60232. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60233. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60234. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60235. <stringProp name="HTTPSampler.contentEncoding"/>
  60236. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60237. <stringProp name="HTTPSampler.method">POST</stringProp>
  60238. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60239. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60240. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60241. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60242. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60243. <stringProp name="HTTPSampler.embedded_url_re"/>
  60244. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_product_details_by_product_url_key.jmx</stringProp>
  60245. </HTTPSamplerProxy>
  60246. <hashTree>
  60247. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  60248. <stringProp name="JSON_PATH">$.data.productDetail.items[0].sku</stringProp>
  60249. <stringProp name="EXPECTED_VALUE"/>
  60250. <boolProp name="JSONVALIDATION">false</boolProp>
  60251. <boolProp name="EXPECT_NULL">false</boolProp>
  60252. <boolProp name="INVERT">false</boolProp>
  60253. <boolProp name="ISREGEX">false</boolProp>
  60254. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  60255. <hashTree/>
  60256. </hashTree>
  60257. </hashTree>
  60258. </hashTree>
  60259. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Advanced Search" enabled="true">
  60260. <intProp name="ThroughputController.style">1</intProp>
  60261. <boolProp name="ThroughputController.perThread">false</boolProp>
  60262. <intProp name="ThroughputController.maxThroughput">1</intProp>
  60263. <stringProp name="ThroughputController.percentThroughput">${searchAdvancedPercentage}</stringProp>
  60264. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  60265. <hashTree>
  60266. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  60267. <stringProp name="script">
  60268. var tmpLabel = vars.get("testLabel")
  60269. if (tmpLabel) {
  60270. var testLabel = " (" + tmpLabel + ")"
  60271. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  60272. if (sampler.getName().indexOf(testLabel) == -1) {
  60273. sampler.setName(sampler.getName() + testLabel);
  60274. }
  60275. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  60276. sampler.setName("SetUp - " + sampler.getName());
  60277. }
  60278. } else {
  60279. testLabel = ""
  60280. }
  60281. </stringProp>
  60282. <stringProp name="scriptLanguage">javascript</stringProp>
  60283. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  60284. <hashTree/>
  60285. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  60286. <stringProp name="BeanShellSampler.query">
  60287. vars.put("testLabel", "Advanced Search");
  60288. </stringProp>
  60289. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60290. </BeanShellSampler>
  60291. <hashTree/>
  60292. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  60293. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60294. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60295. <collectionProp name="Arguments.arguments">
  60296. <elementProp name="" elementType="HTTPArgument">
  60297. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60298. <stringProp name="Argument.value">
  60299. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  60300. </stringProp>
  60301. <stringProp name="Argument.metadata">=</stringProp>
  60302. </elementProp>
  60303. </collectionProp>
  60304. </elementProp>
  60305. <stringProp name="HTTPSampler.domain"/>
  60306. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60307. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60308. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60309. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60310. <stringProp name="HTTPSampler.contentEncoding"/>
  60311. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60312. <stringProp name="HTTPSampler.method">POST</stringProp>
  60313. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60314. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60315. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60316. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60317. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60318. <stringProp name="HTTPSampler.embedded_url_re"/>
  60319. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  60320. </HTTPSamplerProxy>
  60321. <hashTree>
  60322. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  60323. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  60324. <stringProp name="EXPECTED_VALUE"/>
  60325. <boolProp name="JSONVALIDATION">false</boolProp>
  60326. <boolProp name="EXPECT_NULL">false</boolProp>
  60327. <boolProp name="INVERT">false</boolProp>
  60328. <boolProp name="ISREGEX">false</boolProp>
  60329. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  60330. <hashTree/>
  60331. </hashTree>
  60332. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Advanced" enabled="true">
  60333. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60334. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60335. <collectionProp name="Arguments.arguments">
  60336. <elementProp name="" elementType="HTTPArgument">
  60337. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60338. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n filter:{ \n price: {to:\"${priceTo}\"} \n description:{match:\"${searchTerm}\"} \n } \n sort: {name: ASC}) { \n total_count \n items \n { \n name \n sku \n url_key \n } \n page_info{ \n current_page \n page_size \n total_pages \n } \n filters{ \n name \n request_var \n filter_items_count \n filter_items{ \n label \n items_count \n value_string \n __typename \n } \n } \n aggregations{ \n attribute_code \n count \n label \n options{ \n label \n value \n count \n } \n } \n } \n }\n","variables":null,"operationName":null}</stringProp>
  60339. <stringProp name="Argument.metadata">=</stringProp>
  60340. </elementProp>
  60341. </collectionProp>
  60342. </elementProp>
  60343. <stringProp name="HTTPSampler.domain"/>
  60344. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60345. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60346. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60347. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60348. <stringProp name="HTTPSampler.contentEncoding"/>
  60349. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60350. <stringProp name="HTTPSampler.method">POST</stringProp>
  60351. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60352. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60353. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60354. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60355. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60356. <stringProp name="HTTPSampler.embedded_url_re"/>
  60357. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/search_advanced.jmx</stringProp>
  60358. </HTTPSamplerProxy>
  60359. <hashTree>
  60360. <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 total_count" enabled="true">
  60361. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  60362. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  60363. <stringProp name="DEFAULT"/>
  60364. <stringProp name="VARIABLE"/>
  60365. <stringProp name="SUBJECT">BODY</stringProp>
  60366. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60367. <hashTree/>
  60368. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  60369. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  60370. if (totalCount == null) {
  60371. Failure = true;
  60372. FailureMessage = "Not Expected \"totalCount\" to be null";
  60373. } else {
  60374. if (Integer.parseInt(totalCount) &lt; 1) {
  60375. Failure = true;
  60376. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  60377. } else {
  60378. Failure = false;
  60379. }
  60380. }
  60381. </stringProp>
  60382. <stringProp name="BeanShellAssertion.filename"/>
  60383. <stringProp name="BeanShellAssertion.parameters"/>
  60384. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  60385. </BeanShellAssertion>
  60386. <hashTree/>
  60387. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product url keys" enabled="true">
  60388. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  60389. <stringProp name="RegexExtractor.refname">product_url_keys</stringProp>
  60390. <stringProp name="RegexExtractor.regex">"url_key":"([^'"]+)</stringProp>
  60391. <stringProp name="RegexExtractor.template">$1$</stringProp>
  60392. <stringProp name="RegexExtractor.default"/>
  60393. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  60394. </RegexExtractor>
  60395. <hashTree/>
  60396. </hashTree>
  60397. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  60398. <stringProp name="BeanShellSampler.query">
  60399. foundProducts = Integer.parseInt(vars.get("product_url_keys_matchNr"));
  60400. if (foundProducts &gt; 3) {
  60401. foundProducts = 3;
  60402. }
  60403. vars.put("foundProducts", String.valueOf(foundProducts));
  60404. </stringProp>
  60405. <stringProp name="BeanShellSampler.filename"/>
  60406. <stringProp name="BeanShellSampler.parameters"/>
  60407. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60408. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items.jmx</stringProp></BeanShellSampler>
  60409. <hashTree/>
  60410. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  60411. <boolProp name="LoopController.continue_forever">true</boolProp>
  60412. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  60413. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  60414. <hashTree>
  60415. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  60416. <stringProp name="CounterConfig.start">1</stringProp>
  60417. <stringProp name="CounterConfig.end"/>
  60418. <stringProp name="CounterConfig.incr">1</stringProp>
  60419. <stringProp name="CounterConfig.name">_counter</stringProp>
  60420. <stringProp name="CounterConfig.format"/>
  60421. <boolProp name="CounterConfig.per_user">true</boolProp>
  60422. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  60423. </CounterConfig>
  60424. <hashTree/>
  60425. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  60426. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup.jmx</stringProp>
  60427. <stringProp name="BeanShellSampler.query">
  60428. number = vars.get("_counter");
  60429. product = vars.get("product_url_keys_"+number);
  60430. vars.put("product_url_key", product);
  60431. </stringProp>
  60432. <stringProp name="BeanShellSampler.filename"/>
  60433. <stringProp name="BeanShellSampler.parameters"/>
  60434. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60435. </BeanShellSampler>
  60436. <hashTree/>
  60437. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  60438. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60439. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60440. <collectionProp name="Arguments.arguments">
  60441. <elementProp name="" elementType="HTTPArgument">
  60442. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60443. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  60444. <stringProp name="Argument.metadata">=</stringProp>
  60445. </elementProp>
  60446. </collectionProp>
  60447. </elementProp>
  60448. <stringProp name="HTTPSampler.domain"/>
  60449. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60450. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60451. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60452. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60453. <stringProp name="HTTPSampler.contentEncoding"/>
  60454. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60455. <stringProp name="HTTPSampler.method">POST</stringProp>
  60456. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60457. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60458. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60459. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60460. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60461. <stringProp name="HTTPSampler.embedded_url_re"/>
  60462. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_product_details_by_product_url_key.jmx</stringProp>
  60463. </HTTPSamplerProxy>
  60464. <hashTree>
  60465. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  60466. <stringProp name="JSON_PATH">$.data.productDetail.items[0].sku</stringProp>
  60467. <stringProp name="EXPECTED_VALUE"/>
  60468. <boolProp name="JSONVALIDATION">false</boolProp>
  60469. <boolProp name="EXPECT_NULL">false</boolProp>
  60470. <boolProp name="INVERT">false</boolProp>
  60471. <boolProp name="ISREGEX">false</boolProp>
  60472. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  60473. <hashTree/>
  60474. </hashTree>
  60475. </hashTree>
  60476. </hashTree>
  60477. </hashTree>
  60478. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Add To Cart By Guest" enabled="true">
  60479. <intProp name="ThroughputController.style">1</intProp>
  60480. <boolProp name="ThroughputController.perThread">false</boolProp>
  60481. <intProp name="ThroughputController.maxThroughput">1</intProp>
  60482. <stringProp name="ThroughputController.percentThroughput">${cAddToCartByGuestPercentage}</stringProp>
  60483. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  60484. <hashTree>
  60485. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  60486. <stringProp name="script">
  60487. var tmpLabel = vars.get("testLabel")
  60488. if (tmpLabel) {
  60489. var testLabel = " (" + tmpLabel + ")"
  60490. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  60491. if (sampler.getName().indexOf(testLabel) == -1) {
  60492. sampler.setName(sampler.getName() + testLabel);
  60493. }
  60494. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  60495. sampler.setName("SetUp - " + sampler.getName());
  60496. }
  60497. } else {
  60498. testLabel = ""
  60499. }
  60500. </stringProp>
  60501. <stringProp name="scriptLanguage">javascript</stringProp>
  60502. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  60503. <hashTree/>
  60504. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  60505. <stringProp name="BeanShellSampler.query">
  60506. vars.put("testLabel", "[GraphQL C] Add To Cart By Guest");
  60507. </stringProp>
  60508. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60509. </BeanShellSampler>
  60510. <hashTree/>
  60511. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  60512. <collectionProp name="HeaderManager.headers">
  60513. <elementProp name="" elementType="Header">
  60514. <stringProp name="Header.name">Content-Type</stringProp>
  60515. <stringProp name="Header.value">application/json</stringProp>
  60516. </elementProp>
  60517. <elementProp name="" elementType="Header">
  60518. <stringProp name="Header.name">Accept</stringProp>
  60519. <stringProp name="Header.value">*/*</stringProp>
  60520. </elementProp>
  60521. </collectionProp>
  60522. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  60523. <hashTree/>
  60524. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  60525. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  60526. <stringProp name="BeanShellSampler.query">
  60527. import java.util.Random;
  60528. Random random = new Random();
  60529. if (${seedForRandom} &gt; 0) {
  60530. random.setSeed(${seedForRandom} + ${__threadNum});
  60531. }
  60532. vars.putObject("randomIntGenerator", random);
  60533. </stringProp>
  60534. <stringProp name="BeanShellSampler.filename"/>
  60535. <stringProp name="BeanShellSampler.parameters"/>
  60536. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60537. </BeanShellSampler>
  60538. <hashTree/>
  60539. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  60540. <stringProp name="scriptLanguage">javascript</stringProp>
  60541. <stringProp name="parameters"/>
  60542. <stringProp name="filename"/>
  60543. <stringProp name="cacheKey"/>
  60544. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  60545. var categories = props.get("categories");
  60546. number = random.nextInt(categories.length);
  60547. vars.put("category_url_key", categories[number].url_key);
  60548. vars.put("category_name", categories[number].name);
  60549. vars.put("category_id", categories[number].id);
  60550. vars.putObject("category", categories[number]);
  60551. </stringProp>
  60552. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  60553. <hashTree/>
  60554. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  60555. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60556. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60557. <collectionProp name="Arguments.arguments">
  60558. <elementProp name="" elementType="HTTPArgument">
  60559. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60560. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  60561. <stringProp name="Argument.metadata">=</stringProp>
  60562. </elementProp>
  60563. </collectionProp>
  60564. </elementProp>
  60565. <stringProp name="HTTPSampler.domain"/>
  60566. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60567. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60568. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60569. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60570. <stringProp name="HTTPSampler.contentEncoding"/>
  60571. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60572. <stringProp name="HTTPSampler.method">POST</stringProp>
  60573. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60574. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60575. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60576. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60577. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60578. <stringProp name="HTTPSampler.embedded_url_re"/>
  60579. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  60580. </HTTPSamplerProxy>
  60581. <hashTree>
  60582. <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">
  60583. <stringProp name="VAR">quote_id</stringProp>
  60584. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  60585. <stringProp name="DEFAULT"/>
  60586. <stringProp name="VARIABLE"/>
  60587. <stringProp name="SUBJECT">BODY</stringProp>
  60588. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60589. <hashTree/>
  60590. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  60591. <collectionProp name="Asserion.test_strings">
  60592. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  60593. </collectionProp>
  60594. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  60595. <boolProp name="Assertion.assume_success">false</boolProp>
  60596. <intProp name="Assertion.test_type">2</intProp>
  60597. </ResponseAssertion>
  60598. <hashTree/>
  60599. </hashTree>
  60600. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  60601. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60602. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60603. <collectionProp name="Arguments.arguments">
  60604. <elementProp name="" elementType="HTTPArgument">
  60605. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60606. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  60607. <stringProp name="Argument.metadata">=</stringProp>
  60608. </elementProp>
  60609. </collectionProp>
  60610. </elementProp>
  60611. <stringProp name="HTTPSampler.domain"/>
  60612. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60613. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60614. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60615. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60616. <stringProp name="HTTPSampler.contentEncoding"/>
  60617. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60618. <stringProp name="HTTPSampler.method">POST</stringProp>
  60619. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60620. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60621. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60622. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60623. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60624. <stringProp name="HTTPSampler.embedded_url_re"/>
  60625. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  60626. </HTTPSamplerProxy>
  60627. <hashTree>
  60628. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  60629. <collectionProp name="Asserion.test_strings">
  60630. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  60631. </collectionProp>
  60632. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  60633. <boolProp name="Assertion.assume_success">false</boolProp>
  60634. <intProp name="Assertion.test_type">8</intProp>
  60635. </ResponseAssertion>
  60636. <hashTree/>
  60637. </hashTree>
  60638. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  60639. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60640. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60641. <collectionProp name="Arguments.arguments">
  60642. <elementProp name="" elementType="HTTPArgument">
  60643. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60644. <stringProp name="Argument.value">
  60645. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  60646. </stringProp>
  60647. <stringProp name="Argument.metadata">=</stringProp>
  60648. </elementProp>
  60649. </collectionProp>
  60650. </elementProp>
  60651. <stringProp name="HTTPSampler.domain"/>
  60652. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60653. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60654. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60655. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60656. <stringProp name="HTTPSampler.contentEncoding"/>
  60657. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60658. <stringProp name="HTTPSampler.method">POST</stringProp>
  60659. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60660. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60661. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60662. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60663. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60664. <stringProp name="HTTPSampler.embedded_url_re"/>
  60665. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  60666. </HTTPSamplerProxy>
  60667. <hashTree>
  60668. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  60669. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  60670. <stringProp name="EXPECTED_VALUE"/>
  60671. <boolProp name="JSONVALIDATION">false</boolProp>
  60672. <boolProp name="EXPECT_NULL">false</boolProp>
  60673. <boolProp name="INVERT">false</boolProp>
  60674. <boolProp name="ISREGEX">false</boolProp>
  60675. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  60676. <hashTree/>
  60677. </hashTree>
  60678. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  60679. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60680. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60681. <collectionProp name="Arguments.arguments">
  60682. <elementProp name="" elementType="HTTPArgument">
  60683. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60684. <stringProp name="Argument.value">
  60685. {"query" : "{\n categoryList(filters:{}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"}
  60686. </stringProp>
  60687. <stringProp name="Argument.metadata">=</stringProp>
  60688. </elementProp>
  60689. </collectionProp>
  60690. </elementProp>
  60691. <stringProp name="HTTPSampler.domain"/>
  60692. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60693. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60694. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60695. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60696. <stringProp name="HTTPSampler.contentEncoding"/>
  60697. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60698. <stringProp name="HTTPSampler.method">POST</stringProp>
  60699. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60700. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60701. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60702. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60703. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60704. <stringProp name="HTTPSampler.embedded_url_re"/>
  60705. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_categories.jmx</stringProp>
  60706. </HTTPSamplerProxy>
  60707. <hashTree>
  60708. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  60709. <stringProp name="JSON_PATH">$.data.categoryList</stringProp>
  60710. <stringProp name="EXPECTED_VALUE"/>
  60711. <boolProp name="JSONVALIDATION">false</boolProp>
  60712. <boolProp name="EXPECT_NULL">false</boolProp>
  60713. <boolProp name="INVERT">false</boolProp>
  60714. <boolProp name="ISREGEX">false</boolProp>
  60715. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  60716. <hashTree/>
  60717. </hashTree>
  60718. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  60719. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60720. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60721. <collectionProp name="Arguments.arguments">
  60722. <elementProp name="" elementType="HTTPArgument">
  60723. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60724. <stringProp name="Argument.value">{"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"}</stringProp>
  60725. <stringProp name="Argument.metadata">=</stringProp>
  60726. </elementProp>
  60727. </collectionProp>
  60728. </elementProp>
  60729. <stringProp name="HTTPSampler.domain"/>
  60730. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60731. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60732. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60733. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60734. <stringProp name="HTTPSampler.contentEncoding"/>
  60735. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60736. <stringProp name="HTTPSampler.method">POST</stringProp>
  60737. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60738. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60739. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60740. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60741. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60742. <stringProp name="HTTPSampler.embedded_url_re"/>
  60743. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx</stringProp>
  60744. </HTTPSamplerProxy>
  60745. <hashTree>
  60746. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  60747. <collectionProp name="Asserion.test_strings">
  60748. <stringProp name="1201352014">"name":"${category_name}","id":${category_id},</stringProp>
  60749. </collectionProp>
  60750. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  60751. <boolProp name="Assertion.assume_success">false</boolProp>
  60752. <intProp name="Assertion.test_type">2</intProp>
  60753. </ResponseAssertion>
  60754. <hashTree/>
  60755. </hashTree>
  60756. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  60757. <boolProp name="LoopController.continue_forever">true</boolProp>
  60758. <stringProp name="LoopController.loops">2</stringProp>
  60759. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  60760. <hashTree>
  60761. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  60762. <stringProp name="CounterConfig.start">1</stringProp>
  60763. <stringProp name="CounterConfig.end"/>
  60764. <stringProp name="CounterConfig.incr">1</stringProp>
  60765. <stringProp name="CounterConfig.name">_counter</stringProp>
  60766. <stringProp name="CounterConfig.format"/>
  60767. <boolProp name="CounterConfig.per_user">true</boolProp>
  60768. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  60769. </CounterConfig>
  60770. <hashTree/>
  60771. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  60772. <stringProp name="BeanShellSampler.query">
  60773. import java.util.Random;
  60774. Random random = vars.getObject("randomIntGenerator");
  60775. number = random.nextInt(props.get("simple_products_list").size());
  60776. product = props.get("simple_products_list").get(number);
  60777. vars.put("product_url_key", product.get("url_key"));
  60778. vars.put("product_id", product.get("id"));
  60779. vars.put("product_name", product.get("title"));
  60780. vars.put("product_uenc", product.get("uenc"));
  60781. vars.put("product_sku", product.get("sku"));
  60782. </stringProp>
  60783. <stringProp name="BeanShellSampler.filename"/>
  60784. <stringProp name="BeanShellSampler.parameters"/>
  60785. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60786. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  60787. <hashTree/>
  60788. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  60789. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60790. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60791. <collectionProp name="Arguments.arguments">
  60792. <elementProp name="" elementType="HTTPArgument">
  60793. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60794. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  60795. <stringProp name="Argument.metadata">=</stringProp>
  60796. </elementProp>
  60797. </collectionProp>
  60798. </elementProp>
  60799. <stringProp name="HTTPSampler.domain"/>
  60800. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60801. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60802. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60803. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60804. <stringProp name="HTTPSampler.contentEncoding"/>
  60805. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60806. <stringProp name="HTTPSampler.method">POST</stringProp>
  60807. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60808. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60809. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60810. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60811. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60812. <stringProp name="HTTPSampler.embedded_url_re"/>
  60813. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  60814. </HTTPSamplerProxy>
  60815. <hashTree>
  60816. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  60817. <collectionProp name="Asserion.test_strings">
  60818. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  60819. </collectionProp>
  60820. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  60821. <boolProp name="Assertion.assume_success">false</boolProp>
  60822. <intProp name="Assertion.test_type">2</intProp>
  60823. </ResponseAssertion>
  60824. <hashTree/>
  60825. </hashTree>
  60826. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  60827. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60828. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60829. <collectionProp name="Arguments.arguments">
  60830. <elementProp name="" elementType="HTTPArgument">
  60831. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60832. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  60833. <stringProp name="Argument.metadata">=</stringProp>
  60834. </elementProp>
  60835. </collectionProp>
  60836. </elementProp>
  60837. <stringProp name="HTTPSampler.domain"/>
  60838. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60839. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60840. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60841. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60842. <stringProp name="HTTPSampler.contentEncoding"/>
  60843. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60844. <stringProp name="HTTPSampler.method">POST</stringProp>
  60845. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60846. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60847. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60848. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60849. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60850. <stringProp name="HTTPSampler.embedded_url_re"/>
  60851. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  60852. </HTTPSamplerProxy>
  60853. <hashTree>
  60854. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  60855. <collectionProp name="Asserion.test_strings">
  60856. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  60857. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  60858. </collectionProp>
  60859. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  60860. <boolProp name="Assertion.assume_success">false</boolProp>
  60861. <intProp name="Assertion.test_type">2</intProp>
  60862. </ResponseAssertion>
  60863. <hashTree/>
  60864. </hashTree>
  60865. </hashTree>
  60866. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  60867. <boolProp name="LoopController.continue_forever">true</boolProp>
  60868. <stringProp name="LoopController.loops">1</stringProp>
  60869. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  60870. <hashTree>
  60871. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  60872. <stringProp name="CounterConfig.start">1</stringProp>
  60873. <stringProp name="CounterConfig.end"/>
  60874. <stringProp name="CounterConfig.incr">1</stringProp>
  60875. <stringProp name="CounterConfig.name">_counter</stringProp>
  60876. <stringProp name="CounterConfig.format"/>
  60877. <boolProp name="CounterConfig.per_user">true</boolProp>
  60878. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  60879. </CounterConfig>
  60880. <hashTree/>
  60881. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  60882. <stringProp name="BeanShellSampler.query">
  60883. import java.util.Random;
  60884. Random random = vars.getObject("randomIntGenerator");
  60885. number = random.nextInt(props.get("configurable_products_list").size());
  60886. product = props.get("configurable_products_list").get(number);
  60887. vars.put("product_url_key", product.get("url_key"));
  60888. vars.put("product_id", product.get("id"));
  60889. vars.put("product_name", product.get("title"));
  60890. vars.put("product_uenc", product.get("uenc"));
  60891. vars.put("product_sku", product.get("sku"));
  60892. </stringProp>
  60893. <stringProp name="BeanShellSampler.filename"/>
  60894. <stringProp name="BeanShellSampler.parameters"/>
  60895. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  60896. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  60897. <hashTree/>
  60898. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  60899. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60900. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60901. <collectionProp name="Arguments.arguments">
  60902. <elementProp name="" elementType="HTTPArgument">
  60903. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60904. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  60905. <stringProp name="Argument.metadata">=</stringProp>
  60906. </elementProp>
  60907. </collectionProp>
  60908. </elementProp>
  60909. <stringProp name="HTTPSampler.domain"/>
  60910. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60911. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60912. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60913. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60914. <stringProp name="HTTPSampler.contentEncoding"/>
  60915. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60916. <stringProp name="HTTPSampler.method">POST</stringProp>
  60917. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60918. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60919. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60920. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60921. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60922. <stringProp name="HTTPSampler.embedded_url_re"/>
  60923. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  60924. </HTTPSamplerProxy>
  60925. <hashTree>
  60926. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  60927. <collectionProp name="Asserion.test_strings">
  60928. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  60929. </collectionProp>
  60930. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  60931. <boolProp name="Assertion.assume_success">false</boolProp>
  60932. <intProp name="Assertion.test_type">2</intProp>
  60933. </ResponseAssertion>
  60934. <hashTree/>
  60935. <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 Configurable Product option" enabled="true">
  60936. <stringProp name="VAR">product_option</stringProp>
  60937. <stringProp name="JSONPATH">$.data.productDetail.items[0].variants[0].product.sku</stringProp>
  60938. <stringProp name="DEFAULT"/>
  60939. <stringProp name="VARIABLE"/>
  60940. <stringProp name="SUBJECT">BODY</stringProp>
  60941. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option_from_product_detail.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  60942. <hashTree/>
  60943. </hashTree>
  60944. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  60945. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  60946. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  60947. <collectionProp name="Arguments.arguments">
  60948. <elementProp name="" elementType="HTTPArgument">
  60949. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  60950. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  60951. <stringProp name="Argument.metadata">=</stringProp>
  60952. </elementProp>
  60953. </collectionProp>
  60954. </elementProp>
  60955. <stringProp name="HTTPSampler.domain"/>
  60956. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  60957. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  60958. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  60959. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  60960. <stringProp name="HTTPSampler.contentEncoding"/>
  60961. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  60962. <stringProp name="HTTPSampler.method">POST</stringProp>
  60963. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  60964. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  60965. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  60966. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  60967. <boolProp name="HTTPSampler.monitor">false</boolProp>
  60968. <stringProp name="HTTPSampler.embedded_url_re"/>
  60969. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx</stringProp>
  60970. </HTTPSamplerProxy>
  60971. <hashTree>
  60972. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  60973. <collectionProp name="Asserion.test_strings">
  60974. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  60975. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  60976. </collectionProp>
  60977. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  60978. <boolProp name="Assertion.assume_success">false</boolProp>
  60979. <intProp name="Assertion.test_type">2</intProp>
  60980. </ResponseAssertion>
  60981. <hashTree/>
  60982. </hashTree>
  60983. </hashTree>
  60984. </hashTree>
  60985. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Add to Wishlist" enabled="true">
  60986. <intProp name="ThroughputController.style">1</intProp>
  60987. <boolProp name="ThroughputController.perThread">false</boolProp>
  60988. <intProp name="ThroughputController.maxThroughput">1</intProp>
  60989. <stringProp name="ThroughputController.percentThroughput">${cAddToWishlistPercentage}</stringProp>
  60990. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  60991. <hashTree>
  60992. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  60993. <stringProp name="script">
  60994. var tmpLabel = vars.get("testLabel")
  60995. if (tmpLabel) {
  60996. var testLabel = " (" + tmpLabel + ")"
  60997. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  60998. if (sampler.getName().indexOf(testLabel) == -1) {
  60999. sampler.setName(sampler.getName() + testLabel);
  61000. }
  61001. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  61002. sampler.setName("SetUp - " + sampler.getName());
  61003. }
  61004. } else {
  61005. testLabel = ""
  61006. }
  61007. </stringProp>
  61008. <stringProp name="scriptLanguage">javascript</stringProp>
  61009. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  61010. <hashTree/>
  61011. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  61012. <stringProp name="BeanShellSampler.query">
  61013. vars.put("testLabel", "[GraphQL C] Add to Wishlist");
  61014. </stringProp>
  61015. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61016. </BeanShellSampler>
  61017. <hashTree/>
  61018. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  61019. <collectionProp name="HeaderManager.headers">
  61020. <elementProp name="" elementType="Header">
  61021. <stringProp name="Header.name">Content-Type</stringProp>
  61022. <stringProp name="Header.value">application/json</stringProp>
  61023. </elementProp>
  61024. <elementProp name="" elementType="Header">
  61025. <stringProp name="Header.name">Accept</stringProp>
  61026. <stringProp name="Header.value">*/*</stringProp>
  61027. </elementProp>
  61028. </collectionProp>
  61029. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  61030. <hashTree/>
  61031. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  61032. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  61033. <stringProp name="BeanShellSampler.query">
  61034. import java.util.Random;
  61035. Random random = new Random();
  61036. if (${seedForRandom} &gt; 0) {
  61037. random.setSeed(${seedForRandom} + ${__threadNum});
  61038. }
  61039. vars.putObject("randomIntGenerator", random);
  61040. </stringProp>
  61041. <stringProp name="BeanShellSampler.filename"/>
  61042. <stringProp name="BeanShellSampler.parameters"/>
  61043. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61044. </BeanShellSampler>
  61045. <hashTree/>
  61046. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  61047. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  61048. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  61049. <hashTree>
  61050. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  61051. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  61052. <stringProp name="BeanShellSampler.query">
  61053. customerUserList = props.get("customer_emails_list");
  61054. customerUser = customerUserList.poll();
  61055. if (customerUser == null) {
  61056. SampleResult.setResponseMessage("customerUser list is empty");
  61057. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  61058. IsSuccess=false;
  61059. SampleResult.setSuccessful(false);
  61060. SampleResult.setStopThread(true);
  61061. }
  61062. vars.put("customer_email", customerUser);
  61063. </stringProp>
  61064. <stringProp name="BeanShellSampler.filename"/>
  61065. <stringProp name="BeanShellSampler.parameters"/>
  61066. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61067. </BeanShellSampler>
  61068. <hashTree/>
  61069. </hashTree>
  61070. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  61071. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61072. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61073. <collectionProp name="Arguments.arguments">
  61074. <elementProp name="" elementType="HTTPArgument">
  61075. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61076. <stringProp name="Argument.value">{"query":"mutation {\n generateCustomerToken(\n email: \"${customer_email}\" \n password: \"${customer_password}\" \n ) {\n token \n }\n}","variables":null,"operationName":null}</stringProp>
  61077. <stringProp name="Argument.metadata">=</stringProp>
  61078. </elementProp>
  61079. </collectionProp>
  61080. </elementProp>
  61081. <stringProp name="HTTPSampler.domain"/>
  61082. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61083. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61084. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61085. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61086. <stringProp name="HTTPSampler.contentEncoding"/>
  61087. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61088. <stringProp name="HTTPSampler.method">POST</stringProp>
  61089. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61090. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61091. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61092. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61093. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61094. <stringProp name="HTTPSampler.embedded_url_re"/>
  61095. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/login.jmx</stringProp>
  61096. </HTTPSamplerProxy>
  61097. <hashTree>
  61098. <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 item id" enabled="true">
  61099. <stringProp name="VAR">customer_token</stringProp>
  61100. <stringProp name="JSONPATH">$.data.generateCustomerToken.token</stringProp>
  61101. <stringProp name="DEFAULT"/>
  61102. <stringProp name="VARIABLE"/>
  61103. <stringProp name="SUBJECT">BODY</stringProp>
  61104. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  61105. <hashTree/>
  61106. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61107. <stringProp name="JSON_PATH">$.data.generateCustomerToken.token</stringProp>
  61108. <stringProp name="EXPECTED_VALUE"/>
  61109. <boolProp name="JSONVALIDATION">false</boolProp>
  61110. <boolProp name="EXPECT_NULL">false</boolProp>
  61111. <boolProp name="INVERT">false</boolProp>
  61112. <boolProp name="ISREGEX">false</boolProp>
  61113. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61114. <hashTree/>
  61115. </hashTree>
  61116. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Wishlist" enabled="true">
  61117. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61118. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61119. <collectionProp name="Arguments.arguments">
  61120. <elementProp name="" elementType="HTTPArgument">
  61121. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61122. <stringProp name="Argument.value">{"query":" { \n customer {\n wishlist \n { \n id \n } \n } \n }","variables":null,"operationName":null}</stringProp>
  61123. <stringProp name="Argument.metadata">=</stringProp>
  61124. </elementProp>
  61125. </collectionProp>
  61126. </elementProp>
  61127. <stringProp name="HTTPSampler.domain"/>
  61128. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61129. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61130. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61131. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61132. <stringProp name="HTTPSampler.contentEncoding"/>
  61133. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61134. <stringProp name="HTTPSampler.method">POST</stringProp>
  61135. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61136. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61137. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61138. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61139. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61140. <stringProp name="HTTPSampler.embedded_url_re"/>
  61141. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_wishlist.jmx</stringProp>
  61142. </HTTPSamplerProxy>
  61143. <hashTree>
  61144. <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 wishlist id" enabled="true">
  61145. <stringProp name="VAR">wishlist_id</stringProp>
  61146. <stringProp name="JSONPATH">$.data.customer.wishlist.id</stringProp>
  61147. <stringProp name="DEFAULT"/>
  61148. <stringProp name="VARIABLE"/>
  61149. <stringProp name="SUBJECT">BODY</stringProp>
  61150. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  61151. <hashTree/>
  61152. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61153. <stringProp name="JSON_PATH">$.data.customer.wishlist.id</stringProp>
  61154. <stringProp name="EXPECTED_VALUE"/>
  61155. <boolProp name="JSONVALIDATION">false</boolProp>
  61156. <boolProp name="EXPECT_NULL">false</boolProp>
  61157. <boolProp name="INVERT">false</boolProp>
  61158. <boolProp name="ISREGEX">false</boolProp>
  61159. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61160. <hashTree/>
  61161. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  61162. <boolProp name="resetInterpreter">false</boolProp>
  61163. <stringProp name="parameters"/>
  61164. <stringProp name="filename"/>
  61165. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  61166. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  61167. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  61168. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  61169. </hashTree>
  61170. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Products to Wishlist" enabled="true">
  61171. <boolProp name="LoopController.continue_forever">true</boolProp>
  61172. <stringProp name="LoopController.loops">5</stringProp>
  61173. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  61174. <hashTree>
  61175. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  61176. <stringProp name="CounterConfig.start">1</stringProp>
  61177. <stringProp name="CounterConfig.end"/>
  61178. <stringProp name="CounterConfig.incr">1</stringProp>
  61179. <stringProp name="CounterConfig.name">_counter</stringProp>
  61180. <stringProp name="CounterConfig.format"/>
  61181. <boolProp name="CounterConfig.per_user">true</boolProp>
  61182. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  61183. </CounterConfig>
  61184. <hashTree/>
  61185. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  61186. <stringProp name="BeanShellSampler.query">
  61187. import java.util.Random;
  61188. Random random = vars.getObject("randomIntGenerator");
  61189. number = random.nextInt(props.get("simple_products_list").size());
  61190. product = props.get("simple_products_list").get(number);
  61191. vars.put("product_url_key", product.get("url_key"));
  61192. vars.put("product_id", product.get("id"));
  61193. vars.put("product_name", product.get("title"));
  61194. vars.put("product_uenc", product.get("uenc"));
  61195. vars.put("product_sku", product.get("sku"));
  61196. </stringProp>
  61197. <stringProp name="BeanShellSampler.filename"/>
  61198. <stringProp name="BeanShellSampler.parameters"/>
  61199. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61200. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  61201. <hashTree/>
  61202. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  61203. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61204. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61205. <collectionProp name="Arguments.arguments">
  61206. <elementProp name="" elementType="HTTPArgument">
  61207. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61208. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  61209. <stringProp name="Argument.metadata">=</stringProp>
  61210. </elementProp>
  61211. </collectionProp>
  61212. </elementProp>
  61213. <stringProp name="HTTPSampler.domain"/>
  61214. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61215. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61216. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61217. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61218. <stringProp name="HTTPSampler.contentEncoding"/>
  61219. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61220. <stringProp name="HTTPSampler.method">POST</stringProp>
  61221. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61222. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61223. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61224. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61225. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61226. <stringProp name="HTTPSampler.embedded_url_re"/>
  61227. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  61228. </HTTPSamplerProxy>
  61229. <hashTree>
  61230. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  61231. <collectionProp name="Asserion.test_strings">
  61232. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  61233. </collectionProp>
  61234. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  61235. <boolProp name="Assertion.assume_success">false</boolProp>
  61236. <intProp name="Assertion.test_type">2</intProp>
  61237. </ResponseAssertion>
  61238. <hashTree/>
  61239. </hashTree>
  61240. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Wishlist" enabled="true">
  61241. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61242. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61243. <collectionProp name="Arguments.arguments">
  61244. <elementProp name="" elementType="HTTPArgument">
  61245. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61246. <stringProp name="Argument.value">{"query": "mutation{ \n addProductsToWishlist( \n wishlistId: ${wishlist_id} \n wishlistItems:[ \n { \n sku: \"${product_sku}\" \n quantity: 1 \n } \n ]) \n { \n wishlist{ \n id \n items_count \n items{ \n id \n product{name sku} description qty} \n } \n user_errors{code message} \n } \n }","variables":null,"operationName":null}</stringProp>
  61247. <stringProp name="Argument.metadata">=</stringProp>
  61248. </elementProp>
  61249. </collectionProp>
  61250. </elementProp>
  61251. <stringProp name="HTTPSampler.domain"/>
  61252. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61253. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61254. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61255. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61256. <stringProp name="HTTPSampler.contentEncoding"/>
  61257. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61258. <stringProp name="HTTPSampler.method">POST</stringProp>
  61259. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61260. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61261. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61262. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61263. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61264. <stringProp name="HTTPSampler.embedded_url_re"/>
  61265. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_wishlist.jmx</stringProp>
  61266. </HTTPSamplerProxy>
  61267. <hashTree>
  61268. <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 wishlist product id" enabled="true">
  61269. <stringProp name="VAR">wishlist_product_id</stringProp>
  61270. <stringProp name="JSONPATH">$.data.addProductsToWishlist.wishlist.items[0].id</stringProp>
  61271. <stringProp name="DEFAULT"/>
  61272. <stringProp name="VARIABLE"/>
  61273. <stringProp name="SUBJECT">BODY</stringProp>
  61274. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  61275. <hashTree/>
  61276. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61277. <stringProp name="JSON_PATH">$.data.addProductsToWishlist.wishlist</stringProp>
  61278. <stringProp name="EXPECTED_VALUE"/>
  61279. <boolProp name="JSONVALIDATION">false</boolProp>
  61280. <boolProp name="EXPECT_NULL">false</boolProp>
  61281. <boolProp name="INVERT">false</boolProp>
  61282. <boolProp name="ISREGEX">false</boolProp>
  61283. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61284. <hashTree/>
  61285. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  61286. <boolProp name="resetInterpreter">false</boolProp>
  61287. <stringProp name="parameters"/>
  61288. <stringProp name="filename"/>
  61289. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  61290. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  61291. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  61292. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  61293. </hashTree>
  61294. </hashTree>
  61295. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Delete Products from Wishlist" enabled="true">
  61296. <boolProp name="LoopController.continue_forever">true</boolProp>
  61297. <stringProp name="LoopController.loops">5</stringProp>
  61298. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  61299. <hashTree>
  61300. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  61301. <stringProp name="CounterConfig.start">1</stringProp>
  61302. <stringProp name="CounterConfig.end"/>
  61303. <stringProp name="CounterConfig.incr">1</stringProp>
  61304. <stringProp name="CounterConfig.name">_counter</stringProp>
  61305. <stringProp name="CounterConfig.format"/>
  61306. <boolProp name="CounterConfig.per_user">true</boolProp>
  61307. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  61308. </CounterConfig>
  61309. <hashTree/>
  61310. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete Product ${_counter} From Wishlist" enabled="true">
  61311. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61312. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61313. <collectionProp name="Arguments.arguments">
  61314. <elementProp name="" elementType="HTTPArgument">
  61315. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61316. <stringProp name="Argument.value">{"query": "mutation { \n removeProductsFromWishlist( \n wishlistId: \"${wishlist_id}\", \n wishlistItemsIds: [\"${wishlist_product_id}\"] \n ) { \n user_errors { \n code \n message \n } \n wishlist { \n id \n sharing_code \n items_count \n items_v2 { \n items {id description quantity product {name sku}} \n } \n } \n } \n }","variables":null,"operationName":null}</stringProp>
  61317. <stringProp name="Argument.metadata">=</stringProp>
  61318. </elementProp>
  61319. </collectionProp>
  61320. </elementProp>
  61321. <stringProp name="HTTPSampler.domain"/>
  61322. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61323. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61324. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61325. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61326. <stringProp name="HTTPSampler.contentEncoding"/>
  61327. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61328. <stringProp name="HTTPSampler.method">POST</stringProp>
  61329. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61330. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61331. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61332. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61333. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61334. <stringProp name="HTTPSampler.embedded_url_re"/>
  61335. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/clear_wishlist.jmx</stringProp>
  61336. </HTTPSamplerProxy>
  61337. <hashTree>
  61338. <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 wishlist product id" enabled="true">
  61339. <stringProp name="VAR">wishlist_product_id</stringProp>
  61340. <stringProp name="JSONPATH">$.data.removeProductsFromWishlist.wishlist.items_v2.items[0].id</stringProp>
  61341. <stringProp name="DEFAULT"/>
  61342. <stringProp name="VARIABLE"/>
  61343. <stringProp name="SUBJECT">BODY</stringProp>
  61344. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  61345. <hashTree/>
  61346. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61347. <stringProp name="JSON_PATH">$.data.removeProductsFromWishlist.wishlist</stringProp>
  61348. <stringProp name="EXPECTED_VALUE"/>
  61349. <boolProp name="JSONVALIDATION">false</boolProp>
  61350. <boolProp name="EXPECT_NULL">false</boolProp>
  61351. <boolProp name="INVERT">false</boolProp>
  61352. <boolProp name="ISREGEX">false</boolProp>
  61353. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61354. <hashTree/>
  61355. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  61356. <boolProp name="resetInterpreter">false</boolProp>
  61357. <stringProp name="parameters"/>
  61358. <stringProp name="filename"/>
  61359. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  61360. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  61361. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  61362. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  61363. </hashTree>
  61364. </hashTree>
  61365. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check Wishlist" enabled="true">
  61366. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61367. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61368. <collectionProp name="Arguments.arguments">
  61369. <elementProp name="" elementType="HTTPArgument">
  61370. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61371. <stringProp name="Argument.value">{"query":" { \n customer {\n wishlist \n { \n id \n items_count \n } \n } \n }","variables":null,"operationName":null}</stringProp>
  61372. <stringProp name="Argument.metadata">=</stringProp>
  61373. </elementProp>
  61374. </collectionProp>
  61375. </elementProp>
  61376. <stringProp name="HTTPSampler.domain"/>
  61377. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61378. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61379. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61380. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61381. <stringProp name="HTTPSampler.contentEncoding"/>
  61382. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61383. <stringProp name="HTTPSampler.method">POST</stringProp>
  61384. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61385. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61386. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61387. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61388. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61389. <stringProp name="HTTPSampler.embedded_url_re"/>
  61390. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/check_wishlist.jmx</stringProp>
  61391. </HTTPSamplerProxy>
  61392. <hashTree>
  61393. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61394. <stringProp name="JSON_PATH">$.data.customer.wishlist.items_count</stringProp>
  61395. <stringProp name="EXPECTED_VALUE">0</stringProp>
  61396. <boolProp name="JSONVALIDATION">true</boolProp>
  61397. <boolProp name="EXPECT_NULL">false</boolProp>
  61398. <boolProp name="INVERT">false</boolProp>
  61399. <boolProp name="ISREGEX">false</boolProp>
  61400. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61401. <hashTree/>
  61402. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  61403. <boolProp name="resetInterpreter">false</boolProp>
  61404. <stringProp name="parameters"/>
  61405. <stringProp name="filename"/>
  61406. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  61407. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  61408. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  61409. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  61410. </hashTree>
  61411. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  61412. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61413. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61414. <collectionProp name="Arguments.arguments">
  61415. <elementProp name="" elementType="HTTPArgument">
  61416. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61417. <stringProp name="Argument.value">{"query":"mutation {\n revokeCustomerToken {\n result \n }\n}","variables":null,"operationName":null}</stringProp>
  61418. <stringProp name="Argument.metadata">=</stringProp>
  61419. </elementProp>
  61420. </collectionProp>
  61421. </elementProp>
  61422. <stringProp name="HTTPSampler.domain"/>
  61423. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61424. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61425. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61426. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61427. <stringProp name="HTTPSampler.contentEncoding"/>
  61428. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61429. <stringProp name="HTTPSampler.method">POST</stringProp>
  61430. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61431. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61432. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61433. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61434. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61435. <stringProp name="HTTPSampler.embedded_url_re"/>
  61436. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/logout.jmx</stringProp>
  61437. </HTTPSamplerProxy>
  61438. <hashTree>
  61439. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61440. <stringProp name="JSON_PATH">$.data.revokeCustomerToken.result</stringProp>
  61441. <stringProp name="EXPECTED_VALUE">true</stringProp>
  61442. <boolProp name="JSONVALIDATION">true</boolProp>
  61443. <boolProp name="EXPECT_NULL">false</boolProp>
  61444. <boolProp name="INVERT">false</boolProp>
  61445. <boolProp name="ISREGEX">false</boolProp>
  61446. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61447. <hashTree/>
  61448. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  61449. <boolProp name="resetInterpreter">false</boolProp>
  61450. <stringProp name="parameters"/>
  61451. <stringProp name="filename"/>
  61452. <stringProp name="script">
  61453. customerUserList = props.get("customer_emails_list");
  61454. customerUserList.add(vars.get("customer_email"));
  61455. </stringProp>
  61456. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  61457. <hashTree/>
  61458. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  61459. <boolProp name="resetInterpreter">false</boolProp>
  61460. <stringProp name="parameters"/>
  61461. <stringProp name="filename"/>
  61462. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  61463. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  61464. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  61465. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  61466. </hashTree>
  61467. </hashTree>
  61468. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Compare Products" enabled="true">
  61469. <intProp name="ThroughputController.style">1</intProp>
  61470. <boolProp name="ThroughputController.perThread">false</boolProp>
  61471. <intProp name="ThroughputController.maxThroughput">1</intProp>
  61472. <stringProp name="ThroughputController.percentThroughput">${cCompareProductsPercentage}</stringProp>
  61473. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  61474. <hashTree>
  61475. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  61476. <stringProp name="script">
  61477. var tmpLabel = vars.get("testLabel")
  61478. if (tmpLabel) {
  61479. var testLabel = " (" + tmpLabel + ")"
  61480. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  61481. if (sampler.getName().indexOf(testLabel) == -1) {
  61482. sampler.setName(sampler.getName() + testLabel);
  61483. }
  61484. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  61485. sampler.setName("SetUp - " + sampler.getName());
  61486. }
  61487. } else {
  61488. testLabel = ""
  61489. }
  61490. </stringProp>
  61491. <stringProp name="scriptLanguage">javascript</stringProp>
  61492. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  61493. <hashTree/>
  61494. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  61495. <stringProp name="BeanShellSampler.query">
  61496. vars.put("testLabel", "[GraphQL C] Compare Products");
  61497. </stringProp>
  61498. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61499. </BeanShellSampler>
  61500. <hashTree/>
  61501. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  61502. <collectionProp name="HeaderManager.headers">
  61503. <elementProp name="" elementType="Header">
  61504. <stringProp name="Header.name">Content-Type</stringProp>
  61505. <stringProp name="Header.value">application/json</stringProp>
  61506. </elementProp>
  61507. <elementProp name="" elementType="Header">
  61508. <stringProp name="Header.name">Accept</stringProp>
  61509. <stringProp name="Header.value">*/*</stringProp>
  61510. </elementProp>
  61511. </collectionProp>
  61512. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  61513. <hashTree/>
  61514. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  61515. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  61516. <stringProp name="BeanShellSampler.query">
  61517. import java.util.Random;
  61518. Random random = new Random();
  61519. if (${seedForRandom} &gt; 0) {
  61520. random.setSeed(${seedForRandom} + ${__threadNum});
  61521. }
  61522. vars.putObject("randomIntGenerator", random);
  61523. </stringProp>
  61524. <stringProp name="BeanShellSampler.filename"/>
  61525. <stringProp name="BeanShellSampler.parameters"/>
  61526. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61527. </BeanShellSampler>
  61528. <hashTree/>
  61529. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  61530. <stringProp name="scriptLanguage">javascript</stringProp>
  61531. <stringProp name="parameters"/>
  61532. <stringProp name="filename"/>
  61533. <stringProp name="cacheKey"/>
  61534. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  61535. var categories = props.get("categories");
  61536. number = random.nextInt(categories.length);
  61537. vars.put("category_url_key", categories[number].url_key);
  61538. vars.put("category_name", categories[number].name);
  61539. vars.put("category_id", categories[number].id);
  61540. vars.putObject("category", categories[number]);
  61541. </stringProp>
  61542. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  61543. <hashTree/>
  61544. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Compare List" enabled="true">
  61545. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61546. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61547. <collectionProp name="Arguments.arguments">
  61548. <elementProp name="" elementType="HTTPArgument">
  61549. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61550. <stringProp name="Argument.value">{"query":"mutation {\n createCompareList \n { \n uid \n } \n}","variables":null,"operationName":null}</stringProp>
  61551. <stringProp name="Argument.metadata">=</stringProp>
  61552. </elementProp>
  61553. </collectionProp>
  61554. </elementProp>
  61555. <stringProp name="HTTPSampler.domain"/>
  61556. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61557. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61558. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61559. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61560. <stringProp name="HTTPSampler.contentEncoding"/>
  61561. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61562. <stringProp name="HTTPSampler.method">POST</stringProp>
  61563. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61564. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61565. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61566. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61567. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61568. <stringProp name="HTTPSampler.embedded_url_re"/>
  61569. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_compare_list.jmx</stringProp>
  61570. </HTTPSamplerProxy>
  61571. <hashTree>
  61572. <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 compare list id" enabled="true">
  61573. <stringProp name="VAR">compare_list_id</stringProp>
  61574. <stringProp name="JSONPATH">$.data.createCompareList.uid</stringProp>
  61575. <stringProp name="DEFAULT"/>
  61576. <stringProp name="VARIABLE"/>
  61577. <stringProp name="SUBJECT">BODY</stringProp>
  61578. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  61579. <hashTree/>
  61580. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61581. <stringProp name="JSON_PATH">$.data.createCompareList.uid</stringProp>
  61582. <stringProp name="EXPECTED_VALUE"/>
  61583. <boolProp name="JSONVALIDATION">false</boolProp>
  61584. <boolProp name="EXPECT_NULL">false</boolProp>
  61585. <boolProp name="INVERT">false</boolProp>
  61586. <boolProp name="ISREGEX">false</boolProp>
  61587. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61588. <hashTree/>
  61589. </hashTree>
  61590. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  61591. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61592. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61593. <collectionProp name="Arguments.arguments">
  61594. <elementProp name="" elementType="HTTPArgument">
  61595. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61596. <stringProp name="Argument.value">
  61597. {"query" : "{\n categoryList(filters:{}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"}
  61598. </stringProp>
  61599. <stringProp name="Argument.metadata">=</stringProp>
  61600. </elementProp>
  61601. </collectionProp>
  61602. </elementProp>
  61603. <stringProp name="HTTPSampler.domain"/>
  61604. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61605. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61606. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61607. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61608. <stringProp name="HTTPSampler.contentEncoding"/>
  61609. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61610. <stringProp name="HTTPSampler.method">POST</stringProp>
  61611. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61612. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61613. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61614. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61615. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61616. <stringProp name="HTTPSampler.embedded_url_re"/>
  61617. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_categories.jmx</stringProp>
  61618. </HTTPSamplerProxy>
  61619. <hashTree>
  61620. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61621. <stringProp name="JSON_PATH">$.data.categoryList</stringProp>
  61622. <stringProp name="EXPECTED_VALUE"/>
  61623. <boolProp name="JSONVALIDATION">false</boolProp>
  61624. <boolProp name="EXPECT_NULL">false</boolProp>
  61625. <boolProp name="INVERT">false</boolProp>
  61626. <boolProp name="ISREGEX">false</boolProp>
  61627. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61628. <hashTree/>
  61629. </hashTree>
  61630. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  61631. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61632. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61633. <collectionProp name="Arguments.arguments">
  61634. <elementProp name="" elementType="HTTPArgument">
  61635. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61636. <stringProp name="Argument.value">{"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"}</stringProp>
  61637. <stringProp name="Argument.metadata">=</stringProp>
  61638. </elementProp>
  61639. </collectionProp>
  61640. </elementProp>
  61641. <stringProp name="HTTPSampler.domain"/>
  61642. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61643. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61644. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61645. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61646. <stringProp name="HTTPSampler.contentEncoding"/>
  61647. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61648. <stringProp name="HTTPSampler.method">POST</stringProp>
  61649. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61650. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61651. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61652. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61653. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61654. <stringProp name="HTTPSampler.embedded_url_re"/>
  61655. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx</stringProp>
  61656. </HTTPSamplerProxy>
  61657. <hashTree>
  61658. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  61659. <collectionProp name="Asserion.test_strings">
  61660. <stringProp name="1201352014">"name":"${category_name}","id":${category_id},</stringProp>
  61661. </collectionProp>
  61662. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  61663. <boolProp name="Assertion.assume_success">false</boolProp>
  61664. <intProp name="Assertion.test_type">2</intProp>
  61665. </ResponseAssertion>
  61666. <hashTree/>
  61667. </hashTree>
  61668. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  61669. <boolProp name="LoopController.continue_forever">true</boolProp>
  61670. <stringProp name="LoopController.loops">2</stringProp>
  61671. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  61672. <hashTree>
  61673. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  61674. <stringProp name="CounterConfig.start">1</stringProp>
  61675. <stringProp name="CounterConfig.end"/>
  61676. <stringProp name="CounterConfig.incr">1</stringProp>
  61677. <stringProp name="CounterConfig.name">_counter</stringProp>
  61678. <stringProp name="CounterConfig.format"/>
  61679. <boolProp name="CounterConfig.per_user">true</boolProp>
  61680. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  61681. </CounterConfig>
  61682. <hashTree/>
  61683. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  61684. <stringProp name="BeanShellSampler.query">
  61685. import java.util.Random;
  61686. Random random = vars.getObject("randomIntGenerator");
  61687. number = random.nextInt(props.get("simple_products_list").size());
  61688. product = props.get("simple_products_list").get(number);
  61689. vars.put("product_url_key", product.get("url_key"));
  61690. vars.put("product_id", product.get("id"));
  61691. vars.put("product_name", product.get("title"));
  61692. vars.put("product_uenc", product.get("uenc"));
  61693. vars.put("product_sku", product.get("sku"));
  61694. </stringProp>
  61695. <stringProp name="BeanShellSampler.filename"/>
  61696. <stringProp name="BeanShellSampler.parameters"/>
  61697. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61698. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  61699. <hashTree/>
  61700. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  61701. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61702. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61703. <collectionProp name="Arguments.arguments">
  61704. <elementProp name="" elementType="HTTPArgument">
  61705. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61706. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  61707. <stringProp name="Argument.metadata">=</stringProp>
  61708. </elementProp>
  61709. </collectionProp>
  61710. </elementProp>
  61711. <stringProp name="HTTPSampler.domain"/>
  61712. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61713. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61714. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61715. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61716. <stringProp name="HTTPSampler.contentEncoding"/>
  61717. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61718. <stringProp name="HTTPSampler.method">POST</stringProp>
  61719. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61720. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61721. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61722. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61723. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61724. <stringProp name="HTTPSampler.embedded_url_re"/>
  61725. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  61726. </HTTPSamplerProxy>
  61727. <hashTree>
  61728. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  61729. <collectionProp name="Asserion.test_strings">
  61730. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  61731. </collectionProp>
  61732. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  61733. <boolProp name="Assertion.assume_success">false</boolProp>
  61734. <intProp name="Assertion.test_type">2</intProp>
  61735. </ResponseAssertion>
  61736. <hashTree/>
  61737. </hashTree>
  61738. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Comparison Add" enabled="true">
  61739. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61740. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61741. <collectionProp name="Arguments.arguments">
  61742. <elementProp name="" elementType="HTTPArgument">
  61743. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61744. <stringProp name="Argument.value">{"query":"mutation{ \n addProductsToCompareList(input: { uid: \"${compare_list_id}\", products: [${product_id}]}) { \n uid \n item_count \n attributes{code label} \n items { \n product { \n sku \n } \n } \n } \n }","variables":null,"operationName":null}</stringProp>
  61745. <stringProp name="Argument.metadata">=</stringProp>
  61746. </elementProp>
  61747. </collectionProp>
  61748. </elementProp>
  61749. <stringProp name="HTTPSampler.domain"/>
  61750. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61751. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61752. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61753. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61754. <stringProp name="HTTPSampler.contentEncoding"/>
  61755. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61756. <stringProp name="HTTPSampler.method">POST</stringProp>
  61757. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61758. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61759. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61760. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61761. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61762. <stringProp name="HTTPSampler.embedded_url_re"/>
  61763. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/product_compare_add.jmx</stringProp>
  61764. </HTTPSamplerProxy>
  61765. <hashTree>
  61766. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61767. <stringProp name="JSON_PATH">$.data.addProductsToCompareList.item_count</stringProp>
  61768. <stringProp name="EXPECTED_VALUE"/>
  61769. <boolProp name="JSONVALIDATION">false</boolProp>
  61770. <boolProp name="EXPECT_NULL">false</boolProp>
  61771. <boolProp name="INVERT">false</boolProp>
  61772. <boolProp name="ISREGEX">false</boolProp>
  61773. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61774. <hashTree/>
  61775. </hashTree>
  61776. </hashTree>
  61777. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  61778. <boolProp name="LoopController.continue_forever">true</boolProp>
  61779. <stringProp name="LoopController.loops">1</stringProp>
  61780. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  61781. <hashTree>
  61782. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  61783. <stringProp name="CounterConfig.start">1</stringProp>
  61784. <stringProp name="CounterConfig.end"/>
  61785. <stringProp name="CounterConfig.incr">1</stringProp>
  61786. <stringProp name="CounterConfig.name">_counter</stringProp>
  61787. <stringProp name="CounterConfig.format"/>
  61788. <boolProp name="CounterConfig.per_user">true</boolProp>
  61789. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  61790. </CounterConfig>
  61791. <hashTree/>
  61792. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  61793. <stringProp name="BeanShellSampler.query">
  61794. import java.util.Random;
  61795. Random random = vars.getObject("randomIntGenerator");
  61796. number = random.nextInt(props.get("configurable_products_list").size());
  61797. product = props.get("configurable_products_list").get(number);
  61798. vars.put("product_url_key", product.get("url_key"));
  61799. vars.put("product_id", product.get("id"));
  61800. vars.put("product_name", product.get("title"));
  61801. vars.put("product_uenc", product.get("uenc"));
  61802. vars.put("product_sku", product.get("sku"));
  61803. </stringProp>
  61804. <stringProp name="BeanShellSampler.filename"/>
  61805. <stringProp name="BeanShellSampler.parameters"/>
  61806. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61807. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  61808. <hashTree/>
  61809. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  61810. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61811. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61812. <collectionProp name="Arguments.arguments">
  61813. <elementProp name="" elementType="HTTPArgument">
  61814. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61815. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  61816. <stringProp name="Argument.metadata">=</stringProp>
  61817. </elementProp>
  61818. </collectionProp>
  61819. </elementProp>
  61820. <stringProp name="HTTPSampler.domain"/>
  61821. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61822. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61823. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61824. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61825. <stringProp name="HTTPSampler.contentEncoding"/>
  61826. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61827. <stringProp name="HTTPSampler.method">POST</stringProp>
  61828. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61829. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61830. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61831. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61832. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61833. <stringProp name="HTTPSampler.embedded_url_re"/>
  61834. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  61835. </HTTPSamplerProxy>
  61836. <hashTree>
  61837. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  61838. <collectionProp name="Asserion.test_strings">
  61839. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  61840. </collectionProp>
  61841. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  61842. <boolProp name="Assertion.assume_success">false</boolProp>
  61843. <intProp name="Assertion.test_type">2</intProp>
  61844. </ResponseAssertion>
  61845. <hashTree/>
  61846. </hashTree>
  61847. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Comparison Add" enabled="true">
  61848. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61849. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61850. <collectionProp name="Arguments.arguments">
  61851. <elementProp name="" elementType="HTTPArgument">
  61852. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61853. <stringProp name="Argument.value">{"query":"mutation{ \n addProductsToCompareList(input: { uid: \"${compare_list_id}\", products: [${product_id}]}) { \n uid \n item_count \n attributes{code label} \n items { \n product { \n sku \n } \n } \n } \n }","variables":null,"operationName":null}</stringProp>
  61854. <stringProp name="Argument.metadata">=</stringProp>
  61855. </elementProp>
  61856. </collectionProp>
  61857. </elementProp>
  61858. <stringProp name="HTTPSampler.domain"/>
  61859. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61860. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61861. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61862. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61863. <stringProp name="HTTPSampler.contentEncoding"/>
  61864. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61865. <stringProp name="HTTPSampler.method">POST</stringProp>
  61866. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61867. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61868. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61869. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61870. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61871. <stringProp name="HTTPSampler.embedded_url_re"/>
  61872. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/product_compare_add.jmx</stringProp>
  61873. </HTTPSamplerProxy>
  61874. <hashTree>
  61875. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61876. <stringProp name="JSON_PATH">$.data.addProductsToCompareList.item_count</stringProp>
  61877. <stringProp name="EXPECTED_VALUE"/>
  61878. <boolProp name="JSONVALIDATION">false</boolProp>
  61879. <boolProp name="EXPECT_NULL">false</boolProp>
  61880. <boolProp name="INVERT">false</boolProp>
  61881. <boolProp name="ISREGEX">false</boolProp>
  61882. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61883. <hashTree/>
  61884. </hashTree>
  61885. </hashTree>
  61886. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Compare Products" enabled="true">
  61887. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61888. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61889. <collectionProp name="Arguments.arguments">
  61890. <elementProp name="" elementType="HTTPArgument">
  61891. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61892. <stringProp name="Argument.value">{"query" :"{\n compareList(uid: \"${compare_list_id}\") { \n uid \n items { \n product { \n sku \n } \n } \n } \n}"}</stringProp>
  61893. <stringProp name="Argument.metadata">=</stringProp>
  61894. </elementProp>
  61895. </collectionProp>
  61896. </elementProp>
  61897. <stringProp name="HTTPSampler.domain"/>
  61898. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61899. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61900. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61901. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61902. <stringProp name="HTTPSampler.contentEncoding"/>
  61903. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61904. <stringProp name="HTTPSampler.method">POST</stringProp>
  61905. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61906. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61907. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61908. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61909. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61910. <stringProp name="HTTPSampler.embedded_url_re"/>
  61911. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/compare_products.jmx</stringProp>
  61912. </HTTPSamplerProxy>
  61913. <hashTree>
  61914. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61915. <stringProp name="JSON_PATH">$.data.compareList.items</stringProp>
  61916. <stringProp name="EXPECTED_VALUE"/>
  61917. <boolProp name="JSONVALIDATION">false</boolProp>
  61918. <boolProp name="EXPECT_NULL">false</boolProp>
  61919. <boolProp name="INVERT">false</boolProp>
  61920. <boolProp name="ISREGEX">false</boolProp>
  61921. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61922. <hashTree/>
  61923. </hashTree>
  61924. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Compare Products Clear" enabled="true">
  61925. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  61926. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  61927. <collectionProp name="Arguments.arguments">
  61928. <elementProp name="" elementType="HTTPArgument">
  61929. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  61930. <stringProp name="Argument.value">{"query":"mutation {\n deleteCompareList(uid: \"${compare_list_id}\") \n { \n result \n } \n}","variables":null,"operationName":null}</stringProp>
  61931. <stringProp name="Argument.metadata">=</stringProp>
  61932. </elementProp>
  61933. </collectionProp>
  61934. </elementProp>
  61935. <stringProp name="HTTPSampler.domain"/>
  61936. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  61937. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  61938. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  61939. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  61940. <stringProp name="HTTPSampler.contentEncoding"/>
  61941. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  61942. <stringProp name="HTTPSampler.method">POST</stringProp>
  61943. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  61944. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  61945. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  61946. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  61947. <boolProp name="HTTPSampler.monitor">false</boolProp>
  61948. <stringProp name="HTTPSampler.embedded_url_re"/>
  61949. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/compare_products_clear.jmx</stringProp>
  61950. </HTTPSamplerProxy>
  61951. <hashTree>
  61952. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  61953. <stringProp name="JSON_PATH">$.data.deleteCompareList.result</stringProp>
  61954. <stringProp name="EXPECTED_VALUE">true</stringProp>
  61955. <boolProp name="JSONVALIDATION">true</boolProp>
  61956. <boolProp name="EXPECT_NULL">false</boolProp>
  61957. <boolProp name="INVERT">false</boolProp>
  61958. <boolProp name="ISREGEX">false</boolProp>
  61959. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  61960. <hashTree/>
  61961. </hashTree>
  61962. </hashTree>
  61963. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Checkout By Guest" enabled="true">
  61964. <intProp name="ThroughputController.style">1</intProp>
  61965. <boolProp name="ThroughputController.perThread">false</boolProp>
  61966. <intProp name="ThroughputController.maxThroughput">1</intProp>
  61967. <stringProp name="ThroughputController.percentThroughput">${cCheckoutByGuestPercentage}</stringProp>
  61968. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  61969. <hashTree>
  61970. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  61971. <stringProp name="script">
  61972. var tmpLabel = vars.get("testLabel")
  61973. if (tmpLabel) {
  61974. var testLabel = " (" + tmpLabel + ")"
  61975. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  61976. if (sampler.getName().indexOf(testLabel) == -1) {
  61977. sampler.setName(sampler.getName() + testLabel);
  61978. }
  61979. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  61980. sampler.setName("SetUp - " + sampler.getName());
  61981. }
  61982. } else {
  61983. testLabel = ""
  61984. }
  61985. </stringProp>
  61986. <stringProp name="scriptLanguage">javascript</stringProp>
  61987. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  61988. <hashTree/>
  61989. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  61990. <stringProp name="BeanShellSampler.query">
  61991. vars.put("testLabel", "[GraphQL C] Checkout By Guest");
  61992. </stringProp>
  61993. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  61994. </BeanShellSampler>
  61995. <hashTree/>
  61996. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  61997. <collectionProp name="HeaderManager.headers">
  61998. <elementProp name="" elementType="Header">
  61999. <stringProp name="Header.name">Content-Type</stringProp>
  62000. <stringProp name="Header.value">application/json</stringProp>
  62001. </elementProp>
  62002. <elementProp name="" elementType="Header">
  62003. <stringProp name="Header.name">Accept</stringProp>
  62004. <stringProp name="Header.value">*/*</stringProp>
  62005. </elementProp>
  62006. </collectionProp>
  62007. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  62008. <hashTree/>
  62009. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  62010. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  62011. <stringProp name="BeanShellSampler.query">
  62012. import java.util.Random;
  62013. Random random = new Random();
  62014. if (${seedForRandom} &gt; 0) {
  62015. random.setSeed(${seedForRandom} + ${__threadNum});
  62016. }
  62017. vars.putObject("randomIntGenerator", random);
  62018. </stringProp>
  62019. <stringProp name="BeanShellSampler.filename"/>
  62020. <stringProp name="BeanShellSampler.parameters"/>
  62021. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  62022. </BeanShellSampler>
  62023. <hashTree/>
  62024. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  62025. <stringProp name="scriptLanguage">javascript</stringProp>
  62026. <stringProp name="parameters"/>
  62027. <stringProp name="filename"/>
  62028. <stringProp name="cacheKey"/>
  62029. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  62030. var categories = props.get("categories");
  62031. number = random.nextInt(categories.length);
  62032. vars.put("category_url_key", categories[number].url_key);
  62033. vars.put("category_name", categories[number].name);
  62034. vars.put("category_id", categories[number].id);
  62035. vars.putObject("category", categories[number]);
  62036. </stringProp>
  62037. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  62038. <hashTree/>
  62039. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  62040. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62041. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62042. <collectionProp name="Arguments.arguments">
  62043. <elementProp name="" elementType="HTTPArgument">
  62044. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62045. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  62046. <stringProp name="Argument.metadata">=</stringProp>
  62047. </elementProp>
  62048. </collectionProp>
  62049. </elementProp>
  62050. <stringProp name="HTTPSampler.domain"/>
  62051. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62052. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62053. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62054. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62055. <stringProp name="HTTPSampler.contentEncoding"/>
  62056. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62057. <stringProp name="HTTPSampler.method">POST</stringProp>
  62058. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62059. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62060. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62061. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62062. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62063. <stringProp name="HTTPSampler.embedded_url_re"/>
  62064. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  62065. </HTTPSamplerProxy>
  62066. <hashTree>
  62067. <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">
  62068. <stringProp name="VAR">quote_id</stringProp>
  62069. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  62070. <stringProp name="DEFAULT"/>
  62071. <stringProp name="VARIABLE"/>
  62072. <stringProp name="SUBJECT">BODY</stringProp>
  62073. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  62074. <hashTree/>
  62075. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62076. <collectionProp name="Asserion.test_strings">
  62077. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  62078. </collectionProp>
  62079. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62080. <boolProp name="Assertion.assume_success">false</boolProp>
  62081. <intProp name="Assertion.test_type">2</intProp>
  62082. </ResponseAssertion>
  62083. <hashTree/>
  62084. </hashTree>
  62085. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  62086. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62087. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62088. <collectionProp name="Arguments.arguments">
  62089. <elementProp name="" elementType="HTTPArgument">
  62090. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62091. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62092. <stringProp name="Argument.metadata">=</stringProp>
  62093. </elementProp>
  62094. </collectionProp>
  62095. </elementProp>
  62096. <stringProp name="HTTPSampler.domain"/>
  62097. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62098. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62099. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62100. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62101. <stringProp name="HTTPSampler.contentEncoding"/>
  62102. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62103. <stringProp name="HTTPSampler.method">POST</stringProp>
  62104. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62105. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62106. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62107. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62108. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62109. <stringProp name="HTTPSampler.embedded_url_re"/>
  62110. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  62111. </HTTPSamplerProxy>
  62112. <hashTree>
  62113. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62114. <collectionProp name="Asserion.test_strings">
  62115. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  62116. </collectionProp>
  62117. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62118. <boolProp name="Assertion.assume_success">false</boolProp>
  62119. <intProp name="Assertion.test_type">8</intProp>
  62120. </ResponseAssertion>
  62121. <hashTree/>
  62122. </hashTree>
  62123. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  62124. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62125. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62126. <collectionProp name="Arguments.arguments">
  62127. <elementProp name="" elementType="HTTPArgument">
  62128. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62129. <stringProp name="Argument.value">
  62130. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  62131. </stringProp>
  62132. <stringProp name="Argument.metadata">=</stringProp>
  62133. </elementProp>
  62134. </collectionProp>
  62135. </elementProp>
  62136. <stringProp name="HTTPSampler.domain"/>
  62137. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62138. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62139. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62140. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62141. <stringProp name="HTTPSampler.contentEncoding"/>
  62142. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62143. <stringProp name="HTTPSampler.method">POST</stringProp>
  62144. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62145. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62146. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62147. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62148. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62149. <stringProp name="HTTPSampler.embedded_url_re"/>
  62150. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  62151. </HTTPSamplerProxy>
  62152. <hashTree>
  62153. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  62154. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  62155. <stringProp name="EXPECTED_VALUE"/>
  62156. <boolProp name="JSONVALIDATION">false</boolProp>
  62157. <boolProp name="EXPECT_NULL">false</boolProp>
  62158. <boolProp name="INVERT">false</boolProp>
  62159. <boolProp name="ISREGEX">false</boolProp>
  62160. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  62161. <hashTree/>
  62162. </hashTree>
  62163. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  62164. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62165. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62166. <collectionProp name="Arguments.arguments">
  62167. <elementProp name="" elementType="HTTPArgument">
  62168. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62169. <stringProp name="Argument.value">
  62170. {"query" : "{\n categoryList(filters:{}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"}
  62171. </stringProp>
  62172. <stringProp name="Argument.metadata">=</stringProp>
  62173. </elementProp>
  62174. </collectionProp>
  62175. </elementProp>
  62176. <stringProp name="HTTPSampler.domain"/>
  62177. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62178. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62179. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62180. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62181. <stringProp name="HTTPSampler.contentEncoding"/>
  62182. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62183. <stringProp name="HTTPSampler.method">POST</stringProp>
  62184. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62185. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62186. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62187. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62188. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62189. <stringProp name="HTTPSampler.embedded_url_re"/>
  62190. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_categories.jmx</stringProp>
  62191. </HTTPSamplerProxy>
  62192. <hashTree>
  62193. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  62194. <stringProp name="JSON_PATH">$.data.categoryList</stringProp>
  62195. <stringProp name="EXPECTED_VALUE"/>
  62196. <boolProp name="JSONVALIDATION">false</boolProp>
  62197. <boolProp name="EXPECT_NULL">false</boolProp>
  62198. <boolProp name="INVERT">false</boolProp>
  62199. <boolProp name="ISREGEX">false</boolProp>
  62200. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  62201. <hashTree/>
  62202. </hashTree>
  62203. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  62204. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62205. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62206. <collectionProp name="Arguments.arguments">
  62207. <elementProp name="" elementType="HTTPArgument">
  62208. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62209. <stringProp name="Argument.value">{"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"}</stringProp>
  62210. <stringProp name="Argument.metadata">=</stringProp>
  62211. </elementProp>
  62212. </collectionProp>
  62213. </elementProp>
  62214. <stringProp name="HTTPSampler.domain"/>
  62215. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62216. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62217. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62218. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62219. <stringProp name="HTTPSampler.contentEncoding"/>
  62220. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62221. <stringProp name="HTTPSampler.method">POST</stringProp>
  62222. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62223. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62224. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62225. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62226. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62227. <stringProp name="HTTPSampler.embedded_url_re"/>
  62228. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx</stringProp>
  62229. </HTTPSamplerProxy>
  62230. <hashTree>
  62231. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62232. <collectionProp name="Asserion.test_strings">
  62233. <stringProp name="1201352014">"name":"${category_name}","id":${category_id},</stringProp>
  62234. </collectionProp>
  62235. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62236. <boolProp name="Assertion.assume_success">false</boolProp>
  62237. <intProp name="Assertion.test_type">2</intProp>
  62238. </ResponseAssertion>
  62239. <hashTree/>
  62240. </hashTree>
  62241. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  62242. <boolProp name="LoopController.continue_forever">true</boolProp>
  62243. <stringProp name="LoopController.loops">2</stringProp>
  62244. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  62245. <hashTree>
  62246. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  62247. <stringProp name="CounterConfig.start">1</stringProp>
  62248. <stringProp name="CounterConfig.end"/>
  62249. <stringProp name="CounterConfig.incr">1</stringProp>
  62250. <stringProp name="CounterConfig.name">_counter</stringProp>
  62251. <stringProp name="CounterConfig.format"/>
  62252. <boolProp name="CounterConfig.per_user">true</boolProp>
  62253. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  62254. </CounterConfig>
  62255. <hashTree/>
  62256. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  62257. <stringProp name="BeanShellSampler.query">
  62258. import java.util.Random;
  62259. Random random = vars.getObject("randomIntGenerator");
  62260. number = random.nextInt(props.get("simple_products_list").size());
  62261. product = props.get("simple_products_list").get(number);
  62262. vars.put("product_url_key", product.get("url_key"));
  62263. vars.put("product_id", product.get("id"));
  62264. vars.put("product_name", product.get("title"));
  62265. vars.put("product_uenc", product.get("uenc"));
  62266. vars.put("product_sku", product.get("sku"));
  62267. </stringProp>
  62268. <stringProp name="BeanShellSampler.filename"/>
  62269. <stringProp name="BeanShellSampler.parameters"/>
  62270. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  62271. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  62272. <hashTree/>
  62273. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  62274. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62275. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62276. <collectionProp name="Arguments.arguments">
  62277. <elementProp name="" elementType="HTTPArgument">
  62278. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62279. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  62280. <stringProp name="Argument.metadata">=</stringProp>
  62281. </elementProp>
  62282. </collectionProp>
  62283. </elementProp>
  62284. <stringProp name="HTTPSampler.domain"/>
  62285. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62286. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62287. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62288. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62289. <stringProp name="HTTPSampler.contentEncoding"/>
  62290. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62291. <stringProp name="HTTPSampler.method">POST</stringProp>
  62292. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62293. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62294. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62295. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62296. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62297. <stringProp name="HTTPSampler.embedded_url_re"/>
  62298. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  62299. </HTTPSamplerProxy>
  62300. <hashTree>
  62301. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62302. <collectionProp name="Asserion.test_strings">
  62303. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  62304. </collectionProp>
  62305. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62306. <boolProp name="Assertion.assume_success">false</boolProp>
  62307. <intProp name="Assertion.test_type">2</intProp>
  62308. </ResponseAssertion>
  62309. <hashTree/>
  62310. </hashTree>
  62311. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  62312. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62313. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62314. <collectionProp name="Arguments.arguments">
  62315. <elementProp name="" elementType="HTTPArgument">
  62316. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62317. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62318. <stringProp name="Argument.metadata">=</stringProp>
  62319. </elementProp>
  62320. </collectionProp>
  62321. </elementProp>
  62322. <stringProp name="HTTPSampler.domain"/>
  62323. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62324. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62325. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62326. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62327. <stringProp name="HTTPSampler.contentEncoding"/>
  62328. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62329. <stringProp name="HTTPSampler.method">POST</stringProp>
  62330. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62331. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62332. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62333. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62334. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62335. <stringProp name="HTTPSampler.embedded_url_re"/>
  62336. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  62337. </HTTPSamplerProxy>
  62338. <hashTree>
  62339. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62340. <collectionProp name="Asserion.test_strings">
  62341. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  62342. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  62343. </collectionProp>
  62344. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62345. <boolProp name="Assertion.assume_success">false</boolProp>
  62346. <intProp name="Assertion.test_type">2</intProp>
  62347. </ResponseAssertion>
  62348. <hashTree/>
  62349. </hashTree>
  62350. </hashTree>
  62351. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  62352. <boolProp name="LoopController.continue_forever">true</boolProp>
  62353. <stringProp name="LoopController.loops">1</stringProp>
  62354. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  62355. <hashTree>
  62356. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  62357. <stringProp name="CounterConfig.start">1</stringProp>
  62358. <stringProp name="CounterConfig.end"/>
  62359. <stringProp name="CounterConfig.incr">1</stringProp>
  62360. <stringProp name="CounterConfig.name">_counter</stringProp>
  62361. <stringProp name="CounterConfig.format"/>
  62362. <boolProp name="CounterConfig.per_user">true</boolProp>
  62363. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  62364. </CounterConfig>
  62365. <hashTree/>
  62366. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  62367. <stringProp name="BeanShellSampler.query">
  62368. import java.util.Random;
  62369. Random random = vars.getObject("randomIntGenerator");
  62370. number = random.nextInt(props.get("configurable_products_list").size());
  62371. product = props.get("configurable_products_list").get(number);
  62372. vars.put("product_url_key", product.get("url_key"));
  62373. vars.put("product_id", product.get("id"));
  62374. vars.put("product_name", product.get("title"));
  62375. vars.put("product_uenc", product.get("uenc"));
  62376. vars.put("product_sku", product.get("sku"));
  62377. </stringProp>
  62378. <stringProp name="BeanShellSampler.filename"/>
  62379. <stringProp name="BeanShellSampler.parameters"/>
  62380. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  62381. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  62382. <hashTree/>
  62383. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  62384. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62385. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62386. <collectionProp name="Arguments.arguments">
  62387. <elementProp name="" elementType="HTTPArgument">
  62388. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62389. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  62390. <stringProp name="Argument.metadata">=</stringProp>
  62391. </elementProp>
  62392. </collectionProp>
  62393. </elementProp>
  62394. <stringProp name="HTTPSampler.domain"/>
  62395. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62396. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62397. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62398. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62399. <stringProp name="HTTPSampler.contentEncoding"/>
  62400. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62401. <stringProp name="HTTPSampler.method">POST</stringProp>
  62402. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62403. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62404. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62405. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62406. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62407. <stringProp name="HTTPSampler.embedded_url_re"/>
  62408. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  62409. </HTTPSamplerProxy>
  62410. <hashTree>
  62411. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62412. <collectionProp name="Asserion.test_strings">
  62413. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  62414. </collectionProp>
  62415. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62416. <boolProp name="Assertion.assume_success">false</boolProp>
  62417. <intProp name="Assertion.test_type">2</intProp>
  62418. </ResponseAssertion>
  62419. <hashTree/>
  62420. <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 Configurable Product option" enabled="true">
  62421. <stringProp name="VAR">product_option</stringProp>
  62422. <stringProp name="JSONPATH">$.data.productDetail.items[0].variants[0].product.sku</stringProp>
  62423. <stringProp name="DEFAULT"/>
  62424. <stringProp name="VARIABLE"/>
  62425. <stringProp name="SUBJECT">BODY</stringProp>
  62426. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option_from_product_detail.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  62427. <hashTree/>
  62428. </hashTree>
  62429. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  62430. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62431. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62432. <collectionProp name="Arguments.arguments">
  62433. <elementProp name="" elementType="HTTPArgument">
  62434. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62435. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62436. <stringProp name="Argument.metadata">=</stringProp>
  62437. </elementProp>
  62438. </collectionProp>
  62439. </elementProp>
  62440. <stringProp name="HTTPSampler.domain"/>
  62441. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62442. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62443. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62444. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62445. <stringProp name="HTTPSampler.contentEncoding"/>
  62446. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62447. <stringProp name="HTTPSampler.method">POST</stringProp>
  62448. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62449. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62450. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62451. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62452. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62453. <stringProp name="HTTPSampler.embedded_url_re"/>
  62454. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx</stringProp>
  62455. </HTTPSamplerProxy>
  62456. <hashTree>
  62457. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62458. <collectionProp name="Asserion.test_strings">
  62459. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  62460. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  62461. </collectionProp>
  62462. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62463. <boolProp name="Assertion.assume_success">false</boolProp>
  62464. <intProp name="Assertion.test_type">2</intProp>
  62465. </ResponseAssertion>
  62466. <hashTree/>
  62467. </hashTree>
  62468. </hashTree>
  62469. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Email Available" enabled="true">
  62470. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62471. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62472. <collectionProp name="Arguments.arguments">
  62473. <elementProp name="" elementType="HTTPArgument">
  62474. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62475. <stringProp name="Argument.value">{"query":"mutation {\n setGuestEmailOnCart(input: \n {\n cart_id: \"${quote_id}\" \n email: \"test@example.com\" \n }) {\n cart {\n email \n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62476. <stringProp name="Argument.metadata">=</stringProp>
  62477. </elementProp>
  62478. </collectionProp>
  62479. </elementProp>
  62480. <stringProp name="HTTPSampler.domain"/>
  62481. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62482. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62483. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62484. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62485. <stringProp name="HTTPSampler.contentEncoding"/>
  62486. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62487. <stringProp name="HTTPSampler.method">POST</stringProp>
  62488. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62489. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62490. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62491. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62492. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62493. <stringProp name="HTTPSampler.embedded_url_re"/>
  62494. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/checkout_email_available.jmx</stringProp>
  62495. </HTTPSamplerProxy>
  62496. <hashTree>
  62497. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  62498. <stringProp name="JSON_PATH">$.data.setGuestEmailOnCart.cart.email</stringProp>
  62499. <stringProp name="EXPECTED_VALUE"/>
  62500. <boolProp name="JSONVALIDATION">false</boolProp>
  62501. <boolProp name="EXPECT_NULL">false</boolProp>
  62502. <boolProp name="INVERT">false</boolProp>
  62503. <boolProp name="ISREGEX">false</boolProp>
  62504. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  62505. <hashTree/>
  62506. </hashTree>
  62507. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Billing Address On Cart" enabled="true">
  62508. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62509. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62510. <collectionProp name="Arguments.arguments">
  62511. <elementProp name="" elementType="HTTPArgument">
  62512. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62513. <stringProp name="Argument.value">{"query":"mutation {\n setBillingAddressOnCart(\n input: {\n cart_id: \"${quote_id}\"\n billing_address: {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n }\n ) {\n cart {\n billing_address {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62514. <stringProp name="Argument.metadata">=</stringProp>
  62515. </elementProp>
  62516. </collectionProp>
  62517. </elementProp>
  62518. <stringProp name="HTTPSampler.domain"/>
  62519. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62520. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62521. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62522. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62523. <stringProp name="HTTPSampler.contentEncoding"/>
  62524. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62525. <stringProp name="HTTPSampler.method">POST</stringProp>
  62526. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62527. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62528. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62529. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62530. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62531. <stringProp name="HTTPSampler.embedded_url_re"/>
  62532. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_billing_address_on_cart.jmx</stringProp>
  62533. </HTTPSamplerProxy>
  62534. <hashTree>
  62535. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62536. <collectionProp name="Asserion.test_strings">
  62537. <stringProp name="1147076914">{"data":{"setBillingAddressOnCart":{"cart":{"billing_address":{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}}}}}</stringProp>
  62538. </collectionProp>
  62539. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62540. <boolProp name="Assertion.assume_success">false</boolProp>
  62541. <intProp name="Assertion.test_type">8</intProp>
  62542. </ResponseAssertion>
  62543. <hashTree/>
  62544. </hashTree>
  62545. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Address On Cart" enabled="true">
  62546. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62547. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62548. <collectionProp name="Arguments.arguments">
  62549. <elementProp name="" elementType="HTTPArgument">
  62550. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62551. <stringProp name="Argument.value">{"query":"mutation {\n setShippingAddressesOnCart(\n input: {\n cart_id: \"${quote_id}\"\n shipping_addresses: [\n {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n ]\n }\n ) {\n cart {\n shipping_addresses {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62552. <stringProp name="Argument.metadata">=</stringProp>
  62553. </elementProp>
  62554. </collectionProp>
  62555. </elementProp>
  62556. <stringProp name="HTTPSampler.domain"/>
  62557. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62558. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62559. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62560. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62561. <stringProp name="HTTPSampler.contentEncoding"/>
  62562. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62563. <stringProp name="HTTPSampler.method">POST</stringProp>
  62564. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62565. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62566. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62567. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62568. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62569. <stringProp name="HTTPSampler.embedded_url_re"/>
  62570. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_shipping_address_on_cart.jmx</stringProp>
  62571. </HTTPSamplerProxy>
  62572. <hashTree>
  62573. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62574. <collectionProp name="Asserion.test_strings">
  62575. <stringProp name="-1671866339">{"data":{"setShippingAddressesOnCart":{"cart":{"shipping_addresses":[{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}]}}}}</stringProp>
  62576. </collectionProp>
  62577. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62578. <boolProp name="Assertion.assume_success">false</boolProp>
  62579. <intProp name="Assertion.test_type">8</intProp>
  62580. </ResponseAssertion>
  62581. <hashTree/>
  62582. </hashTree>
  62583. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Payment Method On Cart" enabled="true">
  62584. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62585. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62586. <collectionProp name="Arguments.arguments">
  62587. <elementProp name="" elementType="HTTPArgument">
  62588. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62589. <stringProp name="Argument.value">{"query":"mutation {\n setPaymentMethodOnCart(input: {\n cart_id: \"${quote_id}\", \n payment_method: {\n code: \"checkmo\"\n }\n }) {\n cart {\n selected_payment_method {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62590. <stringProp name="Argument.metadata">=</stringProp>
  62591. </elementProp>
  62592. </collectionProp>
  62593. </elementProp>
  62594. <stringProp name="HTTPSampler.domain"/>
  62595. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62596. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62597. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62598. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62599. <stringProp name="HTTPSampler.contentEncoding"/>
  62600. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62601. <stringProp name="HTTPSampler.method">POST</stringProp>
  62602. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62603. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62604. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62605. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62606. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62607. <stringProp name="HTTPSampler.embedded_url_re"/>
  62608. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_payment_method_on_cart.jmx</stringProp>
  62609. </HTTPSamplerProxy>
  62610. <hashTree>
  62611. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62612. <collectionProp name="Asserion.test_strings">
  62613. <stringProp name="-1830199373">{"data":{"setPaymentMethodOnCart":{"cart":{"selected_payment_method":{"code":"checkmo"}}}}}</stringProp>
  62614. </collectionProp>
  62615. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62616. <boolProp name="Assertion.assume_success">false</boolProp>
  62617. <intProp name="Assertion.test_type">8</intProp>
  62618. </ResponseAssertion>
  62619. <hashTree/>
  62620. </hashTree>
  62621. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Current Shipping Address" enabled="true">
  62622. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62623. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62624. <collectionProp name="Arguments.arguments">
  62625. <elementProp name="" elementType="HTTPArgument">
  62626. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62627. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n shipping_addresses {\n postcode\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62628. <stringProp name="Argument.metadata">=</stringProp>
  62629. </elementProp>
  62630. </collectionProp>
  62631. </elementProp>
  62632. <stringProp name="HTTPSampler.domain"/>
  62633. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62634. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62635. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62636. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62637. <stringProp name="HTTPSampler.contentEncoding"/>
  62638. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62639. <stringProp name="HTTPSampler.method">POST</stringProp>
  62640. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62641. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62642. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62643. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62644. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62645. <stringProp name="HTTPSampler.embedded_url_re"/>
  62646. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_current_shipping_address.jmx</stringProp>
  62647. </HTTPSamplerProxy>
  62648. <hashTree/>
  62649. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Method On Cart" enabled="true">
  62650. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62651. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62652. <collectionProp name="Arguments.arguments">
  62653. <elementProp name="" elementType="HTTPArgument">
  62654. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62655. <stringProp name="Argument.value">{"query":"mutation {\n setShippingMethodsOnCart(input: \n {\n cart_id: \"${quote_id}\", \n shipping_methods: [{\n carrier_code: \"flatrate\"\n method_code: \"flatrate\"\n }]\n }) {\n cart {\n shipping_addresses {\n selected_shipping_method {\n carrier_code\n method_code\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62656. <stringProp name="Argument.metadata">=</stringProp>
  62657. </elementProp>
  62658. </collectionProp>
  62659. </elementProp>
  62660. <stringProp name="HTTPSampler.domain"/>
  62661. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62662. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62663. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62664. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62665. <stringProp name="HTTPSampler.contentEncoding"/>
  62666. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62667. <stringProp name="HTTPSampler.method">POST</stringProp>
  62668. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62669. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62670. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62671. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62672. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62673. <stringProp name="HTTPSampler.embedded_url_re"/>
  62674. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_shipping_method_on_cart.jmx</stringProp>
  62675. </HTTPSamplerProxy>
  62676. <hashTree>
  62677. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62678. <collectionProp name="Asserion.test_strings">
  62679. <stringProp name="644143859">{"data":{"setShippingMethodsOnCart":{"cart":{"shipping_addresses":[{"selected_shipping_method":{"carrier_code":"flatrate","method_code":"flatrate"}}]}}}}</stringProp>
  62680. </collectionProp>
  62681. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62682. <boolProp name="Assertion.assume_success">false</boolProp>
  62683. <intProp name="Assertion.test_type">8</intProp>
  62684. </ResponseAssertion>
  62685. <hashTree/>
  62686. </hashTree>
  62687. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Place Order" enabled="true">
  62688. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62689. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62690. <collectionProp name="Arguments.arguments">
  62691. <elementProp name="" elementType="HTTPArgument">
  62692. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62693. <stringProp name="Argument.value">{"query":"mutation {\n placeOrder(input: \n {\n cart_id: \"${quote_id}\" \n }) {\n order {\n order_number \n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62694. <stringProp name="Argument.metadata">=</stringProp>
  62695. </elementProp>
  62696. </collectionProp>
  62697. </elementProp>
  62698. <stringProp name="HTTPSampler.domain"/>
  62699. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62700. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62701. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62702. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62703. <stringProp name="HTTPSampler.contentEncoding"/>
  62704. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62705. <stringProp name="HTTPSampler.method">POST</stringProp>
  62706. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62707. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62708. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62709. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62710. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62711. <stringProp name="HTTPSampler.embedded_url_re"/>
  62712. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/place_order.jmx</stringProp>
  62713. </HTTPSamplerProxy>
  62714. <hashTree>
  62715. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  62716. <stringProp name="JSON_PATH">$.data.placeOrder.order.order_number</stringProp>
  62717. <stringProp name="EXPECTED_VALUE"/>
  62718. <boolProp name="JSONVALIDATION">false</boolProp>
  62719. <boolProp name="EXPECT_NULL">false</boolProp>
  62720. <boolProp name="INVERT">false</boolProp>
  62721. <boolProp name="ISREGEX">false</boolProp>
  62722. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  62723. <hashTree/>
  62724. </hashTree>
  62725. </hashTree>
  62726. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Checkout By Customer" enabled="true">
  62727. <intProp name="ThroughputController.style">1</intProp>
  62728. <boolProp name="ThroughputController.perThread">false</boolProp>
  62729. <intProp name="ThroughputController.maxThroughput">1</intProp>
  62730. <stringProp name="ThroughputController.percentThroughput">${cCheckoutByCustomerPercentage}</stringProp>
  62731. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  62732. <hashTree>
  62733. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  62734. <stringProp name="script">
  62735. var tmpLabel = vars.get("testLabel")
  62736. if (tmpLabel) {
  62737. var testLabel = " (" + tmpLabel + ")"
  62738. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  62739. if (sampler.getName().indexOf(testLabel) == -1) {
  62740. sampler.setName(sampler.getName() + testLabel);
  62741. }
  62742. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  62743. sampler.setName("SetUp - " + sampler.getName());
  62744. }
  62745. } else {
  62746. testLabel = ""
  62747. }
  62748. </stringProp>
  62749. <stringProp name="scriptLanguage">javascript</stringProp>
  62750. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  62751. <hashTree/>
  62752. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  62753. <stringProp name="BeanShellSampler.query">
  62754. vars.put("testLabel", "[GraphQL C] Checkout By Customer");
  62755. </stringProp>
  62756. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  62757. </BeanShellSampler>
  62758. <hashTree/>
  62759. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  62760. <collectionProp name="HeaderManager.headers">
  62761. <elementProp name="" elementType="Header">
  62762. <stringProp name="Header.name">Content-Type</stringProp>
  62763. <stringProp name="Header.value">application/json</stringProp>
  62764. </elementProp>
  62765. <elementProp name="" elementType="Header">
  62766. <stringProp name="Header.name">Accept</stringProp>
  62767. <stringProp name="Header.value">*/*</stringProp>
  62768. </elementProp>
  62769. </collectionProp>
  62770. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  62771. <hashTree/>
  62772. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  62773. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  62774. <stringProp name="BeanShellSampler.query">
  62775. import java.util.Random;
  62776. Random random = new Random();
  62777. if (${seedForRandom} &gt; 0) {
  62778. random.setSeed(${seedForRandom} + ${__threadNum});
  62779. }
  62780. vars.putObject("randomIntGenerator", random);
  62781. </stringProp>
  62782. <stringProp name="BeanShellSampler.filename"/>
  62783. <stringProp name="BeanShellSampler.parameters"/>
  62784. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  62785. </BeanShellSampler>
  62786. <hashTree/>
  62787. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  62788. <stringProp name="scriptLanguage">javascript</stringProp>
  62789. <stringProp name="parameters"/>
  62790. <stringProp name="filename"/>
  62791. <stringProp name="cacheKey"/>
  62792. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  62793. var categories = props.get("categories");
  62794. number = random.nextInt(categories.length);
  62795. vars.put("category_url_key", categories[number].url_key);
  62796. vars.put("category_name", categories[number].name);
  62797. vars.put("category_id", categories[number].id);
  62798. vars.putObject("category", categories[number]);
  62799. </stringProp>
  62800. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  62801. <hashTree/>
  62802. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  62803. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  62804. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  62805. <hashTree>
  62806. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  62807. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  62808. <stringProp name="BeanShellSampler.query">
  62809. customerUserList = props.get("customer_emails_list");
  62810. customerUser = customerUserList.poll();
  62811. if (customerUser == null) {
  62812. SampleResult.setResponseMessage("customerUser list is empty");
  62813. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  62814. IsSuccess=false;
  62815. SampleResult.setSuccessful(false);
  62816. SampleResult.setStopThread(true);
  62817. }
  62818. vars.put("customer_email", customerUser);
  62819. </stringProp>
  62820. <stringProp name="BeanShellSampler.filename"/>
  62821. <stringProp name="BeanShellSampler.parameters"/>
  62822. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  62823. </BeanShellSampler>
  62824. <hashTree/>
  62825. </hashTree>
  62826. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  62827. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62828. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62829. <collectionProp name="Arguments.arguments">
  62830. <elementProp name="" elementType="HTTPArgument">
  62831. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62832. <stringProp name="Argument.value">{"query":"mutation {\n generateCustomerToken(\n email: \"${customer_email}\" \n password: \"${customer_password}\" \n ) {\n token \n }\n}","variables":null,"operationName":null}</stringProp>
  62833. <stringProp name="Argument.metadata">=</stringProp>
  62834. </elementProp>
  62835. </collectionProp>
  62836. </elementProp>
  62837. <stringProp name="HTTPSampler.domain"/>
  62838. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62839. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62840. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62841. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62842. <stringProp name="HTTPSampler.contentEncoding"/>
  62843. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62844. <stringProp name="HTTPSampler.method">POST</stringProp>
  62845. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62846. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62847. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62848. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62849. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62850. <stringProp name="HTTPSampler.embedded_url_re"/>
  62851. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/login.jmx</stringProp>
  62852. </HTTPSamplerProxy>
  62853. <hashTree>
  62854. <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 item id" enabled="true">
  62855. <stringProp name="VAR">customer_token</stringProp>
  62856. <stringProp name="JSONPATH">$.data.generateCustomerToken.token</stringProp>
  62857. <stringProp name="DEFAULT"/>
  62858. <stringProp name="VARIABLE"/>
  62859. <stringProp name="SUBJECT">BODY</stringProp>
  62860. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  62861. <hashTree/>
  62862. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  62863. <stringProp name="JSON_PATH">$.data.generateCustomerToken.token</stringProp>
  62864. <stringProp name="EXPECTED_VALUE"/>
  62865. <boolProp name="JSONVALIDATION">false</boolProp>
  62866. <boolProp name="EXPECT_NULL">false</boolProp>
  62867. <boolProp name="INVERT">false</boolProp>
  62868. <boolProp name="ISREGEX">false</boolProp>
  62869. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  62870. <hashTree/>
  62871. </hashTree>
  62872. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Empty Cart" enabled="true">
  62873. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62874. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62875. <collectionProp name="Arguments.arguments">
  62876. <elementProp name="" elementType="HTTPArgument">
  62877. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62878. <stringProp name="Argument.value">{"query":"mutation {\n createEmptyCart\n}","variables":null,"operationName":null}</stringProp>
  62879. <stringProp name="Argument.metadata">=</stringProp>
  62880. </elementProp>
  62881. </collectionProp>
  62882. </elementProp>
  62883. <stringProp name="HTTPSampler.domain"/>
  62884. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62885. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62886. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62887. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62888. <stringProp name="HTTPSampler.contentEncoding"/>
  62889. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62890. <stringProp name="HTTPSampler.method">POST</stringProp>
  62891. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62892. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62893. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62894. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62895. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62896. <stringProp name="HTTPSampler.embedded_url_re"/>
  62897. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/create_empty_cart.jmx</stringProp>
  62898. </HTTPSamplerProxy>
  62899. <hashTree>
  62900. <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">
  62901. <stringProp name="VAR">quote_id</stringProp>
  62902. <stringProp name="JSONPATH">$.data.createEmptyCart</stringProp>
  62903. <stringProp name="DEFAULT"/>
  62904. <stringProp name="VARIABLE"/>
  62905. <stringProp name="SUBJECT">BODY</stringProp>
  62906. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  62907. <hashTree/>
  62908. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62909. <collectionProp name="Asserion.test_strings">
  62910. <stringProp name="1404608713">{"data":{"createEmptyCart":"</stringProp>
  62911. </collectionProp>
  62912. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62913. <boolProp name="Assertion.assume_success">false</boolProp>
  62914. <intProp name="Assertion.test_type">2</intProp>
  62915. </ResponseAssertion>
  62916. <hashTree/>
  62917. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  62918. <boolProp name="resetInterpreter">false</boolProp>
  62919. <stringProp name="parameters"/>
  62920. <stringProp name="filename"/>
  62921. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  62922. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  62923. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  62924. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  62925. </hashTree>
  62926. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Empty Cart" enabled="true">
  62927. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62928. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62929. <collectionProp name="Arguments.arguments">
  62930. <elementProp name="" elementType="HTTPArgument">
  62931. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62932. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n items {\n id\n quantity\n product {\n sku\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  62933. <stringProp name="Argument.metadata">=</stringProp>
  62934. </elementProp>
  62935. </collectionProp>
  62936. </elementProp>
  62937. <stringProp name="HTTPSampler.domain"/>
  62938. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62939. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62940. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62941. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62942. <stringProp name="HTTPSampler.contentEncoding"/>
  62943. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62944. <stringProp name="HTTPSampler.method">POST</stringProp>
  62945. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62946. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62947. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62948. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62949. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62950. <stringProp name="HTTPSampler.embedded_url_re"/>
  62951. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_empty_cart.jmx</stringProp>
  62952. </HTTPSamplerProxy>
  62953. <hashTree>
  62954. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  62955. <collectionProp name="Asserion.test_strings">
  62956. <stringProp name="1901638450">{"data":{"cart":{"items":[]}}}</stringProp>
  62957. </collectionProp>
  62958. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  62959. <boolProp name="Assertion.assume_success">false</boolProp>
  62960. <intProp name="Assertion.test_type">8</intProp>
  62961. </ResponseAssertion>
  62962. <hashTree/>
  62963. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  62964. <boolProp name="resetInterpreter">false</boolProp>
  62965. <stringProp name="parameters"/>
  62966. <stringProp name="filename"/>
  62967. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  62968. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  62969. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  62970. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  62971. </hashTree>
  62972. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  62973. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  62974. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  62975. <collectionProp name="Arguments.arguments">
  62976. <elementProp name="" elementType="HTTPArgument">
  62977. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  62978. <stringProp name="Argument.value">
  62979. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  62980. </stringProp>
  62981. <stringProp name="Argument.metadata">=</stringProp>
  62982. </elementProp>
  62983. </collectionProp>
  62984. </elementProp>
  62985. <stringProp name="HTTPSampler.domain"/>
  62986. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  62987. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  62988. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  62989. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  62990. <stringProp name="HTTPSampler.contentEncoding"/>
  62991. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  62992. <stringProp name="HTTPSampler.method">POST</stringProp>
  62993. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  62994. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  62995. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  62996. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  62997. <boolProp name="HTTPSampler.monitor">false</boolProp>
  62998. <stringProp name="HTTPSampler.embedded_url_re"/>
  62999. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  63000. </HTTPSamplerProxy>
  63001. <hashTree>
  63002. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63003. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  63004. <stringProp name="EXPECTED_VALUE"/>
  63005. <boolProp name="JSONVALIDATION">false</boolProp>
  63006. <boolProp name="EXPECT_NULL">false</boolProp>
  63007. <boolProp name="INVERT">false</boolProp>
  63008. <boolProp name="ISREGEX">false</boolProp>
  63009. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63010. <hashTree/>
  63011. </hashTree>
  63012. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  63013. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63014. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63015. <collectionProp name="Arguments.arguments">
  63016. <elementProp name="" elementType="HTTPArgument">
  63017. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63018. <stringProp name="Argument.value">
  63019. {"query" : "{\n categoryList(filters:{}) {\n id\n children {\n id\n name\n url_key\n url_path\n children_count\n path\n image\n productImagePreview: products(pageSize: 1, sort: {name: ASC}) {\n items {\n small_image {\n label\n url\n }\n }\n }\n }\n }\n}"}
  63020. </stringProp>
  63021. <stringProp name="Argument.metadata">=</stringProp>
  63022. </elementProp>
  63023. </collectionProp>
  63024. </elementProp>
  63025. <stringProp name="HTTPSampler.domain"/>
  63026. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63027. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63028. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63029. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63030. <stringProp name="HTTPSampler.contentEncoding"/>
  63031. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63032. <stringProp name="HTTPSampler.method">POST</stringProp>
  63033. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63034. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63035. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63036. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63037. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63038. <stringProp name="HTTPSampler.embedded_url_re"/>
  63039. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_categories.jmx</stringProp>
  63040. </HTTPSamplerProxy>
  63041. <hashTree>
  63042. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63043. <stringProp name="JSON_PATH">$.data.categoryList</stringProp>
  63044. <stringProp name="EXPECTED_VALUE"/>
  63045. <boolProp name="JSONVALIDATION">false</boolProp>
  63046. <boolProp name="EXPECT_NULL">false</boolProp>
  63047. <boolProp name="INVERT">false</boolProp>
  63048. <boolProp name="ISREGEX">false</boolProp>
  63049. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63050. <hashTree/>
  63051. </hashTree>
  63052. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  63053. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63054. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63055. <collectionProp name="Arguments.arguments">
  63056. <elementProp name="" elementType="HTTPArgument">
  63057. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63058. <stringProp name="Argument.value">{"query":"query category($id: Int!, $currentPage: Int, $pageSize: Int) {\n category(id: $id) {\n product_count\n description\n url_key\n name\n id\n breadcrumbs {\n category_name\n category_url_key\n __typename\n }\n products(pageSize: $pageSize, currentPage: $currentPage, sort: {name: ASC}) {\n total_count\n items {\n id\n name\n # small_image\n # short_description\n url_key\n special_price\n special_from_date\n special_to_date\n price {\n regularPrice {\n amount {\n value\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n","variables":{"id":${category_id},"currentPage":1,"pageSize":12},"operationName":"category"}</stringProp>
  63059. <stringProp name="Argument.metadata">=</stringProp>
  63060. </elementProp>
  63061. </collectionProp>
  63062. </elementProp>
  63063. <stringProp name="HTTPSampler.domain"/>
  63064. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63065. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63066. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63067. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63068. <stringProp name="HTTPSampler.contentEncoding"/>
  63069. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63070. <stringProp name="HTTPSampler.method">POST</stringProp>
  63071. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63072. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63073. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63074. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63075. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63076. <stringProp name="HTTPSampler.embedded_url_re"/>
  63077. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_list_of_products_by_category_id.jmx</stringProp>
  63078. </HTTPSamplerProxy>
  63079. <hashTree>
  63080. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63081. <collectionProp name="Asserion.test_strings">
  63082. <stringProp name="1201352014">"name":"${category_name}","id":${category_id},</stringProp>
  63083. </collectionProp>
  63084. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63085. <boolProp name="Assertion.assume_success">false</boolProp>
  63086. <intProp name="Assertion.test_type">2</intProp>
  63087. </ResponseAssertion>
  63088. <hashTree/>
  63089. </hashTree>
  63090. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  63091. <boolProp name="LoopController.continue_forever">true</boolProp>
  63092. <stringProp name="LoopController.loops">2</stringProp>
  63093. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  63094. <hashTree>
  63095. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  63096. <stringProp name="CounterConfig.start">1</stringProp>
  63097. <stringProp name="CounterConfig.end"/>
  63098. <stringProp name="CounterConfig.incr">1</stringProp>
  63099. <stringProp name="CounterConfig.name">_counter</stringProp>
  63100. <stringProp name="CounterConfig.format"/>
  63101. <boolProp name="CounterConfig.per_user">true</boolProp>
  63102. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  63103. </CounterConfig>
  63104. <hashTree/>
  63105. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  63106. <stringProp name="BeanShellSampler.query">
  63107. import java.util.Random;
  63108. Random random = vars.getObject("randomIntGenerator");
  63109. number = random.nextInt(props.get("simple_products_list").size());
  63110. product = props.get("simple_products_list").get(number);
  63111. vars.put("product_url_key", product.get("url_key"));
  63112. vars.put("product_id", product.get("id"));
  63113. vars.put("product_name", product.get("title"));
  63114. vars.put("product_uenc", product.get("uenc"));
  63115. vars.put("product_sku", product.get("sku"));
  63116. </stringProp>
  63117. <stringProp name="BeanShellSampler.filename"/>
  63118. <stringProp name="BeanShellSampler.parameters"/>
  63119. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  63120. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  63121. <hashTree/>
  63122. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  63123. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63124. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63125. <collectionProp name="Arguments.arguments">
  63126. <elementProp name="" elementType="HTTPArgument">
  63127. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63128. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  63129. <stringProp name="Argument.metadata">=</stringProp>
  63130. </elementProp>
  63131. </collectionProp>
  63132. </elementProp>
  63133. <stringProp name="HTTPSampler.domain"/>
  63134. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63135. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63136. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63137. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63138. <stringProp name="HTTPSampler.contentEncoding"/>
  63139. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63140. <stringProp name="HTTPSampler.method">POST</stringProp>
  63141. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63142. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63143. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63144. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63145. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63146. <stringProp name="HTTPSampler.embedded_url_re"/>
  63147. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_simple_product_details_by_product_url_key.jmx</stringProp>
  63148. </HTTPSamplerProxy>
  63149. <hashTree>
  63150. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63151. <collectionProp name="Asserion.test_strings">
  63152. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  63153. </collectionProp>
  63154. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63155. <boolProp name="Assertion.assume_success">false</boolProp>
  63156. <intProp name="Assertion.test_type">2</intProp>
  63157. </ResponseAssertion>
  63158. <hashTree/>
  63159. </hashTree>
  63160. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  63161. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63162. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63163. <collectionProp name="Arguments.arguments">
  63164. <elementProp name="" elementType="HTTPArgument">
  63165. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63166. <stringProp name="Argument.value">{"query":"mutation { \n addSimpleProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n data: {\n quantity: 2\n sku: \"${product_sku}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n quantity\n product {\n sku\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63167. <stringProp name="Argument.metadata">=</stringProp>
  63168. </elementProp>
  63169. </collectionProp>
  63170. </elementProp>
  63171. <stringProp name="HTTPSampler.domain"/>
  63172. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63173. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63174. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63175. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63176. <stringProp name="HTTPSampler.contentEncoding"/>
  63177. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63178. <stringProp name="HTTPSampler.method">POST</stringProp>
  63179. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63180. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63181. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63182. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63183. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63184. <stringProp name="HTTPSampler.embedded_url_re"/>
  63185. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_simple_product_to_cart.jmx</stringProp>
  63186. </HTTPSamplerProxy>
  63187. <hashTree>
  63188. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63189. <collectionProp name="Asserion.test_strings">
  63190. <stringProp name="1421843282">addSimpleProductsToCart</stringProp>
  63191. <stringProp name="-1173443935">"sku":"${product_sku}"</stringProp>
  63192. </collectionProp>
  63193. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63194. <boolProp name="Assertion.assume_success">false</boolProp>
  63195. <intProp name="Assertion.test_type">2</intProp>
  63196. </ResponseAssertion>
  63197. <hashTree/>
  63198. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63199. <boolProp name="resetInterpreter">false</boolProp>
  63200. <stringProp name="parameters"/>
  63201. <stringProp name="filename"/>
  63202. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63203. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63204. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63205. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63206. </hashTree>
  63207. </hashTree>
  63208. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  63209. <boolProp name="LoopController.continue_forever">true</boolProp>
  63210. <stringProp name="LoopController.loops">1</stringProp>
  63211. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  63212. <hashTree>
  63213. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  63214. <stringProp name="CounterConfig.start">1</stringProp>
  63215. <stringProp name="CounterConfig.end"/>
  63216. <stringProp name="CounterConfig.incr">1</stringProp>
  63217. <stringProp name="CounterConfig.name">_counter</stringProp>
  63218. <stringProp name="CounterConfig.format"/>
  63219. <boolProp name="CounterConfig.per_user">true</boolProp>
  63220. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  63221. </CounterConfig>
  63222. <hashTree/>
  63223. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  63224. <stringProp name="BeanShellSampler.query">
  63225. import java.util.Random;
  63226. Random random = vars.getObject("randomIntGenerator");
  63227. number = random.nextInt(props.get("configurable_products_list").size());
  63228. product = props.get("configurable_products_list").get(number);
  63229. vars.put("product_url_key", product.get("url_key"));
  63230. vars.put("product_id", product.get("id"));
  63231. vars.put("product_name", product.get("title"));
  63232. vars.put("product_uenc", product.get("uenc"));
  63233. vars.put("product_sku", product.get("sku"));
  63234. </stringProp>
  63235. <stringProp name="BeanShellSampler.filename"/>
  63236. <stringProp name="BeanShellSampler.parameters"/>
  63237. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  63238. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  63239. <hashTree/>
  63240. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  63241. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63242. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63243. <collectionProp name="Arguments.arguments">
  63244. <elementProp name="" elementType="HTTPArgument">
  63245. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63246. <stringProp name="Argument.value">{"query":"query productDetail($urlKey: String, $onServer: Boolean!) {\n productDetail: products(filter: { url_key: { eq: $urlKey } }, sort: {name: ASC}) {\n items {\n sku\n name\n price {\n regularPrice {\n amount {\n currency\n value\n }\n }\n }\n description {html}\n media_gallery_entries {\n label\n position\n disabled\n file\n }\n ... on ConfigurableProduct {\n configurable_options {\n attribute_code\n attribute_id\n id\n label\n values {\n default_label\n label\n store_label\n use_default_value\n value_index\n }\n }\n variants {\n product {\n id\n media_gallery_entries {\n disabled\n file\n label\n position\n }\n sku\n stock_status\n }\n }\n }\n meta_title @include(if: $onServer)\n # Yes, Products have `meta_keyword` and\n # everything else has `meta_keywords`.\n meta_keyword @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n }\n}","variables":{"urlKey":"${product_url_key}","onServer":false},"operationName":"productDetail"}</stringProp>
  63247. <stringProp name="Argument.metadata">=</stringProp>
  63248. </elementProp>
  63249. </collectionProp>
  63250. </elementProp>
  63251. <stringProp name="HTTPSampler.domain"/>
  63252. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63253. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63254. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63255. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63256. <stringProp name="HTTPSampler.contentEncoding"/>
  63257. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63258. <stringProp name="HTTPSampler.method">POST</stringProp>
  63259. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63260. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63261. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63262. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63263. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63264. <stringProp name="HTTPSampler.embedded_url_re"/>
  63265. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  63266. </HTTPSamplerProxy>
  63267. <hashTree>
  63268. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63269. <collectionProp name="Asserion.test_strings">
  63270. <stringProp name="1201352014">"sku":"${product_sku}","name":"${product_name}"</stringProp>
  63271. </collectionProp>
  63272. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63273. <boolProp name="Assertion.assume_success">false</boolProp>
  63274. <intProp name="Assertion.test_type">2</intProp>
  63275. </ResponseAssertion>
  63276. <hashTree/>
  63277. <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 Configurable Product option" enabled="true">
  63278. <stringProp name="VAR">product_option</stringProp>
  63279. <stringProp name="JSONPATH">$.data.productDetail.items[0].variants[0].product.sku</stringProp>
  63280. <stringProp name="DEFAULT"/>
  63281. <stringProp name="VARIABLE"/>
  63282. <stringProp name="SUBJECT">BODY</stringProp>
  63283. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/extract_configurable_product_option_from_product_detail.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  63284. <hashTree/>
  63285. </hashTree>
  63286. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  63287. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63288. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63289. <collectionProp name="Arguments.arguments">
  63290. <elementProp name="" elementType="HTTPArgument">
  63291. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63292. <stringProp name="Argument.value">{"query":"mutation {\n addConfigurableProductsToCart(\n input: {\n cart_id: \"${quote_id}\"\n cart_items: [\n {\n variant_sku: \"${product_option}\"\n data: {\n quantity: 2\n sku: \"${product_option}\"\n }\n }\n ]\n }\n ) {\n cart {\n items {\n id\n quantity\n product {\n name\n sku\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63293. <stringProp name="Argument.metadata">=</stringProp>
  63294. </elementProp>
  63295. </collectionProp>
  63296. </elementProp>
  63297. <stringProp name="HTTPSampler.domain"/>
  63298. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63299. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63300. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63301. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63302. <stringProp name="HTTPSampler.contentEncoding"/>
  63303. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63304. <stringProp name="HTTPSampler.method">POST</stringProp>
  63305. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63306. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63307. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63308. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63309. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63310. <stringProp name="HTTPSampler.embedded_url_re"/>
  63311. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/add_configurable_product_to_cart.jmx</stringProp>
  63312. </HTTPSamplerProxy>
  63313. <hashTree>
  63314. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63315. <collectionProp name="Asserion.test_strings">
  63316. <stringProp name="1421843282">addConfigurableProductsToCart</stringProp>
  63317. <stringProp name="675049292">"sku":"${product_option}"</stringProp>
  63318. </collectionProp>
  63319. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63320. <boolProp name="Assertion.assume_success">false</boolProp>
  63321. <intProp name="Assertion.test_type">2</intProp>
  63322. </ResponseAssertion>
  63323. <hashTree/>
  63324. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63325. <boolProp name="resetInterpreter">false</boolProp>
  63326. <stringProp name="parameters"/>
  63327. <stringProp name="filename"/>
  63328. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63329. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63330. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63331. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63332. </hashTree>
  63333. </hashTree>
  63334. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Billing Address On Cart" enabled="true">
  63335. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63336. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63337. <collectionProp name="Arguments.arguments">
  63338. <elementProp name="" elementType="HTTPArgument">
  63339. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63340. <stringProp name="Argument.value">{"query":"mutation {\n setBillingAddressOnCart(\n input: {\n cart_id: \"${quote_id}\"\n billing_address: {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n }\n ) {\n cart {\n billing_address {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63341. <stringProp name="Argument.metadata">=</stringProp>
  63342. </elementProp>
  63343. </collectionProp>
  63344. </elementProp>
  63345. <stringProp name="HTTPSampler.domain"/>
  63346. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63347. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63348. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63349. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63350. <stringProp name="HTTPSampler.contentEncoding"/>
  63351. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63352. <stringProp name="HTTPSampler.method">POST</stringProp>
  63353. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63354. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63355. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63356. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63357. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63358. <stringProp name="HTTPSampler.embedded_url_re"/>
  63359. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_billing_address_on_cart.jmx</stringProp>
  63360. </HTTPSamplerProxy>
  63361. <hashTree>
  63362. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63363. <collectionProp name="Asserion.test_strings">
  63364. <stringProp name="1147076914">{"data":{"setBillingAddressOnCart":{"cart":{"billing_address":{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}}}}}</stringProp>
  63365. </collectionProp>
  63366. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63367. <boolProp name="Assertion.assume_success">false</boolProp>
  63368. <intProp name="Assertion.test_type">8</intProp>
  63369. </ResponseAssertion>
  63370. <hashTree/>
  63371. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63372. <boolProp name="resetInterpreter">false</boolProp>
  63373. <stringProp name="parameters"/>
  63374. <stringProp name="filename"/>
  63375. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63376. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63377. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63378. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63379. </hashTree>
  63380. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Address On Cart" enabled="true">
  63381. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63382. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63383. <collectionProp name="Arguments.arguments">
  63384. <elementProp name="" elementType="HTTPArgument">
  63385. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63386. <stringProp name="Argument.value">{"query":"mutation {\n setShippingAddressesOnCart(\n input: {\n cart_id: \"${quote_id}\"\n shipping_addresses: [\n {\n address: {\n firstname: \"test firstname\"\n lastname: \"test lastname\"\n company: \"test company\"\n street: [\"test street 1\", \"test street 2\"]\n city: \"test city\"\n region: \"AZ\"\n postcode: \"887766\"\n country_code: \"US\"\n telephone: \"88776655\"\n save_in_address_book: false\n }\n }\n ]\n }\n ) {\n cart {\n shipping_addresses {\n firstname\n lastname\n company\n street\n city\n postcode\n telephone\n country {\n code\n label\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63387. <stringProp name="Argument.metadata">=</stringProp>
  63388. </elementProp>
  63389. </collectionProp>
  63390. </elementProp>
  63391. <stringProp name="HTTPSampler.domain"/>
  63392. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63393. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63394. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63395. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63396. <stringProp name="HTTPSampler.contentEncoding"/>
  63397. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63398. <stringProp name="HTTPSampler.method">POST</stringProp>
  63399. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63400. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63401. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63402. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63403. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63404. <stringProp name="HTTPSampler.embedded_url_re"/>
  63405. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_shipping_address_on_cart.jmx</stringProp>
  63406. </HTTPSamplerProxy>
  63407. <hashTree>
  63408. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63409. <collectionProp name="Asserion.test_strings">
  63410. <stringProp name="-1671866339">{"data":{"setShippingAddressesOnCart":{"cart":{"shipping_addresses":[{"firstname":"test firstname","lastname":"test lastname","company":"test company","street":["test street 1","test street 2"],"city":"test city","postcode":"887766","telephone":"88776655","country":{"code":"US","label":"US"}}]}}}}</stringProp>
  63411. </collectionProp>
  63412. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63413. <boolProp name="Assertion.assume_success">false</boolProp>
  63414. <intProp name="Assertion.test_type">8</intProp>
  63415. </ResponseAssertion>
  63416. <hashTree/>
  63417. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63418. <boolProp name="resetInterpreter">false</boolProp>
  63419. <stringProp name="parameters"/>
  63420. <stringProp name="filename"/>
  63421. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63422. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63423. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63424. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63425. </hashTree>
  63426. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Payment Method On Cart" enabled="true">
  63427. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63428. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63429. <collectionProp name="Arguments.arguments">
  63430. <elementProp name="" elementType="HTTPArgument">
  63431. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63432. <stringProp name="Argument.value">{"query":"mutation {\n setPaymentMethodOnCart(input: {\n cart_id: \"${quote_id}\", \n payment_method: {\n code: \"checkmo\"\n }\n }) {\n cart {\n selected_payment_method {\n code\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63433. <stringProp name="Argument.metadata">=</stringProp>
  63434. </elementProp>
  63435. </collectionProp>
  63436. </elementProp>
  63437. <stringProp name="HTTPSampler.domain"/>
  63438. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63439. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63440. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63441. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63442. <stringProp name="HTTPSampler.contentEncoding"/>
  63443. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63444. <stringProp name="HTTPSampler.method">POST</stringProp>
  63445. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63446. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63447. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63448. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63449. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63450. <stringProp name="HTTPSampler.embedded_url_re"/>
  63451. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_payment_method_on_cart.jmx</stringProp>
  63452. </HTTPSamplerProxy>
  63453. <hashTree>
  63454. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63455. <collectionProp name="Asserion.test_strings">
  63456. <stringProp name="-1830199373">{"data":{"setPaymentMethodOnCart":{"cart":{"selected_payment_method":{"code":"checkmo"}}}}}</stringProp>
  63457. </collectionProp>
  63458. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63459. <boolProp name="Assertion.assume_success">false</boolProp>
  63460. <intProp name="Assertion.test_type">8</intProp>
  63461. </ResponseAssertion>
  63462. <hashTree/>
  63463. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63464. <boolProp name="resetInterpreter">false</boolProp>
  63465. <stringProp name="parameters"/>
  63466. <stringProp name="filename"/>
  63467. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63468. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63469. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63470. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63471. </hashTree>
  63472. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Current Shipping Address" enabled="true">
  63473. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63474. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63475. <collectionProp name="Arguments.arguments">
  63476. <elementProp name="" elementType="HTTPArgument">
  63477. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63478. <stringProp name="Argument.value">{"query":"{\n cart(cart_id: \"${quote_id}\") {\n shipping_addresses {\n postcode\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63479. <stringProp name="Argument.metadata">=</stringProp>
  63480. </elementProp>
  63481. </collectionProp>
  63482. </elementProp>
  63483. <stringProp name="HTTPSampler.domain"/>
  63484. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63485. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63486. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63487. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63488. <stringProp name="HTTPSampler.contentEncoding"/>
  63489. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63490. <stringProp name="HTTPSampler.method">POST</stringProp>
  63491. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63492. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63493. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63494. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63495. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63496. <stringProp name="HTTPSampler.embedded_url_re"/>
  63497. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_current_shipping_address.jmx</stringProp>
  63498. </HTTPSamplerProxy>
  63499. <hashTree>
  63500. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63501. <boolProp name="resetInterpreter">false</boolProp>
  63502. <stringProp name="parameters"/>
  63503. <stringProp name="filename"/>
  63504. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63505. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63506. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63507. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63508. </hashTree>
  63509. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Set Shipping Method On Cart" enabled="true">
  63510. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63511. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63512. <collectionProp name="Arguments.arguments">
  63513. <elementProp name="" elementType="HTTPArgument">
  63514. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63515. <stringProp name="Argument.value">{"query":"mutation {\n setShippingMethodsOnCart(input: \n {\n cart_id: \"${quote_id}\", \n shipping_methods: [{\n carrier_code: \"flatrate\"\n method_code: \"flatrate\"\n }]\n }) {\n cart {\n shipping_addresses {\n selected_shipping_method {\n carrier_code\n method_code\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63516. <stringProp name="Argument.metadata">=</stringProp>
  63517. </elementProp>
  63518. </collectionProp>
  63519. </elementProp>
  63520. <stringProp name="HTTPSampler.domain"/>
  63521. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63522. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63523. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63524. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63525. <stringProp name="HTTPSampler.contentEncoding"/>
  63526. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63527. <stringProp name="HTTPSampler.method">POST</stringProp>
  63528. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63529. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63530. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63531. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63532. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63533. <stringProp name="HTTPSampler.embedded_url_re"/>
  63534. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_shipping_method_on_cart.jmx</stringProp>
  63535. </HTTPSamplerProxy>
  63536. <hashTree>
  63537. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  63538. <collectionProp name="Asserion.test_strings">
  63539. <stringProp name="644143859">{"data":{"setShippingMethodsOnCart":{"cart":{"shipping_addresses":[{"selected_shipping_method":{"carrier_code":"flatrate","method_code":"flatrate"}}]}}}}</stringProp>
  63540. </collectionProp>
  63541. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  63542. <boolProp name="Assertion.assume_success">false</boolProp>
  63543. <intProp name="Assertion.test_type">8</intProp>
  63544. </ResponseAssertion>
  63545. <hashTree/>
  63546. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63547. <boolProp name="resetInterpreter">false</boolProp>
  63548. <stringProp name="parameters"/>
  63549. <stringProp name="filename"/>
  63550. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63551. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63552. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63553. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63554. </hashTree>
  63555. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Place Order" enabled="true">
  63556. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63557. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63558. <collectionProp name="Arguments.arguments">
  63559. <elementProp name="" elementType="HTTPArgument">
  63560. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63561. <stringProp name="Argument.value">{"query":"mutation {\n placeOrder(input: \n {\n cart_id: \"${quote_id}\" \n }) {\n order {\n order_number \n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63562. <stringProp name="Argument.metadata">=</stringProp>
  63563. </elementProp>
  63564. </collectionProp>
  63565. </elementProp>
  63566. <stringProp name="HTTPSampler.domain"/>
  63567. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63568. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63569. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63570. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63571. <stringProp name="HTTPSampler.contentEncoding"/>
  63572. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63573. <stringProp name="HTTPSampler.method">POST</stringProp>
  63574. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63575. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63576. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63577. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63578. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63579. <stringProp name="HTTPSampler.embedded_url_re"/>
  63580. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/place_order.jmx</stringProp>
  63581. </HTTPSamplerProxy>
  63582. <hashTree>
  63583. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63584. <stringProp name="JSON_PATH">$.data.placeOrder.order.order_number</stringProp>
  63585. <stringProp name="EXPECTED_VALUE"/>
  63586. <boolProp name="JSONVALIDATION">false</boolProp>
  63587. <boolProp name="EXPECT_NULL">false</boolProp>
  63588. <boolProp name="INVERT">false</boolProp>
  63589. <boolProp name="ISREGEX">false</boolProp>
  63590. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63591. <hashTree/>
  63592. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63593. <boolProp name="resetInterpreter">false</boolProp>
  63594. <stringProp name="parameters"/>
  63595. <stringProp name="filename"/>
  63596. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63597. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63598. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63599. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63600. </hashTree>
  63601. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  63602. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63603. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63604. <collectionProp name="Arguments.arguments">
  63605. <elementProp name="" elementType="HTTPArgument">
  63606. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63607. <stringProp name="Argument.value">{"query":"mutation {\n revokeCustomerToken {\n result \n }\n}","variables":null,"operationName":null}</stringProp>
  63608. <stringProp name="Argument.metadata">=</stringProp>
  63609. </elementProp>
  63610. </collectionProp>
  63611. </elementProp>
  63612. <stringProp name="HTTPSampler.domain"/>
  63613. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63614. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63615. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63616. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63617. <stringProp name="HTTPSampler.contentEncoding"/>
  63618. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63619. <stringProp name="HTTPSampler.method">POST</stringProp>
  63620. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63621. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63622. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63623. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63624. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63625. <stringProp name="HTTPSampler.embedded_url_re"/>
  63626. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/logout.jmx</stringProp>
  63627. </HTTPSamplerProxy>
  63628. <hashTree>
  63629. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63630. <stringProp name="JSON_PATH">$.data.revokeCustomerToken.result</stringProp>
  63631. <stringProp name="EXPECTED_VALUE">true</stringProp>
  63632. <boolProp name="JSONVALIDATION">true</boolProp>
  63633. <boolProp name="EXPECT_NULL">false</boolProp>
  63634. <boolProp name="INVERT">false</boolProp>
  63635. <boolProp name="ISREGEX">false</boolProp>
  63636. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63637. <hashTree/>
  63638. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  63639. <boolProp name="resetInterpreter">false</boolProp>
  63640. <stringProp name="parameters"/>
  63641. <stringProp name="filename"/>
  63642. <stringProp name="script">
  63643. customerUserList = props.get("customer_emails_list");
  63644. customerUserList.add(vars.get("customer_email"));
  63645. </stringProp>
  63646. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  63647. <hashTree/>
  63648. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63649. <boolProp name="resetInterpreter">false</boolProp>
  63650. <stringProp name="parameters"/>
  63651. <stringProp name="filename"/>
  63652. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63653. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63654. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63655. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63656. </hashTree>
  63657. </hashTree>
  63658. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Account management" enabled="true">
  63659. <intProp name="ThroughputController.style">1</intProp>
  63660. <boolProp name="ThroughputController.perThread">false</boolProp>
  63661. <intProp name="ThroughputController.maxThroughput">1</intProp>
  63662. <stringProp name="ThroughputController.percentThroughput">${cAccountManagementPercentage}</stringProp>
  63663. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  63664. <hashTree>
  63665. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  63666. <stringProp name="script">
  63667. var tmpLabel = vars.get("testLabel")
  63668. if (tmpLabel) {
  63669. var testLabel = " (" + tmpLabel + ")"
  63670. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  63671. if (sampler.getName().indexOf(testLabel) == -1) {
  63672. sampler.setName(sampler.getName() + testLabel);
  63673. }
  63674. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  63675. sampler.setName("SetUp - " + sampler.getName());
  63676. }
  63677. } else {
  63678. testLabel = ""
  63679. }
  63680. </stringProp>
  63681. <stringProp name="scriptLanguage">javascript</stringProp>
  63682. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  63683. <hashTree/>
  63684. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  63685. <stringProp name="BeanShellSampler.query">
  63686. vars.put("testLabel", "[GraphQL C] Account management");
  63687. </stringProp>
  63688. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  63689. </BeanShellSampler>
  63690. <hashTree/>
  63691. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  63692. <collectionProp name="HeaderManager.headers">
  63693. <elementProp name="" elementType="Header">
  63694. <stringProp name="Header.name">Content-Type</stringProp>
  63695. <stringProp name="Header.value">application/json</stringProp>
  63696. </elementProp>
  63697. <elementProp name="" elementType="Header">
  63698. <stringProp name="Header.name">Accept</stringProp>
  63699. <stringProp name="Header.value">*/*</stringProp>
  63700. </elementProp>
  63701. </collectionProp>
  63702. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  63703. <hashTree/>
  63704. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  63705. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  63706. <stringProp name="BeanShellSampler.query">
  63707. import java.util.Random;
  63708. Random random = new Random();
  63709. if (${seedForRandom} &gt; 0) {
  63710. random.setSeed(${seedForRandom} + ${__threadNum});
  63711. }
  63712. vars.putObject("randomIntGenerator", random);
  63713. </stringProp>
  63714. <stringProp name="BeanShellSampler.filename"/>
  63715. <stringProp name="BeanShellSampler.parameters"/>
  63716. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  63717. </BeanShellSampler>
  63718. <hashTree/>
  63719. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  63720. <stringProp name="scriptLanguage">javascript</stringProp>
  63721. <stringProp name="parameters"/>
  63722. <stringProp name="filename"/>
  63723. <stringProp name="cacheKey"/>
  63724. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  63725. var categories = props.get("categories");
  63726. number = random.nextInt(categories.length);
  63727. vars.put("category_url_key", categories[number].url_key);
  63728. vars.put("category_name", categories[number].name);
  63729. vars.put("category_id", categories[number].id);
  63730. vars.putObject("category", categories[number]);
  63731. </stringProp>
  63732. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  63733. <hashTree/>
  63734. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  63735. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  63736. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  63737. <hashTree>
  63738. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  63739. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  63740. <stringProp name="BeanShellSampler.query">
  63741. customerUserList = props.get("customer_emails_list");
  63742. customerUser = customerUserList.poll();
  63743. if (customerUser == null) {
  63744. SampleResult.setResponseMessage("customerUser list is empty");
  63745. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  63746. IsSuccess=false;
  63747. SampleResult.setSuccessful(false);
  63748. SampleResult.setStopThread(true);
  63749. }
  63750. vars.put("customer_email", customerUser);
  63751. </stringProp>
  63752. <stringProp name="BeanShellSampler.filename"/>
  63753. <stringProp name="BeanShellSampler.parameters"/>
  63754. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  63755. </BeanShellSampler>
  63756. <hashTree/>
  63757. </hashTree>
  63758. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  63759. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63760. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63761. <collectionProp name="Arguments.arguments">
  63762. <elementProp name="" elementType="HTTPArgument">
  63763. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63764. <stringProp name="Argument.value">
  63765. {"query":"query getCmsPage($identifier: String!, $onServer: Boolean!) {\n cmsPage(identifier: $identifier) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"identifier":"home","onServer":false},"operationName":"getCmsPage"}
  63766. </stringProp>
  63767. <stringProp name="Argument.metadata">=</stringProp>
  63768. </elementProp>
  63769. </collectionProp>
  63770. </elementProp>
  63771. <stringProp name="HTTPSampler.domain"/>
  63772. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63773. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63774. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63775. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63776. <stringProp name="HTTPSampler.contentEncoding"/>
  63777. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63778. <stringProp name="HTTPSampler.method">POST</stringProp>
  63779. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63780. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63781. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63782. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63783. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63784. <stringProp name="HTTPSampler.embedded_url_re"/>
  63785. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_home_page.jmx</stringProp>
  63786. </HTTPSamplerProxy>
  63787. <hashTree>
  63788. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63789. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  63790. <stringProp name="EXPECTED_VALUE"/>
  63791. <boolProp name="JSONVALIDATION">false</boolProp>
  63792. <boolProp name="EXPECT_NULL">false</boolProp>
  63793. <boolProp name="INVERT">false</boolProp>
  63794. <boolProp name="ISREGEX">false</boolProp>
  63795. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63796. <hashTree/>
  63797. </hashTree>
  63798. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  63799. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63800. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63801. <collectionProp name="Arguments.arguments">
  63802. <elementProp name="" elementType="HTTPArgument">
  63803. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63804. <stringProp name="Argument.value">{"query":"mutation {\n generateCustomerToken(\n email: \"${customer_email}\" \n password: \"${customer_password}\" \n ) {\n token \n }\n}","variables":null,"operationName":null}</stringProp>
  63805. <stringProp name="Argument.metadata">=</stringProp>
  63806. </elementProp>
  63807. </collectionProp>
  63808. </elementProp>
  63809. <stringProp name="HTTPSampler.domain"/>
  63810. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63811. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63812. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63813. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63814. <stringProp name="HTTPSampler.contentEncoding"/>
  63815. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63816. <stringProp name="HTTPSampler.method">POST</stringProp>
  63817. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63818. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63819. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63820. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63821. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63822. <stringProp name="HTTPSampler.embedded_url_re"/>
  63823. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/login.jmx</stringProp>
  63824. </HTTPSamplerProxy>
  63825. <hashTree>
  63826. <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 item id" enabled="true">
  63827. <stringProp name="VAR">customer_token</stringProp>
  63828. <stringProp name="JSONPATH">$.data.generateCustomerToken.token</stringProp>
  63829. <stringProp name="DEFAULT"/>
  63830. <stringProp name="VARIABLE"/>
  63831. <stringProp name="SUBJECT">BODY</stringProp>
  63832. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  63833. <hashTree/>
  63834. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63835. <stringProp name="JSON_PATH">$.data.generateCustomerToken.token</stringProp>
  63836. <stringProp name="EXPECTED_VALUE"/>
  63837. <boolProp name="JSONVALIDATION">false</boolProp>
  63838. <boolProp name="EXPECT_NULL">false</boolProp>
  63839. <boolProp name="INVERT">false</boolProp>
  63840. <boolProp name="ISREGEX">false</boolProp>
  63841. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63842. <hashTree/>
  63843. </hashTree>
  63844. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Orders" enabled="true">
  63845. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63846. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63847. <collectionProp name="Arguments.arguments">
  63848. <elementProp name="" elementType="HTTPArgument">
  63849. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63850. <stringProp name="Argument.value">{"query":" { \n customer \n { orders \n {\n items {\n id \n number \n order_date \n status \n } \n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63851. <stringProp name="Argument.metadata">=</stringProp>
  63852. </elementProp>
  63853. </collectionProp>
  63854. </elementProp>
  63855. <stringProp name="HTTPSampler.domain"/>
  63856. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63857. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63858. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63859. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63860. <stringProp name="HTTPSampler.contentEncoding"/>
  63861. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63862. <stringProp name="HTTPSampler.method">POST</stringProp>
  63863. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63864. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63865. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63866. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63867. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63868. <stringProp name="HTTPSampler.embedded_url_re"/>
  63869. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/my_orders.jmx</stringProp>
  63870. </HTTPSamplerProxy>
  63871. <hashTree>
  63872. <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 order number" enabled="true">
  63873. <stringProp name="VAR">order_number</stringProp>
  63874. <stringProp name="JSONPATH">$.data.customer.orders.items[0].number</stringProp>
  63875. <stringProp name="DEFAULT">NOT_FOUND</stringProp>
  63876. <stringProp name="VARIABLE"/>
  63877. <stringProp name="SUBJECT">BODY</stringProp>
  63878. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  63879. <hashTree/>
  63880. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63881. <stringProp name="JSON_PATH">$.data.customer.orders</stringProp>
  63882. <stringProp name="EXPECTED_VALUE"/>
  63883. <boolProp name="JSONVALIDATION">false</boolProp>
  63884. <boolProp name="EXPECT_NULL">false</boolProp>
  63885. <boolProp name="INVERT">false</boolProp>
  63886. <boolProp name="ISREGEX">false</boolProp>
  63887. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63888. <hashTree/>
  63889. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63890. <boolProp name="resetInterpreter">false</boolProp>
  63891. <stringProp name="parameters"/>
  63892. <stringProp name="filename"/>
  63893. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63894. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63895. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63896. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63897. </hashTree>
  63898. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Orders Controller" enabled="true">
  63899. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/if_orders.jmx</stringProp>
  63900. <stringProp name="IfController.condition">"${order_number}" != "NOT_FOUND"</stringProp>
  63901. <boolProp name="IfController.evaluateAll">false</boolProp>
  63902. </IfController>
  63903. <hashTree>
  63904. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Orders" enabled="true">
  63905. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63906. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63907. <collectionProp name="Arguments.arguments">
  63908. <elementProp name="" elementType="HTTPArgument">
  63909. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63910. <stringProp name="Argument.value">{"query":" { \n customer \n { orders(filter: {number: {eq: \"${order_number}\"}}) \n {\n items {\n id \n number \n order_date \n status \n items { \n product_name \n product_sku \n product_url_key \n product_sale_price { \n value \n } \n product_sale_price { \n value \n currency \n } \n quantity_ordered \n quantity_invoiced \n quantity_shipped \n } \n carrier \n shipments { \n id \n number \n items { \n product_name \n quantity_shipped \n } \n } \n total { \n base_grand_total { \n value \n currency \n } \n grand_total { \n value \n currency \n } \n total_tax { \n value \n } \n subtotal { \n value \n currency \n } \n taxes { \n amount { \n value \n currency \n } \n title \n rate \n } \n total_shipping { \n value \n } \n shipping_handling { \n amount_including_tax { \n value \n } \n amount_excluding_tax { \n value \n } \n total_amount { \n value \n } \n taxes { \n amount { \n value \n } \n title \n rate \n } \n } \n discounts { \n amount { \n value \n currency \n } \n label \n } \n } \n } \n }\n }\n}","variables":null,"operationName":null}</stringProp>
  63911. <stringProp name="Argument.metadata">=</stringProp>
  63912. </elementProp>
  63913. </collectionProp>
  63914. </elementProp>
  63915. <stringProp name="HTTPSampler.domain"/>
  63916. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63917. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63918. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63919. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63920. <stringProp name="HTTPSampler.contentEncoding"/>
  63921. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63922. <stringProp name="HTTPSampler.method">POST</stringProp>
  63923. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63924. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63925. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63926. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63927. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63928. <stringProp name="HTTPSampler.embedded_url_re"/>
  63929. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/if_orders.jmx</stringProp>
  63930. </HTTPSamplerProxy>
  63931. <hashTree>
  63932. <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 shipments id" enabled="true">
  63933. <stringProp name="VAR">shipments_id</stringProp>
  63934. <stringProp name="JSONPATH">$.data.customer.orders.items[0].shipments.id</stringProp>
  63935. <stringProp name="DEFAULT">NOT_FOUND</stringProp>
  63936. <stringProp name="VARIABLE"/>
  63937. <stringProp name="SUBJECT">BODY</stringProp>
  63938. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  63939. <hashTree/>
  63940. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63941. <stringProp name="JSON_PATH">$.data.customer.orders.items</stringProp>
  63942. <stringProp name="EXPECTED_VALUE"/>
  63943. <boolProp name="JSONVALIDATION">false</boolProp>
  63944. <boolProp name="EXPECT_NULL">false</boolProp>
  63945. <boolProp name="INVERT">false</boolProp>
  63946. <boolProp name="ISREGEX">false</boolProp>
  63947. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63948. <hashTree/>
  63949. </hashTree>
  63950. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63951. <boolProp name="resetInterpreter">false</boolProp>
  63952. <stringProp name="parameters"/>
  63953. <stringProp name="filename"/>
  63954. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  63955. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  63956. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  63957. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  63958. </hashTree>
  63959. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="My Downloadable Products" enabled="true">
  63960. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  63961. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  63962. <collectionProp name="Arguments.arguments">
  63963. <elementProp name="" elementType="HTTPArgument">
  63964. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  63965. <stringProp name="Argument.value">{"query":" { \n customerDownloadableProducts {\n items \n { \n date \n download_url \n order_increment_id \n remaining_downloads \n status \n } \n } \n }","variables":null,"operationName":null}</stringProp>
  63966. <stringProp name="Argument.metadata">=</stringProp>
  63967. </elementProp>
  63968. </collectionProp>
  63969. </elementProp>
  63970. <stringProp name="HTTPSampler.domain"/>
  63971. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  63972. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  63973. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  63974. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  63975. <stringProp name="HTTPSampler.contentEncoding"/>
  63976. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  63977. <stringProp name="HTTPSampler.method">POST</stringProp>
  63978. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  63979. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  63980. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  63981. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  63982. <boolProp name="HTTPSampler.monitor">false</boolProp>
  63983. <stringProp name="HTTPSampler.embedded_url_re"/>
  63984. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/my_downloadable_products.jmx</stringProp>
  63985. </HTTPSamplerProxy>
  63986. <hashTree>
  63987. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  63988. <stringProp name="JSON_PATH">$.data.customerDownloadableProducts.items</stringProp>
  63989. <stringProp name="EXPECTED_VALUE"/>
  63990. <boolProp name="JSONVALIDATION">false</boolProp>
  63991. <boolProp name="EXPECT_NULL">false</boolProp>
  63992. <boolProp name="INVERT">false</boolProp>
  63993. <boolProp name="ISREGEX">false</boolProp>
  63994. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  63995. <hashTree/>
  63996. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  63997. <boolProp name="resetInterpreter">false</boolProp>
  63998. <stringProp name="parameters"/>
  63999. <stringProp name="filename"/>
  64000. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  64001. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  64002. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  64003. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  64004. </hashTree>
  64005. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Wishlist" enabled="true">
  64006. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  64007. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  64008. <collectionProp name="Arguments.arguments">
  64009. <elementProp name="" elementType="HTTPArgument">
  64010. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  64011. <stringProp name="Argument.value">{"query":" { \n customer {\n wishlist \n { \n id \n items_count \n sharing_code \n updated_at \n } \n } \n }","variables":null,"operationName":null}</stringProp>
  64012. <stringProp name="Argument.metadata">=</stringProp>
  64013. </elementProp>
  64014. </collectionProp>
  64015. </elementProp>
  64016. <stringProp name="HTTPSampler.domain"/>
  64017. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  64018. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64019. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64020. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64021. <stringProp name="HTTPSampler.contentEncoding"/>
  64022. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  64023. <stringProp name="HTTPSampler.method">POST</stringProp>
  64024. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64025. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64026. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64027. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64028. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64029. <stringProp name="HTTPSampler.embedded_url_re"/>
  64030. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/my_wish_list.jmx</stringProp>
  64031. </HTTPSamplerProxy>
  64032. <hashTree>
  64033. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  64034. <stringProp name="JSON_PATH">$.data.customer.wishlist.items_count</stringProp>
  64035. <stringProp name="EXPECTED_VALUE"/>
  64036. <boolProp name="JSONVALIDATION">false</boolProp>
  64037. <boolProp name="EXPECT_NULL">false</boolProp>
  64038. <boolProp name="INVERT">false</boolProp>
  64039. <boolProp name="ISREGEX">false</boolProp>
  64040. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  64041. <hashTree/>
  64042. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  64043. <boolProp name="resetInterpreter">false</boolProp>
  64044. <stringProp name="parameters"/>
  64045. <stringProp name="filename"/>
  64046. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  64047. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  64048. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  64049. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  64050. </hashTree>
  64051. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  64052. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  64053. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  64054. <collectionProp name="Arguments.arguments">
  64055. <elementProp name="" elementType="HTTPArgument">
  64056. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  64057. <stringProp name="Argument.value">{"query":"mutation {\n revokeCustomerToken {\n result \n }\n}","variables":null,"operationName":null}</stringProp>
  64058. <stringProp name="Argument.metadata">=</stringProp>
  64059. </elementProp>
  64060. </collectionProp>
  64061. </elementProp>
  64062. <stringProp name="HTTPSampler.domain"/>
  64063. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  64064. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64065. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64066. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64067. <stringProp name="HTTPSampler.contentEncoding"/>
  64068. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  64069. <stringProp name="HTTPSampler.method">POST</stringProp>
  64070. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64071. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64072. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64073. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64074. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64075. <stringProp name="HTTPSampler.embedded_url_re"/>
  64076. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/logout.jmx</stringProp>
  64077. </HTTPSamplerProxy>
  64078. <hashTree>
  64079. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  64080. <stringProp name="JSON_PATH">$.data.revokeCustomerToken.result</stringProp>
  64081. <stringProp name="EXPECTED_VALUE">true</stringProp>
  64082. <boolProp name="JSONVALIDATION">true</boolProp>
  64083. <boolProp name="EXPECT_NULL">false</boolProp>
  64084. <boolProp name="INVERT">false</boolProp>
  64085. <boolProp name="ISREGEX">false</boolProp>
  64086. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  64087. <hashTree/>
  64088. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Customer to Pool" enabled="true">
  64089. <boolProp name="resetInterpreter">false</boolProp>
  64090. <stringProp name="parameters"/>
  64091. <stringProp name="filename"/>
  64092. <stringProp name="script">
  64093. customerUserList = props.get("customer_emails_list");
  64094. customerUserList.add(vars.get("customer_email"));
  64095. </stringProp>
  64096. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  64097. <hashTree/>
  64098. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  64099. <boolProp name="resetInterpreter">false</boolProp>
  64100. <stringProp name="parameters"/>
  64101. <stringProp name="filename"/>
  64102. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  64103. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  64104. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  64105. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  64106. </hashTree>
  64107. </hashTree>
  64108. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin CMS Management" enabled="true">
  64109. <intProp name="ThroughputController.style">1</intProp>
  64110. <boolProp name="ThroughputController.perThread">false</boolProp>
  64111. <intProp name="ThroughputController.maxThroughput">1</intProp>
  64112. <stringProp name="ThroughputController.percentThroughput">${cAdminCMSManagementPercentage}</stringProp>
  64113. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  64114. <hashTree>
  64115. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  64116. <stringProp name="script">
  64117. var tmpLabel = vars.get("testLabel")
  64118. if (tmpLabel) {
  64119. var testLabel = " (" + tmpLabel + ")"
  64120. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  64121. if (sampler.getName().indexOf(testLabel) == -1) {
  64122. sampler.setName(sampler.getName() + testLabel);
  64123. }
  64124. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  64125. sampler.setName("SetUp - " + sampler.getName());
  64126. }
  64127. } else {
  64128. testLabel = ""
  64129. }
  64130. </stringProp>
  64131. <stringProp name="scriptLanguage">javascript</stringProp>
  64132. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  64133. <hashTree/>
  64134. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  64135. <stringProp name="BeanShellSampler.query">
  64136. vars.put("testLabel", "[GraphQL C] Admin CMS Management");
  64137. </stringProp>
  64138. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  64139. </BeanShellSampler>
  64140. <hashTree/>
  64141. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  64142. <stringProp name="script">
  64143. function getFormKeyFromResponse()
  64144. {
  64145. var url = prev.getUrlAsString(),
  64146. responseCode = prev.getResponseCode(),
  64147. formKey = null;
  64148. searchPattern = /var FORM_KEY = '(.+)'/;
  64149. if (responseCode == "200" &amp;&amp; url) {
  64150. response = prev.getResponseDataAsString();
  64151. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  64152. }
  64153. return formKey;
  64154. }
  64155. formKey = vars.get("form_key_storage");
  64156. currentFormKey = getFormKeyFromResponse();
  64157. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  64158. vars.put("form_key_storage", currentFormKey);
  64159. }
  64160. </stringProp>
  64161. <stringProp name="scriptLanguage">javascript</stringProp>
  64162. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  64163. <hashTree/>
  64164. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  64165. <stringProp name="script">
  64166. formKey = vars.get("form_key_storage");
  64167. if (formKey
  64168. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  64169. &amp;&amp; sampler.getMethod() == "POST")
  64170. {
  64171. arguments = sampler.getArguments();
  64172. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  64173. {
  64174. argument = arguments.getArgument(i);
  64175. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  64176. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  64177. argument.setValue(formKey);
  64178. }
  64179. }
  64180. }
  64181. </stringProp>
  64182. <stringProp name="scriptLanguage">javascript</stringProp>
  64183. </JSR223PreProcessor>
  64184. <hashTree/>
  64185. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  64186. <collectionProp name="CookieManager.cookies"/>
  64187. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  64188. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  64189. <hashTree/>
  64190. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  64191. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  64192. </GenericController>
  64193. <hashTree>
  64194. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  64195. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  64196. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  64197. <hashTree>
  64198. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  64199. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  64200. <stringProp name="BeanShellSampler.query">
  64201. adminUser = "none";
  64202. adminUserList = props.get("adminUserList");
  64203. adminUserListIterator = props.get("adminUserListIterator");
  64204. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  64205. if (adminUsersDistribution == 1) {
  64206. adminUser = adminUserList.poll();
  64207. } else {
  64208. if (!adminUserListIterator.hasNext()) {
  64209. adminUserListIterator = adminUserList.descendingIterator();
  64210. }
  64211. adminUser = adminUserListIterator.next();
  64212. }
  64213. if (adminUser == "none") {
  64214. SampleResult.setResponseMessage("adminUser list is empty");
  64215. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  64216. IsSuccess=false;
  64217. SampleResult.setSuccessful(false);
  64218. SampleResult.setStopThread(true);
  64219. }
  64220. vars.put("admin_user", adminUser);
  64221. </stringProp>
  64222. <stringProp name="BeanShellSampler.filename"/>
  64223. <stringProp name="BeanShellSampler.parameters"/>
  64224. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  64225. </BeanShellSampler>
  64226. <hashTree/>
  64227. </hashTree>
  64228. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  64229. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64230. <collectionProp name="Arguments.arguments"/>
  64231. </elementProp>
  64232. <stringProp name="HTTPSampler.domain"/>
  64233. <stringProp name="HTTPSampler.port"/>
  64234. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64235. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64236. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64237. <stringProp name="HTTPSampler.contentEncoding"/>
  64238. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  64239. <stringProp name="HTTPSampler.method">GET</stringProp>
  64240. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64241. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64242. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64243. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64244. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64245. <stringProp name="HTTPSampler.embedded_url_re"/>
  64246. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  64247. <hashTree>
  64248. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  64249. <collectionProp name="Asserion.test_strings">
  64250. <stringProp name="-1397214398">Welcome</stringProp>
  64251. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  64252. </collectionProp>
  64253. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  64254. <boolProp name="Assertion.assume_success">false</boolProp>
  64255. <intProp name="Assertion.test_type">2</intProp>
  64256. </ResponseAssertion>
  64257. <hashTree/>
  64258. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  64259. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  64260. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  64261. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  64262. <stringProp name="RegexExtractor.template">$1$</stringProp>
  64263. <stringProp name="RegexExtractor.default"/>
  64264. <stringProp name="RegexExtractor.match_number">1</stringProp>
  64265. </RegexExtractor>
  64266. <hashTree/>
  64267. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  64268. <collectionProp name="Asserion.test_strings">
  64269. <stringProp name="2845929">^.+$</stringProp>
  64270. </collectionProp>
  64271. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  64272. <boolProp name="Assertion.assume_success">false</boolProp>
  64273. <intProp name="Assertion.test_type">1</intProp>
  64274. <stringProp name="Assertion.scope">variable</stringProp>
  64275. <stringProp name="Scope.variable">admin_form_key</stringProp>
  64276. </ResponseAssertion>
  64277. <hashTree/>
  64278. </hashTree>
  64279. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  64280. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64281. <collectionProp name="Arguments.arguments">
  64282. <elementProp name="dummy" elementType="HTTPArgument">
  64283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64284. <stringProp name="Argument.value"/>
  64285. <stringProp name="Argument.metadata">=</stringProp>
  64286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64287. <stringProp name="Argument.name">dummy</stringProp>
  64288. </elementProp>
  64289. <elementProp name="form_key" elementType="HTTPArgument">
  64290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64291. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  64292. <stringProp name="Argument.metadata">=</stringProp>
  64293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64294. <stringProp name="Argument.name">form_key</stringProp>
  64295. </elementProp>
  64296. <elementProp name="login[password]" elementType="HTTPArgument">
  64297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64298. <stringProp name="Argument.value">${admin_password}</stringProp>
  64299. <stringProp name="Argument.metadata">=</stringProp>
  64300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64301. <stringProp name="Argument.name">login[password]</stringProp>
  64302. </elementProp>
  64303. <elementProp name="login[username]" elementType="HTTPArgument">
  64304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64305. <stringProp name="Argument.value">${admin_user}</stringProp>
  64306. <stringProp name="Argument.metadata">=</stringProp>
  64307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64308. <stringProp name="Argument.name">login[username]</stringProp>
  64309. </elementProp>
  64310. </collectionProp>
  64311. </elementProp>
  64312. <stringProp name="HTTPSampler.domain"/>
  64313. <stringProp name="HTTPSampler.port"/>
  64314. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64315. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64316. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64317. <stringProp name="HTTPSampler.contentEncoding"/>
  64318. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  64319. <stringProp name="HTTPSampler.method">POST</stringProp>
  64320. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64321. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64322. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64323. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64324. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  64325. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64326. <stringProp name="HTTPSampler.embedded_url_re"/>
  64327. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  64328. </HTTPSamplerProxy>
  64329. <hashTree>
  64330. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  64331. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  64332. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  64333. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  64334. <stringProp name="RegexExtractor.template">$1$</stringProp>
  64335. <stringProp name="RegexExtractor.default"/>
  64336. <stringProp name="RegexExtractor.match_number">1</stringProp>
  64337. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  64338. <hashTree/>
  64339. </hashTree>
  64340. </hashTree>
  64341. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  64342. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  64343. </GenericController>
  64344. <hashTree>
  64345. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin CMS Management" enabled="true">
  64346. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_cms_management/admin_cms_management.jmx</stringProp>
  64347. </TestFragmentController>
  64348. <hashTree>
  64349. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  64350. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64351. <collectionProp name="Arguments.arguments"/>
  64352. </elementProp>
  64353. <stringProp name="HTTPSampler.domain"/>
  64354. <stringProp name="HTTPSampler.port"/>
  64355. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64356. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64357. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64358. <stringProp name="HTTPSampler.contentEncoding"/>
  64359. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/</stringProp>
  64360. <stringProp name="HTTPSampler.method">GET</stringProp>
  64361. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64362. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64363. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64364. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64365. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64366. <stringProp name="HTTPSampler.embedded_url_re"/>
  64367. </HTTPSamplerProxy>
  64368. <hashTree/>
  64369. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  64370. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64371. <collectionProp name="Arguments.arguments"/>
  64372. </elementProp>
  64373. <stringProp name="HTTPSampler.domain"/>
  64374. <stringProp name="HTTPSampler.port"/>
  64375. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64376. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64377. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64378. <stringProp name="HTTPSampler.contentEncoding"/>
  64379. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/new</stringProp>
  64380. <stringProp name="HTTPSampler.method">GET</stringProp>
  64381. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64382. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64383. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64384. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64385. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64386. <stringProp name="HTTPSampler.embedded_url_re"/>
  64387. </HTTPSamplerProxy>
  64388. <hashTree/>
  64389. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  64390. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64391. <collectionProp name="Arguments.arguments">
  64392. <elementProp name="content" elementType="HTTPArgument">
  64393. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64394. <stringProp name="Argument.value">&lt;p&gt;CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  64395. <stringProp name="Argument.metadata">=</stringProp>
  64396. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64397. <stringProp name="Argument.name">content</stringProp>
  64398. </elementProp>
  64399. <elementProp name="content_heading" elementType="HTTPArgument">
  64400. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64401. <stringProp name="Argument.value"/>
  64402. <stringProp name="Argument.metadata">=</stringProp>
  64403. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64404. <stringProp name="Argument.name">content_heading</stringProp>
  64405. </elementProp>
  64406. <elementProp name="form_key" elementType="HTTPArgument">
  64407. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64408. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  64409. <stringProp name="Argument.metadata">=</stringProp>
  64410. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64411. <stringProp name="Argument.name">form_key</stringProp>
  64412. </elementProp>
  64413. <elementProp name="identifier" elementType="HTTPArgument">
  64414. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64415. <stringProp name="Argument.value"/>
  64416. <stringProp name="Argument.metadata">=</stringProp>
  64417. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64418. <stringProp name="Argument.name">identifier</stringProp>
  64419. </elementProp>
  64420. <elementProp name="is_active" elementType="HTTPArgument">
  64421. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64422. <stringProp name="Argument.value">1</stringProp>
  64423. <stringProp name="Argument.metadata">=</stringProp>
  64424. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64425. <stringProp name="Argument.name">is_active</stringProp>
  64426. </elementProp>
  64427. <elementProp name="layout_update_xml" elementType="HTTPArgument">
  64428. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64429. <stringProp name="Argument.value"/>
  64430. <stringProp name="Argument.metadata">=</stringProp>
  64431. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64432. <stringProp name="Argument.name">layout_update_xml</stringProp>
  64433. </elementProp>
  64434. <elementProp name="meta_description" elementType="HTTPArgument">
  64435. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64436. <stringProp name="Argument.value"/>
  64437. <stringProp name="Argument.metadata">=</stringProp>
  64438. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64439. <stringProp name="Argument.name">meta_description</stringProp>
  64440. </elementProp>
  64441. <elementProp name="meta_keywords" elementType="HTTPArgument">
  64442. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64443. <stringProp name="Argument.value"/>
  64444. <stringProp name="Argument.metadata">=</stringProp>
  64445. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64446. <stringProp name="Argument.name">meta_keywords</stringProp>
  64447. </elementProp>
  64448. <elementProp name="meta_title" elementType="HTTPArgument">
  64449. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64450. <stringProp name="Argument.value"/>
  64451. <stringProp name="Argument.metadata">=</stringProp>
  64452. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64453. <stringProp name="Argument.name">meta_title</stringProp>
  64454. </elementProp>
  64455. <elementProp name="nodes_data" elementType="HTTPArgument">
  64456. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  64457. <stringProp name="Argument.value">{}</stringProp>
  64458. <stringProp name="Argument.metadata">=</stringProp>
  64459. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64460. <stringProp name="Argument.name">nodes_data</stringProp>
  64461. </elementProp>
  64462. <elementProp name="node_ids" elementType="HTTPArgument">
  64463. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64464. <stringProp name="Argument.value"/>
  64465. <stringProp name="Argument.metadata">=</stringProp>
  64466. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64467. <stringProp name="Argument.name">node_ids</stringProp>
  64468. </elementProp>
  64469. <elementProp name="page_id" elementType="HTTPArgument">
  64470. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64471. <stringProp name="Argument.value"/>
  64472. <stringProp name="Argument.metadata">=</stringProp>
  64473. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64474. <stringProp name="Argument.name">page_id</stringProp>
  64475. </elementProp>
  64476. <elementProp name="page_layout" elementType="HTTPArgument">
  64477. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64478. <stringProp name="Argument.value">1column</stringProp>
  64479. <stringProp name="Argument.metadata">=</stringProp>
  64480. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64481. <stringProp name="Argument.name">page_layout</stringProp>
  64482. </elementProp>
  64483. <elementProp name="store_id[0]" elementType="HTTPArgument">
  64484. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64485. <stringProp name="Argument.value">0</stringProp>
  64486. <stringProp name="Argument.metadata">=</stringProp>
  64487. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64488. <stringProp name="Argument.name">store_id[0]</stringProp>
  64489. </elementProp>
  64490. <elementProp name="title" elementType="HTTPArgument">
  64491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64492. <stringProp name="Argument.value">CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  64493. <stringProp name="Argument.metadata">=</stringProp>
  64494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64495. <stringProp name="Argument.name">title</stringProp>
  64496. </elementProp>
  64497. <elementProp name="website_root" elementType="HTTPArgument">
  64498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64499. <stringProp name="Argument.value">0</stringProp>
  64500. <stringProp name="Argument.metadata">=</stringProp>
  64501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64502. <stringProp name="Argument.name">website_root</stringProp>
  64503. </elementProp>
  64504. </collectionProp>
  64505. </elementProp>
  64506. <stringProp name="HTTPSampler.domain"/>
  64507. <stringProp name="HTTPSampler.port"/>
  64508. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64509. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64510. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64511. <stringProp name="HTTPSampler.contentEncoding"/>
  64512. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/save/</stringProp>
  64513. <stringProp name="HTTPSampler.method">POST</stringProp>
  64514. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64515. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64516. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64517. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64518. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64519. <stringProp name="HTTPSampler.embedded_url_re"/>
  64520. </HTTPSamplerProxy>
  64521. <hashTree>
  64522. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  64523. <collectionProp name="Asserion.test_strings">
  64524. <stringProp name="-398886250">You saved the page.</stringProp>
  64525. </collectionProp>
  64526. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  64527. <boolProp name="Assertion.assume_success">false</boolProp>
  64528. <intProp name="Assertion.test_type">16</intProp>
  64529. </ResponseAssertion>
  64530. <hashTree/>
  64531. </hashTree>
  64532. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  64533. <intProp name="ActionProcessor.action">1</intProp>
  64534. <intProp name="ActionProcessor.target">0</intProp>
  64535. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCMSManagementDelay}*1000))}</stringProp>
  64536. </TestAction>
  64537. <hashTree/>
  64538. </hashTree>
  64539. </hashTree>
  64540. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  64541. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64542. <collectionProp name="Arguments.arguments"/>
  64543. </elementProp>
  64544. <stringProp name="HTTPSampler.domain"/>
  64545. <stringProp name="HTTPSampler.port"/>
  64546. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64547. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64548. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64549. <stringProp name="HTTPSampler.contentEncoding"/>
  64550. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  64551. <stringProp name="HTTPSampler.method">GET</stringProp>
  64552. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64553. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64554. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64555. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64556. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64557. <stringProp name="HTTPSampler.embedded_url_re"/>
  64558. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  64559. <hashTree>
  64560. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  64561. <boolProp name="resetInterpreter">false</boolProp>
  64562. <stringProp name="parameters"/>
  64563. <stringProp name="filename"/>
  64564. <stringProp name="script">
  64565. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  64566. if (adminUsersDistribution == 1) {
  64567. adminUserList = props.get("adminUserList");
  64568. adminUserList.add(vars.get("admin_user"));
  64569. }
  64570. </stringProp>
  64571. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  64572. <hashTree/>
  64573. </hashTree>
  64574. </hashTree>
  64575. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Browse Product Grid" enabled="true">
  64576. <intProp name="ThroughputController.style">1</intProp>
  64577. <boolProp name="ThroughputController.perThread">false</boolProp>
  64578. <intProp name="ThroughputController.maxThroughput">1</intProp>
  64579. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseProductGridPercentage}</stringProp>
  64580. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  64581. <hashTree>
  64582. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  64583. <stringProp name="script">
  64584. var tmpLabel = vars.get("testLabel")
  64585. if (tmpLabel) {
  64586. var testLabel = " (" + tmpLabel + ")"
  64587. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  64588. if (sampler.getName().indexOf(testLabel) == -1) {
  64589. sampler.setName(sampler.getName() + testLabel);
  64590. }
  64591. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  64592. sampler.setName("SetUp - " + sampler.getName());
  64593. }
  64594. } else {
  64595. testLabel = ""
  64596. }
  64597. </stringProp>
  64598. <stringProp name="scriptLanguage">javascript</stringProp>
  64599. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  64600. <hashTree/>
  64601. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  64602. <stringProp name="BeanShellSampler.query">
  64603. vars.put("testLabel", "[GraphQL C] Admin Browse Product Grid");
  64604. </stringProp>
  64605. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  64606. </BeanShellSampler>
  64607. <hashTree/>
  64608. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  64609. <stringProp name="script">
  64610. function getFormKeyFromResponse()
  64611. {
  64612. var url = prev.getUrlAsString(),
  64613. responseCode = prev.getResponseCode(),
  64614. formKey = null;
  64615. searchPattern = /var FORM_KEY = '(.+)'/;
  64616. if (responseCode == "200" &amp;&amp; url) {
  64617. response = prev.getResponseDataAsString();
  64618. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  64619. }
  64620. return formKey;
  64621. }
  64622. formKey = vars.get("form_key_storage");
  64623. currentFormKey = getFormKeyFromResponse();
  64624. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  64625. vars.put("form_key_storage", currentFormKey);
  64626. }
  64627. </stringProp>
  64628. <stringProp name="scriptLanguage">javascript</stringProp>
  64629. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  64630. <hashTree/>
  64631. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  64632. <stringProp name="script">
  64633. formKey = vars.get("form_key_storage");
  64634. if (formKey
  64635. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  64636. &amp;&amp; sampler.getMethod() == "POST")
  64637. {
  64638. arguments = sampler.getArguments();
  64639. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  64640. {
  64641. argument = arguments.getArgument(i);
  64642. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  64643. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  64644. argument.setValue(formKey);
  64645. }
  64646. }
  64647. }
  64648. </stringProp>
  64649. <stringProp name="scriptLanguage">javascript</stringProp>
  64650. </JSR223PreProcessor>
  64651. <hashTree/>
  64652. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  64653. <collectionProp name="CookieManager.cookies"/>
  64654. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  64655. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  64656. <hashTree/>
  64657. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  64658. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  64659. </GenericController>
  64660. <hashTree>
  64661. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  64662. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  64663. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  64664. <hashTree>
  64665. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  64666. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  64667. <stringProp name="BeanShellSampler.query">
  64668. adminUser = "none";
  64669. adminUserList = props.get("adminUserList");
  64670. adminUserListIterator = props.get("adminUserListIterator");
  64671. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  64672. if (adminUsersDistribution == 1) {
  64673. adminUser = adminUserList.poll();
  64674. } else {
  64675. if (!adminUserListIterator.hasNext()) {
  64676. adminUserListIterator = adminUserList.descendingIterator();
  64677. }
  64678. adminUser = adminUserListIterator.next();
  64679. }
  64680. if (adminUser == "none") {
  64681. SampleResult.setResponseMessage("adminUser list is empty");
  64682. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  64683. IsSuccess=false;
  64684. SampleResult.setSuccessful(false);
  64685. SampleResult.setStopThread(true);
  64686. }
  64687. vars.put("admin_user", adminUser);
  64688. </stringProp>
  64689. <stringProp name="BeanShellSampler.filename"/>
  64690. <stringProp name="BeanShellSampler.parameters"/>
  64691. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  64692. </BeanShellSampler>
  64693. <hashTree/>
  64694. </hashTree>
  64695. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  64696. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64697. <collectionProp name="Arguments.arguments"/>
  64698. </elementProp>
  64699. <stringProp name="HTTPSampler.domain"/>
  64700. <stringProp name="HTTPSampler.port"/>
  64701. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64702. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64703. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64704. <stringProp name="HTTPSampler.contentEncoding"/>
  64705. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  64706. <stringProp name="HTTPSampler.method">GET</stringProp>
  64707. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64708. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64709. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64710. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64711. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64712. <stringProp name="HTTPSampler.embedded_url_re"/>
  64713. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  64714. <hashTree>
  64715. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  64716. <collectionProp name="Asserion.test_strings">
  64717. <stringProp name="-1397214398">Welcome</stringProp>
  64718. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  64719. </collectionProp>
  64720. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  64721. <boolProp name="Assertion.assume_success">false</boolProp>
  64722. <intProp name="Assertion.test_type">2</intProp>
  64723. </ResponseAssertion>
  64724. <hashTree/>
  64725. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  64726. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  64727. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  64728. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  64729. <stringProp name="RegexExtractor.template">$1$</stringProp>
  64730. <stringProp name="RegexExtractor.default"/>
  64731. <stringProp name="RegexExtractor.match_number">1</stringProp>
  64732. </RegexExtractor>
  64733. <hashTree/>
  64734. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  64735. <collectionProp name="Asserion.test_strings">
  64736. <stringProp name="2845929">^.+$</stringProp>
  64737. </collectionProp>
  64738. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  64739. <boolProp name="Assertion.assume_success">false</boolProp>
  64740. <intProp name="Assertion.test_type">1</intProp>
  64741. <stringProp name="Assertion.scope">variable</stringProp>
  64742. <stringProp name="Scope.variable">admin_form_key</stringProp>
  64743. </ResponseAssertion>
  64744. <hashTree/>
  64745. </hashTree>
  64746. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  64747. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64748. <collectionProp name="Arguments.arguments">
  64749. <elementProp name="dummy" elementType="HTTPArgument">
  64750. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64751. <stringProp name="Argument.value"/>
  64752. <stringProp name="Argument.metadata">=</stringProp>
  64753. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64754. <stringProp name="Argument.name">dummy</stringProp>
  64755. </elementProp>
  64756. <elementProp name="form_key" elementType="HTTPArgument">
  64757. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64758. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  64759. <stringProp name="Argument.metadata">=</stringProp>
  64760. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64761. <stringProp name="Argument.name">form_key</stringProp>
  64762. </elementProp>
  64763. <elementProp name="login[password]" elementType="HTTPArgument">
  64764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64765. <stringProp name="Argument.value">${admin_password}</stringProp>
  64766. <stringProp name="Argument.metadata">=</stringProp>
  64767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64768. <stringProp name="Argument.name">login[password]</stringProp>
  64769. </elementProp>
  64770. <elementProp name="login[username]" elementType="HTTPArgument">
  64771. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64772. <stringProp name="Argument.value">${admin_user}</stringProp>
  64773. <stringProp name="Argument.metadata">=</stringProp>
  64774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64775. <stringProp name="Argument.name">login[username]</stringProp>
  64776. </elementProp>
  64777. </collectionProp>
  64778. </elementProp>
  64779. <stringProp name="HTTPSampler.domain"/>
  64780. <stringProp name="HTTPSampler.port"/>
  64781. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64782. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64783. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64784. <stringProp name="HTTPSampler.contentEncoding"/>
  64785. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  64786. <stringProp name="HTTPSampler.method">POST</stringProp>
  64787. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64788. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64789. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64790. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64791. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  64792. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64793. <stringProp name="HTTPSampler.embedded_url_re"/>
  64794. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  64795. </HTTPSamplerProxy>
  64796. <hashTree>
  64797. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  64798. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  64799. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  64800. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  64801. <stringProp name="RegexExtractor.template">$1$</stringProp>
  64802. <stringProp name="RegexExtractor.default"/>
  64803. <stringProp name="RegexExtractor.match_number">1</stringProp>
  64804. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  64805. <hashTree/>
  64806. </hashTree>
  64807. </hashTree>
  64808. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  64809. <stringProp name="script">
  64810. vars.put("gridEntityType" , "Product");
  64811. pagesCount = parseInt(vars.get("products_page_size")) || 20;
  64812. vars.put("grid_entity_page_size" , pagesCount);
  64813. vars.put("grid_namespace" , "product_listing");
  64814. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text"));
  64815. vars.put("grid_filter_field", "name");
  64816. // set sort fields and sort directions
  64817. vars.put("grid_sort_field_1", "name");
  64818. vars.put("grid_sort_field_2", "price");
  64819. vars.put("grid_sort_field_3", "attribute_set_id");
  64820. vars.put("grid_sort_order_1", "asc");
  64821. vars.put("grid_sort_order_2", "desc");
  64822. </stringProp>
  64823. <stringProp name="scriptLanguage">javascript</stringProp>
  64824. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_products_grid/setup.jmx</stringProp></JSR223PostProcessor>
  64825. <hashTree/>
  64826. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  64827. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  64828. </GenericController>
  64829. <hashTree>
  64830. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  64831. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64832. <collectionProp name="Arguments.arguments">
  64833. <elementProp name="namespace" elementType="HTTPArgument">
  64834. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64835. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  64836. <stringProp name="Argument.metadata">=</stringProp>
  64837. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64838. <stringProp name="Argument.name">namespace</stringProp>
  64839. <stringProp name="Argument.desc">true</stringProp>
  64840. </elementProp>
  64841. <elementProp name="search" elementType="HTTPArgument">
  64842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64843. <stringProp name="Argument.value"/>
  64844. <stringProp name="Argument.metadata">=</stringProp>
  64845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64846. <stringProp name="Argument.name">search</stringProp>
  64847. <stringProp name="Argument.desc">true</stringProp>
  64848. </elementProp>
  64849. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  64850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64851. <stringProp name="Argument.value">true</stringProp>
  64852. <stringProp name="Argument.metadata">=</stringProp>
  64853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64854. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  64855. <stringProp name="Argument.desc">true</stringProp>
  64856. </elementProp>
  64857. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  64858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64859. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  64860. <stringProp name="Argument.metadata">=</stringProp>
  64861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64862. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  64863. <stringProp name="Argument.desc">true</stringProp>
  64864. </elementProp>
  64865. <elementProp name="paging[current]" elementType="HTTPArgument">
  64866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64867. <stringProp name="Argument.value">1</stringProp>
  64868. <stringProp name="Argument.metadata">=</stringProp>
  64869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64870. <stringProp name="Argument.name">paging[current]</stringProp>
  64871. <stringProp name="Argument.desc">true</stringProp>
  64872. </elementProp>
  64873. <elementProp name="sorting[field]" elementType="HTTPArgument">
  64874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64875. <stringProp name="Argument.value">entity_id</stringProp>
  64876. <stringProp name="Argument.metadata">=</stringProp>
  64877. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64878. <stringProp name="Argument.name">sorting[field]</stringProp>
  64879. <stringProp name="Argument.desc">true</stringProp>
  64880. </elementProp>
  64881. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  64882. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64883. <stringProp name="Argument.value">asc</stringProp>
  64884. <stringProp name="Argument.metadata">=</stringProp>
  64885. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64886. <stringProp name="Argument.name">sorting[direction]</stringProp>
  64887. <stringProp name="Argument.desc">true</stringProp>
  64888. </elementProp>
  64889. <elementProp name="isAjax" elementType="HTTPArgument">
  64890. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64891. <stringProp name="Argument.value">true</stringProp>
  64892. <stringProp name="Argument.metadata">=</stringProp>
  64893. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64894. <stringProp name="Argument.name">isAjax</stringProp>
  64895. <stringProp name="Argument.desc">true</stringProp>
  64896. </elementProp>
  64897. </collectionProp>
  64898. </elementProp>
  64899. <stringProp name="HTTPSampler.domain"/>
  64900. <stringProp name="HTTPSampler.port"/>
  64901. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  64902. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  64903. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  64904. <stringProp name="HTTPSampler.contentEncoding"/>
  64905. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  64906. <stringProp name="HTTPSampler.method">GET</stringProp>
  64907. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  64908. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  64909. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  64910. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  64911. <boolProp name="HTTPSampler.monitor">false</boolProp>
  64912. <stringProp name="HTTPSampler.embedded_url_re"/>
  64913. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  64914. <hashTree>
  64915. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  64916. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  64917. <stringProp name="EXPECTED_VALUE">0</stringProp>
  64918. <boolProp name="JSONVALIDATION">true</boolProp>
  64919. <boolProp name="EXPECT_NULL">false</boolProp>
  64920. <boolProp name="INVERT">true</boolProp>
  64921. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  64922. <hashTree/>
  64923. <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 total records" enabled="true">
  64924. <stringProp name="VAR">entity_total_records</stringProp>
  64925. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  64926. <stringProp name="DEFAULT"/>
  64927. <stringProp name="VARIABLE"/>
  64928. <stringProp name="SUBJECT">BODY</stringProp>
  64929. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  64930. <hashTree/>
  64931. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  64932. <stringProp name="cacheKey"/>
  64933. <stringProp name="filename"/>
  64934. <stringProp name="parameters"/>
  64935. <stringProp name="script">
  64936. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  64937. var totalsRecord = parseInt(vars.get("entity_total_records"));
  64938. var pageCount = Math.round(totalsRecord/pageSize);
  64939. vars.put("grid_pages_count", pageCount);
  64940. </stringProp>
  64941. <stringProp name="scriptLanguage">javascript</stringProp>
  64942. </JSR223PostProcessor>
  64943. <hashTree/>
  64944. </hashTree>
  64945. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  64946. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  64947. <collectionProp name="Arguments.arguments">
  64948. <elementProp name="namespace" elementType="HTTPArgument">
  64949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64950. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  64951. <stringProp name="Argument.metadata">=</stringProp>
  64952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64953. <stringProp name="Argument.name">namespace</stringProp>
  64954. <stringProp name="Argument.desc">true</stringProp>
  64955. </elementProp>
  64956. <elementProp name="search" elementType="HTTPArgument">
  64957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64958. <stringProp name="Argument.value"/>
  64959. <stringProp name="Argument.metadata">=</stringProp>
  64960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64961. <stringProp name="Argument.name">search</stringProp>
  64962. <stringProp name="Argument.desc">true</stringProp>
  64963. </elementProp>
  64964. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  64965. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64966. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  64967. <stringProp name="Argument.metadata">=</stringProp>
  64968. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64969. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  64970. <stringProp name="Argument.desc">true</stringProp>
  64971. </elementProp>
  64972. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  64973. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64974. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  64975. <stringProp name="Argument.metadata">=</stringProp>
  64976. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64977. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  64978. <stringProp name="Argument.desc">true</stringProp>
  64979. </elementProp>
  64980. <elementProp name="paging[current]" elementType="HTTPArgument">
  64981. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64982. <stringProp name="Argument.value">1</stringProp>
  64983. <stringProp name="Argument.metadata">=</stringProp>
  64984. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64985. <stringProp name="Argument.name">paging[current]</stringProp>
  64986. <stringProp name="Argument.desc">true</stringProp>
  64987. </elementProp>
  64988. <elementProp name="sorting[field]" elementType="HTTPArgument">
  64989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64990. <stringProp name="Argument.value">entity_id</stringProp>
  64991. <stringProp name="Argument.metadata">=</stringProp>
  64992. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  64993. <stringProp name="Argument.name">sorting[field]</stringProp>
  64994. <stringProp name="Argument.desc">true</stringProp>
  64995. </elementProp>
  64996. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  64997. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  64998. <stringProp name="Argument.value">asc</stringProp>
  64999. <stringProp name="Argument.metadata">=</stringProp>
  65000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65001. <stringProp name="Argument.name">sorting[direction]</stringProp>
  65002. <stringProp name="Argument.desc">true</stringProp>
  65003. </elementProp>
  65004. <elementProp name="isAjax" elementType="HTTPArgument">
  65005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65006. <stringProp name="Argument.value">true</stringProp>
  65007. <stringProp name="Argument.metadata">=</stringProp>
  65008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65009. <stringProp name="Argument.name">isAjax</stringProp>
  65010. <stringProp name="Argument.desc">true</stringProp>
  65011. </elementProp>
  65012. </collectionProp>
  65013. </elementProp>
  65014. <stringProp name="HTTPSampler.domain"/>
  65015. <stringProp name="HTTPSampler.port"/>
  65016. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65017. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65018. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65019. <stringProp name="HTTPSampler.contentEncoding"/>
  65020. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  65021. <stringProp name="HTTPSampler.method">GET</stringProp>
  65022. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65023. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65024. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65025. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65026. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65027. <stringProp name="HTTPSampler.embedded_url_re"/>
  65028. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  65029. <hashTree>
  65030. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  65031. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  65032. <stringProp name="EXPECTED_VALUE">0</stringProp>
  65033. <boolProp name="JSONVALIDATION">true</boolProp>
  65034. <boolProp name="EXPECT_NULL">false</boolProp>
  65035. <boolProp name="INVERT">true</boolProp>
  65036. <boolProp name="ISREGEX">true</boolProp>
  65037. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  65038. <hashTree/>
  65039. <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 total records" enabled="true">
  65040. <stringProp name="VAR">entity_total_records</stringProp>
  65041. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  65042. <stringProp name="DEFAULT"/>
  65043. <stringProp name="VARIABLE"/>
  65044. <stringProp name="SUBJECT">BODY</stringProp>
  65045. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  65046. <hashTree/>
  65047. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  65048. <stringProp name="parameters"/>
  65049. <stringProp name="filename"/>
  65050. <stringProp name="script">
  65051. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  65052. var totalsRecord = parseInt(vars.get("entity_total_records"));
  65053. var pageCount = Math.round(totalsRecord/pageSize);
  65054. vars.put("grid_pages_count_filtered", pageCount);
  65055. </stringProp>
  65056. <stringProp name="scriptLanguage">javascript</stringProp>
  65057. </JSR223PostProcessor>
  65058. <hashTree/>
  65059. </hashTree>
  65060. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  65061. <stringProp name="CounterConfig.start">1</stringProp>
  65062. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  65063. <stringProp name="CounterConfig.incr">1</stringProp>
  65064. <stringProp name="CounterConfig.name">page_number</stringProp>
  65065. <stringProp name="CounterConfig.format"/>
  65066. <boolProp name="CounterConfig.per_user">true</boolProp>
  65067. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  65068. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  65069. <hashTree/>
  65070. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  65071. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65072. <collectionProp name="Arguments.arguments">
  65073. <elementProp name="namespace" elementType="HTTPArgument">
  65074. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65075. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  65076. <stringProp name="Argument.metadata">=</stringProp>
  65077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65078. <stringProp name="Argument.name">namespace</stringProp>
  65079. <stringProp name="Argument.desc">true</stringProp>
  65080. </elementProp>
  65081. <elementProp name="search" elementType="HTTPArgument">
  65082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65083. <stringProp name="Argument.value"/>
  65084. <stringProp name="Argument.metadata">=</stringProp>
  65085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65086. <stringProp name="Argument.name">search</stringProp>
  65087. <stringProp name="Argument.desc">true</stringProp>
  65088. </elementProp>
  65089. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  65090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65091. <stringProp name="Argument.value">true</stringProp>
  65092. <stringProp name="Argument.metadata">=</stringProp>
  65093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65094. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  65095. <stringProp name="Argument.desc">true</stringProp>
  65096. </elementProp>
  65097. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  65098. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65099. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  65100. <stringProp name="Argument.metadata">=</stringProp>
  65101. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65102. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  65103. <stringProp name="Argument.desc">true</stringProp>
  65104. </elementProp>
  65105. <elementProp name="paging[current]" elementType="HTTPArgument">
  65106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65107. <stringProp name="Argument.value">${page_number}</stringProp>
  65108. <stringProp name="Argument.metadata">=</stringProp>
  65109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65110. <stringProp name="Argument.name">paging[current]</stringProp>
  65111. <stringProp name="Argument.desc">true</stringProp>
  65112. </elementProp>
  65113. <elementProp name="sorting[field]" elementType="HTTPArgument">
  65114. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65115. <stringProp name="Argument.value">entity_id</stringProp>
  65116. <stringProp name="Argument.metadata">=</stringProp>
  65117. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65118. <stringProp name="Argument.name">sorting[field]</stringProp>
  65119. <stringProp name="Argument.desc">true</stringProp>
  65120. </elementProp>
  65121. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  65122. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65123. <stringProp name="Argument.value">asc</stringProp>
  65124. <stringProp name="Argument.metadata">=</stringProp>
  65125. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65126. <stringProp name="Argument.name">sorting[direction]</stringProp>
  65127. <stringProp name="Argument.desc">true</stringProp>
  65128. </elementProp>
  65129. <elementProp name="isAjax" elementType="HTTPArgument">
  65130. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65131. <stringProp name="Argument.value">true</stringProp>
  65132. <stringProp name="Argument.metadata">=</stringProp>
  65133. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65134. <stringProp name="Argument.name">isAjax</stringProp>
  65135. <stringProp name="Argument.desc">true</stringProp>
  65136. </elementProp>
  65137. </collectionProp>
  65138. </elementProp>
  65139. <stringProp name="HTTPSampler.domain"/>
  65140. <stringProp name="HTTPSampler.port"/>
  65141. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65142. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65143. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65144. <stringProp name="HTTPSampler.contentEncoding"/>
  65145. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  65146. <stringProp name="HTTPSampler.method">GET</stringProp>
  65147. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65148. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65149. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65150. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65151. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65152. <stringProp name="HTTPSampler.embedded_url_re"/>
  65153. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  65154. <hashTree>
  65155. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  65156. <collectionProp name="Asserion.test_strings">
  65157. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  65158. </collectionProp>
  65159. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  65160. <boolProp name="Assertion.assume_success">false</boolProp>
  65161. <intProp name="Assertion.test_type">2</intProp>
  65162. </ResponseAssertion>
  65163. <hashTree/>
  65164. </hashTree>
  65165. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  65166. <stringProp name="CounterConfig.start">1</stringProp>
  65167. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  65168. <stringProp name="CounterConfig.incr">1</stringProp>
  65169. <stringProp name="CounterConfig.name">page_number</stringProp>
  65170. <stringProp name="CounterConfig.format"/>
  65171. <boolProp name="CounterConfig.per_user">true</boolProp>
  65172. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  65173. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  65174. <hashTree/>
  65175. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  65176. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  65177. </TestFragmentController>
  65178. <hashTree>
  65179. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  65180. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  65181. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  65182. <boolProp name="ForeachController.useSeparator">true</boolProp>
  65183. <stringProp name="ForeachController.startIndex">0</stringProp>
  65184. <stringProp name="ForeachController.endIndex">3</stringProp>
  65185. </ForeachController>
  65186. <hashTree>
  65187. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  65188. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  65189. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  65190. <boolProp name="ForeachController.useSeparator">true</boolProp>
  65191. <stringProp name="ForeachController.startIndex">0</stringProp>
  65192. <stringProp name="ForeachController.endIndex">2</stringProp>
  65193. </ForeachController>
  65194. <hashTree>
  65195. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  65196. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65197. <collectionProp name="Arguments.arguments">
  65198. <elementProp name="namespace" elementType="HTTPArgument">
  65199. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65200. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  65201. <stringProp name="Argument.metadata">=</stringProp>
  65202. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65203. <stringProp name="Argument.name">namespace</stringProp>
  65204. <stringProp name="Argument.desc">false</stringProp>
  65205. </elementProp>
  65206. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  65207. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65208. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  65209. <stringProp name="Argument.metadata">=</stringProp>
  65210. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65211. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  65212. <stringProp name="Argument.desc">false</stringProp>
  65213. </elementProp>
  65214. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  65215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65216. <stringProp name="Argument.value">true</stringProp>
  65217. <stringProp name="Argument.metadata">=</stringProp>
  65218. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65219. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  65220. <stringProp name="Argument.desc">false</stringProp>
  65221. </elementProp>
  65222. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  65223. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65224. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  65225. <stringProp name="Argument.metadata">=</stringProp>
  65226. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65227. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  65228. <stringProp name="Argument.desc">false</stringProp>
  65229. </elementProp>
  65230. <elementProp name="paging[current]" elementType="HTTPArgument">
  65231. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65232. <stringProp name="Argument.value">${page_number}</stringProp>
  65233. <stringProp name="Argument.metadata">=</stringProp>
  65234. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65235. <stringProp name="Argument.name">paging[current]</stringProp>
  65236. <stringProp name="Argument.desc">false</stringProp>
  65237. </elementProp>
  65238. <elementProp name="sorting[field]" elementType="HTTPArgument">
  65239. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65240. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  65241. <stringProp name="Argument.metadata">=</stringProp>
  65242. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65243. <stringProp name="Argument.name">sorting[field]</stringProp>
  65244. <stringProp name="Argument.desc">false</stringProp>
  65245. </elementProp>
  65246. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  65247. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65248. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  65249. <stringProp name="Argument.metadata">=</stringProp>
  65250. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65251. <stringProp name="Argument.name">sorting[direction]</stringProp>
  65252. <stringProp name="Argument.desc">false</stringProp>
  65253. </elementProp>
  65254. <elementProp name="isAjax" elementType="HTTPArgument">
  65255. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65256. <stringProp name="Argument.value">true</stringProp>
  65257. <stringProp name="Argument.metadata">=</stringProp>
  65258. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65259. <stringProp name="Argument.name">isAjax</stringProp>
  65260. <stringProp name="Argument.desc">false</stringProp>
  65261. </elementProp>
  65262. </collectionProp>
  65263. </elementProp>
  65264. <stringProp name="HTTPSampler.domain"/>
  65265. <stringProp name="HTTPSampler.port"/>
  65266. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65267. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65268. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65269. <stringProp name="HTTPSampler.contentEncoding"/>
  65270. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  65271. <stringProp name="HTTPSampler.method">GET</stringProp>
  65272. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65273. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65274. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65275. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65276. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65277. <stringProp name="HTTPSampler.embedded_url_re"/>
  65278. </HTTPSamplerProxy>
  65279. <hashTree>
  65280. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  65281. <collectionProp name="Asserion.test_strings">
  65282. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  65283. </collectionProp>
  65284. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  65285. <boolProp name="Assertion.assume_success">false</boolProp>
  65286. <intProp name="Assertion.test_type">2</intProp>
  65287. </ResponseAssertion>
  65288. <hashTree/>
  65289. </hashTree>
  65290. </hashTree>
  65291. </hashTree>
  65292. </hashTree>
  65293. </hashTree>
  65294. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  65295. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65296. <collectionProp name="Arguments.arguments"/>
  65297. </elementProp>
  65298. <stringProp name="HTTPSampler.domain"/>
  65299. <stringProp name="HTTPSampler.port"/>
  65300. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65301. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65302. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65303. <stringProp name="HTTPSampler.contentEncoding"/>
  65304. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  65305. <stringProp name="HTTPSampler.method">GET</stringProp>
  65306. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65307. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65308. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65309. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65310. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65311. <stringProp name="HTTPSampler.embedded_url_re"/>
  65312. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  65313. <hashTree>
  65314. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  65315. <boolProp name="resetInterpreter">false</boolProp>
  65316. <stringProp name="parameters"/>
  65317. <stringProp name="filename"/>
  65318. <stringProp name="script">
  65319. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  65320. if (adminUsersDistribution == 1) {
  65321. adminUserList = props.get("adminUserList");
  65322. adminUserList.add(vars.get("admin_user"));
  65323. }
  65324. </stringProp>
  65325. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  65326. <hashTree/>
  65327. </hashTree>
  65328. </hashTree>
  65329. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Browse Order Grid" enabled="true">
  65330. <intProp name="ThroughputController.style">1</intProp>
  65331. <boolProp name="ThroughputController.perThread">false</boolProp>
  65332. <intProp name="ThroughputController.maxThroughput">1</intProp>
  65333. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseOrderGridPercentage}</stringProp>
  65334. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  65335. <hashTree>
  65336. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  65337. <stringProp name="script">
  65338. var tmpLabel = vars.get("testLabel")
  65339. if (tmpLabel) {
  65340. var testLabel = " (" + tmpLabel + ")"
  65341. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  65342. if (sampler.getName().indexOf(testLabel) == -1) {
  65343. sampler.setName(sampler.getName() + testLabel);
  65344. }
  65345. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  65346. sampler.setName("SetUp - " + sampler.getName());
  65347. }
  65348. } else {
  65349. testLabel = ""
  65350. }
  65351. </stringProp>
  65352. <stringProp name="scriptLanguage">javascript</stringProp>
  65353. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  65354. <hashTree/>
  65355. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  65356. <stringProp name="BeanShellSampler.query">
  65357. vars.put("testLabel", "[GraphQL C] Admin Browse Order Grid");
  65358. </stringProp>
  65359. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  65360. </BeanShellSampler>
  65361. <hashTree/>
  65362. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  65363. <stringProp name="script">
  65364. function getFormKeyFromResponse()
  65365. {
  65366. var url = prev.getUrlAsString(),
  65367. responseCode = prev.getResponseCode(),
  65368. formKey = null;
  65369. searchPattern = /var FORM_KEY = '(.+)'/;
  65370. if (responseCode == "200" &amp;&amp; url) {
  65371. response = prev.getResponseDataAsString();
  65372. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  65373. }
  65374. return formKey;
  65375. }
  65376. formKey = vars.get("form_key_storage");
  65377. currentFormKey = getFormKeyFromResponse();
  65378. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  65379. vars.put("form_key_storage", currentFormKey);
  65380. }
  65381. </stringProp>
  65382. <stringProp name="scriptLanguage">javascript</stringProp>
  65383. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  65384. <hashTree/>
  65385. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  65386. <stringProp name="script">
  65387. formKey = vars.get("form_key_storage");
  65388. if (formKey
  65389. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  65390. &amp;&amp; sampler.getMethod() == "POST")
  65391. {
  65392. arguments = sampler.getArguments();
  65393. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  65394. {
  65395. argument = arguments.getArgument(i);
  65396. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  65397. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  65398. argument.setValue(formKey);
  65399. }
  65400. }
  65401. }
  65402. </stringProp>
  65403. <stringProp name="scriptLanguage">javascript</stringProp>
  65404. </JSR223PreProcessor>
  65405. <hashTree/>
  65406. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  65407. <collectionProp name="CookieManager.cookies"/>
  65408. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  65409. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  65410. <hashTree/>
  65411. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  65412. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  65413. </GenericController>
  65414. <hashTree>
  65415. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  65416. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  65417. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  65418. <hashTree>
  65419. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  65420. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  65421. <stringProp name="BeanShellSampler.query">
  65422. adminUser = "none";
  65423. adminUserList = props.get("adminUserList");
  65424. adminUserListIterator = props.get("adminUserListIterator");
  65425. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  65426. if (adminUsersDistribution == 1) {
  65427. adminUser = adminUserList.poll();
  65428. } else {
  65429. if (!adminUserListIterator.hasNext()) {
  65430. adminUserListIterator = adminUserList.descendingIterator();
  65431. }
  65432. adminUser = adminUserListIterator.next();
  65433. }
  65434. if (adminUser == "none") {
  65435. SampleResult.setResponseMessage("adminUser list is empty");
  65436. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  65437. IsSuccess=false;
  65438. SampleResult.setSuccessful(false);
  65439. SampleResult.setStopThread(true);
  65440. }
  65441. vars.put("admin_user", adminUser);
  65442. </stringProp>
  65443. <stringProp name="BeanShellSampler.filename"/>
  65444. <stringProp name="BeanShellSampler.parameters"/>
  65445. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  65446. </BeanShellSampler>
  65447. <hashTree/>
  65448. </hashTree>
  65449. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  65450. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65451. <collectionProp name="Arguments.arguments"/>
  65452. </elementProp>
  65453. <stringProp name="HTTPSampler.domain"/>
  65454. <stringProp name="HTTPSampler.port"/>
  65455. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65456. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65457. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65458. <stringProp name="HTTPSampler.contentEncoding"/>
  65459. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  65460. <stringProp name="HTTPSampler.method">GET</stringProp>
  65461. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65462. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65463. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65464. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65465. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65466. <stringProp name="HTTPSampler.embedded_url_re"/>
  65467. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  65468. <hashTree>
  65469. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  65470. <collectionProp name="Asserion.test_strings">
  65471. <stringProp name="-1397214398">Welcome</stringProp>
  65472. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  65473. </collectionProp>
  65474. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  65475. <boolProp name="Assertion.assume_success">false</boolProp>
  65476. <intProp name="Assertion.test_type">2</intProp>
  65477. </ResponseAssertion>
  65478. <hashTree/>
  65479. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  65480. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  65481. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  65482. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  65483. <stringProp name="RegexExtractor.template">$1$</stringProp>
  65484. <stringProp name="RegexExtractor.default"/>
  65485. <stringProp name="RegexExtractor.match_number">1</stringProp>
  65486. </RegexExtractor>
  65487. <hashTree/>
  65488. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  65489. <collectionProp name="Asserion.test_strings">
  65490. <stringProp name="2845929">^.+$</stringProp>
  65491. </collectionProp>
  65492. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  65493. <boolProp name="Assertion.assume_success">false</boolProp>
  65494. <intProp name="Assertion.test_type">1</intProp>
  65495. <stringProp name="Assertion.scope">variable</stringProp>
  65496. <stringProp name="Scope.variable">admin_form_key</stringProp>
  65497. </ResponseAssertion>
  65498. <hashTree/>
  65499. </hashTree>
  65500. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  65501. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65502. <collectionProp name="Arguments.arguments">
  65503. <elementProp name="dummy" elementType="HTTPArgument">
  65504. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65505. <stringProp name="Argument.value"/>
  65506. <stringProp name="Argument.metadata">=</stringProp>
  65507. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65508. <stringProp name="Argument.name">dummy</stringProp>
  65509. </elementProp>
  65510. <elementProp name="form_key" elementType="HTTPArgument">
  65511. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65512. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  65513. <stringProp name="Argument.metadata">=</stringProp>
  65514. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65515. <stringProp name="Argument.name">form_key</stringProp>
  65516. </elementProp>
  65517. <elementProp name="login[password]" elementType="HTTPArgument">
  65518. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65519. <stringProp name="Argument.value">${admin_password}</stringProp>
  65520. <stringProp name="Argument.metadata">=</stringProp>
  65521. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65522. <stringProp name="Argument.name">login[password]</stringProp>
  65523. </elementProp>
  65524. <elementProp name="login[username]" elementType="HTTPArgument">
  65525. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65526. <stringProp name="Argument.value">${admin_user}</stringProp>
  65527. <stringProp name="Argument.metadata">=</stringProp>
  65528. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65529. <stringProp name="Argument.name">login[username]</stringProp>
  65530. </elementProp>
  65531. </collectionProp>
  65532. </elementProp>
  65533. <stringProp name="HTTPSampler.domain"/>
  65534. <stringProp name="HTTPSampler.port"/>
  65535. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65536. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65537. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65538. <stringProp name="HTTPSampler.contentEncoding"/>
  65539. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  65540. <stringProp name="HTTPSampler.method">POST</stringProp>
  65541. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65542. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65543. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65544. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65545. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  65546. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65547. <stringProp name="HTTPSampler.embedded_url_re"/>
  65548. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  65549. </HTTPSamplerProxy>
  65550. <hashTree>
  65551. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  65552. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  65553. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  65554. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  65555. <stringProp name="RegexExtractor.template">$1$</stringProp>
  65556. <stringProp name="RegexExtractor.default"/>
  65557. <stringProp name="RegexExtractor.match_number">1</stringProp>
  65558. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  65559. <hashTree/>
  65560. </hashTree>
  65561. </hashTree>
  65562. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  65563. <stringProp name="script">
  65564. vars.put("gridEntityType" , "Order");
  65565. pagesCount = parseInt(vars.get("orders_page_size")) || 20;
  65566. vars.put("grid_entity_page_size" , pagesCount);
  65567. vars.put("grid_namespace" , "sales_order_grid");
  65568. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text"));
  65569. vars.put("grid_filter_field", "status");
  65570. // set sort fields and sort directions
  65571. vars.put("grid_sort_field_1", "increment_id");
  65572. vars.put("grid_sort_field_2", "created_at");
  65573. vars.put("grid_sort_field_3", "billing_name");
  65574. vars.put("grid_sort_order_1", "asc");
  65575. vars.put("grid_sort_order_2", "desc");
  65576. </stringProp>
  65577. <stringProp name="scriptLanguage">javascript</stringProp>
  65578. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_orders_grid/setup.jmx</stringProp></JSR223PostProcessor>
  65579. <hashTree/>
  65580. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  65581. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  65582. </GenericController>
  65583. <hashTree>
  65584. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  65585. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65586. <collectionProp name="Arguments.arguments">
  65587. <elementProp name="namespace" elementType="HTTPArgument">
  65588. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65589. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  65590. <stringProp name="Argument.metadata">=</stringProp>
  65591. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65592. <stringProp name="Argument.name">namespace</stringProp>
  65593. <stringProp name="Argument.desc">true</stringProp>
  65594. </elementProp>
  65595. <elementProp name="search" elementType="HTTPArgument">
  65596. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65597. <stringProp name="Argument.value"/>
  65598. <stringProp name="Argument.metadata">=</stringProp>
  65599. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65600. <stringProp name="Argument.name">search</stringProp>
  65601. <stringProp name="Argument.desc">true</stringProp>
  65602. </elementProp>
  65603. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  65604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65605. <stringProp name="Argument.value">true</stringProp>
  65606. <stringProp name="Argument.metadata">=</stringProp>
  65607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65608. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  65609. <stringProp name="Argument.desc">true</stringProp>
  65610. </elementProp>
  65611. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  65612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65613. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  65614. <stringProp name="Argument.metadata">=</stringProp>
  65615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65616. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  65617. <stringProp name="Argument.desc">true</stringProp>
  65618. </elementProp>
  65619. <elementProp name="paging[current]" elementType="HTTPArgument">
  65620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65621. <stringProp name="Argument.value">1</stringProp>
  65622. <stringProp name="Argument.metadata">=</stringProp>
  65623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65624. <stringProp name="Argument.name">paging[current]</stringProp>
  65625. <stringProp name="Argument.desc">true</stringProp>
  65626. </elementProp>
  65627. <elementProp name="sorting[field]" elementType="HTTPArgument">
  65628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65629. <stringProp name="Argument.value">entity_id</stringProp>
  65630. <stringProp name="Argument.metadata">=</stringProp>
  65631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65632. <stringProp name="Argument.name">sorting[field]</stringProp>
  65633. <stringProp name="Argument.desc">true</stringProp>
  65634. </elementProp>
  65635. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  65636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65637. <stringProp name="Argument.value">asc</stringProp>
  65638. <stringProp name="Argument.metadata">=</stringProp>
  65639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65640. <stringProp name="Argument.name">sorting[direction]</stringProp>
  65641. <stringProp name="Argument.desc">true</stringProp>
  65642. </elementProp>
  65643. <elementProp name="isAjax" elementType="HTTPArgument">
  65644. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65645. <stringProp name="Argument.value">true</stringProp>
  65646. <stringProp name="Argument.metadata">=</stringProp>
  65647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65648. <stringProp name="Argument.name">isAjax</stringProp>
  65649. <stringProp name="Argument.desc">true</stringProp>
  65650. </elementProp>
  65651. </collectionProp>
  65652. </elementProp>
  65653. <stringProp name="HTTPSampler.domain"/>
  65654. <stringProp name="HTTPSampler.port"/>
  65655. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65656. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65657. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65658. <stringProp name="HTTPSampler.contentEncoding"/>
  65659. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  65660. <stringProp name="HTTPSampler.method">GET</stringProp>
  65661. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65662. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65663. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65664. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65665. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65666. <stringProp name="HTTPSampler.embedded_url_re"/>
  65667. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  65668. <hashTree>
  65669. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  65670. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  65671. <stringProp name="EXPECTED_VALUE">0</stringProp>
  65672. <boolProp name="JSONVALIDATION">true</boolProp>
  65673. <boolProp name="EXPECT_NULL">false</boolProp>
  65674. <boolProp name="INVERT">true</boolProp>
  65675. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  65676. <hashTree/>
  65677. <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 total records" enabled="true">
  65678. <stringProp name="VAR">entity_total_records</stringProp>
  65679. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  65680. <stringProp name="DEFAULT"/>
  65681. <stringProp name="VARIABLE"/>
  65682. <stringProp name="SUBJECT">BODY</stringProp>
  65683. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  65684. <hashTree/>
  65685. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  65686. <stringProp name="cacheKey"/>
  65687. <stringProp name="filename"/>
  65688. <stringProp name="parameters"/>
  65689. <stringProp name="script">
  65690. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  65691. var totalsRecord = parseInt(vars.get("entity_total_records"));
  65692. var pageCount = Math.round(totalsRecord/pageSize);
  65693. vars.put("grid_pages_count", pageCount);
  65694. </stringProp>
  65695. <stringProp name="scriptLanguage">javascript</stringProp>
  65696. </JSR223PostProcessor>
  65697. <hashTree/>
  65698. </hashTree>
  65699. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  65700. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65701. <collectionProp name="Arguments.arguments">
  65702. <elementProp name="namespace" elementType="HTTPArgument">
  65703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65704. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  65705. <stringProp name="Argument.metadata">=</stringProp>
  65706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65707. <stringProp name="Argument.name">namespace</stringProp>
  65708. <stringProp name="Argument.desc">true</stringProp>
  65709. </elementProp>
  65710. <elementProp name="search" elementType="HTTPArgument">
  65711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65712. <stringProp name="Argument.value"/>
  65713. <stringProp name="Argument.metadata">=</stringProp>
  65714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65715. <stringProp name="Argument.name">search</stringProp>
  65716. <stringProp name="Argument.desc">true</stringProp>
  65717. </elementProp>
  65718. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  65719. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65720. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  65721. <stringProp name="Argument.metadata">=</stringProp>
  65722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65723. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  65724. <stringProp name="Argument.desc">true</stringProp>
  65725. </elementProp>
  65726. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  65727. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65728. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  65729. <stringProp name="Argument.metadata">=</stringProp>
  65730. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65731. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  65732. <stringProp name="Argument.desc">true</stringProp>
  65733. </elementProp>
  65734. <elementProp name="paging[current]" elementType="HTTPArgument">
  65735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65736. <stringProp name="Argument.value">1</stringProp>
  65737. <stringProp name="Argument.metadata">=</stringProp>
  65738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65739. <stringProp name="Argument.name">paging[current]</stringProp>
  65740. <stringProp name="Argument.desc">true</stringProp>
  65741. </elementProp>
  65742. <elementProp name="sorting[field]" elementType="HTTPArgument">
  65743. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65744. <stringProp name="Argument.value">entity_id</stringProp>
  65745. <stringProp name="Argument.metadata">=</stringProp>
  65746. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65747. <stringProp name="Argument.name">sorting[field]</stringProp>
  65748. <stringProp name="Argument.desc">true</stringProp>
  65749. </elementProp>
  65750. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  65751. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65752. <stringProp name="Argument.value">asc</stringProp>
  65753. <stringProp name="Argument.metadata">=</stringProp>
  65754. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65755. <stringProp name="Argument.name">sorting[direction]</stringProp>
  65756. <stringProp name="Argument.desc">true</stringProp>
  65757. </elementProp>
  65758. <elementProp name="isAjax" elementType="HTTPArgument">
  65759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65760. <stringProp name="Argument.value">true</stringProp>
  65761. <stringProp name="Argument.metadata">=</stringProp>
  65762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65763. <stringProp name="Argument.name">isAjax</stringProp>
  65764. <stringProp name="Argument.desc">true</stringProp>
  65765. </elementProp>
  65766. </collectionProp>
  65767. </elementProp>
  65768. <stringProp name="HTTPSampler.domain"/>
  65769. <stringProp name="HTTPSampler.port"/>
  65770. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65771. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65772. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65773. <stringProp name="HTTPSampler.contentEncoding"/>
  65774. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  65775. <stringProp name="HTTPSampler.method">GET</stringProp>
  65776. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65777. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65778. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65779. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65780. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65781. <stringProp name="HTTPSampler.embedded_url_re"/>
  65782. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  65783. <hashTree>
  65784. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  65785. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  65786. <stringProp name="EXPECTED_VALUE">0</stringProp>
  65787. <boolProp name="JSONVALIDATION">true</boolProp>
  65788. <boolProp name="EXPECT_NULL">false</boolProp>
  65789. <boolProp name="INVERT">true</boolProp>
  65790. <boolProp name="ISREGEX">true</boolProp>
  65791. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  65792. <hashTree/>
  65793. <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 total records" enabled="true">
  65794. <stringProp name="VAR">entity_total_records</stringProp>
  65795. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  65796. <stringProp name="DEFAULT"/>
  65797. <stringProp name="VARIABLE"/>
  65798. <stringProp name="SUBJECT">BODY</stringProp>
  65799. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  65800. <hashTree/>
  65801. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  65802. <stringProp name="parameters"/>
  65803. <stringProp name="filename"/>
  65804. <stringProp name="script">
  65805. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  65806. var totalsRecord = parseInt(vars.get("entity_total_records"));
  65807. var pageCount = Math.round(totalsRecord/pageSize);
  65808. vars.put("grid_pages_count_filtered", pageCount);
  65809. </stringProp>
  65810. <stringProp name="scriptLanguage">javascript</stringProp>
  65811. </JSR223PostProcessor>
  65812. <hashTree/>
  65813. </hashTree>
  65814. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  65815. <stringProp name="CounterConfig.start">1</stringProp>
  65816. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  65817. <stringProp name="CounterConfig.incr">1</stringProp>
  65818. <stringProp name="CounterConfig.name">page_number</stringProp>
  65819. <stringProp name="CounterConfig.format"/>
  65820. <boolProp name="CounterConfig.per_user">true</boolProp>
  65821. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  65822. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  65823. <hashTree/>
  65824. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  65825. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65826. <collectionProp name="Arguments.arguments">
  65827. <elementProp name="namespace" elementType="HTTPArgument">
  65828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65829. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  65830. <stringProp name="Argument.metadata">=</stringProp>
  65831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65832. <stringProp name="Argument.name">namespace</stringProp>
  65833. <stringProp name="Argument.desc">true</stringProp>
  65834. </elementProp>
  65835. <elementProp name="search" elementType="HTTPArgument">
  65836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65837. <stringProp name="Argument.value"/>
  65838. <stringProp name="Argument.metadata">=</stringProp>
  65839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65840. <stringProp name="Argument.name">search</stringProp>
  65841. <stringProp name="Argument.desc">true</stringProp>
  65842. </elementProp>
  65843. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  65844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65845. <stringProp name="Argument.value">true</stringProp>
  65846. <stringProp name="Argument.metadata">=</stringProp>
  65847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65848. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  65849. <stringProp name="Argument.desc">true</stringProp>
  65850. </elementProp>
  65851. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  65852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65853. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  65854. <stringProp name="Argument.metadata">=</stringProp>
  65855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65856. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  65857. <stringProp name="Argument.desc">true</stringProp>
  65858. </elementProp>
  65859. <elementProp name="paging[current]" elementType="HTTPArgument">
  65860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65861. <stringProp name="Argument.value">${page_number}</stringProp>
  65862. <stringProp name="Argument.metadata">=</stringProp>
  65863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65864. <stringProp name="Argument.name">paging[current]</stringProp>
  65865. <stringProp name="Argument.desc">true</stringProp>
  65866. </elementProp>
  65867. <elementProp name="sorting[field]" elementType="HTTPArgument">
  65868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65869. <stringProp name="Argument.value">entity_id</stringProp>
  65870. <stringProp name="Argument.metadata">=</stringProp>
  65871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65872. <stringProp name="Argument.name">sorting[field]</stringProp>
  65873. <stringProp name="Argument.desc">true</stringProp>
  65874. </elementProp>
  65875. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  65876. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65877. <stringProp name="Argument.value">asc</stringProp>
  65878. <stringProp name="Argument.metadata">=</stringProp>
  65879. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65880. <stringProp name="Argument.name">sorting[direction]</stringProp>
  65881. <stringProp name="Argument.desc">true</stringProp>
  65882. </elementProp>
  65883. <elementProp name="isAjax" elementType="HTTPArgument">
  65884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65885. <stringProp name="Argument.value">true</stringProp>
  65886. <stringProp name="Argument.metadata">=</stringProp>
  65887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65888. <stringProp name="Argument.name">isAjax</stringProp>
  65889. <stringProp name="Argument.desc">true</stringProp>
  65890. </elementProp>
  65891. </collectionProp>
  65892. </elementProp>
  65893. <stringProp name="HTTPSampler.domain"/>
  65894. <stringProp name="HTTPSampler.port"/>
  65895. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  65896. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  65897. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  65898. <stringProp name="HTTPSampler.contentEncoding"/>
  65899. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  65900. <stringProp name="HTTPSampler.method">GET</stringProp>
  65901. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  65902. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  65903. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  65904. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  65905. <boolProp name="HTTPSampler.monitor">false</boolProp>
  65906. <stringProp name="HTTPSampler.embedded_url_re"/>
  65907. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  65908. <hashTree>
  65909. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  65910. <collectionProp name="Asserion.test_strings">
  65911. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  65912. </collectionProp>
  65913. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  65914. <boolProp name="Assertion.assume_success">false</boolProp>
  65915. <intProp name="Assertion.test_type">2</intProp>
  65916. </ResponseAssertion>
  65917. <hashTree/>
  65918. </hashTree>
  65919. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  65920. <stringProp name="CounterConfig.start">1</stringProp>
  65921. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  65922. <stringProp name="CounterConfig.incr">1</stringProp>
  65923. <stringProp name="CounterConfig.name">page_number</stringProp>
  65924. <stringProp name="CounterConfig.format"/>
  65925. <boolProp name="CounterConfig.per_user">true</boolProp>
  65926. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  65927. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  65928. <hashTree/>
  65929. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  65930. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  65931. </TestFragmentController>
  65932. <hashTree>
  65933. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  65934. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  65935. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  65936. <boolProp name="ForeachController.useSeparator">true</boolProp>
  65937. <stringProp name="ForeachController.startIndex">0</stringProp>
  65938. <stringProp name="ForeachController.endIndex">3</stringProp>
  65939. </ForeachController>
  65940. <hashTree>
  65941. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  65942. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  65943. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  65944. <boolProp name="ForeachController.useSeparator">true</boolProp>
  65945. <stringProp name="ForeachController.startIndex">0</stringProp>
  65946. <stringProp name="ForeachController.endIndex">2</stringProp>
  65947. </ForeachController>
  65948. <hashTree>
  65949. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  65950. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  65951. <collectionProp name="Arguments.arguments">
  65952. <elementProp name="namespace" elementType="HTTPArgument">
  65953. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65954. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  65955. <stringProp name="Argument.metadata">=</stringProp>
  65956. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65957. <stringProp name="Argument.name">namespace</stringProp>
  65958. <stringProp name="Argument.desc">false</stringProp>
  65959. </elementProp>
  65960. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  65961. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65962. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  65963. <stringProp name="Argument.metadata">=</stringProp>
  65964. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65965. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  65966. <stringProp name="Argument.desc">false</stringProp>
  65967. </elementProp>
  65968. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  65969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65970. <stringProp name="Argument.value">true</stringProp>
  65971. <stringProp name="Argument.metadata">=</stringProp>
  65972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65973. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  65974. <stringProp name="Argument.desc">false</stringProp>
  65975. </elementProp>
  65976. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  65977. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65978. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  65979. <stringProp name="Argument.metadata">=</stringProp>
  65980. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65981. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  65982. <stringProp name="Argument.desc">false</stringProp>
  65983. </elementProp>
  65984. <elementProp name="paging[current]" elementType="HTTPArgument">
  65985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65986. <stringProp name="Argument.value">${page_number}</stringProp>
  65987. <stringProp name="Argument.metadata">=</stringProp>
  65988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65989. <stringProp name="Argument.name">paging[current]</stringProp>
  65990. <stringProp name="Argument.desc">false</stringProp>
  65991. </elementProp>
  65992. <elementProp name="sorting[field]" elementType="HTTPArgument">
  65993. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  65994. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  65995. <stringProp name="Argument.metadata">=</stringProp>
  65996. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  65997. <stringProp name="Argument.name">sorting[field]</stringProp>
  65998. <stringProp name="Argument.desc">false</stringProp>
  65999. </elementProp>
  66000. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  66001. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66002. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  66003. <stringProp name="Argument.metadata">=</stringProp>
  66004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66005. <stringProp name="Argument.name">sorting[direction]</stringProp>
  66006. <stringProp name="Argument.desc">false</stringProp>
  66007. </elementProp>
  66008. <elementProp name="isAjax" elementType="HTTPArgument">
  66009. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66010. <stringProp name="Argument.value">true</stringProp>
  66011. <stringProp name="Argument.metadata">=</stringProp>
  66012. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66013. <stringProp name="Argument.name">isAjax</stringProp>
  66014. <stringProp name="Argument.desc">false</stringProp>
  66015. </elementProp>
  66016. </collectionProp>
  66017. </elementProp>
  66018. <stringProp name="HTTPSampler.domain"/>
  66019. <stringProp name="HTTPSampler.port"/>
  66020. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66021. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66022. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66023. <stringProp name="HTTPSampler.contentEncoding"/>
  66024. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  66025. <stringProp name="HTTPSampler.method">GET</stringProp>
  66026. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66027. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66028. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66029. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66030. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66031. <stringProp name="HTTPSampler.embedded_url_re"/>
  66032. </HTTPSamplerProxy>
  66033. <hashTree>
  66034. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  66035. <collectionProp name="Asserion.test_strings">
  66036. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  66037. </collectionProp>
  66038. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  66039. <boolProp name="Assertion.assume_success">false</boolProp>
  66040. <intProp name="Assertion.test_type">2</intProp>
  66041. </ResponseAssertion>
  66042. <hashTree/>
  66043. </hashTree>
  66044. </hashTree>
  66045. </hashTree>
  66046. </hashTree>
  66047. </hashTree>
  66048. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  66049. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66050. <collectionProp name="Arguments.arguments"/>
  66051. </elementProp>
  66052. <stringProp name="HTTPSampler.domain"/>
  66053. <stringProp name="HTTPSampler.port"/>
  66054. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66055. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66056. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66057. <stringProp name="HTTPSampler.contentEncoding"/>
  66058. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  66059. <stringProp name="HTTPSampler.method">GET</stringProp>
  66060. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66061. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66062. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66063. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66064. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66065. <stringProp name="HTTPSampler.embedded_url_re"/>
  66066. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  66067. <hashTree>
  66068. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  66069. <boolProp name="resetInterpreter">false</boolProp>
  66070. <stringProp name="parameters"/>
  66071. <stringProp name="filename"/>
  66072. <stringProp name="script">
  66073. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  66074. if (adminUsersDistribution == 1) {
  66075. adminUserList = props.get("adminUserList");
  66076. adminUserList.add(vars.get("admin_user"));
  66077. }
  66078. </stringProp>
  66079. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  66080. <hashTree/>
  66081. </hashTree>
  66082. </hashTree>
  66083. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Create Product" enabled="true">
  66084. <intProp name="ThroughputController.style">1</intProp>
  66085. <boolProp name="ThroughputController.perThread">false</boolProp>
  66086. <intProp name="ThroughputController.maxThroughput">1</intProp>
  66087. <stringProp name="ThroughputController.percentThroughput">${cAdminProductCreationPercentage}</stringProp>
  66088. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  66089. <hashTree>
  66090. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  66091. <stringProp name="script">
  66092. var tmpLabel = vars.get("testLabel")
  66093. if (tmpLabel) {
  66094. var testLabel = " (" + tmpLabel + ")"
  66095. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  66096. if (sampler.getName().indexOf(testLabel) == -1) {
  66097. sampler.setName(sampler.getName() + testLabel);
  66098. }
  66099. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  66100. sampler.setName("SetUp - " + sampler.getName());
  66101. }
  66102. } else {
  66103. testLabel = ""
  66104. }
  66105. </stringProp>
  66106. <stringProp name="scriptLanguage">javascript</stringProp>
  66107. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  66108. <hashTree/>
  66109. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  66110. <stringProp name="BeanShellSampler.query">
  66111. vars.put("testLabel", "[GraphQL C] Admin Create Product");
  66112. </stringProp>
  66113. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  66114. </BeanShellSampler>
  66115. <hashTree/>
  66116. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  66117. <stringProp name="script">
  66118. function getFormKeyFromResponse()
  66119. {
  66120. var url = prev.getUrlAsString(),
  66121. responseCode = prev.getResponseCode(),
  66122. formKey = null;
  66123. searchPattern = /var FORM_KEY = '(.+)'/;
  66124. if (responseCode == "200" &amp;&amp; url) {
  66125. response = prev.getResponseDataAsString();
  66126. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  66127. }
  66128. return formKey;
  66129. }
  66130. formKey = vars.get("form_key_storage");
  66131. currentFormKey = getFormKeyFromResponse();
  66132. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  66133. vars.put("form_key_storage", currentFormKey);
  66134. }
  66135. </stringProp>
  66136. <stringProp name="scriptLanguage">javascript</stringProp>
  66137. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  66138. <hashTree/>
  66139. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  66140. <stringProp name="script">
  66141. formKey = vars.get("form_key_storage");
  66142. if (formKey
  66143. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  66144. &amp;&amp; sampler.getMethod() == "POST")
  66145. {
  66146. arguments = sampler.getArguments();
  66147. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  66148. {
  66149. argument = arguments.getArgument(i);
  66150. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  66151. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  66152. argument.setValue(formKey);
  66153. }
  66154. }
  66155. }
  66156. </stringProp>
  66157. <stringProp name="scriptLanguage">javascript</stringProp>
  66158. </JSR223PreProcessor>
  66159. <hashTree/>
  66160. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  66161. <collectionProp name="CookieManager.cookies"/>
  66162. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  66163. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  66164. <hashTree/>
  66165. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  66166. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  66167. </GenericController>
  66168. <hashTree>
  66169. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  66170. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  66171. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  66172. <hashTree>
  66173. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  66174. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  66175. <stringProp name="BeanShellSampler.query">
  66176. adminUser = "none";
  66177. adminUserList = props.get("adminUserList");
  66178. adminUserListIterator = props.get("adminUserListIterator");
  66179. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  66180. if (adminUsersDistribution == 1) {
  66181. adminUser = adminUserList.poll();
  66182. } else {
  66183. if (!adminUserListIterator.hasNext()) {
  66184. adminUserListIterator = adminUserList.descendingIterator();
  66185. }
  66186. adminUser = adminUserListIterator.next();
  66187. }
  66188. if (adminUser == "none") {
  66189. SampleResult.setResponseMessage("adminUser list is empty");
  66190. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  66191. IsSuccess=false;
  66192. SampleResult.setSuccessful(false);
  66193. SampleResult.setStopThread(true);
  66194. }
  66195. vars.put("admin_user", adminUser);
  66196. </stringProp>
  66197. <stringProp name="BeanShellSampler.filename"/>
  66198. <stringProp name="BeanShellSampler.parameters"/>
  66199. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  66200. </BeanShellSampler>
  66201. <hashTree/>
  66202. </hashTree>
  66203. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  66204. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66205. <collectionProp name="Arguments.arguments"/>
  66206. </elementProp>
  66207. <stringProp name="HTTPSampler.domain"/>
  66208. <stringProp name="HTTPSampler.port"/>
  66209. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66210. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66211. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66212. <stringProp name="HTTPSampler.contentEncoding"/>
  66213. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  66214. <stringProp name="HTTPSampler.method">GET</stringProp>
  66215. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66216. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66217. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66218. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66219. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66220. <stringProp name="HTTPSampler.embedded_url_re"/>
  66221. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  66222. <hashTree>
  66223. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  66224. <collectionProp name="Asserion.test_strings">
  66225. <stringProp name="-1397214398">Welcome</stringProp>
  66226. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  66227. </collectionProp>
  66228. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  66229. <boolProp name="Assertion.assume_success">false</boolProp>
  66230. <intProp name="Assertion.test_type">2</intProp>
  66231. </ResponseAssertion>
  66232. <hashTree/>
  66233. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  66234. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  66235. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  66236. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  66237. <stringProp name="RegexExtractor.template">$1$</stringProp>
  66238. <stringProp name="RegexExtractor.default"/>
  66239. <stringProp name="RegexExtractor.match_number">1</stringProp>
  66240. </RegexExtractor>
  66241. <hashTree/>
  66242. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  66243. <collectionProp name="Asserion.test_strings">
  66244. <stringProp name="2845929">^.+$</stringProp>
  66245. </collectionProp>
  66246. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  66247. <boolProp name="Assertion.assume_success">false</boolProp>
  66248. <intProp name="Assertion.test_type">1</intProp>
  66249. <stringProp name="Assertion.scope">variable</stringProp>
  66250. <stringProp name="Scope.variable">admin_form_key</stringProp>
  66251. </ResponseAssertion>
  66252. <hashTree/>
  66253. </hashTree>
  66254. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  66255. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66256. <collectionProp name="Arguments.arguments">
  66257. <elementProp name="dummy" elementType="HTTPArgument">
  66258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66259. <stringProp name="Argument.value"/>
  66260. <stringProp name="Argument.metadata">=</stringProp>
  66261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66262. <stringProp name="Argument.name">dummy</stringProp>
  66263. </elementProp>
  66264. <elementProp name="form_key" elementType="HTTPArgument">
  66265. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66266. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  66267. <stringProp name="Argument.metadata">=</stringProp>
  66268. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66269. <stringProp name="Argument.name">form_key</stringProp>
  66270. </elementProp>
  66271. <elementProp name="login[password]" elementType="HTTPArgument">
  66272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66273. <stringProp name="Argument.value">${admin_password}</stringProp>
  66274. <stringProp name="Argument.metadata">=</stringProp>
  66275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66276. <stringProp name="Argument.name">login[password]</stringProp>
  66277. </elementProp>
  66278. <elementProp name="login[username]" elementType="HTTPArgument">
  66279. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66280. <stringProp name="Argument.value">${admin_user}</stringProp>
  66281. <stringProp name="Argument.metadata">=</stringProp>
  66282. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66283. <stringProp name="Argument.name">login[username]</stringProp>
  66284. </elementProp>
  66285. </collectionProp>
  66286. </elementProp>
  66287. <stringProp name="HTTPSampler.domain"/>
  66288. <stringProp name="HTTPSampler.port"/>
  66289. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66290. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66291. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66292. <stringProp name="HTTPSampler.contentEncoding"/>
  66293. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  66294. <stringProp name="HTTPSampler.method">POST</stringProp>
  66295. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66296. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66297. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66298. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66299. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  66300. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66301. <stringProp name="HTTPSampler.embedded_url_re"/>
  66302. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  66303. </HTTPSamplerProxy>
  66304. <hashTree>
  66305. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  66306. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  66307. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  66308. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  66309. <stringProp name="RegexExtractor.template">$1$</stringProp>
  66310. <stringProp name="RegexExtractor.default"/>
  66311. <stringProp name="RegexExtractor.match_number">1</stringProp>
  66312. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  66313. <hashTree/>
  66314. </hashTree>
  66315. </hashTree>
  66316. <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
  66317. <stringProp name="TestPlan.comments">tool/fragments/ce/once_only_controller.jmx</stringProp>
  66318. </OnceOnlyController>
  66319. <hashTree>
  66320. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Related Product Id" enabled="true">
  66321. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_related_product_id.jmx</stringProp>
  66322. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  66323. import java.util.Random;
  66324. Random random = new Random();
  66325. if (${seedForRandom} &gt; 0) {
  66326. random.setSeed(${seedForRandom});
  66327. }
  66328. relatedIndex = random.nextInt(props.get("simple_products_list").size());
  66329. vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));</stringProp>
  66330. <stringProp name="BeanShellSampler.filename"/>
  66331. <stringProp name="BeanShellSampler.parameters"/>
  66332. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  66333. </BeanShellSampler>
  66334. <hashTree/>
  66335. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Product Attributes" enabled="true">
  66336. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  66337. </GenericController>
  66338. <hashTree>
  66339. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  66340. <collectionProp name="HeaderManager.headers">
  66341. <elementProp name="" elementType="Header">
  66342. <stringProp name="Header.name">Content-Type</stringProp>
  66343. <stringProp name="Header.value">application/json</stringProp>
  66344. </elementProp>
  66345. <elementProp name="" elementType="Header">
  66346. <stringProp name="Header.name">Accept</stringProp>
  66347. <stringProp name="Header.value">*/*</stringProp>
  66348. </elementProp>
  66349. </collectionProp>
  66350. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  66351. <hashTree/>
  66352. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  66353. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  66354. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  66355. <collectionProp name="Arguments.arguments">
  66356. <elementProp name="" elementType="HTTPArgument">
  66357. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  66358. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  66359. <stringProp name="Argument.metadata">=</stringProp>
  66360. </elementProp>
  66361. </collectionProp>
  66362. </elementProp>
  66363. <stringProp name="HTTPSampler.domain"/>
  66364. <stringProp name="HTTPSampler.port"/>
  66365. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66366. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66367. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66368. <stringProp name="HTTPSampler.contentEncoding"/>
  66369. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  66370. <stringProp name="HTTPSampler.method">POST</stringProp>
  66371. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66372. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66373. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66374. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66375. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66376. <stringProp name="HTTPSampler.embedded_url_re"/>
  66377. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  66378. <hashTree>
  66379. <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">
  66380. <stringProp name="VAR">admin_token</stringProp>
  66381. <stringProp name="JSONPATH">$</stringProp>
  66382. <stringProp name="DEFAULT"/>
  66383. <stringProp name="VARIABLE"/>
  66384. <stringProp name="SUBJECT">BODY</stringProp>
  66385. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  66386. <hashTree/>
  66387. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  66388. <collectionProp name="Asserion.test_strings">
  66389. <stringProp name="484395188">^.{10,}$</stringProp>
  66390. </collectionProp>
  66391. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  66392. <boolProp name="Assertion.assume_success">false</boolProp>
  66393. <intProp name="Assertion.test_type">1</intProp>
  66394. <stringProp name="Assertion.scope">variable</stringProp>
  66395. <stringProp name="Scope.variable">admin_token</stringProp>
  66396. </ResponseAssertion>
  66397. <hashTree/>
  66398. </hashTree>
  66399. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  66400. <collectionProp name="HeaderManager.headers">
  66401. <elementProp name="" elementType="Header">
  66402. <stringProp name="Header.name">Authorization</stringProp>
  66403. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  66404. </elementProp>
  66405. </collectionProp>
  66406. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  66407. <hashTree/>
  66408. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get product attributes" enabled="true">
  66409. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66410. <collectionProp name="Arguments.arguments">
  66411. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  66412. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  66413. <stringProp name="Argument.value">mycolor</stringProp>
  66414. <stringProp name="Argument.metadata">=</stringProp>
  66415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66416. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  66417. </elementProp>
  66418. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  66419. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  66420. <stringProp name="Argument.value">attribute_code</stringProp>
  66421. <stringProp name="Argument.metadata">=</stringProp>
  66422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66423. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  66424. </elementProp>
  66425. <elementProp name="searchCriteria[filterGroups][0][filters][1][value]" elementType="HTTPArgument">
  66426. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  66427. <stringProp name="Argument.value">mysize</stringProp>
  66428. <stringProp name="Argument.metadata">=</stringProp>
  66429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66430. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][value]</stringProp>
  66431. </elementProp>
  66432. <elementProp name="searchCriteria[filterGroups][0][filters][1][field]" elementType="HTTPArgument">
  66433. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  66434. <stringProp name="Argument.value">attribute_code</stringProp>
  66435. <stringProp name="Argument.metadata">=</stringProp>
  66436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66437. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][field]</stringProp>
  66438. </elementProp>
  66439. </collectionProp>
  66440. </elementProp>
  66441. <stringProp name="HTTPSampler.domain"/>
  66442. <stringProp name="HTTPSampler.port"/>
  66443. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66444. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66445. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66446. <stringProp name="HTTPSampler.contentEncoding"/>
  66447. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes</stringProp>
  66448. <stringProp name="HTTPSampler.method">GET</stringProp>
  66449. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66450. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66451. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66452. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66453. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66454. <stringProp name="HTTPSampler.embedded_url_re"/>
  66455. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_product_attributes.jmx</stringProp></HTTPSamplerProxy>
  66456. <hashTree>
  66457. <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 product attributes" enabled="true">
  66458. <stringProp name="VAR">product_attributes</stringProp>
  66459. <stringProp name="JSONPATH">$.items</stringProp>
  66460. <stringProp name="DEFAULT"/>
  66461. <stringProp name="VARIABLE"/>
  66462. <stringProp name="SUBJECT">BODY</stringProp>
  66463. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  66464. <hashTree/>
  66465. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="SetUp - Prepare product attributes" enabled="true">
  66466. <stringProp name="scriptLanguage">javascript</stringProp>
  66467. <stringProp name="parameters"/>
  66468. <stringProp name="filename"/>
  66469. <stringProp name="cacheKey"/>
  66470. <stringProp name="script">
  66471. var attributesData = JSON.parse(vars.get("product_attributes")),
  66472. maxOptions = 2;
  66473. attributes = [];
  66474. for (i in attributesData) {
  66475. if (i &gt;= 2) {
  66476. break;
  66477. }
  66478. var data = attributesData[i],
  66479. attribute = {
  66480. "id": data.attribute_id,
  66481. "code": data.attribute_code,
  66482. "label": data.default_frontend_label,
  66483. "options": []
  66484. };
  66485. var processedOptions = 0;
  66486. for (optionN in data.options) {
  66487. var option = data.options[optionN];
  66488. if (parseInt(option.value) &gt; 0 &amp;&amp; processedOptions &lt; maxOptions) {
  66489. processedOptions++;
  66490. attribute.options.push(option);
  66491. }
  66492. }
  66493. attributes.push(attribute);
  66494. }
  66495. vars.putObject("product_attributes", attributes);
  66496. </stringProp>
  66497. </JSR223PostProcessor>
  66498. <hashTree/>
  66499. </hashTree>
  66500. </hashTree>
  66501. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Attribute Set Id" enabled="true">
  66502. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66503. <collectionProp name="Arguments.arguments"/>
  66504. </elementProp>
  66505. <stringProp name="HTTPSampler.domain"/>
  66506. <stringProp name="HTTPSampler.port"/>
  66507. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66508. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66509. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66510. <stringProp name="HTTPSampler.contentEncoding"/>
  66511. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter}</stringProp>
  66512. <stringProp name="HTTPSampler.method">GET</stringProp>
  66513. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66514. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66515. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66516. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66517. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66518. <stringProp name="HTTPSampler.embedded_url_re"/>
  66519. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx</stringProp>
  66520. </HTTPSamplerProxy>
  66521. <hashTree>
  66522. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  66523. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  66524. <stringProp name="RegexExtractor.refname">attribute_set_id</stringProp>
  66525. <stringProp name="RegexExtractor.regex">catalog&amp;#x2F;product_set&amp;#x2F;edit&amp;#x2F;id&amp;#x2F;([\d]+)&amp;#x2F;"[\D\d]*Attribute Set 1</stringProp>
  66526. <stringProp name="RegexExtractor.template">$1$</stringProp>
  66527. <stringProp name="RegexExtractor.default"/>
  66528. <stringProp name="RegexExtractor.match_number">1</stringProp>
  66529. </RegexExtractor>
  66530. <hashTree/>
  66531. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="SetUp - Set Attribute Set Filter" enabled="true">
  66532. <boolProp name="resetInterpreter">false</boolProp>
  66533. <stringProp name="parameters"/>
  66534. <stringProp name="filename"/>
  66535. <stringProp name="script">import org.apache.commons.codec.binary.Base64;
  66536. byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes());
  66537. vars.put("attribute_set_filter", new String(encodedBytes));
  66538. </stringProp>
  66539. </BeanShellPreProcessor>
  66540. <hashTree/>
  66541. </hashTree>
  66542. </hashTree>
  66543. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  66544. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  66545. </GenericController>
  66546. <hashTree>
  66547. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  66548. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  66549. import java.util.Random;
  66550. Random random = new Random();
  66551. int number1;
  66552. if (${seedForRandom} &gt; 0) {
  66553. random.setSeed(${seedForRandom});
  66554. }
  66555. number = random.nextInt(props.get("simple_products_list_for_edit").size());
  66556. simpleList = props.get("simple_products_list_for_edit").get(number);
  66557. vars.put("simple_product_1_id", simpleList.get("id"));
  66558. vars.put("simple_product_1_name", simpleList.get("title"));
  66559. do {
  66560. number1 = random.nextInt(props.get("simple_products_list_for_edit").size());
  66561. } while(number == number1);
  66562. simpleList = props.get("simple_products_list_for_edit").get(number1);
  66563. vars.put("simple_product_2_id", simpleList.get("id"));
  66564. vars.put("simple_product_2_name", simpleList.get("title"));
  66565. number2 = random.nextInt(props.get("configurable_products_list").size());
  66566. configurableList = props.get("configurable_products_list").get(number2);
  66567. vars.put("configurable_product_1_id", configurableList.get("id"));
  66568. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  66569. vars.put("configurable_product_1_name", configurableList.get("title"));
  66570. //Additional category to be added
  66571. //int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  66572. //vars.put("category_additional", (categoryId+1).toString());
  66573. //New price
  66574. vars.put("price_new", "9999");
  66575. //New special price
  66576. vars.put("special_price_new", "8888");
  66577. //New quantity
  66578. vars.put("quantity_new", "100600");
  66579. vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}");
  66580. </stringProp>
  66581. <stringProp name="BeanShellSampler.filename"/>
  66582. <stringProp name="BeanShellSampler.parameters"/>
  66583. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  66584. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/setup.jmx</stringProp></BeanShellSampler>
  66585. <hashTree/>
  66586. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Bundle Product" enabled="true">
  66587. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_bundle_product.jmx</stringProp>
  66588. </TestFragmentController>
  66589. <hashTree>
  66590. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  66591. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66592. <collectionProp name="Arguments.arguments"/>
  66593. </elementProp>
  66594. <stringProp name="HTTPSampler.domain"/>
  66595. <stringProp name="HTTPSampler.port"/>
  66596. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66597. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66598. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66599. <stringProp name="HTTPSampler.contentEncoding"/>
  66600. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  66601. <stringProp name="HTTPSampler.method">GET</stringProp>
  66602. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66603. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66604. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66605. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66606. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66607. <stringProp name="HTTPSampler.embedded_url_re"/>
  66608. </HTTPSamplerProxy>
  66609. <hashTree>
  66610. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  66611. <collectionProp name="Asserion.test_strings">
  66612. <stringProp name="1509986340">records found</stringProp>
  66613. </collectionProp>
  66614. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  66615. <boolProp name="Assertion.assume_success">false</boolProp>
  66616. <intProp name="Assertion.test_type">2</intProp>
  66617. </ResponseAssertion>
  66618. <hashTree/>
  66619. </hashTree>
  66620. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product" enabled="true">
  66621. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66622. <collectionProp name="Arguments.arguments"/>
  66623. </elementProp>
  66624. <stringProp name="HTTPSampler.domain"/>
  66625. <stringProp name="HTTPSampler.port"/>
  66626. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  66627. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  66628. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  66629. <stringProp name="HTTPSampler.contentEncoding"/>
  66630. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/</stringProp>
  66631. <stringProp name="HTTPSampler.method">GET</stringProp>
  66632. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  66633. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  66634. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  66635. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  66636. <boolProp name="HTTPSampler.monitor">false</boolProp>
  66637. <stringProp name="HTTPSampler.embedded_url_re"/>
  66638. </HTTPSamplerProxy>
  66639. <hashTree>
  66640. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  66641. <collectionProp name="Asserion.test_strings">
  66642. <stringProp name="-144461265">New Product</stringProp>
  66643. </collectionProp>
  66644. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  66645. <boolProp name="Assertion.assume_success">false</boolProp>
  66646. <intProp name="Assertion.test_type">2</intProp>
  66647. </ResponseAssertion>
  66648. <hashTree/>
  66649. </hashTree>
  66650. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Validate" enabled="true">
  66651. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  66652. <collectionProp name="Arguments.arguments">
  66653. <elementProp name="ajax" elementType="HTTPArgument">
  66654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66655. <stringProp name="Argument.value">true</stringProp>
  66656. <stringProp name="Argument.metadata">=</stringProp>
  66657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66658. <stringProp name="Argument.name">ajax</stringProp>
  66659. <stringProp name="Argument.desc">false</stringProp>
  66660. </elementProp>
  66661. <elementProp name="isAjax" elementType="HTTPArgument">
  66662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66663. <stringProp name="Argument.value">true</stringProp>
  66664. <stringProp name="Argument.metadata">=</stringProp>
  66665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66666. <stringProp name="Argument.name">isAjax</stringProp>
  66667. <stringProp name="Argument.desc">false</stringProp>
  66668. </elementProp>
  66669. <elementProp name="form_key" elementType="HTTPArgument">
  66670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66671. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  66672. <stringProp name="Argument.metadata">=</stringProp>
  66673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66674. <stringProp name="Argument.name">form_key</stringProp>
  66675. <stringProp name="Argument.desc">false</stringProp>
  66676. </elementProp>
  66677. <elementProp name="product[name]" elementType="HTTPArgument">
  66678. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66679. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  66680. <stringProp name="Argument.metadata">=</stringProp>
  66681. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66682. <stringProp name="Argument.name">product[name]</stringProp>
  66683. <stringProp name="Argument.desc">false</stringProp>
  66684. </elementProp>
  66685. <elementProp name="product[sku]" elementType="HTTPArgument">
  66686. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66687. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  66688. <stringProp name="Argument.metadata">=</stringProp>
  66689. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66690. <stringProp name="Argument.name">product[sku]</stringProp>
  66691. <stringProp name="Argument.desc">false</stringProp>
  66692. </elementProp>
  66693. <elementProp name="product[price]" elementType="HTTPArgument">
  66694. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66695. <stringProp name="Argument.value">42</stringProp>
  66696. <stringProp name="Argument.metadata">=</stringProp>
  66697. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66698. <stringProp name="Argument.name">product[price]</stringProp>
  66699. </elementProp>
  66700. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  66701. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66702. <stringProp name="Argument.value">2</stringProp>
  66703. <stringProp name="Argument.metadata">=</stringProp>
  66704. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66705. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  66706. </elementProp>
  66707. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  66708. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66709. <stringProp name="Argument.value">111</stringProp>
  66710. <stringProp name="Argument.metadata">=</stringProp>
  66711. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66712. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  66713. </elementProp>
  66714. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  66715. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66716. <stringProp name="Argument.value">1</stringProp>
  66717. <stringProp name="Argument.metadata">=</stringProp>
  66718. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66719. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  66720. </elementProp>
  66721. <elementProp name="product[weight]" elementType="HTTPArgument">
  66722. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66723. <stringProp name="Argument.value">1.0000</stringProp>
  66724. <stringProp name="Argument.metadata">=</stringProp>
  66725. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66726. <stringProp name="Argument.name">product[weight]</stringProp>
  66727. </elementProp>
  66728. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  66729. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66730. <stringProp name="Argument.value">1</stringProp>
  66731. <stringProp name="Argument.metadata">=</stringProp>
  66732. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66733. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  66734. <stringProp name="Argument.desc">true</stringProp>
  66735. </elementProp>
  66736. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  66737. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66738. <stringProp name="Argument.value">2</stringProp>
  66739. <stringProp name="Argument.metadata">=</stringProp>
  66740. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66741. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  66742. </elementProp>
  66743. <elementProp name="product[description]" elementType="HTTPArgument">
  66744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66745. <stringProp name="Argument.value">&lt;p&gt;Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  66746. <stringProp name="Argument.metadata">=</stringProp>
  66747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66748. <stringProp name="Argument.name">product[description]</stringProp>
  66749. </elementProp>
  66750. <elementProp name="product[short_description]" elementType="HTTPArgument">
  66751. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66752. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  66753. <stringProp name="Argument.metadata">=</stringProp>
  66754. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66755. <stringProp name="Argument.name">product[short_description]</stringProp>
  66756. </elementProp>
  66757. <elementProp name="product[status]" elementType="HTTPArgument">
  66758. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66759. <stringProp name="Argument.value">1</stringProp>
  66760. <stringProp name="Argument.metadata">=</stringProp>
  66761. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66762. <stringProp name="Argument.name">product[status]</stringProp>
  66763. </elementProp>
  66764. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  66765. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66766. <stringProp name="Argument.value"/>
  66767. <stringProp name="Argument.metadata">=</stringProp>
  66768. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66769. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  66770. </elementProp>
  66771. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  66772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66773. <stringProp name="Argument.value">1</stringProp>
  66774. <stringProp name="Argument.metadata">=</stringProp>
  66775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66776. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  66777. </elementProp>
  66778. <elementProp name="product[image]" elementType="HTTPArgument">
  66779. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66780. <stringProp name="Argument.value"/>
  66781. <stringProp name="Argument.metadata">=</stringProp>
  66782. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66783. <stringProp name="Argument.name">product[image]</stringProp>
  66784. </elementProp>
  66785. <elementProp name="product[small_image]" elementType="HTTPArgument">
  66786. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66787. <stringProp name="Argument.value"/>
  66788. <stringProp name="Argument.metadata">=</stringProp>
  66789. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66790. <stringProp name="Argument.name">product[small_image]</stringProp>
  66791. </elementProp>
  66792. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  66793. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66794. <stringProp name="Argument.value"/>
  66795. <stringProp name="Argument.metadata">=</stringProp>
  66796. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66797. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  66798. </elementProp>
  66799. <elementProp name="product[url_key]" elementType="HTTPArgument">
  66800. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66801. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  66802. <stringProp name="Argument.metadata">=</stringProp>
  66803. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66804. <stringProp name="Argument.name">product[url_key]</stringProp>
  66805. </elementProp>
  66806. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  66807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66808. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  66809. <stringProp name="Argument.metadata">=</stringProp>
  66810. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66811. <stringProp name="Argument.name">product[meta_title]</stringProp>
  66812. </elementProp>
  66813. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  66814. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66815. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  66816. <stringProp name="Argument.metadata">=</stringProp>
  66817. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66818. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  66819. </elementProp>
  66820. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  66821. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66822. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  66823. <stringProp name="Argument.metadata">=</stringProp>
  66824. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66825. <stringProp name="Argument.name">product[meta_description]</stringProp>
  66826. </elementProp>
  66827. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  66828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66829. <stringProp name="Argument.value">1</stringProp>
  66830. <stringProp name="Argument.metadata">=</stringProp>
  66831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66832. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  66833. </elementProp>
  66834. <elementProp name="product[special_price]" elementType="HTTPArgument">
  66835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66836. <stringProp name="Argument.value">99</stringProp>
  66837. <stringProp name="Argument.metadata">=</stringProp>
  66838. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66839. <stringProp name="Argument.name">product[special_price]</stringProp>
  66840. </elementProp>
  66841. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  66842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66843. <stringProp name="Argument.value">1</stringProp>
  66844. <stringProp name="Argument.metadata">=</stringProp>
  66845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66846. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  66847. </elementProp>
  66848. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  66849. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66850. <stringProp name="Argument.value"/>
  66851. <stringProp name="Argument.metadata">=</stringProp>
  66852. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66853. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  66854. </elementProp>
  66855. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  66856. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66857. <stringProp name="Argument.value"/>
  66858. <stringProp name="Argument.metadata">=</stringProp>
  66859. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66860. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  66861. </elementProp>
  66862. <elementProp name="product[cost]" elementType="HTTPArgument">
  66863. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66864. <stringProp name="Argument.value"/>
  66865. <stringProp name="Argument.metadata">=</stringProp>
  66866. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66867. <stringProp name="Argument.name">product[cost]</stringProp>
  66868. </elementProp>
  66869. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  66870. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66871. <stringProp name="Argument.value">0</stringProp>
  66872. <stringProp name="Argument.metadata">=</stringProp>
  66873. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66874. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  66875. </elementProp>
  66876. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  66877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66878. <stringProp name="Argument.value">32000</stringProp>
  66879. <stringProp name="Argument.metadata">=</stringProp>
  66880. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66881. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  66882. </elementProp>
  66883. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  66884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66885. <stringProp name="Argument.value">100</stringProp>
  66886. <stringProp name="Argument.metadata">=</stringProp>
  66887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66888. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  66889. </elementProp>
  66890. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  66891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66892. <stringProp name="Argument.value">90</stringProp>
  66893. <stringProp name="Argument.metadata">=</stringProp>
  66894. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66895. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  66896. </elementProp>
  66897. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  66898. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66899. <stringProp name="Argument.value"/>
  66900. <stringProp name="Argument.metadata">=</stringProp>
  66901. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66902. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  66903. </elementProp>
  66904. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  66905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66906. <stringProp name="Argument.value">0</stringProp>
  66907. <stringProp name="Argument.metadata">=</stringProp>
  66908. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66909. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  66910. </elementProp>
  66911. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  66912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66913. <stringProp name="Argument.value">1</stringProp>
  66914. <stringProp name="Argument.metadata">=</stringProp>
  66915. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66916. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  66917. </elementProp>
  66918. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  66919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66920. <stringProp name="Argument.value">101</stringProp>
  66921. <stringProp name="Argument.metadata">=</stringProp>
  66922. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66923. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  66924. </elementProp>
  66925. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  66926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66927. <stringProp name="Argument.value">99</stringProp>
  66928. <stringProp name="Argument.metadata">=</stringProp>
  66929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66930. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  66931. </elementProp>
  66932. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  66933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66934. <stringProp name="Argument.value"/>
  66935. <stringProp name="Argument.metadata">=</stringProp>
  66936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66937. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  66938. </elementProp>
  66939. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  66940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66941. <stringProp name="Argument.value">1</stringProp>
  66942. <stringProp name="Argument.metadata">=</stringProp>
  66943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66944. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  66945. </elementProp>
  66946. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  66947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66948. <stringProp name="Argument.value">100500</stringProp>
  66949. <stringProp name="Argument.metadata">=</stringProp>
  66950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66951. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  66952. </elementProp>
  66953. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  66954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66955. <stringProp name="Argument.value">100500</stringProp>
  66956. <stringProp name="Argument.metadata">=</stringProp>
  66957. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66958. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  66959. </elementProp>
  66960. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  66961. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66962. <stringProp name="Argument.value">0</stringProp>
  66963. <stringProp name="Argument.metadata">=</stringProp>
  66964. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66965. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  66966. </elementProp>
  66967. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  66968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66969. <stringProp name="Argument.value">1</stringProp>
  66970. <stringProp name="Argument.metadata">=</stringProp>
  66971. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66972. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  66973. </elementProp>
  66974. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  66975. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66976. <stringProp name="Argument.value">1</stringProp>
  66977. <stringProp name="Argument.metadata">=</stringProp>
  66978. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66979. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  66980. </elementProp>
  66981. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  66982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66983. <stringProp name="Argument.value">1</stringProp>
  66984. <stringProp name="Argument.metadata">=</stringProp>
  66985. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66986. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  66987. </elementProp>
  66988. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  66989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66990. <stringProp name="Argument.value">10000</stringProp>
  66991. <stringProp name="Argument.metadata">=</stringProp>
  66992. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  66993. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  66994. </elementProp>
  66995. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  66996. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  66997. <stringProp name="Argument.value">1</stringProp>
  66998. <stringProp name="Argument.metadata">=</stringProp>
  66999. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67000. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  67001. </elementProp>
  67002. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  67003. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67004. <stringProp name="Argument.value">0</stringProp>
  67005. <stringProp name="Argument.metadata">=</stringProp>
  67006. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67007. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  67008. </elementProp>
  67009. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  67010. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67011. <stringProp name="Argument.value">0</stringProp>
  67012. <stringProp name="Argument.metadata">=</stringProp>
  67013. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67014. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  67015. </elementProp>
  67016. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  67017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67018. <stringProp name="Argument.value">0</stringProp>
  67019. <stringProp name="Argument.metadata">=</stringProp>
  67020. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67021. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  67022. </elementProp>
  67023. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  67024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67025. <stringProp name="Argument.value">1</stringProp>
  67026. <stringProp name="Argument.metadata">=</stringProp>
  67027. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67028. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  67029. </elementProp>
  67030. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  67031. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67032. <stringProp name="Argument.value">1</stringProp>
  67033. <stringProp name="Argument.metadata">=</stringProp>
  67034. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67035. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  67036. </elementProp>
  67037. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  67038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67039. <stringProp name="Argument.value">0</stringProp>
  67040. <stringProp name="Argument.metadata">=</stringProp>
  67041. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67042. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  67043. </elementProp>
  67044. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  67045. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67046. <stringProp name="Argument.value">0</stringProp>
  67047. <stringProp name="Argument.metadata">=</stringProp>
  67048. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67049. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  67050. </elementProp>
  67051. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  67052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67053. <stringProp name="Argument.value">1</stringProp>
  67054. <stringProp name="Argument.metadata">=</stringProp>
  67055. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67056. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  67057. </elementProp>
  67058. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  67059. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67060. <stringProp name="Argument.value">1</stringProp>
  67061. <stringProp name="Argument.metadata">=</stringProp>
  67062. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67063. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  67064. </elementProp>
  67065. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  67066. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67067. <stringProp name="Argument.value"/>
  67068. <stringProp name="Argument.metadata">=</stringProp>
  67069. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67070. <stringProp name="Argument.name">product[custom_design]</stringProp>
  67071. </elementProp>
  67072. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  67073. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67074. <stringProp name="Argument.value"/>
  67075. <stringProp name="Argument.metadata">=</stringProp>
  67076. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67077. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  67078. </elementProp>
  67079. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  67080. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67081. <stringProp name="Argument.value"/>
  67082. <stringProp name="Argument.metadata">=</stringProp>
  67083. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67084. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  67085. </elementProp>
  67086. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  67087. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67088. <stringProp name="Argument.value"/>
  67089. <stringProp name="Argument.metadata">=</stringProp>
  67090. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67091. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  67092. </elementProp>
  67093. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  67094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67095. <stringProp name="Argument.value"/>
  67096. <stringProp name="Argument.metadata">=</stringProp>
  67097. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67098. <stringProp name="Argument.name">product[page_layout]</stringProp>
  67099. </elementProp>
  67100. <elementProp name="product[options_container]" elementType="HTTPArgument">
  67101. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67102. <stringProp name="Argument.value">container2</stringProp>
  67103. <stringProp name="Argument.metadata">=</stringProp>
  67104. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67105. <stringProp name="Argument.name">product[options_container]</stringProp>
  67106. </elementProp>
  67107. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  67108. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67109. <stringProp name="Argument.value"/>
  67110. <stringProp name="Argument.metadata">=</stringProp>
  67111. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67112. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  67113. </elementProp>
  67114. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  67115. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67116. <stringProp name="Argument.value">0</stringProp>
  67117. <stringProp name="Argument.metadata">=</stringProp>
  67118. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67119. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  67120. </elementProp>
  67121. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  67122. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67123. <stringProp name="Argument.value">option title one</stringProp>
  67124. <stringProp name="Argument.metadata">=</stringProp>
  67125. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67126. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  67127. </elementProp>
  67128. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  67129. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67130. <stringProp name="Argument.value"/>
  67131. <stringProp name="Argument.metadata">=</stringProp>
  67132. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67133. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  67134. </elementProp>
  67135. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  67136. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67137. <stringProp name="Argument.value"/>
  67138. <stringProp name="Argument.metadata">=</stringProp>
  67139. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67140. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  67141. </elementProp>
  67142. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  67143. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67144. <stringProp name="Argument.value">select</stringProp>
  67145. <stringProp name="Argument.metadata">=</stringProp>
  67146. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67147. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  67148. </elementProp>
  67149. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  67150. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67151. <stringProp name="Argument.value">1</stringProp>
  67152. <stringProp name="Argument.metadata">=</stringProp>
  67153. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67154. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  67155. </elementProp>
  67156. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  67157. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67158. <stringProp name="Argument.value">0</stringProp>
  67159. <stringProp name="Argument.metadata">=</stringProp>
  67160. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67161. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  67162. </elementProp>
  67163. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  67164. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67165. <stringProp name="Argument.value"/>
  67166. <stringProp name="Argument.metadata">=</stringProp>
  67167. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67168. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  67169. </elementProp>
  67170. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  67171. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67172. <stringProp name="Argument.value"/>
  67173. <stringProp name="Argument.metadata">=</stringProp>
  67174. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67175. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  67176. </elementProp>
  67177. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  67178. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67179. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  67180. <stringProp name="Argument.metadata">=</stringProp>
  67181. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67182. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  67183. </elementProp>
  67184. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  67185. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67186. <stringProp name="Argument.value"/>
  67187. <stringProp name="Argument.metadata">=</stringProp>
  67188. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67189. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  67190. </elementProp>
  67191. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  67192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67193. <stringProp name="Argument.value">25</stringProp>
  67194. <stringProp name="Argument.metadata">=</stringProp>
  67195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67196. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  67197. </elementProp>
  67198. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  67199. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67200. <stringProp name="Argument.value">1</stringProp>
  67201. <stringProp name="Argument.metadata">=</stringProp>
  67202. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67203. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  67204. </elementProp>
  67205. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  67206. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67207. <stringProp name="Argument.value">1</stringProp>
  67208. <stringProp name="Argument.metadata">=</stringProp>
  67209. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67210. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  67211. </elementProp>
  67212. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  67213. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67214. <stringProp name="Argument.value">1</stringProp>
  67215. <stringProp name="Argument.metadata">=</stringProp>
  67216. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67217. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  67218. </elementProp>
  67219. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  67220. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67221. <stringProp name="Argument.value">0</stringProp>
  67222. <stringProp name="Argument.metadata">=</stringProp>
  67223. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67224. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  67225. </elementProp>
  67226. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  67227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67228. <stringProp name="Argument.value"/>
  67229. <stringProp name="Argument.metadata">=</stringProp>
  67230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67231. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  67232. </elementProp>
  67233. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  67234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67235. <stringProp name="Argument.value"/>
  67236. <stringProp name="Argument.metadata">=</stringProp>
  67237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67238. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  67239. </elementProp>
  67240. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  67241. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67242. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  67243. <stringProp name="Argument.metadata">=</stringProp>
  67244. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67245. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  67246. </elementProp>
  67247. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  67248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67249. <stringProp name="Argument.value"/>
  67250. <stringProp name="Argument.metadata">=</stringProp>
  67251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67252. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  67253. </elementProp>
  67254. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  67255. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67256. <stringProp name="Argument.value">10.99</stringProp>
  67257. <stringProp name="Argument.metadata">=</stringProp>
  67258. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67259. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  67260. </elementProp>
  67261. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  67262. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67263. <stringProp name="Argument.value">0</stringProp>
  67264. <stringProp name="Argument.metadata">=</stringProp>
  67265. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67266. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  67267. </elementProp>
  67268. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  67269. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67270. <stringProp name="Argument.value">1</stringProp>
  67271. <stringProp name="Argument.metadata">=</stringProp>
  67272. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67273. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  67274. </elementProp>
  67275. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  67276. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67277. <stringProp name="Argument.value">1</stringProp>
  67278. <stringProp name="Argument.metadata">=</stringProp>
  67279. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67280. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  67281. </elementProp>
  67282. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  67283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67284. <stringProp name="Argument.value">1</stringProp>
  67285. <stringProp name="Argument.metadata">=</stringProp>
  67286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67287. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  67288. </elementProp>
  67289. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  67290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67291. <stringProp name="Argument.value">option title two</stringProp>
  67292. <stringProp name="Argument.metadata">=</stringProp>
  67293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67294. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  67295. </elementProp>
  67296. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  67297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67298. <stringProp name="Argument.value"/>
  67299. <stringProp name="Argument.metadata">=</stringProp>
  67300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67301. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  67302. </elementProp>
  67303. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  67304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67305. <stringProp name="Argument.value"/>
  67306. <stringProp name="Argument.metadata">=</stringProp>
  67307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67308. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  67309. </elementProp>
  67310. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  67311. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67312. <stringProp name="Argument.value">select</stringProp>
  67313. <stringProp name="Argument.metadata">=</stringProp>
  67314. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67315. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  67316. </elementProp>
  67317. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  67318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67319. <stringProp name="Argument.value">1</stringProp>
  67320. <stringProp name="Argument.metadata">=</stringProp>
  67321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67322. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  67323. </elementProp>
  67324. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  67325. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67326. <stringProp name="Argument.value">1</stringProp>
  67327. <stringProp name="Argument.metadata">=</stringProp>
  67328. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67329. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  67330. </elementProp>
  67331. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  67332. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67333. <stringProp name="Argument.value"/>
  67334. <stringProp name="Argument.metadata">=</stringProp>
  67335. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67336. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  67337. <stringProp name="Argument.desc">true</stringProp>
  67338. </elementProp>
  67339. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  67340. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67341. <stringProp name="Argument.value"/>
  67342. <stringProp name="Argument.metadata">=</stringProp>
  67343. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67344. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  67345. <stringProp name="Argument.desc">true</stringProp>
  67346. </elementProp>
  67347. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  67348. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67349. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  67350. <stringProp name="Argument.metadata">=</stringProp>
  67351. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67352. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  67353. <stringProp name="Argument.desc">true</stringProp>
  67354. </elementProp>
  67355. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  67356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67357. <stringProp name="Argument.value"/>
  67358. <stringProp name="Argument.metadata">=</stringProp>
  67359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67360. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  67361. <stringProp name="Argument.desc">true</stringProp>
  67362. </elementProp>
  67363. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  67364. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67365. <stringProp name="Argument.value">5.00</stringProp>
  67366. <stringProp name="Argument.metadata">=</stringProp>
  67367. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67368. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  67369. <stringProp name="Argument.desc">true</stringProp>
  67370. </elementProp>
  67371. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  67372. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67373. <stringProp name="Argument.value">0</stringProp>
  67374. <stringProp name="Argument.metadata">=</stringProp>
  67375. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67376. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  67377. <stringProp name="Argument.desc">true</stringProp>
  67378. </elementProp>
  67379. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  67380. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67381. <stringProp name="Argument.value">1</stringProp>
  67382. <stringProp name="Argument.metadata">=</stringProp>
  67383. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67384. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  67385. <stringProp name="Argument.desc">true</stringProp>
  67386. </elementProp>
  67387. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  67388. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67389. <stringProp name="Argument.value">1</stringProp>
  67390. <stringProp name="Argument.metadata">=</stringProp>
  67391. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67392. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  67393. <stringProp name="Argument.desc">true</stringProp>
  67394. </elementProp>
  67395. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  67396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67397. <stringProp name="Argument.value">0</stringProp>
  67398. <stringProp name="Argument.metadata">=</stringProp>
  67399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67400. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  67401. <stringProp name="Argument.desc">true</stringProp>
  67402. </elementProp>
  67403. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  67404. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67405. <stringProp name="Argument.value"/>
  67406. <stringProp name="Argument.metadata">=</stringProp>
  67407. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67408. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  67409. <stringProp name="Argument.desc">true</stringProp>
  67410. </elementProp>
  67411. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  67412. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67413. <stringProp name="Argument.value"/>
  67414. <stringProp name="Argument.metadata">=</stringProp>
  67415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67416. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  67417. <stringProp name="Argument.desc">true</stringProp>
  67418. </elementProp>
  67419. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  67420. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67421. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  67422. <stringProp name="Argument.metadata">=</stringProp>
  67423. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67424. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  67425. <stringProp name="Argument.desc">true</stringProp>
  67426. </elementProp>
  67427. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  67428. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67429. <stringProp name="Argument.value"/>
  67430. <stringProp name="Argument.metadata">=</stringProp>
  67431. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67432. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  67433. <stringProp name="Argument.desc">true</stringProp>
  67434. </elementProp>
  67435. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  67436. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67437. <stringProp name="Argument.value">7.00</stringProp>
  67438. <stringProp name="Argument.metadata">=</stringProp>
  67439. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67440. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  67441. <stringProp name="Argument.desc">true</stringProp>
  67442. </elementProp>
  67443. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  67444. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67445. <stringProp name="Argument.value">0</stringProp>
  67446. <stringProp name="Argument.metadata">=</stringProp>
  67447. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67448. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  67449. <stringProp name="Argument.desc">true</stringProp>
  67450. </elementProp>
  67451. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  67452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67453. <stringProp name="Argument.value">1</stringProp>
  67454. <stringProp name="Argument.metadata">=</stringProp>
  67455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67456. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  67457. <stringProp name="Argument.desc">true</stringProp>
  67458. </elementProp>
  67459. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  67460. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67461. <stringProp name="Argument.value">1</stringProp>
  67462. <stringProp name="Argument.metadata">=</stringProp>
  67463. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67464. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  67465. <stringProp name="Argument.desc">true</stringProp>
  67466. </elementProp>
  67467. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  67468. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67469. <stringProp name="Argument.value">1</stringProp>
  67470. <stringProp name="Argument.metadata">=</stringProp>
  67471. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67472. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  67473. <stringProp name="Argument.desc">true</stringProp>
  67474. </elementProp>
  67475. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  67476. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67477. <stringProp name="Argument.value">2</stringProp>
  67478. <stringProp name="Argument.metadata">=</stringProp>
  67479. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67480. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  67481. <stringProp name="Argument.desc">true</stringProp>
  67482. </elementProp>
  67483. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  67484. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67485. <stringProp name="Argument.value">${related_product_id}</stringProp>
  67486. <stringProp name="Argument.metadata">=</stringProp>
  67487. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67488. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  67489. </elementProp>
  67490. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  67491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67492. <stringProp name="Argument.value">1</stringProp>
  67493. <stringProp name="Argument.metadata">=</stringProp>
  67494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67495. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  67496. </elementProp>
  67497. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  67498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67499. <stringProp name="Argument.value">${related_product_id}</stringProp>
  67500. <stringProp name="Argument.metadata">=</stringProp>
  67501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67502. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  67503. </elementProp>
  67504. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  67505. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67506. <stringProp name="Argument.value">1</stringProp>
  67507. <stringProp name="Argument.metadata">=</stringProp>
  67508. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67509. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  67510. </elementProp>
  67511. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  67512. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67513. <stringProp name="Argument.value">${related_product_id}</stringProp>
  67514. <stringProp name="Argument.metadata">=</stringProp>
  67515. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67516. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  67517. </elementProp>
  67518. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  67519. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67520. <stringProp name="Argument.value">1</stringProp>
  67521. <stringProp name="Argument.metadata">=</stringProp>
  67522. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67523. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  67524. </elementProp>
  67525. </collectionProp>
  67526. </elementProp>
  67527. <stringProp name="HTTPSampler.domain"/>
  67528. <stringProp name="HTTPSampler.port"/>
  67529. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  67530. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  67531. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  67532. <stringProp name="HTTPSampler.contentEncoding"/>
  67533. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  67534. <stringProp name="HTTPSampler.method">POST</stringProp>
  67535. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  67536. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  67537. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  67538. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  67539. <boolProp name="HTTPSampler.monitor">false</boolProp>
  67540. <stringProp name="HTTPSampler.embedded_url_re"/>
  67541. </HTTPSamplerProxy>
  67542. <hashTree>
  67543. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  67544. <collectionProp name="Asserion.test_strings">
  67545. <stringProp name="1853918323">{"error":false}</stringProp>
  67546. </collectionProp>
  67547. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  67548. <boolProp name="Assertion.assume_success">false</boolProp>
  67549. <intProp name="Assertion.test_type">2</intProp>
  67550. </ResponseAssertion>
  67551. <hashTree/>
  67552. </hashTree>
  67553. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Save" enabled="true">
  67554. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  67555. <collectionProp name="Arguments.arguments">
  67556. <elementProp name="ajax" elementType="HTTPArgument">
  67557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67558. <stringProp name="Argument.value">true</stringProp>
  67559. <stringProp name="Argument.metadata">=</stringProp>
  67560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67561. <stringProp name="Argument.name">ajax</stringProp>
  67562. <stringProp name="Argument.desc">false</stringProp>
  67563. </elementProp>
  67564. <elementProp name="isAjax" elementType="HTTPArgument">
  67565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67566. <stringProp name="Argument.value">true</stringProp>
  67567. <stringProp name="Argument.metadata">=</stringProp>
  67568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67569. <stringProp name="Argument.name">isAjax</stringProp>
  67570. <stringProp name="Argument.desc">false</stringProp>
  67571. </elementProp>
  67572. <elementProp name="form_key" elementType="HTTPArgument">
  67573. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67574. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  67575. <stringProp name="Argument.metadata">=</stringProp>
  67576. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67577. <stringProp name="Argument.name">form_key</stringProp>
  67578. <stringProp name="Argument.desc">false</stringProp>
  67579. </elementProp>
  67580. <elementProp name="product[name]" elementType="HTTPArgument">
  67581. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67582. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  67583. <stringProp name="Argument.metadata">=</stringProp>
  67584. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67585. <stringProp name="Argument.name">product[name]</stringProp>
  67586. <stringProp name="Argument.desc">false</stringProp>
  67587. </elementProp>
  67588. <elementProp name="product[sku]" elementType="HTTPArgument">
  67589. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67590. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  67591. <stringProp name="Argument.metadata">=</stringProp>
  67592. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67593. <stringProp name="Argument.name">product[sku]</stringProp>
  67594. <stringProp name="Argument.desc">false</stringProp>
  67595. </elementProp>
  67596. <elementProp name="product[price]" elementType="HTTPArgument">
  67597. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67598. <stringProp name="Argument.value">42</stringProp>
  67599. <stringProp name="Argument.metadata">=</stringProp>
  67600. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67601. <stringProp name="Argument.name">product[price]</stringProp>
  67602. </elementProp>
  67603. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  67604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67605. <stringProp name="Argument.value">2</stringProp>
  67606. <stringProp name="Argument.metadata">=</stringProp>
  67607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67608. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  67609. </elementProp>
  67610. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  67611. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67612. <stringProp name="Argument.value">111</stringProp>
  67613. <stringProp name="Argument.metadata">=</stringProp>
  67614. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67615. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  67616. </elementProp>
  67617. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  67618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67619. <stringProp name="Argument.value">1</stringProp>
  67620. <stringProp name="Argument.metadata">=</stringProp>
  67621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67622. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  67623. </elementProp>
  67624. <elementProp name="product[weight]" elementType="HTTPArgument">
  67625. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67626. <stringProp name="Argument.value">1.0000</stringProp>
  67627. <stringProp name="Argument.metadata">=</stringProp>
  67628. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67629. <stringProp name="Argument.name">product[weight]</stringProp>
  67630. </elementProp>
  67631. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  67632. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67633. <stringProp name="Argument.value">1</stringProp>
  67634. <stringProp name="Argument.metadata">=</stringProp>
  67635. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67636. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  67637. <stringProp name="Argument.desc">true</stringProp>
  67638. </elementProp>
  67639. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  67640. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67641. <stringProp name="Argument.value">2</stringProp>
  67642. <stringProp name="Argument.metadata">=</stringProp>
  67643. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67644. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  67645. </elementProp>
  67646. <elementProp name="product[description]" elementType="HTTPArgument">
  67647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67648. <stringProp name="Argument.value">&lt;p&gt;Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  67649. <stringProp name="Argument.metadata">=</stringProp>
  67650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67651. <stringProp name="Argument.name">product[description]</stringProp>
  67652. </elementProp>
  67653. <elementProp name="product[short_description]" elementType="HTTPArgument">
  67654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67655. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  67656. <stringProp name="Argument.metadata">=</stringProp>
  67657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67658. <stringProp name="Argument.name">product[short_description]</stringProp>
  67659. </elementProp>
  67660. <elementProp name="product[status]" elementType="HTTPArgument">
  67661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67662. <stringProp name="Argument.value">1</stringProp>
  67663. <stringProp name="Argument.metadata">=</stringProp>
  67664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67665. <stringProp name="Argument.name">product[status]</stringProp>
  67666. </elementProp>
  67667. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  67668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67669. <stringProp name="Argument.value"/>
  67670. <stringProp name="Argument.metadata">=</stringProp>
  67671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67672. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  67673. </elementProp>
  67674. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  67675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67676. <stringProp name="Argument.value">1</stringProp>
  67677. <stringProp name="Argument.metadata">=</stringProp>
  67678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67679. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  67680. </elementProp>
  67681. <elementProp name="product[image]" elementType="HTTPArgument">
  67682. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67683. <stringProp name="Argument.value"/>
  67684. <stringProp name="Argument.metadata">=</stringProp>
  67685. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67686. <stringProp name="Argument.name">product[image]</stringProp>
  67687. </elementProp>
  67688. <elementProp name="product[small_image]" elementType="HTTPArgument">
  67689. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67690. <stringProp name="Argument.value"/>
  67691. <stringProp name="Argument.metadata">=</stringProp>
  67692. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67693. <stringProp name="Argument.name">product[small_image]</stringProp>
  67694. </elementProp>
  67695. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  67696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67697. <stringProp name="Argument.value"/>
  67698. <stringProp name="Argument.metadata">=</stringProp>
  67699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67700. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  67701. </elementProp>
  67702. <elementProp name="product[url_key]" elementType="HTTPArgument">
  67703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67704. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  67705. <stringProp name="Argument.metadata">=</stringProp>
  67706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67707. <stringProp name="Argument.name">product[url_key]</stringProp>
  67708. </elementProp>
  67709. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  67710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67711. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  67712. <stringProp name="Argument.metadata">=</stringProp>
  67713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67714. <stringProp name="Argument.name">product[meta_title]</stringProp>
  67715. </elementProp>
  67716. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  67717. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67718. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  67719. <stringProp name="Argument.metadata">=</stringProp>
  67720. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67721. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  67722. </elementProp>
  67723. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  67724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67725. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  67726. <stringProp name="Argument.metadata">=</stringProp>
  67727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67728. <stringProp name="Argument.name">product[meta_description]</stringProp>
  67729. </elementProp>
  67730. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  67731. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67732. <stringProp name="Argument.value">1</stringProp>
  67733. <stringProp name="Argument.metadata">=</stringProp>
  67734. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67735. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  67736. </elementProp>
  67737. <elementProp name="product[special_price]" elementType="HTTPArgument">
  67738. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67739. <stringProp name="Argument.value">99</stringProp>
  67740. <stringProp name="Argument.metadata">=</stringProp>
  67741. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67742. <stringProp name="Argument.name">product[special_price]</stringProp>
  67743. </elementProp>
  67744. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  67745. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67746. <stringProp name="Argument.value"/>
  67747. <stringProp name="Argument.metadata">=</stringProp>
  67748. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67749. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  67750. </elementProp>
  67751. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  67752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67753. <stringProp name="Argument.value"/>
  67754. <stringProp name="Argument.metadata">=</stringProp>
  67755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67756. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  67757. </elementProp>
  67758. <elementProp name="product[cost]" elementType="HTTPArgument">
  67759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67760. <stringProp name="Argument.value"/>
  67761. <stringProp name="Argument.metadata">=</stringProp>
  67762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67763. <stringProp name="Argument.name">product[cost]</stringProp>
  67764. </elementProp>
  67765. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  67766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67767. <stringProp name="Argument.value">0</stringProp>
  67768. <stringProp name="Argument.metadata">=</stringProp>
  67769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67770. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  67771. </elementProp>
  67772. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  67773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67774. <stringProp name="Argument.value">32000</stringProp>
  67775. <stringProp name="Argument.metadata">=</stringProp>
  67776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67777. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  67778. </elementProp>
  67779. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  67780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67781. <stringProp name="Argument.value">100</stringProp>
  67782. <stringProp name="Argument.metadata">=</stringProp>
  67783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67784. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  67785. </elementProp>
  67786. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  67787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67788. <stringProp name="Argument.value">90</stringProp>
  67789. <stringProp name="Argument.metadata">=</stringProp>
  67790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67791. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  67792. </elementProp>
  67793. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  67794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67795. <stringProp name="Argument.value"/>
  67796. <stringProp name="Argument.metadata">=</stringProp>
  67797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67798. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  67799. </elementProp>
  67800. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  67801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67802. <stringProp name="Argument.value">0</stringProp>
  67803. <stringProp name="Argument.metadata">=</stringProp>
  67804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67805. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  67806. </elementProp>
  67807. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  67808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67809. <stringProp name="Argument.value">1</stringProp>
  67810. <stringProp name="Argument.metadata">=</stringProp>
  67811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67812. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  67813. </elementProp>
  67814. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  67815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67816. <stringProp name="Argument.value">101</stringProp>
  67817. <stringProp name="Argument.metadata">=</stringProp>
  67818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67819. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  67820. </elementProp>
  67821. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  67822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67823. <stringProp name="Argument.value">99</stringProp>
  67824. <stringProp name="Argument.metadata">=</stringProp>
  67825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67826. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  67827. </elementProp>
  67828. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  67829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67830. <stringProp name="Argument.value"/>
  67831. <stringProp name="Argument.metadata">=</stringProp>
  67832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67833. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  67834. </elementProp>
  67835. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  67836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67837. <stringProp name="Argument.value">1</stringProp>
  67838. <stringProp name="Argument.metadata">=</stringProp>
  67839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67840. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  67841. </elementProp>
  67842. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  67843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67844. <stringProp name="Argument.value">100500</stringProp>
  67845. <stringProp name="Argument.metadata">=</stringProp>
  67846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67847. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  67848. </elementProp>
  67849. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  67850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67851. <stringProp name="Argument.value">100500</stringProp>
  67852. <stringProp name="Argument.metadata">=</stringProp>
  67853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67854. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  67855. </elementProp>
  67856. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  67857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67858. <stringProp name="Argument.value">0</stringProp>
  67859. <stringProp name="Argument.metadata">=</stringProp>
  67860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67861. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  67862. </elementProp>
  67863. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  67864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67865. <stringProp name="Argument.value">1</stringProp>
  67866. <stringProp name="Argument.metadata">=</stringProp>
  67867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67868. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  67869. </elementProp>
  67870. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  67871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67872. <stringProp name="Argument.value">1</stringProp>
  67873. <stringProp name="Argument.metadata">=</stringProp>
  67874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67875. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  67876. </elementProp>
  67877. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  67878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67879. <stringProp name="Argument.value">1</stringProp>
  67880. <stringProp name="Argument.metadata">=</stringProp>
  67881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67882. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  67883. </elementProp>
  67884. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  67885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67886. <stringProp name="Argument.value">10000</stringProp>
  67887. <stringProp name="Argument.metadata">=</stringProp>
  67888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67889. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  67890. </elementProp>
  67891. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  67892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67893. <stringProp name="Argument.value">1</stringProp>
  67894. <stringProp name="Argument.metadata">=</stringProp>
  67895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67896. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  67897. </elementProp>
  67898. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  67899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67900. <stringProp name="Argument.value">0</stringProp>
  67901. <stringProp name="Argument.metadata">=</stringProp>
  67902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67903. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  67904. </elementProp>
  67905. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  67906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67907. <stringProp name="Argument.value">0</stringProp>
  67908. <stringProp name="Argument.metadata">=</stringProp>
  67909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67910. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  67911. </elementProp>
  67912. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  67913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67914. <stringProp name="Argument.value">0</stringProp>
  67915. <stringProp name="Argument.metadata">=</stringProp>
  67916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67917. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  67918. </elementProp>
  67919. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  67920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67921. <stringProp name="Argument.value">1</stringProp>
  67922. <stringProp name="Argument.metadata">=</stringProp>
  67923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67924. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  67925. </elementProp>
  67926. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  67927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67928. <stringProp name="Argument.value">1</stringProp>
  67929. <stringProp name="Argument.metadata">=</stringProp>
  67930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67931. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  67932. </elementProp>
  67933. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  67934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67935. <stringProp name="Argument.value">1</stringProp>
  67936. <stringProp name="Argument.metadata">=</stringProp>
  67937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67938. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  67939. </elementProp>
  67940. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  67941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67942. <stringProp name="Argument.value">0</stringProp>
  67943. <stringProp name="Argument.metadata">=</stringProp>
  67944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67945. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  67946. </elementProp>
  67947. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  67948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67949. <stringProp name="Argument.value">0</stringProp>
  67950. <stringProp name="Argument.metadata">=</stringProp>
  67951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67952. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  67953. </elementProp>
  67954. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  67955. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67956. <stringProp name="Argument.value">1</stringProp>
  67957. <stringProp name="Argument.metadata">=</stringProp>
  67958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67959. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  67960. </elementProp>
  67961. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  67962. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67963. <stringProp name="Argument.value">1</stringProp>
  67964. <stringProp name="Argument.metadata">=</stringProp>
  67965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67966. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  67967. </elementProp>
  67968. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  67969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67970. <stringProp name="Argument.value"/>
  67971. <stringProp name="Argument.metadata">=</stringProp>
  67972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67973. <stringProp name="Argument.name">product[custom_design]</stringProp>
  67974. </elementProp>
  67975. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  67976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67977. <stringProp name="Argument.value"/>
  67978. <stringProp name="Argument.metadata">=</stringProp>
  67979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67980. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  67981. </elementProp>
  67982. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  67983. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67984. <stringProp name="Argument.value"/>
  67985. <stringProp name="Argument.metadata">=</stringProp>
  67986. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67987. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  67988. </elementProp>
  67989. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  67990. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67991. <stringProp name="Argument.value"/>
  67992. <stringProp name="Argument.metadata">=</stringProp>
  67993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  67994. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  67995. </elementProp>
  67996. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  67997. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  67998. <stringProp name="Argument.value"/>
  67999. <stringProp name="Argument.metadata">=</stringProp>
  68000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68001. <stringProp name="Argument.name">product[page_layout]</stringProp>
  68002. </elementProp>
  68003. <elementProp name="product[options_container]" elementType="HTTPArgument">
  68004. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68005. <stringProp name="Argument.value">container2</stringProp>
  68006. <stringProp name="Argument.metadata">=</stringProp>
  68007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68008. <stringProp name="Argument.name">product[options_container]</stringProp>
  68009. </elementProp>
  68010. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  68011. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68012. <stringProp name="Argument.value"/>
  68013. <stringProp name="Argument.metadata">=</stringProp>
  68014. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68015. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  68016. </elementProp>
  68017. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  68018. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68019. <stringProp name="Argument.value">0</stringProp>
  68020. <stringProp name="Argument.metadata">=</stringProp>
  68021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68022. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  68023. <stringProp name="Argument.desc">false</stringProp>
  68024. </elementProp>
  68025. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  68026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68027. <stringProp name="Argument.value">option title one</stringProp>
  68028. <stringProp name="Argument.metadata">=</stringProp>
  68029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68030. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  68031. <stringProp name="Argument.desc">false</stringProp>
  68032. </elementProp>
  68033. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  68034. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68035. <stringProp name="Argument.value"/>
  68036. <stringProp name="Argument.metadata">=</stringProp>
  68037. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68038. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  68039. <stringProp name="Argument.desc">false</stringProp>
  68040. </elementProp>
  68041. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  68042. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68043. <stringProp name="Argument.value"/>
  68044. <stringProp name="Argument.metadata">=</stringProp>
  68045. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68046. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  68047. <stringProp name="Argument.desc">false</stringProp>
  68048. </elementProp>
  68049. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  68050. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68051. <stringProp name="Argument.value">select</stringProp>
  68052. <stringProp name="Argument.metadata">=</stringProp>
  68053. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68054. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  68055. <stringProp name="Argument.desc">false</stringProp>
  68056. </elementProp>
  68057. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  68058. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68059. <stringProp name="Argument.value">1</stringProp>
  68060. <stringProp name="Argument.metadata">=</stringProp>
  68061. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68062. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  68063. <stringProp name="Argument.desc">false</stringProp>
  68064. </elementProp>
  68065. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  68066. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68067. <stringProp name="Argument.value">0</stringProp>
  68068. <stringProp name="Argument.metadata">=</stringProp>
  68069. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68070. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  68071. <stringProp name="Argument.desc">false</stringProp>
  68072. </elementProp>
  68073. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  68074. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68075. <stringProp name="Argument.value"/>
  68076. <stringProp name="Argument.metadata">=</stringProp>
  68077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68078. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  68079. <stringProp name="Argument.desc">false</stringProp>
  68080. </elementProp>
  68081. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  68082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68083. <stringProp name="Argument.value"/>
  68084. <stringProp name="Argument.metadata">=</stringProp>
  68085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68086. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  68087. <stringProp name="Argument.desc">false</stringProp>
  68088. </elementProp>
  68089. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  68090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68091. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  68092. <stringProp name="Argument.metadata">=</stringProp>
  68093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68094. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  68095. <stringProp name="Argument.desc">false</stringProp>
  68096. </elementProp>
  68097. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  68098. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68099. <stringProp name="Argument.value"/>
  68100. <stringProp name="Argument.metadata">=</stringProp>
  68101. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68102. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  68103. <stringProp name="Argument.desc">false</stringProp>
  68104. </elementProp>
  68105. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  68106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68107. <stringProp name="Argument.value">25</stringProp>
  68108. <stringProp name="Argument.metadata">=</stringProp>
  68109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68110. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  68111. <stringProp name="Argument.desc">false</stringProp>
  68112. </elementProp>
  68113. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  68114. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68115. <stringProp name="Argument.value">1</stringProp>
  68116. <stringProp name="Argument.metadata">=</stringProp>
  68117. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68118. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  68119. <stringProp name="Argument.desc">false</stringProp>
  68120. </elementProp>
  68121. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  68122. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68123. <stringProp name="Argument.value">1</stringProp>
  68124. <stringProp name="Argument.metadata">=</stringProp>
  68125. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68126. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  68127. <stringProp name="Argument.desc">false</stringProp>
  68128. </elementProp>
  68129. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  68130. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68131. <stringProp name="Argument.value">1</stringProp>
  68132. <stringProp name="Argument.metadata">=</stringProp>
  68133. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68134. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  68135. <stringProp name="Argument.desc">false</stringProp>
  68136. </elementProp>
  68137. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  68138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68139. <stringProp name="Argument.value">0</stringProp>
  68140. <stringProp name="Argument.metadata">=</stringProp>
  68141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68142. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  68143. <stringProp name="Argument.desc">false</stringProp>
  68144. </elementProp>
  68145. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  68146. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68147. <stringProp name="Argument.value"/>
  68148. <stringProp name="Argument.metadata">=</stringProp>
  68149. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68150. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  68151. <stringProp name="Argument.desc">false</stringProp>
  68152. </elementProp>
  68153. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  68154. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68155. <stringProp name="Argument.value"/>
  68156. <stringProp name="Argument.metadata">=</stringProp>
  68157. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68158. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  68159. <stringProp name="Argument.desc">false</stringProp>
  68160. </elementProp>
  68161. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  68162. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68163. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  68164. <stringProp name="Argument.metadata">=</stringProp>
  68165. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68166. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  68167. <stringProp name="Argument.desc">false</stringProp>
  68168. </elementProp>
  68169. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  68170. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68171. <stringProp name="Argument.value"/>
  68172. <stringProp name="Argument.metadata">=</stringProp>
  68173. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68174. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  68175. <stringProp name="Argument.desc">false</stringProp>
  68176. </elementProp>
  68177. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  68178. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68179. <stringProp name="Argument.value">10.99</stringProp>
  68180. <stringProp name="Argument.metadata">=</stringProp>
  68181. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68182. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  68183. <stringProp name="Argument.desc">false</stringProp>
  68184. </elementProp>
  68185. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  68186. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68187. <stringProp name="Argument.value">0</stringProp>
  68188. <stringProp name="Argument.metadata">=</stringProp>
  68189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68190. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  68191. <stringProp name="Argument.desc">false</stringProp>
  68192. </elementProp>
  68193. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  68194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68195. <stringProp name="Argument.value">1</stringProp>
  68196. <stringProp name="Argument.metadata">=</stringProp>
  68197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68198. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  68199. <stringProp name="Argument.desc">false</stringProp>
  68200. </elementProp>
  68201. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  68202. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68203. <stringProp name="Argument.value">1</stringProp>
  68204. <stringProp name="Argument.metadata">=</stringProp>
  68205. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68206. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  68207. <stringProp name="Argument.desc">false</stringProp>
  68208. </elementProp>
  68209. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  68210. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68211. <stringProp name="Argument.value">1</stringProp>
  68212. <stringProp name="Argument.metadata">=</stringProp>
  68213. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68214. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  68215. <stringProp name="Argument.desc">false</stringProp>
  68216. </elementProp>
  68217. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  68218. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68219. <stringProp name="Argument.value">option title two</stringProp>
  68220. <stringProp name="Argument.metadata">=</stringProp>
  68221. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68222. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  68223. <stringProp name="Argument.desc">false</stringProp>
  68224. </elementProp>
  68225. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  68226. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68227. <stringProp name="Argument.value"/>
  68228. <stringProp name="Argument.metadata">=</stringProp>
  68229. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68230. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  68231. <stringProp name="Argument.desc">false</stringProp>
  68232. </elementProp>
  68233. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  68234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68235. <stringProp name="Argument.value"/>
  68236. <stringProp name="Argument.metadata">=</stringProp>
  68237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68238. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  68239. <stringProp name="Argument.desc">false</stringProp>
  68240. </elementProp>
  68241. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  68242. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68243. <stringProp name="Argument.value">select</stringProp>
  68244. <stringProp name="Argument.metadata">=</stringProp>
  68245. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68246. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  68247. <stringProp name="Argument.desc">false</stringProp>
  68248. </elementProp>
  68249. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  68250. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68251. <stringProp name="Argument.value">1</stringProp>
  68252. <stringProp name="Argument.metadata">=</stringProp>
  68253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68254. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  68255. <stringProp name="Argument.desc">false</stringProp>
  68256. </elementProp>
  68257. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  68258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68259. <stringProp name="Argument.value">1</stringProp>
  68260. <stringProp name="Argument.metadata">=</stringProp>
  68261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68262. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  68263. <stringProp name="Argument.desc">false</stringProp>
  68264. </elementProp>
  68265. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  68266. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68267. <stringProp name="Argument.value"/>
  68268. <stringProp name="Argument.metadata">=</stringProp>
  68269. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68270. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  68271. <stringProp name="Argument.desc">false</stringProp>
  68272. </elementProp>
  68273. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  68274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68275. <stringProp name="Argument.value"/>
  68276. <stringProp name="Argument.metadata">=</stringProp>
  68277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68278. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  68279. <stringProp name="Argument.desc">false</stringProp>
  68280. </elementProp>
  68281. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  68282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68283. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  68284. <stringProp name="Argument.metadata">=</stringProp>
  68285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68286. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  68287. <stringProp name="Argument.desc">false</stringProp>
  68288. </elementProp>
  68289. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  68290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68291. <stringProp name="Argument.value"/>
  68292. <stringProp name="Argument.metadata">=</stringProp>
  68293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68294. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  68295. <stringProp name="Argument.desc">false</stringProp>
  68296. </elementProp>
  68297. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  68298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68299. <stringProp name="Argument.value">5.00</stringProp>
  68300. <stringProp name="Argument.metadata">=</stringProp>
  68301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68302. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  68303. <stringProp name="Argument.desc">false</stringProp>
  68304. </elementProp>
  68305. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  68306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68307. <stringProp name="Argument.value">0</stringProp>
  68308. <stringProp name="Argument.metadata">=</stringProp>
  68309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68310. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  68311. <stringProp name="Argument.desc">false</stringProp>
  68312. </elementProp>
  68313. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  68314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68315. <stringProp name="Argument.value">1</stringProp>
  68316. <stringProp name="Argument.metadata">=</stringProp>
  68317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68318. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  68319. <stringProp name="Argument.desc">false</stringProp>
  68320. </elementProp>
  68321. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  68322. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68323. <stringProp name="Argument.value">1</stringProp>
  68324. <stringProp name="Argument.metadata">=</stringProp>
  68325. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68326. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  68327. <stringProp name="Argument.desc">false</stringProp>
  68328. </elementProp>
  68329. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  68330. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68331. <stringProp name="Argument.value">0</stringProp>
  68332. <stringProp name="Argument.metadata">=</stringProp>
  68333. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68334. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  68335. <stringProp name="Argument.desc">false</stringProp>
  68336. </elementProp>
  68337. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  68338. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68339. <stringProp name="Argument.value"/>
  68340. <stringProp name="Argument.metadata">=</stringProp>
  68341. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68342. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  68343. <stringProp name="Argument.desc">false</stringProp>
  68344. </elementProp>
  68345. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  68346. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68347. <stringProp name="Argument.value"/>
  68348. <stringProp name="Argument.metadata">=</stringProp>
  68349. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68350. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  68351. <stringProp name="Argument.desc">false</stringProp>
  68352. </elementProp>
  68353. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  68354. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68355. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  68356. <stringProp name="Argument.metadata">=</stringProp>
  68357. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68358. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  68359. <stringProp name="Argument.desc">false</stringProp>
  68360. </elementProp>
  68361. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  68362. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68363. <stringProp name="Argument.value"/>
  68364. <stringProp name="Argument.metadata">=</stringProp>
  68365. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68366. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  68367. <stringProp name="Argument.desc">false</stringProp>
  68368. </elementProp>
  68369. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  68370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68371. <stringProp name="Argument.value">7.00</stringProp>
  68372. <stringProp name="Argument.metadata">=</stringProp>
  68373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68374. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  68375. <stringProp name="Argument.desc">false</stringProp>
  68376. </elementProp>
  68377. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  68378. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68379. <stringProp name="Argument.value">0</stringProp>
  68380. <stringProp name="Argument.metadata">=</stringProp>
  68381. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68382. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  68383. <stringProp name="Argument.desc">false</stringProp>
  68384. </elementProp>
  68385. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  68386. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68387. <stringProp name="Argument.value">1</stringProp>
  68388. <stringProp name="Argument.metadata">=</stringProp>
  68389. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68390. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  68391. <stringProp name="Argument.desc">false</stringProp>
  68392. </elementProp>
  68393. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  68394. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68395. <stringProp name="Argument.value">1</stringProp>
  68396. <stringProp name="Argument.metadata">=</stringProp>
  68397. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68398. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  68399. <stringProp name="Argument.desc">false</stringProp>
  68400. </elementProp>
  68401. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  68402. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68403. <stringProp name="Argument.value">1</stringProp>
  68404. <stringProp name="Argument.metadata">=</stringProp>
  68405. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68406. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  68407. <stringProp name="Argument.desc">false</stringProp>
  68408. </elementProp>
  68409. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  68410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68411. <stringProp name="Argument.value">2</stringProp>
  68412. <stringProp name="Argument.metadata">=</stringProp>
  68413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68414. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  68415. <stringProp name="Argument.desc">false</stringProp>
  68416. </elementProp>
  68417. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  68418. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68419. <stringProp name="Argument.value">${related_product_id}</stringProp>
  68420. <stringProp name="Argument.metadata">=</stringProp>
  68421. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68422. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  68423. </elementProp>
  68424. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  68425. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68426. <stringProp name="Argument.value">1</stringProp>
  68427. <stringProp name="Argument.metadata">=</stringProp>
  68428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68429. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  68430. </elementProp>
  68431. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  68432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68433. <stringProp name="Argument.value">${related_product_id}</stringProp>
  68434. <stringProp name="Argument.metadata">=</stringProp>
  68435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68436. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  68437. </elementProp>
  68438. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  68439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68440. <stringProp name="Argument.value">1</stringProp>
  68441. <stringProp name="Argument.metadata">=</stringProp>
  68442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68443. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  68444. </elementProp>
  68445. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  68446. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68447. <stringProp name="Argument.value">${related_product_id}</stringProp>
  68448. <stringProp name="Argument.metadata">=</stringProp>
  68449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68450. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  68451. </elementProp>
  68452. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  68453. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68454. <stringProp name="Argument.value">1</stringProp>
  68455. <stringProp name="Argument.metadata">=</stringProp>
  68456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68457. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  68458. </elementProp>
  68459. </collectionProp>
  68460. </elementProp>
  68461. <stringProp name="HTTPSampler.domain"/>
  68462. <stringProp name="HTTPSampler.port"/>
  68463. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  68464. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  68465. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  68466. <stringProp name="HTTPSampler.contentEncoding"/>
  68467. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/</stringProp>
  68468. <stringProp name="HTTPSampler.method">POST</stringProp>
  68469. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  68470. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  68471. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  68472. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  68473. <boolProp name="HTTPSampler.monitor">false</boolProp>
  68474. <stringProp name="HTTPSampler.embedded_url_re"/>
  68475. </HTTPSamplerProxy>
  68476. <hashTree>
  68477. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  68478. <collectionProp name="Asserion.test_strings">
  68479. <stringProp name="-583471546">You saved the product</stringProp>
  68480. <stringProp name="-1534079309">option title one</stringProp>
  68481. <stringProp name="-1534074215">option title two</stringProp>
  68482. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  68483. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  68484. </collectionProp>
  68485. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  68486. <boolProp name="Assertion.assume_success">false</boolProp>
  68487. <intProp name="Assertion.test_type">2</intProp>
  68488. </ResponseAssertion>
  68489. <hashTree/>
  68490. </hashTree>
  68491. </hashTree>
  68492. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Create Configurable Product" enabled="true">
  68493. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  68494. </GenericController>
  68495. <hashTree>
  68496. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  68497. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  68498. <collectionProp name="Arguments.arguments"/>
  68499. </elementProp>
  68500. <stringProp name="HTTPSampler.domain"/>
  68501. <stringProp name="HTTPSampler.port"/>
  68502. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  68503. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  68504. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  68505. <stringProp name="HTTPSampler.contentEncoding"/>
  68506. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  68507. <stringProp name="HTTPSampler.method">GET</stringProp>
  68508. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  68509. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  68510. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  68511. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  68512. <boolProp name="HTTPSampler.monitor">false</boolProp>
  68513. <stringProp name="HTTPSampler.embedded_url_re"/>
  68514. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/open_catalog_grid.jmx</stringProp></HTTPSamplerProxy>
  68515. <hashTree>
  68516. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  68517. <collectionProp name="Asserion.test_strings">
  68518. <stringProp name="1509986340">records found</stringProp>
  68519. </collectionProp>
  68520. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  68521. <boolProp name="Assertion.assume_success">false</boolProp>
  68522. <intProp name="Assertion.test_type">2</intProp>
  68523. </ResponseAssertion>
  68524. <hashTree/>
  68525. </hashTree>
  68526. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product" enabled="true">
  68527. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  68528. <collectionProp name="Arguments.arguments"/>
  68529. </elementProp>
  68530. <stringProp name="HTTPSampler.domain"/>
  68531. <stringProp name="HTTPSampler.port"/>
  68532. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  68533. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  68534. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  68535. <stringProp name="HTTPSampler.contentEncoding"/>
  68536. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/${attribute_set_id}/type/configurable/</stringProp>
  68537. <stringProp name="HTTPSampler.method">GET</stringProp>
  68538. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  68539. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  68540. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  68541. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  68542. <boolProp name="HTTPSampler.monitor">false</boolProp>
  68543. <stringProp name="HTTPSampler.embedded_url_re"/>
  68544. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/new_configurable.jmx</stringProp></HTTPSamplerProxy>
  68545. <hashTree>
  68546. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  68547. <collectionProp name="Asserion.test_strings">
  68548. <stringProp name="-144461265">New Product</stringProp>
  68549. </collectionProp>
  68550. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  68551. <boolProp name="Assertion.assume_success">false</boolProp>
  68552. <intProp name="Assertion.test_type">2</intProp>
  68553. </ResponseAssertion>
  68554. <hashTree/>
  68555. </hashTree>
  68556. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Validate" enabled="true">
  68557. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  68558. <collectionProp name="Arguments.arguments">
  68559. <elementProp name="ajax" elementType="HTTPArgument">
  68560. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68561. <stringProp name="Argument.value">true</stringProp>
  68562. <stringProp name="Argument.metadata">=</stringProp>
  68563. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68564. <stringProp name="Argument.name">ajax</stringProp>
  68565. <stringProp name="Argument.desc">false</stringProp>
  68566. </elementProp>
  68567. <elementProp name="isAjax" elementType="HTTPArgument">
  68568. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68569. <stringProp name="Argument.value">true</stringProp>
  68570. <stringProp name="Argument.metadata">=</stringProp>
  68571. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68572. <stringProp name="Argument.name">isAjax</stringProp>
  68573. <stringProp name="Argument.desc">false</stringProp>
  68574. </elementProp>
  68575. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  68576. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68577. <stringProp name="Argument.value">1</stringProp>
  68578. <stringProp name="Argument.metadata">=</stringProp>
  68579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68580. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  68581. <stringProp name="Argument.desc">true</stringProp>
  68582. </elementProp>
  68583. <elementProp name="form_key" elementType="HTTPArgument">
  68584. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68585. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  68586. <stringProp name="Argument.metadata">=</stringProp>
  68587. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68588. <stringProp name="Argument.name">form_key</stringProp>
  68589. <stringProp name="Argument.desc">true</stringProp>
  68590. </elementProp>
  68591. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  68592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68593. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  68594. <stringProp name="Argument.metadata">=</stringProp>
  68595. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68596. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  68597. <stringProp name="Argument.desc">true</stringProp>
  68598. </elementProp>
  68599. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  68600. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68601. <stringProp name="Argument.value">1</stringProp>
  68602. <stringProp name="Argument.metadata">=</stringProp>
  68603. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68604. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  68605. <stringProp name="Argument.desc">true</stringProp>
  68606. </elementProp>
  68607. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  68608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68609. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  68610. <stringProp name="Argument.metadata">=</stringProp>
  68611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68612. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  68613. <stringProp name="Argument.desc">true</stringProp>
  68614. </elementProp>
  68615. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  68616. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68617. <stringProp name="Argument.value">4</stringProp>
  68618. <stringProp name="Argument.metadata">=</stringProp>
  68619. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68620. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  68621. <stringProp name="Argument.desc">true</stringProp>
  68622. </elementProp>
  68623. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  68624. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68625. <stringProp name="Argument.value"/>
  68626. <stringProp name="Argument.metadata">=</stringProp>
  68627. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68628. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  68629. <stringProp name="Argument.desc">true</stringProp>
  68630. </elementProp>
  68631. <elementProp name="product[description]" elementType="HTTPArgument">
  68632. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68633. <stringProp name="Argument.value"/>
  68634. <stringProp name="Argument.metadata">=</stringProp>
  68635. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68636. <stringProp name="Argument.name">product[description]</stringProp>
  68637. <stringProp name="Argument.desc">true</stringProp>
  68638. </elementProp>
  68639. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  68640. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68641. <stringProp name="Argument.value">0</stringProp>
  68642. <stringProp name="Argument.metadata">=</stringProp>
  68643. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68644. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  68645. <stringProp name="Argument.desc">true</stringProp>
  68646. </elementProp>
  68647. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  68648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68649. <stringProp name="Argument.value">1</stringProp>
  68650. <stringProp name="Argument.metadata">=</stringProp>
  68651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68652. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  68653. <stringProp name="Argument.desc">true</stringProp>
  68654. </elementProp>
  68655. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  68656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68657. <stringProp name="Argument.value"/>
  68658. <stringProp name="Argument.metadata">=</stringProp>
  68659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68660. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  68661. <stringProp name="Argument.desc">true</stringProp>
  68662. </elementProp>
  68663. <elementProp name="product[image]" elementType="HTTPArgument">
  68664. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68665. <stringProp name="Argument.value"/>
  68666. <stringProp name="Argument.metadata">=</stringProp>
  68667. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68668. <stringProp name="Argument.name">product[image]</stringProp>
  68669. <stringProp name="Argument.desc">true</stringProp>
  68670. </elementProp>
  68671. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  68672. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68673. <stringProp name="Argument.value">2</stringProp>
  68674. <stringProp name="Argument.metadata">=</stringProp>
  68675. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68676. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  68677. <stringProp name="Argument.desc">true</stringProp>
  68678. </elementProp>
  68679. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  68680. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68681. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  68682. <stringProp name="Argument.metadata">=</stringProp>
  68683. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68684. <stringProp name="Argument.name">product[meta_description]</stringProp>
  68685. <stringProp name="Argument.desc">true</stringProp>
  68686. </elementProp>
  68687. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  68688. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68689. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  68690. <stringProp name="Argument.metadata">=</stringProp>
  68691. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68692. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  68693. <stringProp name="Argument.desc">true</stringProp>
  68694. </elementProp>
  68695. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  68696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68697. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  68698. <stringProp name="Argument.metadata">=</stringProp>
  68699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68700. <stringProp name="Argument.name">product[meta_title]</stringProp>
  68701. <stringProp name="Argument.desc">true</stringProp>
  68702. </elementProp>
  68703. <elementProp name="product[name]" elementType="HTTPArgument">
  68704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68705. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  68706. <stringProp name="Argument.metadata">=</stringProp>
  68707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68708. <stringProp name="Argument.name">product[name]</stringProp>
  68709. <stringProp name="Argument.desc">true</stringProp>
  68710. </elementProp>
  68711. <elementProp name="product[options_container]" elementType="HTTPArgument">
  68712. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68713. <stringProp name="Argument.value">container2</stringProp>
  68714. <stringProp name="Argument.metadata">=</stringProp>
  68715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68716. <stringProp name="Argument.name">product[options_container]</stringProp>
  68717. <stringProp name="Argument.desc">true</stringProp>
  68718. </elementProp>
  68719. <elementProp name="product[price]" elementType="HTTPArgument">
  68720. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68721. <stringProp name="Argument.value">${price_new}</stringProp>
  68722. <stringProp name="Argument.metadata">=</stringProp>
  68723. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68724. <stringProp name="Argument.name">product[price]</stringProp>
  68725. <stringProp name="Argument.desc">true</stringProp>
  68726. </elementProp>
  68727. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  68728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68729. <stringProp name="Argument.value">1</stringProp>
  68730. <stringProp name="Argument.metadata">=</stringProp>
  68731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68732. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  68733. <stringProp name="Argument.desc">true</stringProp>
  68734. </elementProp>
  68735. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  68736. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68737. <stringProp name="Argument.value">1</stringProp>
  68738. <stringProp name="Argument.metadata">=</stringProp>
  68739. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68740. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  68741. <stringProp name="Argument.desc">true</stringProp>
  68742. </elementProp>
  68743. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  68744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68745. <stringProp name="Argument.value">1000</stringProp>
  68746. <stringProp name="Argument.metadata">=</stringProp>
  68747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68748. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  68749. <stringProp name="Argument.desc">true</stringProp>
  68750. </elementProp>
  68751. <elementProp name="product[short_description]" elementType="HTTPArgument">
  68752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68753. <stringProp name="Argument.value"/>
  68754. <stringProp name="Argument.metadata">=</stringProp>
  68755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68756. <stringProp name="Argument.name">product[short_description]</stringProp>
  68757. <stringProp name="Argument.desc">true</stringProp>
  68758. </elementProp>
  68759. <elementProp name="product[sku]" elementType="HTTPArgument">
  68760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68761. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  68762. <stringProp name="Argument.metadata">=</stringProp>
  68763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68764. <stringProp name="Argument.name">product[sku]</stringProp>
  68765. <stringProp name="Argument.desc">true</stringProp>
  68766. </elementProp>
  68767. <elementProp name="product[small_image]" elementType="HTTPArgument">
  68768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68769. <stringProp name="Argument.value"/>
  68770. <stringProp name="Argument.metadata">=</stringProp>
  68771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68772. <stringProp name="Argument.name">product[small_image]</stringProp>
  68773. <stringProp name="Argument.desc">true</stringProp>
  68774. </elementProp>
  68775. <elementProp name="product[special_price]" elementType="HTTPArgument">
  68776. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68777. <stringProp name="Argument.value">${special_price_new}</stringProp>
  68778. <stringProp name="Argument.metadata">=</stringProp>
  68779. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68780. <stringProp name="Argument.name">product[special_price]</stringProp>
  68781. <stringProp name="Argument.desc">true</stringProp>
  68782. </elementProp>
  68783. <elementProp name="product[status]" elementType="HTTPArgument">
  68784. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68785. <stringProp name="Argument.value">1</stringProp>
  68786. <stringProp name="Argument.metadata">=</stringProp>
  68787. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68788. <stringProp name="Argument.name">product[status]</stringProp>
  68789. <stringProp name="Argument.desc">true</stringProp>
  68790. </elementProp>
  68791. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  68792. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68793. <stringProp name="Argument.value">0</stringProp>
  68794. <stringProp name="Argument.metadata">=</stringProp>
  68795. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68796. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  68797. <stringProp name="Argument.desc">true</stringProp>
  68798. </elementProp>
  68799. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  68800. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68801. <stringProp name="Argument.value">1</stringProp>
  68802. <stringProp name="Argument.metadata">=</stringProp>
  68803. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68804. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  68805. <stringProp name="Argument.desc">true</stringProp>
  68806. </elementProp>
  68807. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  68808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68809. <stringProp name="Argument.value">0</stringProp>
  68810. <stringProp name="Argument.metadata">=</stringProp>
  68811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68812. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  68813. <stringProp name="Argument.desc">true</stringProp>
  68814. </elementProp>
  68815. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  68816. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68817. <stringProp name="Argument.value">0</stringProp>
  68818. <stringProp name="Argument.metadata">=</stringProp>
  68819. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68820. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  68821. <stringProp name="Argument.desc">true</stringProp>
  68822. </elementProp>
  68823. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  68824. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68825. <stringProp name="Argument.value">0</stringProp>
  68826. <stringProp name="Argument.metadata">=</stringProp>
  68827. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68828. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  68829. <stringProp name="Argument.desc">true</stringProp>
  68830. </elementProp>
  68831. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  68832. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68833. <stringProp name="Argument.value">1</stringProp>
  68834. <stringProp name="Argument.metadata">=</stringProp>
  68835. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68836. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  68837. <stringProp name="Argument.desc">true</stringProp>
  68838. </elementProp>
  68839. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  68840. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68841. <stringProp name="Argument.value">10000</stringProp>
  68842. <stringProp name="Argument.metadata">=</stringProp>
  68843. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68844. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  68845. <stringProp name="Argument.desc">true</stringProp>
  68846. </elementProp>
  68847. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  68848. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68849. <stringProp name="Argument.value">0</stringProp>
  68850. <stringProp name="Argument.metadata">=</stringProp>
  68851. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68852. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  68853. <stringProp name="Argument.desc">true</stringProp>
  68854. </elementProp>
  68855. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  68856. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68857. <stringProp name="Argument.value">1</stringProp>
  68858. <stringProp name="Argument.metadata">=</stringProp>
  68859. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68860. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  68861. <stringProp name="Argument.desc">true</stringProp>
  68862. </elementProp>
  68863. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  68864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68865. <stringProp name="Argument.value">1</stringProp>
  68866. <stringProp name="Argument.metadata">=</stringProp>
  68867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68868. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  68869. <stringProp name="Argument.desc">true</stringProp>
  68870. </elementProp>
  68871. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  68872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68873. <stringProp name="Argument.value">1</stringProp>
  68874. <stringProp name="Argument.metadata">=</stringProp>
  68875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68876. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  68877. <stringProp name="Argument.desc">true</stringProp>
  68878. </elementProp>
  68879. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  68880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68881. <stringProp name="Argument.value">1</stringProp>
  68882. <stringProp name="Argument.metadata">=</stringProp>
  68883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68884. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  68885. <stringProp name="Argument.desc">true</stringProp>
  68886. </elementProp>
  68887. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  68888. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68889. <stringProp name="Argument.value">1</stringProp>
  68890. <stringProp name="Argument.metadata">=</stringProp>
  68891. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68892. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  68893. <stringProp name="Argument.desc">true</stringProp>
  68894. </elementProp>
  68895. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  68896. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68897. <stringProp name="Argument.value">1</stringProp>
  68898. <stringProp name="Argument.metadata">=</stringProp>
  68899. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68900. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  68901. <stringProp name="Argument.desc">true</stringProp>
  68902. </elementProp>
  68903. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  68904. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68905. <stringProp name="Argument.value">1</stringProp>
  68906. <stringProp name="Argument.metadata">=</stringProp>
  68907. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68908. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  68909. <stringProp name="Argument.desc">true</stringProp>
  68910. </elementProp>
  68911. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  68912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68913. <stringProp name="Argument.value">1</stringProp>
  68914. <stringProp name="Argument.metadata">=</stringProp>
  68915. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68916. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  68917. <stringProp name="Argument.desc">true</stringProp>
  68918. </elementProp>
  68919. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  68920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68921. <stringProp name="Argument.value">1</stringProp>
  68922. <stringProp name="Argument.metadata">=</stringProp>
  68923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68924. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  68925. <stringProp name="Argument.desc">true</stringProp>
  68926. </elementProp>
  68927. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  68928. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68929. <stringProp name="Argument.value">1</stringProp>
  68930. <stringProp name="Argument.metadata">=</stringProp>
  68931. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68932. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  68933. <stringProp name="Argument.desc">true</stringProp>
  68934. </elementProp>
  68935. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  68936. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68937. <stringProp name="Argument.value">1</stringProp>
  68938. <stringProp name="Argument.metadata">=</stringProp>
  68939. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68940. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  68941. <stringProp name="Argument.desc">true</stringProp>
  68942. </elementProp>
  68943. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  68944. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68945. <stringProp name="Argument.value">1</stringProp>
  68946. <stringProp name="Argument.metadata">=</stringProp>
  68947. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68948. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  68949. <stringProp name="Argument.desc">true</stringProp>
  68950. </elementProp>
  68951. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  68952. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68953. <stringProp name="Argument.value">2</stringProp>
  68954. <stringProp name="Argument.metadata">=</stringProp>
  68955. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68956. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  68957. <stringProp name="Argument.desc">true</stringProp>
  68958. </elementProp>
  68959. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  68960. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68961. <stringProp name="Argument.value"/>
  68962. <stringProp name="Argument.metadata">=</stringProp>
  68963. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68964. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  68965. <stringProp name="Argument.desc">true</stringProp>
  68966. </elementProp>
  68967. <elementProp name="product[url_key]" elementType="HTTPArgument">
  68968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68969. <stringProp name="Argument.value"/>
  68970. <stringProp name="Argument.metadata">=</stringProp>
  68971. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68972. <stringProp name="Argument.name">product[url_key]</stringProp>
  68973. <stringProp name="Argument.desc">true</stringProp>
  68974. </elementProp>
  68975. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  68976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68977. <stringProp name="Argument.value">1</stringProp>
  68978. <stringProp name="Argument.metadata">=</stringProp>
  68979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68980. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  68981. <stringProp name="Argument.desc">true</stringProp>
  68982. </elementProp>
  68983. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  68984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68985. <stringProp name="Argument.value">1</stringProp>
  68986. <stringProp name="Argument.metadata">=</stringProp>
  68987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68988. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  68989. <stringProp name="Argument.desc">true</stringProp>
  68990. </elementProp>
  68991. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  68992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  68993. <stringProp name="Argument.value">1</stringProp>
  68994. <stringProp name="Argument.metadata">=</stringProp>
  68995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  68996. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  68997. <stringProp name="Argument.desc">true</stringProp>
  68998. </elementProp>
  68999. <elementProp name="product[visibility]" elementType="HTTPArgument">
  69000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69001. <stringProp name="Argument.value">4</stringProp>
  69002. <stringProp name="Argument.metadata">=</stringProp>
  69003. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69004. <stringProp name="Argument.name">product[visibility]</stringProp>
  69005. <stringProp name="Argument.desc">true</stringProp>
  69006. </elementProp>
  69007. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  69008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69009. <stringProp name="Argument.value">1</stringProp>
  69010. <stringProp name="Argument.metadata">=</stringProp>
  69011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69012. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  69013. <stringProp name="Argument.desc">true</stringProp>
  69014. </elementProp>
  69015. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  69016. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69017. <stringProp name="Argument.value">${related_product_id}</stringProp>
  69018. <stringProp name="Argument.metadata">=</stringProp>
  69019. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69020. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  69021. </elementProp>
  69022. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  69023. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69024. <stringProp name="Argument.value">1</stringProp>
  69025. <stringProp name="Argument.metadata">=</stringProp>
  69026. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69027. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  69028. </elementProp>
  69029. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  69030. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69031. <stringProp name="Argument.value">${related_product_id}</stringProp>
  69032. <stringProp name="Argument.metadata">=</stringProp>
  69033. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69034. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  69035. </elementProp>
  69036. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  69037. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69038. <stringProp name="Argument.value">1</stringProp>
  69039. <stringProp name="Argument.metadata">=</stringProp>
  69040. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69041. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  69042. </elementProp>
  69043. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  69044. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69045. <stringProp name="Argument.value">${related_product_id}</stringProp>
  69046. <stringProp name="Argument.metadata">=</stringProp>
  69047. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69048. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  69049. </elementProp>
  69050. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  69051. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69052. <stringProp name="Argument.value">1</stringProp>
  69053. <stringProp name="Argument.metadata">=</stringProp>
  69054. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69055. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  69056. </elementProp>
  69057. </collectionProp>
  69058. </elementProp>
  69059. <stringProp name="HTTPSampler.domain"/>
  69060. <stringProp name="HTTPSampler.port"/>
  69061. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  69062. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  69063. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  69064. <stringProp name="HTTPSampler.contentEncoding"/>
  69065. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/${attribute_set_id}/</stringProp>
  69066. <stringProp name="HTTPSampler.method">POST</stringProp>
  69067. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  69068. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  69069. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  69070. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  69071. <boolProp name="HTTPSampler.monitor">false</boolProp>
  69072. <stringProp name="HTTPSampler.embedded_url_re"/>
  69073. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_validate.jmx</stringProp></HTTPSamplerProxy>
  69074. <hashTree>
  69075. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  69076. <collectionProp name="Asserion.test_strings">
  69077. <stringProp name="1853918323">{"error":false}</stringProp>
  69078. </collectionProp>
  69079. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  69080. <boolProp name="Assertion.assume_success">false</boolProp>
  69081. <intProp name="Assertion.test_type">2</intProp>
  69082. </ResponseAssertion>
  69083. <hashTree/>
  69084. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  69085. <stringProp name="scriptLanguage">javascript</stringProp>
  69086. <stringProp name="parameters"/>
  69087. <stringProp name="filename"/>
  69088. <stringProp name="cacheKey"/>
  69089. <stringProp name="script">
  69090. attributes = vars.getObject("product_attributes");
  69091. for (i in attributes) {
  69092. var attribute = attributes[i];
  69093. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  69094. sampler.addArgument("attributes[" + i + "]", attribute.id);
  69095. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  69096. addConfigurableAttributeData(attribute);
  69097. }
  69098. addConfigurableMatrix(attributes);
  69099. function addConfigurableAttributeData(attribute) {
  69100. var attributeId = attribute.id;
  69101. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  69102. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  69103. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  69104. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  69105. attribute.options.forEach(function (option, index) {
  69106. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  69107. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  69108. });
  69109. }
  69110. /**
  69111. * Build 4 simple products for Configurable
  69112. */
  69113. function addConfigurableMatrix(attributes) {
  69114. var attribute1 = attributes[0],
  69115. attribute2 = attributes[1],
  69116. productIndex = 1,
  69117. products = [];
  69118. var variationNames = [];
  69119. attribute1.options.forEach(function (option1) {
  69120. attribute2.options.forEach(function (option2) {
  69121. var productAttributes = {},
  69122. namePart = option1.label + "+" + option2.label,
  69123. variationKey = option1.value + "-" + option2.value;
  69124. productAttributes[attribute1.code] = option1.value;
  69125. productAttributes[attribute2.code] = option2.value;
  69126. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  69127. var product = {
  69128. "id": null,
  69129. "name": namePart + " - " + vars.get("configurable_sku"),
  69130. "sku": namePart + " - " + vars.get("configurable_sku"),
  69131. "status": 1,
  69132. "price": "100",
  69133. "price_currency": "$",
  69134. "price_string": "$100",
  69135. "weight": "6",
  69136. "qty": "50",
  69137. "variationKey": variationKey,
  69138. "configurable_attribute": JSON.stringify(productAttributes),
  69139. "thumbnail_image": "",
  69140. "media_gallery": {"images": {}},
  69141. "image": [],
  69142. "was_changed": true,
  69143. "canEdit": 1,
  69144. "newProduct": 1,
  69145. "record_id": productIndex
  69146. };
  69147. productIndex++;
  69148. products.push(product);
  69149. });
  69150. });
  69151. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  69152. vars.putObject("configurable_variations_assertion", variationNames);
  69153. }
  69154. </stringProp>
  69155. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  69156. <hashTree/>
  69157. </hashTree>
  69158. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Save" enabled="true">
  69159. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  69160. <collectionProp name="Arguments.arguments">
  69161. <elementProp name="ajax" elementType="HTTPArgument">
  69162. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69163. <stringProp name="Argument.value">true</stringProp>
  69164. <stringProp name="Argument.metadata">=</stringProp>
  69165. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69166. <stringProp name="Argument.name">ajax</stringProp>
  69167. <stringProp name="Argument.desc">false</stringProp>
  69168. </elementProp>
  69169. <elementProp name="isAjax" elementType="HTTPArgument">
  69170. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69171. <stringProp name="Argument.value">true</stringProp>
  69172. <stringProp name="Argument.metadata">=</stringProp>
  69173. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69174. <stringProp name="Argument.name">isAjax</stringProp>
  69175. <stringProp name="Argument.desc">false</stringProp>
  69176. </elementProp>
  69177. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  69178. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69179. <stringProp name="Argument.value">1</stringProp>
  69180. <stringProp name="Argument.metadata">=</stringProp>
  69181. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69182. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  69183. <stringProp name="Argument.desc">true</stringProp>
  69184. </elementProp>
  69185. <elementProp name="form_key" elementType="HTTPArgument">
  69186. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69187. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  69188. <stringProp name="Argument.metadata">=</stringProp>
  69189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69190. <stringProp name="Argument.name">form_key</stringProp>
  69191. <stringProp name="Argument.desc">true</stringProp>
  69192. </elementProp>
  69193. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  69194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69195. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  69196. <stringProp name="Argument.metadata">=</stringProp>
  69197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69198. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  69199. <stringProp name="Argument.desc">true</stringProp>
  69200. </elementProp>
  69201. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  69202. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69203. <stringProp name="Argument.value">1</stringProp>
  69204. <stringProp name="Argument.metadata">=</stringProp>
  69205. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69206. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  69207. <stringProp name="Argument.desc">true</stringProp>
  69208. </elementProp>
  69209. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  69210. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69211. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  69212. <stringProp name="Argument.metadata">=</stringProp>
  69213. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69214. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  69215. <stringProp name="Argument.desc">true</stringProp>
  69216. </elementProp>
  69217. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  69218. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69219. <stringProp name="Argument.value">2</stringProp>
  69220. <stringProp name="Argument.metadata">=</stringProp>
  69221. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69222. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  69223. <stringProp name="Argument.desc">true</stringProp>
  69224. </elementProp>
  69225. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  69226. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69227. <stringProp name="Argument.value"/>
  69228. <stringProp name="Argument.metadata">=</stringProp>
  69229. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69230. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  69231. <stringProp name="Argument.desc">true</stringProp>
  69232. </elementProp>
  69233. <elementProp name="product[description]" elementType="HTTPArgument">
  69234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69235. <stringProp name="Argument.value"/>
  69236. <stringProp name="Argument.metadata">=</stringProp>
  69237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69238. <stringProp name="Argument.name">product[description]</stringProp>
  69239. <stringProp name="Argument.desc">true</stringProp>
  69240. </elementProp>
  69241. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  69242. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69243. <stringProp name="Argument.value">0</stringProp>
  69244. <stringProp name="Argument.metadata">=</stringProp>
  69245. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69246. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  69247. <stringProp name="Argument.desc">true</stringProp>
  69248. </elementProp>
  69249. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  69250. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69251. <stringProp name="Argument.value">1</stringProp>
  69252. <stringProp name="Argument.metadata">=</stringProp>
  69253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69254. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  69255. <stringProp name="Argument.desc">true</stringProp>
  69256. </elementProp>
  69257. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  69258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69259. <stringProp name="Argument.value"/>
  69260. <stringProp name="Argument.metadata">=</stringProp>
  69261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69262. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  69263. <stringProp name="Argument.desc">true</stringProp>
  69264. </elementProp>
  69265. <elementProp name="product[image]" elementType="HTTPArgument">
  69266. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69267. <stringProp name="Argument.value"/>
  69268. <stringProp name="Argument.metadata">=</stringProp>
  69269. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69270. <stringProp name="Argument.name">product[image]</stringProp>
  69271. <stringProp name="Argument.desc">true</stringProp>
  69272. </elementProp>
  69273. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  69274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69275. <stringProp name="Argument.value">2</stringProp>
  69276. <stringProp name="Argument.metadata">=</stringProp>
  69277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69278. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  69279. <stringProp name="Argument.desc">true</stringProp>
  69280. </elementProp>
  69281. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  69282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69283. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  69284. <stringProp name="Argument.metadata">=</stringProp>
  69285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69286. <stringProp name="Argument.name">product[meta_description]</stringProp>
  69287. <stringProp name="Argument.desc">true</stringProp>
  69288. </elementProp>
  69289. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  69290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69291. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  69292. <stringProp name="Argument.metadata">=</stringProp>
  69293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69294. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  69295. <stringProp name="Argument.desc">true</stringProp>
  69296. </elementProp>
  69297. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  69298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69299. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  69300. <stringProp name="Argument.metadata">=</stringProp>
  69301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69302. <stringProp name="Argument.name">product[meta_title]</stringProp>
  69303. <stringProp name="Argument.desc">true</stringProp>
  69304. </elementProp>
  69305. <elementProp name="product[name]" elementType="HTTPArgument">
  69306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69307. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  69308. <stringProp name="Argument.metadata">=</stringProp>
  69309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69310. <stringProp name="Argument.name">product[name]</stringProp>
  69311. <stringProp name="Argument.desc">true</stringProp>
  69312. </elementProp>
  69313. <elementProp name="product[options_container]" elementType="HTTPArgument">
  69314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69315. <stringProp name="Argument.value">container2</stringProp>
  69316. <stringProp name="Argument.metadata">=</stringProp>
  69317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69318. <stringProp name="Argument.name">product[options_container]</stringProp>
  69319. <stringProp name="Argument.desc">true</stringProp>
  69320. </elementProp>
  69321. <elementProp name="product[price]" elementType="HTTPArgument">
  69322. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69323. <stringProp name="Argument.value">${price_new}</stringProp>
  69324. <stringProp name="Argument.metadata">=</stringProp>
  69325. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69326. <stringProp name="Argument.name">product[price]</stringProp>
  69327. <stringProp name="Argument.desc">true</stringProp>
  69328. </elementProp>
  69329. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  69330. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69331. <stringProp name="Argument.value">1</stringProp>
  69332. <stringProp name="Argument.metadata">=</stringProp>
  69333. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69334. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  69335. <stringProp name="Argument.desc">true</stringProp>
  69336. </elementProp>
  69337. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  69338. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69339. <stringProp name="Argument.value">1</stringProp>
  69340. <stringProp name="Argument.metadata">=</stringProp>
  69341. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69342. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  69343. <stringProp name="Argument.desc">true</stringProp>
  69344. </elementProp>
  69345. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  69346. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69347. <stringProp name="Argument.value">1000</stringProp>
  69348. <stringProp name="Argument.metadata">=</stringProp>
  69349. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69350. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  69351. <stringProp name="Argument.desc">true</stringProp>
  69352. </elementProp>
  69353. <elementProp name="product[short_description]" elementType="HTTPArgument">
  69354. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69355. <stringProp name="Argument.value"/>
  69356. <stringProp name="Argument.metadata">=</stringProp>
  69357. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69358. <stringProp name="Argument.name">product[short_description]</stringProp>
  69359. <stringProp name="Argument.desc">true</stringProp>
  69360. </elementProp>
  69361. <elementProp name="product[sku]" elementType="HTTPArgument">
  69362. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69363. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  69364. <stringProp name="Argument.metadata">=</stringProp>
  69365. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69366. <stringProp name="Argument.name">product[sku]</stringProp>
  69367. <stringProp name="Argument.desc">true</stringProp>
  69368. </elementProp>
  69369. <elementProp name="product[small_image]" elementType="HTTPArgument">
  69370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69371. <stringProp name="Argument.value"/>
  69372. <stringProp name="Argument.metadata">=</stringProp>
  69373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69374. <stringProp name="Argument.name">product[small_image]</stringProp>
  69375. <stringProp name="Argument.desc">true</stringProp>
  69376. </elementProp>
  69377. <elementProp name="product[special_price]" elementType="HTTPArgument">
  69378. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69379. <stringProp name="Argument.value">${special_price_new}</stringProp>
  69380. <stringProp name="Argument.metadata">=</stringProp>
  69381. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69382. <stringProp name="Argument.name">product[special_price]</stringProp>
  69383. <stringProp name="Argument.desc">true</stringProp>
  69384. </elementProp>
  69385. <elementProp name="product[status]" elementType="HTTPArgument">
  69386. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69387. <stringProp name="Argument.value">1</stringProp>
  69388. <stringProp name="Argument.metadata">=</stringProp>
  69389. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69390. <stringProp name="Argument.name">product[status]</stringProp>
  69391. <stringProp name="Argument.desc">true</stringProp>
  69392. </elementProp>
  69393. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  69394. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69395. <stringProp name="Argument.value">0</stringProp>
  69396. <stringProp name="Argument.metadata">=</stringProp>
  69397. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69398. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  69399. <stringProp name="Argument.desc">true</stringProp>
  69400. </elementProp>
  69401. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  69402. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69403. <stringProp name="Argument.value">1</stringProp>
  69404. <stringProp name="Argument.metadata">=</stringProp>
  69405. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69406. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  69407. <stringProp name="Argument.desc">true</stringProp>
  69408. </elementProp>
  69409. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  69410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69411. <stringProp name="Argument.value">0</stringProp>
  69412. <stringProp name="Argument.metadata">=</stringProp>
  69413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69414. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  69415. <stringProp name="Argument.desc">true</stringProp>
  69416. </elementProp>
  69417. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  69418. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69419. <stringProp name="Argument.value">0</stringProp>
  69420. <stringProp name="Argument.metadata">=</stringProp>
  69421. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69422. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  69423. <stringProp name="Argument.desc">true</stringProp>
  69424. </elementProp>
  69425. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  69426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69427. <stringProp name="Argument.value">0</stringProp>
  69428. <stringProp name="Argument.metadata">=</stringProp>
  69429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69430. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  69431. <stringProp name="Argument.desc">true</stringProp>
  69432. </elementProp>
  69433. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  69434. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69435. <stringProp name="Argument.value">1</stringProp>
  69436. <stringProp name="Argument.metadata">=</stringProp>
  69437. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69438. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  69439. <stringProp name="Argument.desc">true</stringProp>
  69440. </elementProp>
  69441. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  69442. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69443. <stringProp name="Argument.value">10000</stringProp>
  69444. <stringProp name="Argument.metadata">=</stringProp>
  69445. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69446. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  69447. <stringProp name="Argument.desc">true</stringProp>
  69448. </elementProp>
  69449. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  69450. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69451. <stringProp name="Argument.value">0</stringProp>
  69452. <stringProp name="Argument.metadata">=</stringProp>
  69453. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69454. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  69455. <stringProp name="Argument.desc">true</stringProp>
  69456. </elementProp>
  69457. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  69458. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69459. <stringProp name="Argument.value">1</stringProp>
  69460. <stringProp name="Argument.metadata">=</stringProp>
  69461. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69462. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  69463. <stringProp name="Argument.desc">true</stringProp>
  69464. </elementProp>
  69465. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  69466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69467. <stringProp name="Argument.value">1</stringProp>
  69468. <stringProp name="Argument.metadata">=</stringProp>
  69469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69470. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  69471. <stringProp name="Argument.desc">true</stringProp>
  69472. </elementProp>
  69473. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  69474. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69475. <stringProp name="Argument.value">1</stringProp>
  69476. <stringProp name="Argument.metadata">=</stringProp>
  69477. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69478. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  69479. <stringProp name="Argument.desc">true</stringProp>
  69480. </elementProp>
  69481. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  69482. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69483. <stringProp name="Argument.value">1</stringProp>
  69484. <stringProp name="Argument.metadata">=</stringProp>
  69485. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69486. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  69487. <stringProp name="Argument.desc">true</stringProp>
  69488. </elementProp>
  69489. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  69490. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69491. <stringProp name="Argument.value">1</stringProp>
  69492. <stringProp name="Argument.metadata">=</stringProp>
  69493. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69494. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  69495. <stringProp name="Argument.desc">true</stringProp>
  69496. </elementProp>
  69497. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  69498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69499. <stringProp name="Argument.value">1</stringProp>
  69500. <stringProp name="Argument.metadata">=</stringProp>
  69501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69502. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  69503. <stringProp name="Argument.desc">true</stringProp>
  69504. </elementProp>
  69505. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  69506. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69507. <stringProp name="Argument.value">1</stringProp>
  69508. <stringProp name="Argument.metadata">=</stringProp>
  69509. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69510. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  69511. <stringProp name="Argument.desc">true</stringProp>
  69512. </elementProp>
  69513. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  69514. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69515. <stringProp name="Argument.value">1</stringProp>
  69516. <stringProp name="Argument.metadata">=</stringProp>
  69517. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69518. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  69519. <stringProp name="Argument.desc">true</stringProp>
  69520. </elementProp>
  69521. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  69522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69523. <stringProp name="Argument.value">1</stringProp>
  69524. <stringProp name="Argument.metadata">=</stringProp>
  69525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69526. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  69527. <stringProp name="Argument.desc">true</stringProp>
  69528. </elementProp>
  69529. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  69530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69531. <stringProp name="Argument.value">1</stringProp>
  69532. <stringProp name="Argument.metadata">=</stringProp>
  69533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69534. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  69535. <stringProp name="Argument.desc">true</stringProp>
  69536. </elementProp>
  69537. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  69538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69539. <stringProp name="Argument.value">1</stringProp>
  69540. <stringProp name="Argument.metadata">=</stringProp>
  69541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69542. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  69543. <stringProp name="Argument.desc">true</stringProp>
  69544. </elementProp>
  69545. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  69546. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69547. <stringProp name="Argument.value">1</stringProp>
  69548. <stringProp name="Argument.metadata">=</stringProp>
  69549. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69550. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  69551. <stringProp name="Argument.desc">true</stringProp>
  69552. </elementProp>
  69553. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  69554. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69555. <stringProp name="Argument.value">2</stringProp>
  69556. <stringProp name="Argument.metadata">=</stringProp>
  69557. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69558. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  69559. <stringProp name="Argument.desc">true</stringProp>
  69560. </elementProp>
  69561. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  69562. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69563. <stringProp name="Argument.value"/>
  69564. <stringProp name="Argument.metadata">=</stringProp>
  69565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69566. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  69567. <stringProp name="Argument.desc">true</stringProp>
  69568. </elementProp>
  69569. <elementProp name="product[url_key]" elementType="HTTPArgument">
  69570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69571. <stringProp name="Argument.value"/>
  69572. <stringProp name="Argument.metadata">=</stringProp>
  69573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69574. <stringProp name="Argument.name">product[url_key]</stringProp>
  69575. <stringProp name="Argument.desc">true</stringProp>
  69576. </elementProp>
  69577. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  69578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69579. <stringProp name="Argument.value">1</stringProp>
  69580. <stringProp name="Argument.metadata">=</stringProp>
  69581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69582. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  69583. <stringProp name="Argument.desc">true</stringProp>
  69584. </elementProp>
  69585. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  69586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69587. <stringProp name="Argument.value">1</stringProp>
  69588. <stringProp name="Argument.metadata">=</stringProp>
  69589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69590. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  69591. <stringProp name="Argument.desc">true</stringProp>
  69592. </elementProp>
  69593. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  69594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69595. <stringProp name="Argument.value">1</stringProp>
  69596. <stringProp name="Argument.metadata">=</stringProp>
  69597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69598. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  69599. <stringProp name="Argument.desc">true</stringProp>
  69600. </elementProp>
  69601. <elementProp name="product[visibility]" elementType="HTTPArgument">
  69602. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69603. <stringProp name="Argument.value">4</stringProp>
  69604. <stringProp name="Argument.metadata">=</stringProp>
  69605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69606. <stringProp name="Argument.name">product[visibility]</stringProp>
  69607. <stringProp name="Argument.desc">true</stringProp>
  69608. </elementProp>
  69609. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  69610. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69611. <stringProp name="Argument.value">1</stringProp>
  69612. <stringProp name="Argument.metadata">=</stringProp>
  69613. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69614. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  69615. <stringProp name="Argument.desc">true</stringProp>
  69616. </elementProp>
  69617. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  69618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69619. <stringProp name="Argument.value">${related_product_id}</stringProp>
  69620. <stringProp name="Argument.metadata">=</stringProp>
  69621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69622. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  69623. </elementProp>
  69624. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  69625. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69626. <stringProp name="Argument.value">1</stringProp>
  69627. <stringProp name="Argument.metadata">=</stringProp>
  69628. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69629. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  69630. </elementProp>
  69631. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  69632. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69633. <stringProp name="Argument.value">${related_product_id}</stringProp>
  69634. <stringProp name="Argument.metadata">=</stringProp>
  69635. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69636. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  69637. </elementProp>
  69638. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  69639. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69640. <stringProp name="Argument.value">1</stringProp>
  69641. <stringProp name="Argument.metadata">=</stringProp>
  69642. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69643. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  69644. </elementProp>
  69645. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  69646. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69647. <stringProp name="Argument.value">${related_product_id}</stringProp>
  69648. <stringProp name="Argument.metadata">=</stringProp>
  69649. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69650. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  69651. </elementProp>
  69652. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  69653. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69654. <stringProp name="Argument.value">1</stringProp>
  69655. <stringProp name="Argument.metadata">=</stringProp>
  69656. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69657. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  69658. </elementProp>
  69659. </collectionProp>
  69660. </elementProp>
  69661. <stringProp name="HTTPSampler.domain"/>
  69662. <stringProp name="HTTPSampler.port"/>
  69663. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  69664. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  69665. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  69666. <stringProp name="HTTPSampler.contentEncoding"/>
  69667. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/${attribute_set_id}/type/configurable/back/edit/active_tab/product-details/</stringProp>
  69668. <stringProp name="HTTPSampler.method">POST</stringProp>
  69669. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  69670. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  69671. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  69672. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  69673. <boolProp name="HTTPSampler.monitor">false</boolProp>
  69674. <stringProp name="HTTPSampler.embedded_url_re"/>
  69675. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_save.jmx</stringProp></HTTPSamplerProxy>
  69676. <hashTree>
  69677. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  69678. <collectionProp name="Asserion.test_strings">
  69679. <stringProp name="-583471546">You saved the product</stringProp>
  69680. </collectionProp>
  69681. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  69682. <boolProp name="Assertion.assume_success">false</boolProp>
  69683. <intProp name="Assertion.test_type">2</intProp>
  69684. </ResponseAssertion>
  69685. <hashTree/>
  69686. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert Variation" enabled="true">
  69687. <stringProp name="scriptLanguage">javascript</stringProp>
  69688. <stringProp name="parameters"/>
  69689. <stringProp name="filename"/>
  69690. <stringProp name="cacheKey"/>
  69691. <stringProp name="script">
  69692. var configurableVariations = vars.getObject("configurable_variations_assertion"),
  69693. response = SampleResult.getResponseDataAsString();
  69694. configurableVariations.forEach(function (variation) {
  69695. if (response.indexOf(variation) == -1) {
  69696. AssertionResult.setFailureMessage("Cannot find variation \"" + variation + "\"");
  69697. AssertionResult.setFailure(true);
  69698. }
  69699. });
  69700. </stringProp>
  69701. </JSR223Assertion>
  69702. <hashTree/>
  69703. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  69704. <stringProp name="scriptLanguage">javascript</stringProp>
  69705. <stringProp name="parameters"/>
  69706. <stringProp name="filename"/>
  69707. <stringProp name="cacheKey"/>
  69708. <stringProp name="script">
  69709. attributes = vars.getObject("product_attributes");
  69710. for (i in attributes) {
  69711. var attribute = attributes[i];
  69712. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  69713. sampler.addArgument("attributes[" + i + "]", attribute.id);
  69714. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  69715. addConfigurableAttributeData(attribute);
  69716. }
  69717. addConfigurableMatrix(attributes);
  69718. function addConfigurableAttributeData(attribute) {
  69719. var attributeId = attribute.id;
  69720. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  69721. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  69722. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  69723. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  69724. attribute.options.forEach(function (option, index) {
  69725. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  69726. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  69727. });
  69728. }
  69729. /**
  69730. * Build 4 simple products for Configurable
  69731. */
  69732. function addConfigurableMatrix(attributes) {
  69733. var attribute1 = attributes[0],
  69734. attribute2 = attributes[1],
  69735. productIndex = 1,
  69736. products = [];
  69737. var variationNames = [];
  69738. attribute1.options.forEach(function (option1) {
  69739. attribute2.options.forEach(function (option2) {
  69740. var productAttributes = {},
  69741. namePart = option1.label + "+" + option2.label,
  69742. variationKey = option1.value + "-" + option2.value;
  69743. productAttributes[attribute1.code] = option1.value;
  69744. productAttributes[attribute2.code] = option2.value;
  69745. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  69746. var product = {
  69747. "id": null,
  69748. "name": namePart + " - " + vars.get("configurable_sku"),
  69749. "sku": namePart + " - " + vars.get("configurable_sku"),
  69750. "status": 1,
  69751. "price": "100",
  69752. "price_currency": "$",
  69753. "price_string": "$100",
  69754. "weight": "6",
  69755. "qty": "50",
  69756. "variationKey": variationKey,
  69757. "configurable_attribute": JSON.stringify(productAttributes),
  69758. "thumbnail_image": "",
  69759. "media_gallery": {"images": {}},
  69760. "image": [],
  69761. "was_changed": true,
  69762. "canEdit": 1,
  69763. "newProduct": 1,
  69764. "record_id": productIndex
  69765. };
  69766. productIndex++;
  69767. products.push(product);
  69768. });
  69769. });
  69770. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  69771. vars.putObject("configurable_variations_assertion", variationNames);
  69772. }
  69773. </stringProp>
  69774. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  69775. <hashTree/>
  69776. </hashTree>
  69777. </hashTree>
  69778. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Downloadable Product" enabled="true">
  69779. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_downloadable_product.jmx</stringProp>
  69780. </TestFragmentController>
  69781. <hashTree>
  69782. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  69783. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  69784. <collectionProp name="Arguments.arguments"/>
  69785. </elementProp>
  69786. <stringProp name="HTTPSampler.domain"/>
  69787. <stringProp name="HTTPSampler.port"/>
  69788. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  69789. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  69790. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  69791. <stringProp name="HTTPSampler.contentEncoding"/>
  69792. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  69793. <stringProp name="HTTPSampler.method">GET</stringProp>
  69794. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  69795. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  69796. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  69797. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  69798. <boolProp name="HTTPSampler.monitor">false</boolProp>
  69799. <stringProp name="HTTPSampler.embedded_url_re"/>
  69800. </HTTPSamplerProxy>
  69801. <hashTree>
  69802. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  69803. <collectionProp name="Asserion.test_strings">
  69804. <stringProp name="1509986340">records found</stringProp>
  69805. </collectionProp>
  69806. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  69807. <boolProp name="Assertion.assume_success">false</boolProp>
  69808. <intProp name="Assertion.test_type">2</intProp>
  69809. </ResponseAssertion>
  69810. <hashTree/>
  69811. </hashTree>
  69812. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product" enabled="true">
  69813. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  69814. <collectionProp name="Arguments.arguments"/>
  69815. </elementProp>
  69816. <stringProp name="HTTPSampler.domain"/>
  69817. <stringProp name="HTTPSampler.port"/>
  69818. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  69819. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  69820. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  69821. <stringProp name="HTTPSampler.contentEncoding"/>
  69822. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/</stringProp>
  69823. <stringProp name="HTTPSampler.method">GET</stringProp>
  69824. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  69825. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  69826. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  69827. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  69828. <boolProp name="HTTPSampler.monitor">false</boolProp>
  69829. <stringProp name="HTTPSampler.embedded_url_re"/>
  69830. </HTTPSamplerProxy>
  69831. <hashTree>
  69832. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  69833. <collectionProp name="Asserion.test_strings">
  69834. <stringProp name="-144461265">New Product</stringProp>
  69835. </collectionProp>
  69836. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  69837. <boolProp name="Assertion.assume_success">false</boolProp>
  69838. <intProp name="Assertion.test_type">2</intProp>
  69839. </ResponseAssertion>
  69840. <hashTree/>
  69841. </hashTree>
  69842. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Original File" enabled="true">
  69843. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  69844. <collectionProp name="HTTPFileArgs.files">
  69845. <elementProp name="${files_folder}downloadable_original.txt" elementType="HTTPFileArg">
  69846. <stringProp name="File.path">${files_folder}downloadable_original.txt</stringProp>
  69847. <stringProp name="File.paramname">links</stringProp>
  69848. <stringProp name="File.mimetype">text/plain</stringProp>
  69849. </elementProp>
  69850. </collectionProp>
  69851. </elementProp>
  69852. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  69853. <collectionProp name="Arguments.arguments">
  69854. <elementProp name="form_key" elementType="HTTPArgument">
  69855. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69856. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  69857. <stringProp name="Argument.metadata">=</stringProp>
  69858. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69859. <stringProp name="Argument.name">form_key</stringProp>
  69860. <stringProp name="Argument.desc">false</stringProp>
  69861. </elementProp>
  69862. </collectionProp>
  69863. </elementProp>
  69864. <stringProp name="HTTPSampler.domain"/>
  69865. <stringProp name="HTTPSampler.port"/>
  69866. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  69867. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  69868. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  69869. <stringProp name="HTTPSampler.contentEncoding"/>
  69870. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true</stringProp>
  69871. <stringProp name="HTTPSampler.method">POST</stringProp>
  69872. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  69873. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  69874. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  69875. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  69876. <boolProp name="HTTPSampler.monitor">false</boolProp>
  69877. <stringProp name="HTTPSampler.embedded_url_re"/>
  69878. </HTTPSamplerProxy>
  69879. <hashTree>
  69880. <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 original file" enabled="true">
  69881. <stringProp name="VAR">original_file</stringProp>
  69882. <stringProp name="JSONPATH">$.file</stringProp>
  69883. <stringProp name="DEFAULT"/>
  69884. <stringProp name="VARIABLE"/>
  69885. <stringProp name="SUBJECT">BODY</stringProp>
  69886. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  69887. <hashTree/>
  69888. </hashTree>
  69889. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Sample File" enabled="true">
  69890. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  69891. <collectionProp name="HTTPFileArgs.files">
  69892. <elementProp name="${files_folder}downloadable_sample.txt" elementType="HTTPFileArg">
  69893. <stringProp name="File.path">${files_folder}downloadable_sample.txt</stringProp>
  69894. <stringProp name="File.paramname">samples</stringProp>
  69895. <stringProp name="File.mimetype">text/plain</stringProp>
  69896. </elementProp>
  69897. </collectionProp>
  69898. </elementProp>
  69899. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  69900. <collectionProp name="Arguments.arguments">
  69901. <elementProp name="form_key" elementType="HTTPArgument">
  69902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69903. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  69904. <stringProp name="Argument.metadata">=</stringProp>
  69905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69906. <stringProp name="Argument.name">form_key</stringProp>
  69907. <stringProp name="Argument.desc">false</stringProp>
  69908. </elementProp>
  69909. </collectionProp>
  69910. </elementProp>
  69911. <stringProp name="HTTPSampler.domain"/>
  69912. <stringProp name="HTTPSampler.port"/>
  69913. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  69914. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  69915. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  69916. <stringProp name="HTTPSampler.contentEncoding"/>
  69917. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true</stringProp>
  69918. <stringProp name="HTTPSampler.method">POST</stringProp>
  69919. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  69920. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  69921. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  69922. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  69923. <boolProp name="HTTPSampler.monitor">false</boolProp>
  69924. <stringProp name="HTTPSampler.embedded_url_re"/>
  69925. </HTTPSamplerProxy>
  69926. <hashTree>
  69927. <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 sample file" enabled="true">
  69928. <stringProp name="VAR">sample_file</stringProp>
  69929. <stringProp name="JSONPATH">$.file</stringProp>
  69930. <stringProp name="DEFAULT"/>
  69931. <stringProp name="VARIABLE"/>
  69932. <stringProp name="SUBJECT">BODY</stringProp>
  69933. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  69934. <hashTree/>
  69935. </hashTree>
  69936. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Validate" enabled="true">
  69937. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  69938. <collectionProp name="Arguments.arguments">
  69939. <elementProp name="ajax" elementType="HTTPArgument">
  69940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69941. <stringProp name="Argument.value">true</stringProp>
  69942. <stringProp name="Argument.metadata">=</stringProp>
  69943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69944. <stringProp name="Argument.name">ajax</stringProp>
  69945. <stringProp name="Argument.desc">false</stringProp>
  69946. </elementProp>
  69947. <elementProp name="isAjax" elementType="HTTPArgument">
  69948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69949. <stringProp name="Argument.value">true</stringProp>
  69950. <stringProp name="Argument.metadata">=</stringProp>
  69951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69952. <stringProp name="Argument.name">isAjax</stringProp>
  69953. <stringProp name="Argument.desc">false</stringProp>
  69954. </elementProp>
  69955. <elementProp name="form_key" elementType="HTTPArgument">
  69956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69957. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  69958. <stringProp name="Argument.metadata">=</stringProp>
  69959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69960. <stringProp name="Argument.name">form_key</stringProp>
  69961. <stringProp name="Argument.desc">false</stringProp>
  69962. </elementProp>
  69963. <elementProp name="product[name]" elementType="HTTPArgument">
  69964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69965. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  69966. <stringProp name="Argument.metadata">=</stringProp>
  69967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69968. <stringProp name="Argument.name">product[name]</stringProp>
  69969. <stringProp name="Argument.desc">false</stringProp>
  69970. </elementProp>
  69971. <elementProp name="product[sku]" elementType="HTTPArgument">
  69972. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69973. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  69974. <stringProp name="Argument.metadata">=</stringProp>
  69975. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69976. <stringProp name="Argument.name">product[sku]</stringProp>
  69977. <stringProp name="Argument.desc">false</stringProp>
  69978. </elementProp>
  69979. <elementProp name="product[price]" elementType="HTTPArgument">
  69980. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69981. <stringProp name="Argument.value">123</stringProp>
  69982. <stringProp name="Argument.metadata">=</stringProp>
  69983. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69984. <stringProp name="Argument.name">product[price]</stringProp>
  69985. </elementProp>
  69986. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  69987. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69988. <stringProp name="Argument.value">2</stringProp>
  69989. <stringProp name="Argument.metadata">=</stringProp>
  69990. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69991. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  69992. </elementProp>
  69993. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  69994. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  69995. <stringProp name="Argument.value">111</stringProp>
  69996. <stringProp name="Argument.metadata">=</stringProp>
  69997. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  69998. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  69999. </elementProp>
  70000. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  70001. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70002. <stringProp name="Argument.value">1</stringProp>
  70003. <stringProp name="Argument.metadata">=</stringProp>
  70004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70005. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  70006. </elementProp>
  70007. <elementProp name="product[weight]" elementType="HTTPArgument">
  70008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70009. <stringProp name="Argument.value">1.0000</stringProp>
  70010. <stringProp name="Argument.metadata">=</stringProp>
  70011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70012. <stringProp name="Argument.name">product[weight]</stringProp>
  70013. </elementProp>
  70014. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  70015. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70016. <stringProp name="Argument.value">2</stringProp>
  70017. <stringProp name="Argument.metadata">=</stringProp>
  70018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70019. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  70020. </elementProp>
  70021. <elementProp name="product[description]" elementType="HTTPArgument">
  70022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70023. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  70024. <stringProp name="Argument.metadata">=</stringProp>
  70025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70026. <stringProp name="Argument.name">product[description]</stringProp>
  70027. </elementProp>
  70028. <elementProp name="product[short_description]" elementType="HTTPArgument">
  70029. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70030. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  70031. <stringProp name="Argument.metadata">=</stringProp>
  70032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70033. <stringProp name="Argument.name">product[short_description]</stringProp>
  70034. </elementProp>
  70035. <elementProp name="product[status]" elementType="HTTPArgument">
  70036. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70037. <stringProp name="Argument.value">1</stringProp>
  70038. <stringProp name="Argument.metadata">=</stringProp>
  70039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70040. <stringProp name="Argument.name">product[status]</stringProp>
  70041. </elementProp>
  70042. <elementProp name="product[image]" elementType="HTTPArgument">
  70043. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70044. <stringProp name="Argument.value"/>
  70045. <stringProp name="Argument.metadata">=</stringProp>
  70046. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70047. <stringProp name="Argument.name">product[image]</stringProp>
  70048. </elementProp>
  70049. <elementProp name="product[small_image]" elementType="HTTPArgument">
  70050. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70051. <stringProp name="Argument.value"/>
  70052. <stringProp name="Argument.metadata">=</stringProp>
  70053. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70054. <stringProp name="Argument.name">product[small_image]</stringProp>
  70055. </elementProp>
  70056. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  70057. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70058. <stringProp name="Argument.value"/>
  70059. <stringProp name="Argument.metadata">=</stringProp>
  70060. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70061. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  70062. </elementProp>
  70063. <elementProp name="product[url_key]" elementType="HTTPArgument">
  70064. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70065. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  70066. <stringProp name="Argument.metadata">=</stringProp>
  70067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70068. <stringProp name="Argument.name">product[url_key]</stringProp>
  70069. </elementProp>
  70070. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  70071. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70072. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  70073. <stringProp name="Argument.metadata">=</stringProp>
  70074. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70075. <stringProp name="Argument.name">product[meta_title]</stringProp>
  70076. </elementProp>
  70077. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  70078. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70079. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  70080. <stringProp name="Argument.metadata">=</stringProp>
  70081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70082. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  70083. </elementProp>
  70084. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  70085. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70086. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  70087. <stringProp name="Argument.metadata">=</stringProp>
  70088. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70089. <stringProp name="Argument.name">product[meta_description]</stringProp>
  70090. </elementProp>
  70091. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  70092. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70093. <stringProp name="Argument.value">1</stringProp>
  70094. <stringProp name="Argument.metadata">=</stringProp>
  70095. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70096. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  70097. </elementProp>
  70098. <elementProp name="product[special_price]" elementType="HTTPArgument">
  70099. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70100. <stringProp name="Argument.value">99</stringProp>
  70101. <stringProp name="Argument.metadata">=</stringProp>
  70102. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70103. <stringProp name="Argument.name">product[special_price]</stringProp>
  70104. </elementProp>
  70105. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  70106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70107. <stringProp name="Argument.value">1</stringProp>
  70108. <stringProp name="Argument.metadata">=</stringProp>
  70109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70110. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  70111. </elementProp>
  70112. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  70113. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70114. <stringProp name="Argument.value"/>
  70115. <stringProp name="Argument.metadata">=</stringProp>
  70116. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70117. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  70118. </elementProp>
  70119. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  70120. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70121. <stringProp name="Argument.value"/>
  70122. <stringProp name="Argument.metadata">=</stringProp>
  70123. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70124. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  70125. </elementProp>
  70126. <elementProp name="product[cost]" elementType="HTTPArgument">
  70127. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70128. <stringProp name="Argument.value"/>
  70129. <stringProp name="Argument.metadata">=</stringProp>
  70130. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70131. <stringProp name="Argument.name">product[cost]</stringProp>
  70132. </elementProp>
  70133. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  70134. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70135. <stringProp name="Argument.value">0</stringProp>
  70136. <stringProp name="Argument.metadata">=</stringProp>
  70137. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70138. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  70139. </elementProp>
  70140. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  70141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70142. <stringProp name="Argument.value">32000</stringProp>
  70143. <stringProp name="Argument.metadata">=</stringProp>
  70144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70145. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  70146. </elementProp>
  70147. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  70148. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70149. <stringProp name="Argument.value">100</stringProp>
  70150. <stringProp name="Argument.metadata">=</stringProp>
  70151. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70152. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  70153. </elementProp>
  70154. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  70155. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70156. <stringProp name="Argument.value">90</stringProp>
  70157. <stringProp name="Argument.metadata">=</stringProp>
  70158. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70159. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  70160. </elementProp>
  70161. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  70162. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70163. <stringProp name="Argument.value"/>
  70164. <stringProp name="Argument.metadata">=</stringProp>
  70165. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70166. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  70167. </elementProp>
  70168. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  70169. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70170. <stringProp name="Argument.value">0</stringProp>
  70171. <stringProp name="Argument.metadata">=</stringProp>
  70172. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70173. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  70174. </elementProp>
  70175. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  70176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70177. <stringProp name="Argument.value">1</stringProp>
  70178. <stringProp name="Argument.metadata">=</stringProp>
  70179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70180. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  70181. </elementProp>
  70182. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  70183. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70184. <stringProp name="Argument.value">101</stringProp>
  70185. <stringProp name="Argument.metadata">=</stringProp>
  70186. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70187. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  70188. </elementProp>
  70189. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  70190. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70191. <stringProp name="Argument.value">99</stringProp>
  70192. <stringProp name="Argument.metadata">=</stringProp>
  70193. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70194. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  70195. </elementProp>
  70196. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  70197. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70198. <stringProp name="Argument.value"/>
  70199. <stringProp name="Argument.metadata">=</stringProp>
  70200. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70201. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  70202. </elementProp>
  70203. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  70204. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70205. <stringProp name="Argument.value">1</stringProp>
  70206. <stringProp name="Argument.metadata">=</stringProp>
  70207. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70208. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  70209. </elementProp>
  70210. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  70211. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70212. <stringProp name="Argument.value">100500</stringProp>
  70213. <stringProp name="Argument.metadata">=</stringProp>
  70214. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70215. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  70216. </elementProp>
  70217. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  70218. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70219. <stringProp name="Argument.value">100500</stringProp>
  70220. <stringProp name="Argument.metadata">=</stringProp>
  70221. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70222. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  70223. </elementProp>
  70224. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  70225. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70226. <stringProp name="Argument.value">0</stringProp>
  70227. <stringProp name="Argument.metadata">=</stringProp>
  70228. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70229. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  70230. </elementProp>
  70231. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  70232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70233. <stringProp name="Argument.value">1</stringProp>
  70234. <stringProp name="Argument.metadata">=</stringProp>
  70235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70236. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  70237. </elementProp>
  70238. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  70239. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70240. <stringProp name="Argument.value">1</stringProp>
  70241. <stringProp name="Argument.metadata">=</stringProp>
  70242. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70243. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  70244. </elementProp>
  70245. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  70246. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70247. <stringProp name="Argument.value">1</stringProp>
  70248. <stringProp name="Argument.metadata">=</stringProp>
  70249. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70250. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  70251. </elementProp>
  70252. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  70253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70254. <stringProp name="Argument.value">10000</stringProp>
  70255. <stringProp name="Argument.metadata">=</stringProp>
  70256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70257. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  70258. </elementProp>
  70259. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  70260. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70261. <stringProp name="Argument.value">1</stringProp>
  70262. <stringProp name="Argument.metadata">=</stringProp>
  70263. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70264. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  70265. </elementProp>
  70266. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  70267. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70268. <stringProp name="Argument.value">0</stringProp>
  70269. <stringProp name="Argument.metadata">=</stringProp>
  70270. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70271. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  70272. </elementProp>
  70273. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  70274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70275. <stringProp name="Argument.value">0</stringProp>
  70276. <stringProp name="Argument.metadata">=</stringProp>
  70277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70278. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  70279. </elementProp>
  70280. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  70281. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70282. <stringProp name="Argument.value">0</stringProp>
  70283. <stringProp name="Argument.metadata">=</stringProp>
  70284. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70285. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  70286. </elementProp>
  70287. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  70288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70289. <stringProp name="Argument.value">1</stringProp>
  70290. <stringProp name="Argument.metadata">=</stringProp>
  70291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70292. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  70293. </elementProp>
  70294. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  70295. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70296. <stringProp name="Argument.value">1</stringProp>
  70297. <stringProp name="Argument.metadata">=</stringProp>
  70298. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70299. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  70300. </elementProp>
  70301. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  70302. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70303. <stringProp name="Argument.value">0</stringProp>
  70304. <stringProp name="Argument.metadata">=</stringProp>
  70305. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70306. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  70307. </elementProp>
  70308. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  70309. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70310. <stringProp name="Argument.value">0</stringProp>
  70311. <stringProp name="Argument.metadata">=</stringProp>
  70312. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70313. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  70314. </elementProp>
  70315. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  70316. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70317. <stringProp name="Argument.value">1</stringProp>
  70318. <stringProp name="Argument.metadata">=</stringProp>
  70319. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70320. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  70321. </elementProp>
  70322. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  70323. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70324. <stringProp name="Argument.value">1</stringProp>
  70325. <stringProp name="Argument.metadata">=</stringProp>
  70326. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70327. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  70328. </elementProp>
  70329. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  70330. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70331. <stringProp name="Argument.value"/>
  70332. <stringProp name="Argument.metadata">=</stringProp>
  70333. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70334. <stringProp name="Argument.name">product[custom_design]</stringProp>
  70335. </elementProp>
  70336. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  70337. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70338. <stringProp name="Argument.value"/>
  70339. <stringProp name="Argument.metadata">=</stringProp>
  70340. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70341. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  70342. </elementProp>
  70343. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  70344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70345. <stringProp name="Argument.value"/>
  70346. <stringProp name="Argument.metadata">=</stringProp>
  70347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70348. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  70349. </elementProp>
  70350. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  70351. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70352. <stringProp name="Argument.value"/>
  70353. <stringProp name="Argument.metadata">=</stringProp>
  70354. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70355. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  70356. </elementProp>
  70357. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  70358. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70359. <stringProp name="Argument.value"/>
  70360. <stringProp name="Argument.metadata">=</stringProp>
  70361. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70362. <stringProp name="Argument.name">product[page_layout]</stringProp>
  70363. </elementProp>
  70364. <elementProp name="product[options_container]" elementType="HTTPArgument">
  70365. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70366. <stringProp name="Argument.value">container2</stringProp>
  70367. <stringProp name="Argument.metadata">=</stringProp>
  70368. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70369. <stringProp name="Argument.name">product[options_container]</stringProp>
  70370. </elementProp>
  70371. <elementProp name="is_downloadable" elementType="HTTPArgument">
  70372. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70373. <stringProp name="Argument.value">on</stringProp>
  70374. <stringProp name="Argument.metadata">=</stringProp>
  70375. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70376. <stringProp name="Argument.name">is_downloadable</stringProp>
  70377. </elementProp>
  70378. <elementProp name="product[links_title]" elementType="HTTPArgument">
  70379. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70380. <stringProp name="Argument.value">Links</stringProp>
  70381. <stringProp name="Argument.metadata">=</stringProp>
  70382. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70383. <stringProp name="Argument.name">product[links_title]</stringProp>
  70384. </elementProp>
  70385. <elementProp name="product[links_purchased_separately]" elementType="HTTPArgument">
  70386. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70387. <stringProp name="Argument.value">0</stringProp>
  70388. <stringProp name="Argument.metadata">=</stringProp>
  70389. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70390. <stringProp name="Argument.name">product[links_purchased_separately]</stringProp>
  70391. </elementProp>
  70392. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  70393. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70394. <stringProp name="Argument.value">${original_file}</stringProp>
  70395. <stringProp name="Argument.metadata">=</stringProp>
  70396. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70397. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  70398. <stringProp name="Argument.desc">false</stringProp>
  70399. </elementProp>
  70400. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  70401. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70402. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  70403. <stringProp name="Argument.metadata">=</stringProp>
  70404. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70405. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  70406. <stringProp name="Argument.desc">false</stringProp>
  70407. </elementProp>
  70408. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  70409. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70410. <stringProp name="Argument.value">13</stringProp>
  70411. <stringProp name="Argument.metadata">=</stringProp>
  70412. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70413. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  70414. <stringProp name="Argument.desc">false</stringProp>
  70415. </elementProp>
  70416. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  70417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70418. <stringProp name="Argument.value">new</stringProp>
  70419. <stringProp name="Argument.metadata">=</stringProp>
  70420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70421. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  70422. <stringProp name="Argument.desc">false</stringProp>
  70423. </elementProp>
  70424. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  70425. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70426. <stringProp name="Argument.value">1</stringProp>
  70427. <stringProp name="Argument.metadata">=</stringProp>
  70428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70429. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  70430. </elementProp>
  70431. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  70432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70433. <stringProp name="Argument.value">0</stringProp>
  70434. <stringProp name="Argument.metadata">=</stringProp>
  70435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70436. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  70437. </elementProp>
  70438. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  70439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70440. <stringProp name="Argument.value"/>
  70441. <stringProp name="Argument.metadata">=</stringProp>
  70442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70443. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  70444. </elementProp>
  70445. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  70446. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70447. <stringProp name="Argument.value">0</stringProp>
  70448. <stringProp name="Argument.metadata">=</stringProp>
  70449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70450. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  70451. <stringProp name="Argument.desc">true</stringProp>
  70452. </elementProp>
  70453. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  70454. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70455. <stringProp name="Argument.value">120</stringProp>
  70456. <stringProp name="Argument.metadata">=</stringProp>
  70457. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70458. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  70459. <stringProp name="Argument.desc">true</stringProp>
  70460. </elementProp>
  70461. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  70462. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70463. <stringProp name="Argument.value">0</stringProp>
  70464. <stringProp name="Argument.metadata">=</stringProp>
  70465. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70466. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  70467. <stringProp name="Argument.desc">true</stringProp>
  70468. </elementProp>
  70469. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  70470. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70471. <stringProp name="Argument.value">file</stringProp>
  70472. <stringProp name="Argument.metadata">=</stringProp>
  70473. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70474. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  70475. </elementProp>
  70476. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  70477. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70478. <stringProp name="Argument.value"/>
  70479. <stringProp name="Argument.metadata">=</stringProp>
  70480. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70481. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  70482. </elementProp>
  70483. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  70484. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70485. <stringProp name="Argument.value">1</stringProp>
  70486. <stringProp name="Argument.metadata">=</stringProp>
  70487. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70488. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  70489. </elementProp>
  70490. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  70491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70492. <stringProp name="Argument.value">Original Link</stringProp>
  70493. <stringProp name="Argument.metadata">=</stringProp>
  70494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70495. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  70496. </elementProp>
  70497. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  70498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70499. <stringProp name="Argument.value">file</stringProp>
  70500. <stringProp name="Argument.metadata">=</stringProp>
  70501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70502. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  70503. </elementProp>
  70504. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  70505. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70506. <stringProp name="Argument.value">${sample_file}</stringProp>
  70507. <stringProp name="Argument.metadata">=</stringProp>
  70508. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70509. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  70510. <stringProp name="Argument.desc">true</stringProp>
  70511. </elementProp>
  70512. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  70513. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70514. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  70515. <stringProp name="Argument.metadata">=</stringProp>
  70516. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70517. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  70518. <stringProp name="Argument.desc">true</stringProp>
  70519. </elementProp>
  70520. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  70521. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70522. <stringProp name="Argument.value">14</stringProp>
  70523. <stringProp name="Argument.metadata">=</stringProp>
  70524. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70525. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  70526. <stringProp name="Argument.desc">true</stringProp>
  70527. </elementProp>
  70528. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  70529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70530. <stringProp name="Argument.value">new</stringProp>
  70531. <stringProp name="Argument.metadata">=</stringProp>
  70532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70533. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  70534. <stringProp name="Argument.desc">true</stringProp>
  70535. </elementProp>
  70536. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  70537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70538. <stringProp name="Argument.value">0</stringProp>
  70539. <stringProp name="Argument.metadata">=</stringProp>
  70540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70541. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  70542. <stringProp name="Argument.desc">true</stringProp>
  70543. </elementProp>
  70544. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  70545. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70546. <stringProp name="Argument.value"/>
  70547. <stringProp name="Argument.metadata">=</stringProp>
  70548. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70549. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  70550. <stringProp name="Argument.desc">true</stringProp>
  70551. </elementProp>
  70552. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  70553. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70554. <stringProp name="Argument.value">1</stringProp>
  70555. <stringProp name="Argument.metadata">=</stringProp>
  70556. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70557. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  70558. <stringProp name="Argument.desc">true</stringProp>
  70559. </elementProp>
  70560. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  70561. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70562. <stringProp name="Argument.value">Sample Link</stringProp>
  70563. <stringProp name="Argument.metadata">=</stringProp>
  70564. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70565. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  70566. <stringProp name="Argument.desc">true</stringProp>
  70567. </elementProp>
  70568. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  70569. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70570. <stringProp name="Argument.value">file</stringProp>
  70571. <stringProp name="Argument.metadata">=</stringProp>
  70572. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70573. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  70574. <stringProp name="Argument.desc">true</stringProp>
  70575. </elementProp>
  70576. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  70577. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70578. <stringProp name="Argument.value">1</stringProp>
  70579. <stringProp name="Argument.metadata">=</stringProp>
  70580. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70581. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  70582. <stringProp name="Argument.desc">false</stringProp>
  70583. </elementProp>
  70584. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  70585. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70586. <stringProp name="Argument.value">4</stringProp>
  70587. <stringProp name="Argument.metadata">=</stringProp>
  70588. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70589. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  70590. <stringProp name="Argument.desc">false</stringProp>
  70591. </elementProp>
  70592. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  70593. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70594. <stringProp name="Argument.value"/>
  70595. <stringProp name="Argument.metadata">=</stringProp>
  70596. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70597. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  70598. <stringProp name="Argument.desc">false</stringProp>
  70599. </elementProp>
  70600. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  70601. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70602. <stringProp name="Argument.value">${related_product_id}</stringProp>
  70603. <stringProp name="Argument.metadata">=</stringProp>
  70604. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70605. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  70606. </elementProp>
  70607. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  70608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70609. <stringProp name="Argument.value">1</stringProp>
  70610. <stringProp name="Argument.metadata">=</stringProp>
  70611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70612. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  70613. </elementProp>
  70614. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  70615. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70616. <stringProp name="Argument.value">${related_product_id}</stringProp>
  70617. <stringProp name="Argument.metadata">=</stringProp>
  70618. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70619. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  70620. </elementProp>
  70621. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  70622. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70623. <stringProp name="Argument.value">1</stringProp>
  70624. <stringProp name="Argument.metadata">=</stringProp>
  70625. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70626. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  70627. </elementProp>
  70628. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  70629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70630. <stringProp name="Argument.value">${related_product_id}</stringProp>
  70631. <stringProp name="Argument.metadata">=</stringProp>
  70632. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70633. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  70634. </elementProp>
  70635. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  70636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70637. <stringProp name="Argument.value">1</stringProp>
  70638. <stringProp name="Argument.metadata">=</stringProp>
  70639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70640. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  70641. </elementProp>
  70642. </collectionProp>
  70643. </elementProp>
  70644. <stringProp name="HTTPSampler.domain"/>
  70645. <stringProp name="HTTPSampler.port"/>
  70646. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  70647. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  70648. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  70649. <stringProp name="HTTPSampler.contentEncoding"/>
  70650. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/</stringProp>
  70651. <stringProp name="HTTPSampler.method">POST</stringProp>
  70652. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  70653. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  70654. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  70655. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  70656. <boolProp name="HTTPSampler.monitor">false</boolProp>
  70657. <stringProp name="HTTPSampler.embedded_url_re"/>
  70658. </HTTPSamplerProxy>
  70659. <hashTree>
  70660. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  70661. <collectionProp name="Asserion.test_strings">
  70662. <stringProp name="1853918323">{"error":false}</stringProp>
  70663. </collectionProp>
  70664. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  70665. <boolProp name="Assertion.assume_success">false</boolProp>
  70666. <intProp name="Assertion.test_type">2</intProp>
  70667. </ResponseAssertion>
  70668. <hashTree/>
  70669. </hashTree>
  70670. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Save" enabled="true">
  70671. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  70672. <collectionProp name="Arguments.arguments">
  70673. <elementProp name="ajax" elementType="HTTPArgument">
  70674. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70675. <stringProp name="Argument.value">true</stringProp>
  70676. <stringProp name="Argument.metadata">=</stringProp>
  70677. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70678. <stringProp name="Argument.name">ajax</stringProp>
  70679. <stringProp name="Argument.desc">false</stringProp>
  70680. </elementProp>
  70681. <elementProp name="isAjax" elementType="HTTPArgument">
  70682. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70683. <stringProp name="Argument.value">true</stringProp>
  70684. <stringProp name="Argument.metadata">=</stringProp>
  70685. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70686. <stringProp name="Argument.name">isAjax</stringProp>
  70687. <stringProp name="Argument.desc">false</stringProp>
  70688. </elementProp>
  70689. <elementProp name="form_key" elementType="HTTPArgument">
  70690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70691. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  70692. <stringProp name="Argument.metadata">=</stringProp>
  70693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70694. <stringProp name="Argument.name">form_key</stringProp>
  70695. <stringProp name="Argument.desc">false</stringProp>
  70696. </elementProp>
  70697. <elementProp name="product[name]" elementType="HTTPArgument">
  70698. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70699. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  70700. <stringProp name="Argument.metadata">=</stringProp>
  70701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70702. <stringProp name="Argument.name">product[name]</stringProp>
  70703. <stringProp name="Argument.desc">false</stringProp>
  70704. </elementProp>
  70705. <elementProp name="product[sku]" elementType="HTTPArgument">
  70706. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70707. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  70708. <stringProp name="Argument.metadata">=</stringProp>
  70709. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70710. <stringProp name="Argument.name">product[sku]</stringProp>
  70711. <stringProp name="Argument.desc">false</stringProp>
  70712. </elementProp>
  70713. <elementProp name="product[price]" elementType="HTTPArgument">
  70714. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70715. <stringProp name="Argument.value">123</stringProp>
  70716. <stringProp name="Argument.metadata">=</stringProp>
  70717. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70718. <stringProp name="Argument.name">product[price]</stringProp>
  70719. </elementProp>
  70720. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  70721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70722. <stringProp name="Argument.value">2</stringProp>
  70723. <stringProp name="Argument.metadata">=</stringProp>
  70724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70725. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  70726. </elementProp>
  70727. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  70728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70729. <stringProp name="Argument.value">111</stringProp>
  70730. <stringProp name="Argument.metadata">=</stringProp>
  70731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70732. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  70733. </elementProp>
  70734. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  70735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70736. <stringProp name="Argument.value">1</stringProp>
  70737. <stringProp name="Argument.metadata">=</stringProp>
  70738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70739. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  70740. </elementProp>
  70741. <elementProp name="product[weight]" elementType="HTTPArgument">
  70742. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70743. <stringProp name="Argument.value">1.0000</stringProp>
  70744. <stringProp name="Argument.metadata">=</stringProp>
  70745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70746. <stringProp name="Argument.name">product[weight]</stringProp>
  70747. </elementProp>
  70748. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  70749. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70750. <stringProp name="Argument.value">2</stringProp>
  70751. <stringProp name="Argument.metadata">=</stringProp>
  70752. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70753. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  70754. </elementProp>
  70755. <elementProp name="product[description]" elementType="HTTPArgument">
  70756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70757. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  70758. <stringProp name="Argument.metadata">=</stringProp>
  70759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70760. <stringProp name="Argument.name">product[description]</stringProp>
  70761. </elementProp>
  70762. <elementProp name="product[short_description]" elementType="HTTPArgument">
  70763. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70764. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  70765. <stringProp name="Argument.metadata">=</stringProp>
  70766. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70767. <stringProp name="Argument.name">product[short_description]</stringProp>
  70768. <stringProp name="Argument.desc">false</stringProp>
  70769. </elementProp>
  70770. <elementProp name="product[status]" elementType="HTTPArgument">
  70771. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70772. <stringProp name="Argument.value">1</stringProp>
  70773. <stringProp name="Argument.metadata">=</stringProp>
  70774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70775. <stringProp name="Argument.name">product[status]</stringProp>
  70776. </elementProp>
  70777. <elementProp name="product[image]" elementType="HTTPArgument">
  70778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70779. <stringProp name="Argument.value"/>
  70780. <stringProp name="Argument.metadata">=</stringProp>
  70781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70782. <stringProp name="Argument.name">product[image]</stringProp>
  70783. </elementProp>
  70784. <elementProp name="product[small_image]" elementType="HTTPArgument">
  70785. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70786. <stringProp name="Argument.value"/>
  70787. <stringProp name="Argument.metadata">=</stringProp>
  70788. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70789. <stringProp name="Argument.name">product[small_image]</stringProp>
  70790. </elementProp>
  70791. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  70792. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70793. <stringProp name="Argument.value"/>
  70794. <stringProp name="Argument.metadata">=</stringProp>
  70795. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70796. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  70797. </elementProp>
  70798. <elementProp name="product[url_key]" elementType="HTTPArgument">
  70799. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70800. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  70801. <stringProp name="Argument.metadata">=</stringProp>
  70802. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70803. <stringProp name="Argument.name">product[url_key]</stringProp>
  70804. </elementProp>
  70805. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  70806. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70807. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  70808. <stringProp name="Argument.metadata">=</stringProp>
  70809. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70810. <stringProp name="Argument.name">product[meta_title]</stringProp>
  70811. </elementProp>
  70812. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  70813. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70814. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  70815. <stringProp name="Argument.metadata">=</stringProp>
  70816. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70817. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  70818. </elementProp>
  70819. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  70820. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70821. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  70822. <stringProp name="Argument.metadata">=</stringProp>
  70823. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70824. <stringProp name="Argument.name">product[meta_description]</stringProp>
  70825. </elementProp>
  70826. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  70827. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70828. <stringProp name="Argument.value">1</stringProp>
  70829. <stringProp name="Argument.metadata">=</stringProp>
  70830. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70831. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  70832. </elementProp>
  70833. <elementProp name="product[special_price]" elementType="HTTPArgument">
  70834. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70835. <stringProp name="Argument.value">99</stringProp>
  70836. <stringProp name="Argument.metadata">=</stringProp>
  70837. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70838. <stringProp name="Argument.name">product[special_price]</stringProp>
  70839. </elementProp>
  70840. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  70841. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70842. <stringProp name="Argument.value"/>
  70843. <stringProp name="Argument.metadata">=</stringProp>
  70844. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70845. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  70846. </elementProp>
  70847. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  70848. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70849. <stringProp name="Argument.value"/>
  70850. <stringProp name="Argument.metadata">=</stringProp>
  70851. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70852. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  70853. </elementProp>
  70854. <elementProp name="product[cost]" elementType="HTTPArgument">
  70855. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70856. <stringProp name="Argument.value"/>
  70857. <stringProp name="Argument.metadata">=</stringProp>
  70858. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70859. <stringProp name="Argument.name">product[cost]</stringProp>
  70860. </elementProp>
  70861. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  70862. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70863. <stringProp name="Argument.value">0</stringProp>
  70864. <stringProp name="Argument.metadata">=</stringProp>
  70865. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70866. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  70867. </elementProp>
  70868. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  70869. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70870. <stringProp name="Argument.value">32000</stringProp>
  70871. <stringProp name="Argument.metadata">=</stringProp>
  70872. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70873. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  70874. </elementProp>
  70875. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  70876. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70877. <stringProp name="Argument.value">100</stringProp>
  70878. <stringProp name="Argument.metadata">=</stringProp>
  70879. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70880. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  70881. </elementProp>
  70882. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  70883. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70884. <stringProp name="Argument.value">90</stringProp>
  70885. <stringProp name="Argument.metadata">=</stringProp>
  70886. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70887. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  70888. </elementProp>
  70889. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  70890. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70891. <stringProp name="Argument.value"/>
  70892. <stringProp name="Argument.metadata">=</stringProp>
  70893. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70894. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  70895. </elementProp>
  70896. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  70897. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70898. <stringProp name="Argument.value">0</stringProp>
  70899. <stringProp name="Argument.metadata">=</stringProp>
  70900. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70901. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  70902. </elementProp>
  70903. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  70904. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70905. <stringProp name="Argument.value">1</stringProp>
  70906. <stringProp name="Argument.metadata">=</stringProp>
  70907. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70908. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  70909. </elementProp>
  70910. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  70911. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70912. <stringProp name="Argument.value">101</stringProp>
  70913. <stringProp name="Argument.metadata">=</stringProp>
  70914. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70915. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  70916. </elementProp>
  70917. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  70918. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70919. <stringProp name="Argument.value">99</stringProp>
  70920. <stringProp name="Argument.metadata">=</stringProp>
  70921. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70922. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  70923. </elementProp>
  70924. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  70925. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70926. <stringProp name="Argument.value"/>
  70927. <stringProp name="Argument.metadata">=</stringProp>
  70928. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70929. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  70930. </elementProp>
  70931. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  70932. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70933. <stringProp name="Argument.value">1</stringProp>
  70934. <stringProp name="Argument.metadata">=</stringProp>
  70935. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70936. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  70937. </elementProp>
  70938. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  70939. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70940. <stringProp name="Argument.value">100500</stringProp>
  70941. <stringProp name="Argument.metadata">=</stringProp>
  70942. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70943. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  70944. </elementProp>
  70945. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  70946. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70947. <stringProp name="Argument.value">100500</stringProp>
  70948. <stringProp name="Argument.metadata">=</stringProp>
  70949. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70950. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  70951. </elementProp>
  70952. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  70953. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70954. <stringProp name="Argument.value">0</stringProp>
  70955. <stringProp name="Argument.metadata">=</stringProp>
  70956. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70957. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  70958. </elementProp>
  70959. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  70960. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70961. <stringProp name="Argument.value">1</stringProp>
  70962. <stringProp name="Argument.metadata">=</stringProp>
  70963. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70964. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  70965. </elementProp>
  70966. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  70967. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70968. <stringProp name="Argument.value">1</stringProp>
  70969. <stringProp name="Argument.metadata">=</stringProp>
  70970. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70971. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  70972. </elementProp>
  70973. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  70974. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70975. <stringProp name="Argument.value">1</stringProp>
  70976. <stringProp name="Argument.metadata">=</stringProp>
  70977. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70978. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  70979. </elementProp>
  70980. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  70981. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70982. <stringProp name="Argument.value">10000</stringProp>
  70983. <stringProp name="Argument.metadata">=</stringProp>
  70984. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70985. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  70986. </elementProp>
  70987. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  70988. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70989. <stringProp name="Argument.value">1</stringProp>
  70990. <stringProp name="Argument.metadata">=</stringProp>
  70991. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70992. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  70993. </elementProp>
  70994. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  70995. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  70996. <stringProp name="Argument.value">0</stringProp>
  70997. <stringProp name="Argument.metadata">=</stringProp>
  70998. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  70999. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  71000. </elementProp>
  71001. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  71002. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71003. <stringProp name="Argument.value">0</stringProp>
  71004. <stringProp name="Argument.metadata">=</stringProp>
  71005. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71006. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  71007. </elementProp>
  71008. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  71009. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71010. <stringProp name="Argument.value">0</stringProp>
  71011. <stringProp name="Argument.metadata">=</stringProp>
  71012. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71013. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  71014. </elementProp>
  71015. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  71016. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71017. <stringProp name="Argument.value">1</stringProp>
  71018. <stringProp name="Argument.metadata">=</stringProp>
  71019. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71020. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  71021. </elementProp>
  71022. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  71023. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71024. <stringProp name="Argument.value">1</stringProp>
  71025. <stringProp name="Argument.metadata">=</stringProp>
  71026. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71027. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  71028. </elementProp>
  71029. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  71030. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71031. <stringProp name="Argument.value">1</stringProp>
  71032. <stringProp name="Argument.metadata">=</stringProp>
  71033. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71034. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  71035. </elementProp>
  71036. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  71037. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71038. <stringProp name="Argument.value">0</stringProp>
  71039. <stringProp name="Argument.metadata">=</stringProp>
  71040. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71041. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  71042. </elementProp>
  71043. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  71044. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71045. <stringProp name="Argument.value">0</stringProp>
  71046. <stringProp name="Argument.metadata">=</stringProp>
  71047. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71048. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  71049. </elementProp>
  71050. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  71051. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71052. <stringProp name="Argument.value">1</stringProp>
  71053. <stringProp name="Argument.metadata">=</stringProp>
  71054. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71055. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  71056. </elementProp>
  71057. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  71058. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71059. <stringProp name="Argument.value">1</stringProp>
  71060. <stringProp name="Argument.metadata">=</stringProp>
  71061. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71062. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  71063. </elementProp>
  71064. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  71065. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71066. <stringProp name="Argument.value"/>
  71067. <stringProp name="Argument.metadata">=</stringProp>
  71068. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71069. <stringProp name="Argument.name">product[custom_design]</stringProp>
  71070. </elementProp>
  71071. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  71072. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71073. <stringProp name="Argument.value"/>
  71074. <stringProp name="Argument.metadata">=</stringProp>
  71075. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71076. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  71077. </elementProp>
  71078. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  71079. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71080. <stringProp name="Argument.value"/>
  71081. <stringProp name="Argument.metadata">=</stringProp>
  71082. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71083. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  71084. </elementProp>
  71085. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  71086. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71087. <stringProp name="Argument.value"/>
  71088. <stringProp name="Argument.metadata">=</stringProp>
  71089. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71090. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  71091. </elementProp>
  71092. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  71093. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71094. <stringProp name="Argument.value"/>
  71095. <stringProp name="Argument.metadata">=</stringProp>
  71096. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71097. <stringProp name="Argument.name">product[page_layout]</stringProp>
  71098. </elementProp>
  71099. <elementProp name="product[options_container]" elementType="HTTPArgument">
  71100. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71101. <stringProp name="Argument.value">container2</stringProp>
  71102. <stringProp name="Argument.metadata">=</stringProp>
  71103. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71104. <stringProp name="Argument.name">product[options_container]</stringProp>
  71105. </elementProp>
  71106. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  71107. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71108. <stringProp name="Argument.value">${original_file}</stringProp>
  71109. <stringProp name="Argument.metadata">=</stringProp>
  71110. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71111. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  71112. <stringProp name="Argument.desc">false</stringProp>
  71113. </elementProp>
  71114. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  71115. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71116. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  71117. <stringProp name="Argument.metadata">=</stringProp>
  71118. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71119. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  71120. <stringProp name="Argument.desc">false</stringProp>
  71121. </elementProp>
  71122. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  71123. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71124. <stringProp name="Argument.value">13</stringProp>
  71125. <stringProp name="Argument.metadata">=</stringProp>
  71126. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71127. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  71128. <stringProp name="Argument.desc">false</stringProp>
  71129. </elementProp>
  71130. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  71131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71132. <stringProp name="Argument.value">new</stringProp>
  71133. <stringProp name="Argument.metadata">=</stringProp>
  71134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71135. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  71136. <stringProp name="Argument.desc">false</stringProp>
  71137. </elementProp>
  71138. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  71139. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71140. <stringProp name="Argument.value">1</stringProp>
  71141. <stringProp name="Argument.metadata">=</stringProp>
  71142. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71143. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  71144. <stringProp name="Argument.desc">true</stringProp>
  71145. </elementProp>
  71146. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  71147. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71148. <stringProp name="Argument.value">0</stringProp>
  71149. <stringProp name="Argument.metadata">=</stringProp>
  71150. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71151. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  71152. <stringProp name="Argument.desc">true</stringProp>
  71153. </elementProp>
  71154. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  71155. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71156. <stringProp name="Argument.value"/>
  71157. <stringProp name="Argument.metadata">=</stringProp>
  71158. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71159. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  71160. <stringProp name="Argument.desc">true</stringProp>
  71161. </elementProp>
  71162. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  71163. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71164. <stringProp name="Argument.value">0</stringProp>
  71165. <stringProp name="Argument.metadata">=</stringProp>
  71166. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71167. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  71168. <stringProp name="Argument.desc">false</stringProp>
  71169. </elementProp>
  71170. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  71171. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71172. <stringProp name="Argument.value">120</stringProp>
  71173. <stringProp name="Argument.metadata">=</stringProp>
  71174. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71175. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  71176. <stringProp name="Argument.desc">false</stringProp>
  71177. </elementProp>
  71178. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  71179. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71180. <stringProp name="Argument.value">0</stringProp>
  71181. <stringProp name="Argument.metadata">=</stringProp>
  71182. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71183. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  71184. <stringProp name="Argument.desc">false</stringProp>
  71185. </elementProp>
  71186. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  71187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71188. <stringProp name="Argument.value">file</stringProp>
  71189. <stringProp name="Argument.metadata">=</stringProp>
  71190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71191. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  71192. <stringProp name="Argument.desc">true</stringProp>
  71193. </elementProp>
  71194. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  71195. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71196. <stringProp name="Argument.value"/>
  71197. <stringProp name="Argument.metadata">=</stringProp>
  71198. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71199. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  71200. <stringProp name="Argument.desc">true</stringProp>
  71201. </elementProp>
  71202. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  71203. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71204. <stringProp name="Argument.value">1</stringProp>
  71205. <stringProp name="Argument.metadata">=</stringProp>
  71206. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71207. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  71208. <stringProp name="Argument.desc">true</stringProp>
  71209. </elementProp>
  71210. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  71211. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71212. <stringProp name="Argument.value">Original Link</stringProp>
  71213. <stringProp name="Argument.metadata">=</stringProp>
  71214. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71215. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  71216. <stringProp name="Argument.desc">true</stringProp>
  71217. </elementProp>
  71218. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  71219. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71220. <stringProp name="Argument.value">file</stringProp>
  71221. <stringProp name="Argument.metadata">=</stringProp>
  71222. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71223. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  71224. <stringProp name="Argument.desc">true</stringProp>
  71225. </elementProp>
  71226. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  71227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71228. <stringProp name="Argument.value">${sample_file}</stringProp>
  71229. <stringProp name="Argument.metadata">=</stringProp>
  71230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71231. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  71232. <stringProp name="Argument.desc">true</stringProp>
  71233. </elementProp>
  71234. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  71235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71236. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  71237. <stringProp name="Argument.metadata">=</stringProp>
  71238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71239. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  71240. <stringProp name="Argument.desc">true</stringProp>
  71241. </elementProp>
  71242. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  71243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71244. <stringProp name="Argument.value">14</stringProp>
  71245. <stringProp name="Argument.metadata">=</stringProp>
  71246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71247. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  71248. <stringProp name="Argument.desc">true</stringProp>
  71249. </elementProp>
  71250. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  71251. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71252. <stringProp name="Argument.value">new</stringProp>
  71253. <stringProp name="Argument.metadata">=</stringProp>
  71254. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71255. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  71256. <stringProp name="Argument.desc">true</stringProp>
  71257. </elementProp>
  71258. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  71259. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71260. <stringProp name="Argument.value">0</stringProp>
  71261. <stringProp name="Argument.metadata">=</stringProp>
  71262. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71263. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  71264. <stringProp name="Argument.desc">true</stringProp>
  71265. </elementProp>
  71266. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  71267. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71268. <stringProp name="Argument.value"/>
  71269. <stringProp name="Argument.metadata">=</stringProp>
  71270. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71271. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  71272. <stringProp name="Argument.desc">true</stringProp>
  71273. </elementProp>
  71274. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  71275. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71276. <stringProp name="Argument.value">1</stringProp>
  71277. <stringProp name="Argument.metadata">=</stringProp>
  71278. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71279. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  71280. <stringProp name="Argument.desc">true</stringProp>
  71281. </elementProp>
  71282. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  71283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71284. <stringProp name="Argument.value">Sample Link</stringProp>
  71285. <stringProp name="Argument.metadata">=</stringProp>
  71286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71287. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  71288. <stringProp name="Argument.desc">true</stringProp>
  71289. </elementProp>
  71290. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  71291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71292. <stringProp name="Argument.value">file</stringProp>
  71293. <stringProp name="Argument.metadata">=</stringProp>
  71294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71295. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  71296. <stringProp name="Argument.desc">true</stringProp>
  71297. </elementProp>
  71298. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  71299. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71300. <stringProp name="Argument.value">1</stringProp>
  71301. <stringProp name="Argument.metadata">=</stringProp>
  71302. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71303. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  71304. <stringProp name="Argument.desc">false</stringProp>
  71305. </elementProp>
  71306. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  71307. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71308. <stringProp name="Argument.value">4</stringProp>
  71309. <stringProp name="Argument.metadata">=</stringProp>
  71310. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71311. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  71312. <stringProp name="Argument.desc">false</stringProp>
  71313. </elementProp>
  71314. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  71315. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71316. <stringProp name="Argument.value"/>
  71317. <stringProp name="Argument.metadata">=</stringProp>
  71318. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71319. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  71320. <stringProp name="Argument.desc">false</stringProp>
  71321. </elementProp>
  71322. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  71323. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71324. <stringProp name="Argument.value">${related_product_id}</stringProp>
  71325. <stringProp name="Argument.metadata">=</stringProp>
  71326. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71327. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  71328. </elementProp>
  71329. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  71330. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71331. <stringProp name="Argument.value">1</stringProp>
  71332. <stringProp name="Argument.metadata">=</stringProp>
  71333. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71334. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  71335. </elementProp>
  71336. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  71337. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71338. <stringProp name="Argument.value">${related_product_id}</stringProp>
  71339. <stringProp name="Argument.metadata">=</stringProp>
  71340. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71341. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  71342. </elementProp>
  71343. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  71344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71345. <stringProp name="Argument.value">1</stringProp>
  71346. <stringProp name="Argument.metadata">=</stringProp>
  71347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71348. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  71349. </elementProp>
  71350. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  71351. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71352. <stringProp name="Argument.value">${related_product_id}</stringProp>
  71353. <stringProp name="Argument.metadata">=</stringProp>
  71354. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71355. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  71356. </elementProp>
  71357. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  71358. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71359. <stringProp name="Argument.value">1</stringProp>
  71360. <stringProp name="Argument.metadata">=</stringProp>
  71361. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71362. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  71363. </elementProp>
  71364. </collectionProp>
  71365. </elementProp>
  71366. <stringProp name="HTTPSampler.domain"/>
  71367. <stringProp name="HTTPSampler.port"/>
  71368. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  71369. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  71370. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  71371. <stringProp name="HTTPSampler.contentEncoding"/>
  71372. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/</stringProp>
  71373. <stringProp name="HTTPSampler.method">POST</stringProp>
  71374. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  71375. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  71376. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  71377. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  71378. <boolProp name="HTTPSampler.monitor">false</boolProp>
  71379. <stringProp name="HTTPSampler.embedded_url_re"/>
  71380. </HTTPSamplerProxy>
  71381. <hashTree>
  71382. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  71383. <collectionProp name="Asserion.test_strings">
  71384. <stringProp name="-583471546">You saved the product</stringProp>
  71385. </collectionProp>
  71386. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  71387. <boolProp name="Assertion.assume_success">false</boolProp>
  71388. <intProp name="Assertion.test_type">2</intProp>
  71389. </ResponseAssertion>
  71390. <hashTree/>
  71391. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  71392. <collectionProp name="Asserion.test_strings">
  71393. <stringProp name="-1600986843">violation</stringProp>
  71394. </collectionProp>
  71395. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  71396. <boolProp name="Assertion.assume_success">false</boolProp>
  71397. <intProp name="Assertion.test_type">6</intProp>
  71398. </ResponseAssertion>
  71399. <hashTree/>
  71400. </hashTree>
  71401. </hashTree>
  71402. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Simple Product" enabled="true">
  71403. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_simple_product.jmx</stringProp>
  71404. </TestFragmentController>
  71405. <hashTree>
  71406. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  71407. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  71408. <collectionProp name="Arguments.arguments"/>
  71409. </elementProp>
  71410. <stringProp name="HTTPSampler.domain"/>
  71411. <stringProp name="HTTPSampler.port"/>
  71412. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  71413. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  71414. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  71415. <stringProp name="HTTPSampler.contentEncoding"/>
  71416. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  71417. <stringProp name="HTTPSampler.method">GET</stringProp>
  71418. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  71419. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  71420. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  71421. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  71422. <boolProp name="HTTPSampler.monitor">false</boolProp>
  71423. <stringProp name="HTTPSampler.embedded_url_re"/>
  71424. </HTTPSamplerProxy>
  71425. <hashTree>
  71426. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  71427. <collectionProp name="Asserion.test_strings">
  71428. <stringProp name="1509986340">records found</stringProp>
  71429. </collectionProp>
  71430. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  71431. <boolProp name="Assertion.assume_success">false</boolProp>
  71432. <intProp name="Assertion.test_type">2</intProp>
  71433. </ResponseAssertion>
  71434. <hashTree/>
  71435. </hashTree>
  71436. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product" enabled="true">
  71437. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  71438. <collectionProp name="Arguments.arguments"/>
  71439. </elementProp>
  71440. <stringProp name="HTTPSampler.domain"/>
  71441. <stringProp name="HTTPSampler.port"/>
  71442. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  71443. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  71444. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  71445. <stringProp name="HTTPSampler.contentEncoding"/>
  71446. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/simple/</stringProp>
  71447. <stringProp name="HTTPSampler.method">GET</stringProp>
  71448. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  71449. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  71450. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  71451. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  71452. <boolProp name="HTTPSampler.monitor">false</boolProp>
  71453. <stringProp name="HTTPSampler.embedded_url_re"/>
  71454. </HTTPSamplerProxy>
  71455. <hashTree>
  71456. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  71457. <collectionProp name="Asserion.test_strings">
  71458. <stringProp name="-144461265">New Product</stringProp>
  71459. </collectionProp>
  71460. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  71461. <boolProp name="Assertion.assume_success">false</boolProp>
  71462. <intProp name="Assertion.test_type">2</intProp>
  71463. </ResponseAssertion>
  71464. <hashTree/>
  71465. </hashTree>
  71466. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Validate" enabled="true">
  71467. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  71468. <collectionProp name="Arguments.arguments">
  71469. <elementProp name="ajax" elementType="HTTPArgument">
  71470. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71471. <stringProp name="Argument.value">true</stringProp>
  71472. <stringProp name="Argument.metadata">=</stringProp>
  71473. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71474. <stringProp name="Argument.name">ajax</stringProp>
  71475. <stringProp name="Argument.desc">false</stringProp>
  71476. </elementProp>
  71477. <elementProp name="isAjax" elementType="HTTPArgument">
  71478. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71479. <stringProp name="Argument.value">true</stringProp>
  71480. <stringProp name="Argument.metadata">=</stringProp>
  71481. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71482. <stringProp name="Argument.name">isAjax</stringProp>
  71483. <stringProp name="Argument.desc">false</stringProp>
  71484. </elementProp>
  71485. <elementProp name="form_key" elementType="HTTPArgument">
  71486. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71487. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  71488. <stringProp name="Argument.metadata">=</stringProp>
  71489. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71490. <stringProp name="Argument.name">form_key</stringProp>
  71491. <stringProp name="Argument.desc">false</stringProp>
  71492. </elementProp>
  71493. <elementProp name="product[name]" elementType="HTTPArgument">
  71494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71495. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  71496. <stringProp name="Argument.metadata">=</stringProp>
  71497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71498. <stringProp name="Argument.name">product[name]</stringProp>
  71499. <stringProp name="Argument.desc">false</stringProp>
  71500. </elementProp>
  71501. <elementProp name="product[sku]" elementType="HTTPArgument">
  71502. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71503. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  71504. <stringProp name="Argument.metadata">=</stringProp>
  71505. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71506. <stringProp name="Argument.name">product[sku]</stringProp>
  71507. <stringProp name="Argument.desc">false</stringProp>
  71508. </elementProp>
  71509. <elementProp name="product[price]" elementType="HTTPArgument">
  71510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71511. <stringProp name="Argument.value">123</stringProp>
  71512. <stringProp name="Argument.metadata">=</stringProp>
  71513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71514. <stringProp name="Argument.name">product[price]</stringProp>
  71515. </elementProp>
  71516. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  71517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71518. <stringProp name="Argument.value">2</stringProp>
  71519. <stringProp name="Argument.metadata">=</stringProp>
  71520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71521. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  71522. </elementProp>
  71523. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  71524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71525. <stringProp name="Argument.value">111</stringProp>
  71526. <stringProp name="Argument.metadata">=</stringProp>
  71527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71528. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  71529. </elementProp>
  71530. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  71531. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71532. <stringProp name="Argument.value">1</stringProp>
  71533. <stringProp name="Argument.metadata">=</stringProp>
  71534. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71535. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  71536. </elementProp>
  71537. <elementProp name="product[weight]" elementType="HTTPArgument">
  71538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71539. <stringProp name="Argument.value">1.0000</stringProp>
  71540. <stringProp name="Argument.metadata">=</stringProp>
  71541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71542. <stringProp name="Argument.name">product[weight]</stringProp>
  71543. </elementProp>
  71544. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  71545. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71546. <stringProp name="Argument.value">1</stringProp>
  71547. <stringProp name="Argument.metadata">=</stringProp>
  71548. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71549. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  71550. <stringProp name="Argument.desc">true</stringProp>
  71551. </elementProp>
  71552. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  71553. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71554. <stringProp name="Argument.value">2</stringProp>
  71555. <stringProp name="Argument.metadata">=</stringProp>
  71556. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71557. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  71558. </elementProp>
  71559. <elementProp name="product[description]" elementType="HTTPArgument">
  71560. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71561. <stringProp name="Argument.value">&lt;p&gt;Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  71562. <stringProp name="Argument.metadata">=</stringProp>
  71563. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71564. <stringProp name="Argument.name">product[description]</stringProp>
  71565. </elementProp>
  71566. <elementProp name="product[short_description]" elementType="HTTPArgument">
  71567. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71568. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  71569. <stringProp name="Argument.metadata">=</stringProp>
  71570. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71571. <stringProp name="Argument.name">product[short_description]</stringProp>
  71572. </elementProp>
  71573. <elementProp name="product[status]" elementType="HTTPArgument">
  71574. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71575. <stringProp name="Argument.value">1</stringProp>
  71576. <stringProp name="Argument.metadata">=</stringProp>
  71577. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71578. <stringProp name="Argument.name">product[status]</stringProp>
  71579. </elementProp>
  71580. <elementProp name="product[image]" elementType="HTTPArgument">
  71581. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71582. <stringProp name="Argument.value"/>
  71583. <stringProp name="Argument.metadata">=</stringProp>
  71584. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71585. <stringProp name="Argument.name">product[image]</stringProp>
  71586. </elementProp>
  71587. <elementProp name="product[small_image]" elementType="HTTPArgument">
  71588. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71589. <stringProp name="Argument.value"/>
  71590. <stringProp name="Argument.metadata">=</stringProp>
  71591. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71592. <stringProp name="Argument.name">product[small_image]</stringProp>
  71593. </elementProp>
  71594. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  71595. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71596. <stringProp name="Argument.value"/>
  71597. <stringProp name="Argument.metadata">=</stringProp>
  71598. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71599. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  71600. </elementProp>
  71601. <elementProp name="product[url_key]" elementType="HTTPArgument">
  71602. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71603. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  71604. <stringProp name="Argument.metadata">=</stringProp>
  71605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71606. <stringProp name="Argument.name">product[url_key]</stringProp>
  71607. </elementProp>
  71608. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  71609. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71610. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  71611. <stringProp name="Argument.metadata">=</stringProp>
  71612. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71613. <stringProp name="Argument.name">product[meta_title]</stringProp>
  71614. </elementProp>
  71615. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  71616. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71617. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  71618. <stringProp name="Argument.metadata">=</stringProp>
  71619. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71620. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  71621. </elementProp>
  71622. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  71623. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71624. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  71625. <stringProp name="Argument.metadata">=</stringProp>
  71626. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71627. <stringProp name="Argument.name">product[meta_description]</stringProp>
  71628. </elementProp>
  71629. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  71630. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71631. <stringProp name="Argument.value">1</stringProp>
  71632. <stringProp name="Argument.metadata">=</stringProp>
  71633. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71634. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  71635. </elementProp>
  71636. <elementProp name="product[special_price]" elementType="HTTPArgument">
  71637. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71638. <stringProp name="Argument.value">99</stringProp>
  71639. <stringProp name="Argument.metadata">=</stringProp>
  71640. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71641. <stringProp name="Argument.name">product[special_price]</stringProp>
  71642. </elementProp>
  71643. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  71644. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71645. <stringProp name="Argument.value">1</stringProp>
  71646. <stringProp name="Argument.metadata">=</stringProp>
  71647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71648. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  71649. </elementProp>
  71650. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  71651. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71652. <stringProp name="Argument.value"/>
  71653. <stringProp name="Argument.metadata">=</stringProp>
  71654. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71655. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  71656. </elementProp>
  71657. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  71658. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71659. <stringProp name="Argument.value"/>
  71660. <stringProp name="Argument.metadata">=</stringProp>
  71661. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71662. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  71663. </elementProp>
  71664. <elementProp name="product[cost]" elementType="HTTPArgument">
  71665. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71666. <stringProp name="Argument.value"/>
  71667. <stringProp name="Argument.metadata">=</stringProp>
  71668. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71669. <stringProp name="Argument.name">product[cost]</stringProp>
  71670. </elementProp>
  71671. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  71672. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71673. <stringProp name="Argument.value">0</stringProp>
  71674. <stringProp name="Argument.metadata">=</stringProp>
  71675. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71676. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  71677. </elementProp>
  71678. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  71679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71680. <stringProp name="Argument.value">32000</stringProp>
  71681. <stringProp name="Argument.metadata">=</stringProp>
  71682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71683. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  71684. </elementProp>
  71685. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  71686. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71687. <stringProp name="Argument.value">100</stringProp>
  71688. <stringProp name="Argument.metadata">=</stringProp>
  71689. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71690. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  71691. </elementProp>
  71692. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  71693. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71694. <stringProp name="Argument.value">90</stringProp>
  71695. <stringProp name="Argument.metadata">=</stringProp>
  71696. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71697. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  71698. </elementProp>
  71699. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  71700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71701. <stringProp name="Argument.value"/>
  71702. <stringProp name="Argument.metadata">=</stringProp>
  71703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71704. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  71705. </elementProp>
  71706. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  71707. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71708. <stringProp name="Argument.value">0</stringProp>
  71709. <stringProp name="Argument.metadata">=</stringProp>
  71710. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71711. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  71712. </elementProp>
  71713. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  71714. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71715. <stringProp name="Argument.value">1</stringProp>
  71716. <stringProp name="Argument.metadata">=</stringProp>
  71717. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71718. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  71719. </elementProp>
  71720. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  71721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71722. <stringProp name="Argument.value">101</stringProp>
  71723. <stringProp name="Argument.metadata">=</stringProp>
  71724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71725. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  71726. </elementProp>
  71727. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  71728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71729. <stringProp name="Argument.value">99</stringProp>
  71730. <stringProp name="Argument.metadata">=</stringProp>
  71731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71732. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  71733. </elementProp>
  71734. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  71735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71736. <stringProp name="Argument.value"/>
  71737. <stringProp name="Argument.metadata">=</stringProp>
  71738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71739. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  71740. </elementProp>
  71741. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  71742. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71743. <stringProp name="Argument.value">1</stringProp>
  71744. <stringProp name="Argument.metadata">=</stringProp>
  71745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71746. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  71747. </elementProp>
  71748. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  71749. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71750. <stringProp name="Argument.value">100500</stringProp>
  71751. <stringProp name="Argument.metadata">=</stringProp>
  71752. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71753. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  71754. </elementProp>
  71755. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  71756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71757. <stringProp name="Argument.value">100500</stringProp>
  71758. <stringProp name="Argument.metadata">=</stringProp>
  71759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71760. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  71761. </elementProp>
  71762. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  71763. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71764. <stringProp name="Argument.value">0</stringProp>
  71765. <stringProp name="Argument.metadata">=</stringProp>
  71766. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71767. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  71768. </elementProp>
  71769. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  71770. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71771. <stringProp name="Argument.value">1</stringProp>
  71772. <stringProp name="Argument.metadata">=</stringProp>
  71773. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71774. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  71775. </elementProp>
  71776. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  71777. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71778. <stringProp name="Argument.value">1</stringProp>
  71779. <stringProp name="Argument.metadata">=</stringProp>
  71780. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71781. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  71782. </elementProp>
  71783. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  71784. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71785. <stringProp name="Argument.value">1</stringProp>
  71786. <stringProp name="Argument.metadata">=</stringProp>
  71787. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71788. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  71789. </elementProp>
  71790. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  71791. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71792. <stringProp name="Argument.value">10000</stringProp>
  71793. <stringProp name="Argument.metadata">=</stringProp>
  71794. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71795. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  71796. </elementProp>
  71797. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  71798. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71799. <stringProp name="Argument.value">1</stringProp>
  71800. <stringProp name="Argument.metadata">=</stringProp>
  71801. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71802. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  71803. </elementProp>
  71804. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  71805. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71806. <stringProp name="Argument.value">0</stringProp>
  71807. <stringProp name="Argument.metadata">=</stringProp>
  71808. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71809. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  71810. </elementProp>
  71811. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  71812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71813. <stringProp name="Argument.value">0</stringProp>
  71814. <stringProp name="Argument.metadata">=</stringProp>
  71815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71816. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  71817. </elementProp>
  71818. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  71819. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71820. <stringProp name="Argument.value">0</stringProp>
  71821. <stringProp name="Argument.metadata">=</stringProp>
  71822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71823. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  71824. </elementProp>
  71825. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  71826. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71827. <stringProp name="Argument.value">1</stringProp>
  71828. <stringProp name="Argument.metadata">=</stringProp>
  71829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71830. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  71831. </elementProp>
  71832. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  71833. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71834. <stringProp name="Argument.value">1</stringProp>
  71835. <stringProp name="Argument.metadata">=</stringProp>
  71836. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71837. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  71838. </elementProp>
  71839. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  71840. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71841. <stringProp name="Argument.value">0</stringProp>
  71842. <stringProp name="Argument.metadata">=</stringProp>
  71843. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71844. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  71845. </elementProp>
  71846. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  71847. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71848. <stringProp name="Argument.value">0</stringProp>
  71849. <stringProp name="Argument.metadata">=</stringProp>
  71850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71851. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  71852. </elementProp>
  71853. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  71854. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71855. <stringProp name="Argument.value">1</stringProp>
  71856. <stringProp name="Argument.metadata">=</stringProp>
  71857. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71858. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  71859. </elementProp>
  71860. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  71861. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71862. <stringProp name="Argument.value">1</stringProp>
  71863. <stringProp name="Argument.metadata">=</stringProp>
  71864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71865. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  71866. </elementProp>
  71867. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  71868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71869. <stringProp name="Argument.value"/>
  71870. <stringProp name="Argument.metadata">=</stringProp>
  71871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71872. <stringProp name="Argument.name">product[custom_design]</stringProp>
  71873. </elementProp>
  71874. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  71875. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71876. <stringProp name="Argument.value"/>
  71877. <stringProp name="Argument.metadata">=</stringProp>
  71878. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71879. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  71880. </elementProp>
  71881. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  71882. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71883. <stringProp name="Argument.value"/>
  71884. <stringProp name="Argument.metadata">=</stringProp>
  71885. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71886. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  71887. </elementProp>
  71888. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  71889. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71890. <stringProp name="Argument.value"/>
  71891. <stringProp name="Argument.metadata">=</stringProp>
  71892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71893. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  71894. </elementProp>
  71895. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  71896. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71897. <stringProp name="Argument.value"/>
  71898. <stringProp name="Argument.metadata">=</stringProp>
  71899. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71900. <stringProp name="Argument.name">product[page_layout]</stringProp>
  71901. </elementProp>
  71902. <elementProp name="product[options_container]" elementType="HTTPArgument">
  71903. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71904. <stringProp name="Argument.value">container2</stringProp>
  71905. <stringProp name="Argument.metadata">=</stringProp>
  71906. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71907. <stringProp name="Argument.name">product[options_container]</stringProp>
  71908. </elementProp>
  71909. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  71910. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71911. <stringProp name="Argument.value"/>
  71912. <stringProp name="Argument.metadata">=</stringProp>
  71913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71914. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  71915. <stringProp name="Argument.desc">false</stringProp>
  71916. </elementProp>
  71917. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  71918. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71919. <stringProp name="Argument.value">1</stringProp>
  71920. <stringProp name="Argument.metadata">=</stringProp>
  71921. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71922. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  71923. <stringProp name="Argument.desc">false</stringProp>
  71924. </elementProp>
  71925. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  71926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71927. <stringProp name="Argument.value">select</stringProp>
  71928. <stringProp name="Argument.metadata">=</stringProp>
  71929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71930. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  71931. <stringProp name="Argument.desc">false</stringProp>
  71932. </elementProp>
  71933. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  71934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71935. <stringProp name="Argument.value">drop_down</stringProp>
  71936. <stringProp name="Argument.metadata">=</stringProp>
  71937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71938. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  71939. <stringProp name="Argument.desc">false</stringProp>
  71940. </elementProp>
  71941. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  71942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71943. <stringProp name="Argument.value">0</stringProp>
  71944. <stringProp name="Argument.metadata">=</stringProp>
  71945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71946. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  71947. <stringProp name="Argument.desc">false</stringProp>
  71948. </elementProp>
  71949. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  71950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71951. <stringProp name="Argument.value">Product Option Title One</stringProp>
  71952. <stringProp name="Argument.metadata">=</stringProp>
  71953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71954. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  71955. <stringProp name="Argument.desc">false</stringProp>
  71956. </elementProp>
  71957. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  71958. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71959. <stringProp name="Argument.value">drop_down</stringProp>
  71960. <stringProp name="Argument.metadata">=</stringProp>
  71961. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71962. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  71963. <stringProp name="Argument.desc">false</stringProp>
  71964. </elementProp>
  71965. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  71966. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71967. <stringProp name="Argument.value"/>
  71968. <stringProp name="Argument.metadata">=</stringProp>
  71969. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71970. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  71971. <stringProp name="Argument.desc">false</stringProp>
  71972. </elementProp>
  71973. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  71974. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71975. <stringProp name="Argument.value">200</stringProp>
  71976. <stringProp name="Argument.metadata">=</stringProp>
  71977. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71978. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  71979. <stringProp name="Argument.desc">false</stringProp>
  71980. </elementProp>
  71981. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  71982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71983. <stringProp name="Argument.value">fixed</stringProp>
  71984. <stringProp name="Argument.metadata">=</stringProp>
  71985. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71986. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  71987. <stringProp name="Argument.desc">false</stringProp>
  71988. </elementProp>
  71989. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  71990. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71991. <stringProp name="Argument.value">sku-one</stringProp>
  71992. <stringProp name="Argument.metadata">=</stringProp>
  71993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  71994. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  71995. <stringProp name="Argument.desc">false</stringProp>
  71996. </elementProp>
  71997. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  71998. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  71999. <stringProp name="Argument.value">0</stringProp>
  72000. <stringProp name="Argument.metadata">=</stringProp>
  72001. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72002. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  72003. <stringProp name="Argument.desc">false</stringProp>
  72004. </elementProp>
  72005. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  72006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72007. <stringProp name="Argument.value">Row Title</stringProp>
  72008. <stringProp name="Argument.metadata">=</stringProp>
  72009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72010. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  72011. <stringProp name="Argument.desc">false</stringProp>
  72012. </elementProp>
  72013. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  72014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72015. <stringProp name="Argument.value"/>
  72016. <stringProp name="Argument.metadata">=</stringProp>
  72017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72018. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  72019. <stringProp name="Argument.desc">false</stringProp>
  72020. </elementProp>
  72021. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  72022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72023. <stringProp name="Argument.value">1</stringProp>
  72024. <stringProp name="Argument.metadata">=</stringProp>
  72025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72026. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  72027. <stringProp name="Argument.desc">false</stringProp>
  72028. </elementProp>
  72029. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  72030. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72031. <stringProp name="Argument.value">250</stringProp>
  72032. <stringProp name="Argument.metadata">=</stringProp>
  72033. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72034. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  72035. <stringProp name="Argument.desc">false</stringProp>
  72036. </elementProp>
  72037. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  72038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72039. <stringProp name="Argument.value">text</stringProp>
  72040. <stringProp name="Argument.metadata">=</stringProp>
  72041. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72042. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  72043. <stringProp name="Argument.desc">false</stringProp>
  72044. </elementProp>
  72045. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  72046. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72047. <stringProp name="Argument.value">field</stringProp>
  72048. <stringProp name="Argument.metadata">=</stringProp>
  72049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72050. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  72051. <stringProp name="Argument.desc">false</stringProp>
  72052. </elementProp>
  72053. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  72054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72055. <stringProp name="Argument.value">500</stringProp>
  72056. <stringProp name="Argument.metadata">=</stringProp>
  72057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72058. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  72059. <stringProp name="Argument.desc">false</stringProp>
  72060. </elementProp>
  72061. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  72062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72063. <stringProp name="Argument.value">fixed</stringProp>
  72064. <stringProp name="Argument.metadata">=</stringProp>
  72065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72066. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  72067. <stringProp name="Argument.desc">false</stringProp>
  72068. </elementProp>
  72069. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  72070. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72071. <stringProp name="Argument.value">sku-two</stringProp>
  72072. <stringProp name="Argument.metadata">=</stringProp>
  72073. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72074. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  72075. <stringProp name="Argument.desc">false</stringProp>
  72076. </elementProp>
  72077. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  72078. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72079. <stringProp name="Argument.value">1</stringProp>
  72080. <stringProp name="Argument.metadata">=</stringProp>
  72081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72082. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  72083. <stringProp name="Argument.desc">false</stringProp>
  72084. </elementProp>
  72085. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  72086. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72087. <stringProp name="Argument.value">Field Title</stringProp>
  72088. <stringProp name="Argument.metadata">=</stringProp>
  72089. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72090. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  72091. <stringProp name="Argument.desc">false</stringProp>
  72092. </elementProp>
  72093. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  72094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72095. <stringProp name="Argument.value">field</stringProp>
  72096. <stringProp name="Argument.metadata">=</stringProp>
  72097. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72098. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  72099. <stringProp name="Argument.desc">false</stringProp>
  72100. </elementProp>
  72101. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  72102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72103. <stringProp name="Argument.value">1</stringProp>
  72104. <stringProp name="Argument.metadata">=</stringProp>
  72105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72106. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  72107. <stringProp name="Argument.desc">true</stringProp>
  72108. </elementProp>
  72109. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  72110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72111. <stringProp name="Argument.value">4</stringProp>
  72112. <stringProp name="Argument.metadata">=</stringProp>
  72113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72114. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  72115. <stringProp name="Argument.desc">true</stringProp>
  72116. </elementProp>
  72117. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  72118. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72119. <stringProp name="Argument.value"/>
  72120. <stringProp name="Argument.metadata">=</stringProp>
  72121. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72122. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  72123. <stringProp name="Argument.desc">true</stringProp>
  72124. </elementProp>
  72125. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  72126. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72127. <stringProp name="Argument.value">${related_product_id}</stringProp>
  72128. <stringProp name="Argument.metadata">=</stringProp>
  72129. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72130. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  72131. </elementProp>
  72132. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  72133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72134. <stringProp name="Argument.value">1</stringProp>
  72135. <stringProp name="Argument.metadata">=</stringProp>
  72136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72137. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  72138. </elementProp>
  72139. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  72140. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72141. <stringProp name="Argument.value">${related_product_id}</stringProp>
  72142. <stringProp name="Argument.metadata">=</stringProp>
  72143. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72144. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  72145. </elementProp>
  72146. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  72147. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72148. <stringProp name="Argument.value">1</stringProp>
  72149. <stringProp name="Argument.metadata">=</stringProp>
  72150. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72151. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  72152. </elementProp>
  72153. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  72154. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72155. <stringProp name="Argument.value">${related_product_id}</stringProp>
  72156. <stringProp name="Argument.metadata">=</stringProp>
  72157. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72158. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  72159. </elementProp>
  72160. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  72161. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72162. <stringProp name="Argument.value">1</stringProp>
  72163. <stringProp name="Argument.metadata">=</stringProp>
  72164. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72165. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  72166. </elementProp>
  72167. </collectionProp>
  72168. </elementProp>
  72169. <stringProp name="HTTPSampler.domain"/>
  72170. <stringProp name="HTTPSampler.port"/>
  72171. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  72172. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  72173. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  72174. <stringProp name="HTTPSampler.contentEncoding"/>
  72175. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  72176. <stringProp name="HTTPSampler.method">POST</stringProp>
  72177. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  72178. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  72179. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  72180. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  72181. <boolProp name="HTTPSampler.monitor">false</boolProp>
  72182. <stringProp name="HTTPSampler.embedded_url_re"/>
  72183. </HTTPSamplerProxy>
  72184. <hashTree>
  72185. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  72186. <collectionProp name="Asserion.test_strings">
  72187. <stringProp name="1853918323">{"error":false}</stringProp>
  72188. </collectionProp>
  72189. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  72190. <boolProp name="Assertion.assume_success">false</boolProp>
  72191. <intProp name="Assertion.test_type">2</intProp>
  72192. </ResponseAssertion>
  72193. <hashTree/>
  72194. </hashTree>
  72195. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Save" enabled="true">
  72196. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  72197. <collectionProp name="Arguments.arguments">
  72198. <elementProp name="ajax" elementType="HTTPArgument">
  72199. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72200. <stringProp name="Argument.value">true</stringProp>
  72201. <stringProp name="Argument.metadata">=</stringProp>
  72202. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72203. <stringProp name="Argument.name">ajax</stringProp>
  72204. <stringProp name="Argument.desc">false</stringProp>
  72205. </elementProp>
  72206. <elementProp name="isAjax" elementType="HTTPArgument">
  72207. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72208. <stringProp name="Argument.value">true</stringProp>
  72209. <stringProp name="Argument.metadata">=</stringProp>
  72210. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72211. <stringProp name="Argument.name">isAjax</stringProp>
  72212. <stringProp name="Argument.desc">false</stringProp>
  72213. </elementProp>
  72214. <elementProp name="form_key" elementType="HTTPArgument">
  72215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72216. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  72217. <stringProp name="Argument.metadata">=</stringProp>
  72218. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72219. <stringProp name="Argument.name">form_key</stringProp>
  72220. <stringProp name="Argument.desc">false</stringProp>
  72221. </elementProp>
  72222. <elementProp name="product[name]" elementType="HTTPArgument">
  72223. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72224. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  72225. <stringProp name="Argument.metadata">=</stringProp>
  72226. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72227. <stringProp name="Argument.name">product[name]</stringProp>
  72228. <stringProp name="Argument.desc">false</stringProp>
  72229. </elementProp>
  72230. <elementProp name="product[sku]" elementType="HTTPArgument">
  72231. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72232. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  72233. <stringProp name="Argument.metadata">=</stringProp>
  72234. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72235. <stringProp name="Argument.name">product[sku]</stringProp>
  72236. <stringProp name="Argument.desc">false</stringProp>
  72237. </elementProp>
  72238. <elementProp name="product[price]" elementType="HTTPArgument">
  72239. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72240. <stringProp name="Argument.value">123</stringProp>
  72241. <stringProp name="Argument.metadata">=</stringProp>
  72242. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72243. <stringProp name="Argument.name">product[price]</stringProp>
  72244. </elementProp>
  72245. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  72246. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72247. <stringProp name="Argument.value">2</stringProp>
  72248. <stringProp name="Argument.metadata">=</stringProp>
  72249. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72250. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  72251. </elementProp>
  72252. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  72253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72254. <stringProp name="Argument.value">111</stringProp>
  72255. <stringProp name="Argument.metadata">=</stringProp>
  72256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72257. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  72258. </elementProp>
  72259. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  72260. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72261. <stringProp name="Argument.value">1</stringProp>
  72262. <stringProp name="Argument.metadata">=</stringProp>
  72263. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72264. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  72265. </elementProp>
  72266. <elementProp name="product[weight]" elementType="HTTPArgument">
  72267. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72268. <stringProp name="Argument.value">1.0000</stringProp>
  72269. <stringProp name="Argument.metadata">=</stringProp>
  72270. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72271. <stringProp name="Argument.name">product[weight]</stringProp>
  72272. </elementProp>
  72273. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  72274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72275. <stringProp name="Argument.value">1</stringProp>
  72276. <stringProp name="Argument.metadata">=</stringProp>
  72277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72278. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  72279. <stringProp name="Argument.desc">true</stringProp>
  72280. </elementProp>
  72281. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  72282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72283. <stringProp name="Argument.value">2</stringProp>
  72284. <stringProp name="Argument.metadata">=</stringProp>
  72285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72286. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  72287. </elementProp>
  72288. <elementProp name="product[description]" elementType="HTTPArgument">
  72289. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72290. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  72291. <stringProp name="Argument.metadata">=</stringProp>
  72292. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72293. <stringProp name="Argument.name">product[description]</stringProp>
  72294. </elementProp>
  72295. <elementProp name="product[short_description]" elementType="HTTPArgument">
  72296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72297. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  72298. <stringProp name="Argument.metadata">=</stringProp>
  72299. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72300. <stringProp name="Argument.name">product[short_description]</stringProp>
  72301. </elementProp>
  72302. <elementProp name="product[status]" elementType="HTTPArgument">
  72303. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72304. <stringProp name="Argument.value">1</stringProp>
  72305. <stringProp name="Argument.metadata">=</stringProp>
  72306. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72307. <stringProp name="Argument.name">product[status]</stringProp>
  72308. </elementProp>
  72309. <elementProp name="product[image]" elementType="HTTPArgument">
  72310. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72311. <stringProp name="Argument.value"/>
  72312. <stringProp name="Argument.metadata">=</stringProp>
  72313. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72314. <stringProp name="Argument.name">product[image]</stringProp>
  72315. </elementProp>
  72316. <elementProp name="product[small_image]" elementType="HTTPArgument">
  72317. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72318. <stringProp name="Argument.value"/>
  72319. <stringProp name="Argument.metadata">=</stringProp>
  72320. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72321. <stringProp name="Argument.name">product[small_image]</stringProp>
  72322. </elementProp>
  72323. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  72324. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72325. <stringProp name="Argument.value"/>
  72326. <stringProp name="Argument.metadata">=</stringProp>
  72327. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72328. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  72329. </elementProp>
  72330. <elementProp name="product[url_key]" elementType="HTTPArgument">
  72331. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72332. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  72333. <stringProp name="Argument.metadata">=</stringProp>
  72334. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72335. <stringProp name="Argument.name">product[url_key]</stringProp>
  72336. </elementProp>
  72337. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  72338. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72339. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  72340. <stringProp name="Argument.metadata">=</stringProp>
  72341. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72342. <stringProp name="Argument.name">product[meta_title]</stringProp>
  72343. </elementProp>
  72344. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  72345. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72346. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  72347. <stringProp name="Argument.metadata">=</stringProp>
  72348. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72349. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  72350. </elementProp>
  72351. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  72352. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72353. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  72354. <stringProp name="Argument.metadata">=</stringProp>
  72355. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72356. <stringProp name="Argument.name">product[meta_description]</stringProp>
  72357. </elementProp>
  72358. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  72359. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72360. <stringProp name="Argument.value">1</stringProp>
  72361. <stringProp name="Argument.metadata">=</stringProp>
  72362. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72363. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  72364. </elementProp>
  72365. <elementProp name="product[special_price]" elementType="HTTPArgument">
  72366. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72367. <stringProp name="Argument.value">99</stringProp>
  72368. <stringProp name="Argument.metadata">=</stringProp>
  72369. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72370. <stringProp name="Argument.name">product[special_price]</stringProp>
  72371. </elementProp>
  72372. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  72373. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72374. <stringProp name="Argument.value"/>
  72375. <stringProp name="Argument.metadata">=</stringProp>
  72376. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72377. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  72378. </elementProp>
  72379. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  72380. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72381. <stringProp name="Argument.value"/>
  72382. <stringProp name="Argument.metadata">=</stringProp>
  72383. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72384. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  72385. </elementProp>
  72386. <elementProp name="product[cost]" elementType="HTTPArgument">
  72387. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72388. <stringProp name="Argument.value"/>
  72389. <stringProp name="Argument.metadata">=</stringProp>
  72390. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72391. <stringProp name="Argument.name">product[cost]</stringProp>
  72392. </elementProp>
  72393. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  72394. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72395. <stringProp name="Argument.value">0</stringProp>
  72396. <stringProp name="Argument.metadata">=</stringProp>
  72397. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72398. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  72399. </elementProp>
  72400. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  72401. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72402. <stringProp name="Argument.value">32000</stringProp>
  72403. <stringProp name="Argument.metadata">=</stringProp>
  72404. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72405. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  72406. </elementProp>
  72407. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  72408. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72409. <stringProp name="Argument.value">100</stringProp>
  72410. <stringProp name="Argument.metadata">=</stringProp>
  72411. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72412. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  72413. </elementProp>
  72414. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  72415. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72416. <stringProp name="Argument.value">90</stringProp>
  72417. <stringProp name="Argument.metadata">=</stringProp>
  72418. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72419. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  72420. </elementProp>
  72421. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  72422. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72423. <stringProp name="Argument.value"/>
  72424. <stringProp name="Argument.metadata">=</stringProp>
  72425. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72426. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  72427. </elementProp>
  72428. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  72429. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72430. <stringProp name="Argument.value">0</stringProp>
  72431. <stringProp name="Argument.metadata">=</stringProp>
  72432. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72433. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  72434. </elementProp>
  72435. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  72436. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72437. <stringProp name="Argument.value">1</stringProp>
  72438. <stringProp name="Argument.metadata">=</stringProp>
  72439. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72440. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  72441. </elementProp>
  72442. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  72443. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72444. <stringProp name="Argument.value">101</stringProp>
  72445. <stringProp name="Argument.metadata">=</stringProp>
  72446. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72447. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  72448. </elementProp>
  72449. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  72450. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72451. <stringProp name="Argument.value">99</stringProp>
  72452. <stringProp name="Argument.metadata">=</stringProp>
  72453. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72454. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  72455. </elementProp>
  72456. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  72457. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72458. <stringProp name="Argument.value"/>
  72459. <stringProp name="Argument.metadata">=</stringProp>
  72460. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72461. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  72462. </elementProp>
  72463. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  72464. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72465. <stringProp name="Argument.value">1</stringProp>
  72466. <stringProp name="Argument.metadata">=</stringProp>
  72467. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72468. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  72469. </elementProp>
  72470. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  72471. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72472. <stringProp name="Argument.value">100500</stringProp>
  72473. <stringProp name="Argument.metadata">=</stringProp>
  72474. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72475. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  72476. </elementProp>
  72477. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  72478. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72479. <stringProp name="Argument.value">100500</stringProp>
  72480. <stringProp name="Argument.metadata">=</stringProp>
  72481. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72482. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  72483. </elementProp>
  72484. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  72485. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72486. <stringProp name="Argument.value">0</stringProp>
  72487. <stringProp name="Argument.metadata">=</stringProp>
  72488. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72489. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  72490. </elementProp>
  72491. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  72492. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72493. <stringProp name="Argument.value">1</stringProp>
  72494. <stringProp name="Argument.metadata">=</stringProp>
  72495. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72496. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  72497. </elementProp>
  72498. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  72499. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72500. <stringProp name="Argument.value">1</stringProp>
  72501. <stringProp name="Argument.metadata">=</stringProp>
  72502. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72503. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  72504. </elementProp>
  72505. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  72506. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72507. <stringProp name="Argument.value">1</stringProp>
  72508. <stringProp name="Argument.metadata">=</stringProp>
  72509. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72510. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  72511. </elementProp>
  72512. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  72513. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72514. <stringProp name="Argument.value">10000</stringProp>
  72515. <stringProp name="Argument.metadata">=</stringProp>
  72516. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72517. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  72518. </elementProp>
  72519. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  72520. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72521. <stringProp name="Argument.value">1</stringProp>
  72522. <stringProp name="Argument.metadata">=</stringProp>
  72523. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72524. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  72525. </elementProp>
  72526. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  72527. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72528. <stringProp name="Argument.value">0</stringProp>
  72529. <stringProp name="Argument.metadata">=</stringProp>
  72530. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72531. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  72532. </elementProp>
  72533. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  72534. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72535. <stringProp name="Argument.value">0</stringProp>
  72536. <stringProp name="Argument.metadata">=</stringProp>
  72537. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72538. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  72539. </elementProp>
  72540. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  72541. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72542. <stringProp name="Argument.value">0</stringProp>
  72543. <stringProp name="Argument.metadata">=</stringProp>
  72544. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72545. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  72546. </elementProp>
  72547. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  72548. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72549. <stringProp name="Argument.value">1</stringProp>
  72550. <stringProp name="Argument.metadata">=</stringProp>
  72551. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72552. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  72553. </elementProp>
  72554. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  72555. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72556. <stringProp name="Argument.value">1</stringProp>
  72557. <stringProp name="Argument.metadata">=</stringProp>
  72558. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72559. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  72560. </elementProp>
  72561. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  72562. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72563. <stringProp name="Argument.value">1</stringProp>
  72564. <stringProp name="Argument.metadata">=</stringProp>
  72565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72566. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  72567. </elementProp>
  72568. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  72569. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72570. <stringProp name="Argument.value">0</stringProp>
  72571. <stringProp name="Argument.metadata">=</stringProp>
  72572. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72573. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  72574. </elementProp>
  72575. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  72576. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72577. <stringProp name="Argument.value">0</stringProp>
  72578. <stringProp name="Argument.metadata">=</stringProp>
  72579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72580. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  72581. </elementProp>
  72582. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  72583. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72584. <stringProp name="Argument.value">1</stringProp>
  72585. <stringProp name="Argument.metadata">=</stringProp>
  72586. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72587. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  72588. </elementProp>
  72589. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  72590. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72591. <stringProp name="Argument.value">1</stringProp>
  72592. <stringProp name="Argument.metadata">=</stringProp>
  72593. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72594. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  72595. </elementProp>
  72596. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  72597. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72598. <stringProp name="Argument.value"/>
  72599. <stringProp name="Argument.metadata">=</stringProp>
  72600. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72601. <stringProp name="Argument.name">product[custom_design]</stringProp>
  72602. </elementProp>
  72603. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  72604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72605. <stringProp name="Argument.value"/>
  72606. <stringProp name="Argument.metadata">=</stringProp>
  72607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72608. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  72609. </elementProp>
  72610. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  72611. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72612. <stringProp name="Argument.value"/>
  72613. <stringProp name="Argument.metadata">=</stringProp>
  72614. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72615. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  72616. </elementProp>
  72617. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  72618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72619. <stringProp name="Argument.value"/>
  72620. <stringProp name="Argument.metadata">=</stringProp>
  72621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72622. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  72623. </elementProp>
  72624. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  72625. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72626. <stringProp name="Argument.value"/>
  72627. <stringProp name="Argument.metadata">=</stringProp>
  72628. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72629. <stringProp name="Argument.name">product[page_layout]</stringProp>
  72630. </elementProp>
  72631. <elementProp name="product[options_container]" elementType="HTTPArgument">
  72632. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72633. <stringProp name="Argument.value">container2</stringProp>
  72634. <stringProp name="Argument.metadata">=</stringProp>
  72635. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72636. <stringProp name="Argument.name">product[options_container]</stringProp>
  72637. </elementProp>
  72638. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  72639. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72640. <stringProp name="Argument.value"/>
  72641. <stringProp name="Argument.metadata">=</stringProp>
  72642. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72643. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  72644. <stringProp name="Argument.desc">true</stringProp>
  72645. </elementProp>
  72646. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  72647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72648. <stringProp name="Argument.value">1</stringProp>
  72649. <stringProp name="Argument.metadata">=</stringProp>
  72650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72651. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  72652. </elementProp>
  72653. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  72654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72655. <stringProp name="Argument.value">select</stringProp>
  72656. <stringProp name="Argument.metadata">=</stringProp>
  72657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72658. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  72659. <stringProp name="Argument.desc">false</stringProp>
  72660. </elementProp>
  72661. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  72662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72663. <stringProp name="Argument.value">drop_down</stringProp>
  72664. <stringProp name="Argument.metadata">=</stringProp>
  72665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72666. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  72667. <stringProp name="Argument.desc">false</stringProp>
  72668. </elementProp>
  72669. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  72670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72671. <stringProp name="Argument.value">0</stringProp>
  72672. <stringProp name="Argument.metadata">=</stringProp>
  72673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72674. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  72675. <stringProp name="Argument.desc">false</stringProp>
  72676. </elementProp>
  72677. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  72678. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72679. <stringProp name="Argument.value">Product Option Title One</stringProp>
  72680. <stringProp name="Argument.metadata">=</stringProp>
  72681. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72682. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  72683. </elementProp>
  72684. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  72685. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72686. <stringProp name="Argument.value">drop_down</stringProp>
  72687. <stringProp name="Argument.metadata">=</stringProp>
  72688. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72689. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  72690. </elementProp>
  72691. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  72692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72693. <stringProp name="Argument.value"/>
  72694. <stringProp name="Argument.metadata">=</stringProp>
  72695. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72696. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  72697. <stringProp name="Argument.desc">false</stringProp>
  72698. </elementProp>
  72699. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  72700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72701. <stringProp name="Argument.value">200</stringProp>
  72702. <stringProp name="Argument.metadata">=</stringProp>
  72703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72704. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  72705. </elementProp>
  72706. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  72707. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72708. <stringProp name="Argument.value">fixed</stringProp>
  72709. <stringProp name="Argument.metadata">=</stringProp>
  72710. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72711. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  72712. </elementProp>
  72713. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  72714. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72715. <stringProp name="Argument.value">sku-one</stringProp>
  72716. <stringProp name="Argument.metadata">=</stringProp>
  72717. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72718. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  72719. </elementProp>
  72720. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  72721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72722. <stringProp name="Argument.value">0</stringProp>
  72723. <stringProp name="Argument.metadata">=</stringProp>
  72724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72725. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  72726. </elementProp>
  72727. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  72728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72729. <stringProp name="Argument.value">Row Title</stringProp>
  72730. <stringProp name="Argument.metadata">=</stringProp>
  72731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72732. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  72733. </elementProp>
  72734. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  72735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72736. <stringProp name="Argument.value"/>
  72737. <stringProp name="Argument.metadata">=</stringProp>
  72738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72739. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  72740. <stringProp name="Argument.desc">false</stringProp>
  72741. </elementProp>
  72742. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  72743. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72744. <stringProp name="Argument.value">1</stringProp>
  72745. <stringProp name="Argument.metadata">=</stringProp>
  72746. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72747. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  72748. </elementProp>
  72749. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  72750. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72751. <stringProp name="Argument.value">250</stringProp>
  72752. <stringProp name="Argument.metadata">=</stringProp>
  72753. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72754. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  72755. </elementProp>
  72756. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  72757. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72758. <stringProp name="Argument.value">text</stringProp>
  72759. <stringProp name="Argument.metadata">=</stringProp>
  72760. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72761. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  72762. </elementProp>
  72763. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  72764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72765. <stringProp name="Argument.value">field</stringProp>
  72766. <stringProp name="Argument.metadata">=</stringProp>
  72767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72768. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  72769. </elementProp>
  72770. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  72771. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72772. <stringProp name="Argument.value">500</stringProp>
  72773. <stringProp name="Argument.metadata">=</stringProp>
  72774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72775. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  72776. </elementProp>
  72777. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  72778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72779. <stringProp name="Argument.value">fixed</stringProp>
  72780. <stringProp name="Argument.metadata">=</stringProp>
  72781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72782. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  72783. </elementProp>
  72784. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  72785. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72786. <stringProp name="Argument.value">sku-two</stringProp>
  72787. <stringProp name="Argument.metadata">=</stringProp>
  72788. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72789. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  72790. </elementProp>
  72791. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  72792. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72793. <stringProp name="Argument.value">1</stringProp>
  72794. <stringProp name="Argument.metadata">=</stringProp>
  72795. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72796. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  72797. </elementProp>
  72798. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  72799. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72800. <stringProp name="Argument.value">Field Title</stringProp>
  72801. <stringProp name="Argument.metadata">=</stringProp>
  72802. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72803. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  72804. </elementProp>
  72805. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  72806. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72807. <stringProp name="Argument.value">field</stringProp>
  72808. <stringProp name="Argument.metadata">=</stringProp>
  72809. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72810. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  72811. </elementProp>
  72812. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  72813. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72814. <stringProp name="Argument.value">1</stringProp>
  72815. <stringProp name="Argument.metadata">=</stringProp>
  72816. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72817. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  72818. <stringProp name="Argument.desc">true</stringProp>
  72819. </elementProp>
  72820. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  72821. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72822. <stringProp name="Argument.value">4</stringProp>
  72823. <stringProp name="Argument.metadata">=</stringProp>
  72824. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72825. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  72826. <stringProp name="Argument.desc">true</stringProp>
  72827. </elementProp>
  72828. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  72829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72830. <stringProp name="Argument.value"/>
  72831. <stringProp name="Argument.metadata">=</stringProp>
  72832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72833. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  72834. <stringProp name="Argument.desc">true</stringProp>
  72835. </elementProp>
  72836. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  72837. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72838. <stringProp name="Argument.value">${related_product_id}</stringProp>
  72839. <stringProp name="Argument.metadata">=</stringProp>
  72840. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72841. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  72842. </elementProp>
  72843. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  72844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72845. <stringProp name="Argument.value">1</stringProp>
  72846. <stringProp name="Argument.metadata">=</stringProp>
  72847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72848. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  72849. </elementProp>
  72850. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  72851. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72852. <stringProp name="Argument.value">${related_product_id}</stringProp>
  72853. <stringProp name="Argument.metadata">=</stringProp>
  72854. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72855. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  72856. </elementProp>
  72857. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  72858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72859. <stringProp name="Argument.value">1</stringProp>
  72860. <stringProp name="Argument.metadata">=</stringProp>
  72861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72862. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  72863. </elementProp>
  72864. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  72865. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72866. <stringProp name="Argument.value">${related_product_id}</stringProp>
  72867. <stringProp name="Argument.metadata">=</stringProp>
  72868. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72869. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  72870. </elementProp>
  72871. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  72872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  72873. <stringProp name="Argument.value">1</stringProp>
  72874. <stringProp name="Argument.metadata">=</stringProp>
  72875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  72876. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  72877. </elementProp>
  72878. </collectionProp>
  72879. </elementProp>
  72880. <stringProp name="HTTPSampler.domain"/>
  72881. <stringProp name="HTTPSampler.port"/>
  72882. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  72883. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  72884. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  72885. <stringProp name="HTTPSampler.contentEncoding"/>
  72886. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/</stringProp>
  72887. <stringProp name="HTTPSampler.method">POST</stringProp>
  72888. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  72889. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  72890. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  72891. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  72892. <boolProp name="HTTPSampler.monitor">false</boolProp>
  72893. <stringProp name="HTTPSampler.embedded_url_re"/>
  72894. </HTTPSamplerProxy>
  72895. <hashTree>
  72896. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  72897. <collectionProp name="Asserion.test_strings">
  72898. <stringProp name="-583471546">You saved the product</stringProp>
  72899. </collectionProp>
  72900. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  72901. <boolProp name="Assertion.assume_success">false</boolProp>
  72902. <intProp name="Assertion.test_type">2</intProp>
  72903. </ResponseAssertion>
  72904. <hashTree/>
  72905. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  72906. <collectionProp name="Asserion.test_strings">
  72907. <stringProp name="-1600986843">violation</stringProp>
  72908. </collectionProp>
  72909. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  72910. <boolProp name="Assertion.assume_success">false</boolProp>
  72911. <intProp name="Assertion.test_type">6</intProp>
  72912. </ResponseAssertion>
  72913. <hashTree/>
  72914. </hashTree>
  72915. </hashTree>
  72916. </hashTree>
  72917. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  72918. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  72919. <collectionProp name="Arguments.arguments"/>
  72920. </elementProp>
  72921. <stringProp name="HTTPSampler.domain"/>
  72922. <stringProp name="HTTPSampler.port"/>
  72923. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  72924. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  72925. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  72926. <stringProp name="HTTPSampler.contentEncoding"/>
  72927. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  72928. <stringProp name="HTTPSampler.method">GET</stringProp>
  72929. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  72930. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  72931. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  72932. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  72933. <boolProp name="HTTPSampler.monitor">false</boolProp>
  72934. <stringProp name="HTTPSampler.embedded_url_re"/>
  72935. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  72936. <hashTree>
  72937. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  72938. <boolProp name="resetInterpreter">false</boolProp>
  72939. <stringProp name="parameters"/>
  72940. <stringProp name="filename"/>
  72941. <stringProp name="script">
  72942. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  72943. if (adminUsersDistribution == 1) {
  72944. adminUserList = props.get("adminUserList");
  72945. adminUserList.add(vars.get("admin_user"));
  72946. }
  72947. </stringProp>
  72948. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  72949. <hashTree/>
  72950. </hashTree>
  72951. </hashTree>
  72952. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Edit Product" enabled="true">
  72953. <intProp name="ThroughputController.style">1</intProp>
  72954. <boolProp name="ThroughputController.perThread">false</boolProp>
  72955. <intProp name="ThroughputController.maxThroughput">1</intProp>
  72956. <stringProp name="ThroughputController.percentThroughput">${cAdminProductEditingPercentage}</stringProp>
  72957. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  72958. <hashTree>
  72959. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  72960. <stringProp name="script">
  72961. var tmpLabel = vars.get("testLabel")
  72962. if (tmpLabel) {
  72963. var testLabel = " (" + tmpLabel + ")"
  72964. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  72965. if (sampler.getName().indexOf(testLabel) == -1) {
  72966. sampler.setName(sampler.getName() + testLabel);
  72967. }
  72968. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  72969. sampler.setName("SetUp - " + sampler.getName());
  72970. }
  72971. } else {
  72972. testLabel = ""
  72973. }
  72974. </stringProp>
  72975. <stringProp name="scriptLanguage">javascript</stringProp>
  72976. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  72977. <hashTree/>
  72978. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  72979. <stringProp name="BeanShellSampler.query">
  72980. vars.put("testLabel", "[GraphQL C] Admin Edit Product");
  72981. </stringProp>
  72982. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  72983. </BeanShellSampler>
  72984. <hashTree/>
  72985. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  72986. <stringProp name="script">
  72987. function getFormKeyFromResponse()
  72988. {
  72989. var url = prev.getUrlAsString(),
  72990. responseCode = prev.getResponseCode(),
  72991. formKey = null;
  72992. searchPattern = /var FORM_KEY = '(.+)'/;
  72993. if (responseCode == "200" &amp;&amp; url) {
  72994. response = prev.getResponseDataAsString();
  72995. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  72996. }
  72997. return formKey;
  72998. }
  72999. formKey = vars.get("form_key_storage");
  73000. currentFormKey = getFormKeyFromResponse();
  73001. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  73002. vars.put("form_key_storage", currentFormKey);
  73003. }
  73004. </stringProp>
  73005. <stringProp name="scriptLanguage">javascript</stringProp>
  73006. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  73007. <hashTree/>
  73008. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  73009. <stringProp name="script">
  73010. formKey = vars.get("form_key_storage");
  73011. if (formKey
  73012. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  73013. &amp;&amp; sampler.getMethod() == "POST")
  73014. {
  73015. arguments = sampler.getArguments();
  73016. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  73017. {
  73018. argument = arguments.getArgument(i);
  73019. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  73020. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  73021. argument.setValue(formKey);
  73022. }
  73023. }
  73024. }
  73025. </stringProp>
  73026. <stringProp name="scriptLanguage">javascript</stringProp>
  73027. </JSR223PreProcessor>
  73028. <hashTree/>
  73029. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  73030. <collectionProp name="CookieManager.cookies"/>
  73031. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  73032. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  73033. <hashTree/>
  73034. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  73035. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  73036. </GenericController>
  73037. <hashTree>
  73038. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  73039. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  73040. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  73041. <hashTree>
  73042. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  73043. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  73044. <stringProp name="BeanShellSampler.query">
  73045. adminUser = "none";
  73046. adminUserList = props.get("adminUserList");
  73047. adminUserListIterator = props.get("adminUserListIterator");
  73048. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  73049. if (adminUsersDistribution == 1) {
  73050. adminUser = adminUserList.poll();
  73051. } else {
  73052. if (!adminUserListIterator.hasNext()) {
  73053. adminUserListIterator = adminUserList.descendingIterator();
  73054. }
  73055. adminUser = adminUserListIterator.next();
  73056. }
  73057. if (adminUser == "none") {
  73058. SampleResult.setResponseMessage("adminUser list is empty");
  73059. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  73060. IsSuccess=false;
  73061. SampleResult.setSuccessful(false);
  73062. SampleResult.setStopThread(true);
  73063. }
  73064. vars.put("admin_user", adminUser);
  73065. </stringProp>
  73066. <stringProp name="BeanShellSampler.filename"/>
  73067. <stringProp name="BeanShellSampler.parameters"/>
  73068. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  73069. </BeanShellSampler>
  73070. <hashTree/>
  73071. </hashTree>
  73072. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  73073. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  73074. <collectionProp name="Arguments.arguments"/>
  73075. </elementProp>
  73076. <stringProp name="HTTPSampler.domain"/>
  73077. <stringProp name="HTTPSampler.port"/>
  73078. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  73079. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  73080. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  73081. <stringProp name="HTTPSampler.contentEncoding"/>
  73082. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  73083. <stringProp name="HTTPSampler.method">GET</stringProp>
  73084. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  73085. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  73086. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  73087. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  73088. <boolProp name="HTTPSampler.monitor">false</boolProp>
  73089. <stringProp name="HTTPSampler.embedded_url_re"/>
  73090. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  73091. <hashTree>
  73092. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  73093. <collectionProp name="Asserion.test_strings">
  73094. <stringProp name="-1397214398">Welcome</stringProp>
  73095. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  73096. </collectionProp>
  73097. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  73098. <boolProp name="Assertion.assume_success">false</boolProp>
  73099. <intProp name="Assertion.test_type">2</intProp>
  73100. </ResponseAssertion>
  73101. <hashTree/>
  73102. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  73103. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  73104. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  73105. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  73106. <stringProp name="RegexExtractor.template">$1$</stringProp>
  73107. <stringProp name="RegexExtractor.default"/>
  73108. <stringProp name="RegexExtractor.match_number">1</stringProp>
  73109. </RegexExtractor>
  73110. <hashTree/>
  73111. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  73112. <collectionProp name="Asserion.test_strings">
  73113. <stringProp name="2845929">^.+$</stringProp>
  73114. </collectionProp>
  73115. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  73116. <boolProp name="Assertion.assume_success">false</boolProp>
  73117. <intProp name="Assertion.test_type">1</intProp>
  73118. <stringProp name="Assertion.scope">variable</stringProp>
  73119. <stringProp name="Scope.variable">admin_form_key</stringProp>
  73120. </ResponseAssertion>
  73121. <hashTree/>
  73122. </hashTree>
  73123. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  73124. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  73125. <collectionProp name="Arguments.arguments">
  73126. <elementProp name="dummy" elementType="HTTPArgument">
  73127. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73128. <stringProp name="Argument.value"/>
  73129. <stringProp name="Argument.metadata">=</stringProp>
  73130. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73131. <stringProp name="Argument.name">dummy</stringProp>
  73132. </elementProp>
  73133. <elementProp name="form_key" elementType="HTTPArgument">
  73134. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73135. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  73136. <stringProp name="Argument.metadata">=</stringProp>
  73137. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73138. <stringProp name="Argument.name">form_key</stringProp>
  73139. </elementProp>
  73140. <elementProp name="login[password]" elementType="HTTPArgument">
  73141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73142. <stringProp name="Argument.value">${admin_password}</stringProp>
  73143. <stringProp name="Argument.metadata">=</stringProp>
  73144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73145. <stringProp name="Argument.name">login[password]</stringProp>
  73146. </elementProp>
  73147. <elementProp name="login[username]" elementType="HTTPArgument">
  73148. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73149. <stringProp name="Argument.value">${admin_user}</stringProp>
  73150. <stringProp name="Argument.metadata">=</stringProp>
  73151. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73152. <stringProp name="Argument.name">login[username]</stringProp>
  73153. </elementProp>
  73154. </collectionProp>
  73155. </elementProp>
  73156. <stringProp name="HTTPSampler.domain"/>
  73157. <stringProp name="HTTPSampler.port"/>
  73158. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  73159. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  73160. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  73161. <stringProp name="HTTPSampler.contentEncoding"/>
  73162. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  73163. <stringProp name="HTTPSampler.method">POST</stringProp>
  73164. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  73165. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  73166. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  73167. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  73168. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  73169. <boolProp name="HTTPSampler.monitor">false</boolProp>
  73170. <stringProp name="HTTPSampler.embedded_url_re"/>
  73171. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  73172. </HTTPSamplerProxy>
  73173. <hashTree>
  73174. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  73175. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  73176. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  73177. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  73178. <stringProp name="RegexExtractor.template">$1$</stringProp>
  73179. <stringProp name="RegexExtractor.default"/>
  73180. <stringProp name="RegexExtractor.match_number">1</stringProp>
  73181. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  73182. <hashTree/>
  73183. </hashTree>
  73184. </hashTree>
  73185. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  73186. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  73187. </GenericController>
  73188. <hashTree>
  73189. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Edit Product" enabled="true"/>
  73190. <hashTree>
  73191. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  73192. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx</stringProp>
  73193. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  73194. import java.util.HashMap;
  73195. import java.util.Random;
  73196. int relatedIndex;
  73197. try {
  73198. Random random = new Random();
  73199. if (${seedForRandom} &gt; 0) {
  73200. random.setSeed(${seedForRandom} + ${__threadNum});
  73201. }
  73202. simpleCount = props.get("simple_products_list_for_edit").size();
  73203. configCount = props.get("configurable_products_list_for_edit").size();
  73204. productCount = 0;
  73205. if (simpleCount &gt; configCount) {
  73206. productCount = configCount;
  73207. } else {
  73208. productCount = simpleCount;
  73209. }
  73210. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  73211. if (threadsNumber == 0) {
  73212. threadsNumber = 1;
  73213. }
  73214. //Current thread number starts from 0
  73215. currentThreadNum = ctx.getThreadNum();
  73216. String siterator = vars.get("threadIterator_" + currentThreadNum.toString());
  73217. iterator = 0;
  73218. if(siterator == null){
  73219. vars.put("threadIterator_" + currentThreadNum.toString() , "0");
  73220. } else {
  73221. iterator = Integer.parseInt(siterator);
  73222. iterator ++;
  73223. vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString());
  73224. }
  73225. //Number of products for one thread
  73226. productClusterLength = productCount / threadsNumber;
  73227. if (iterator &gt;= productClusterLength) {
  73228. vars.put("threadIterator_" + currentThreadNum.toString(), "0");
  73229. iterator = 0;
  73230. }
  73231. //Index of the current product from the cluster
  73232. i = productClusterLength * currentThreadNum + iterator;
  73233. //ids of simple and configurable products to edit
  73234. vars.put("simple_product_id", props.get("simple_products_list_for_edit").get(i).get("id"));
  73235. vars.put("configurable_product_id", props.get("configurable_products_list_for_edit").get(i).get("id"));
  73236. //id of related product
  73237. do {
  73238. relatedIndex = random.nextInt(props.get("simple_products_list_for_edit").size());
  73239. } while(i == relatedIndex);
  73240. vars.put("related_product_id", props.get("simple_products_list_for_edit").get(relatedIndex).get("id"));
  73241. } catch (Exception ex) {
  73242. log.info("Script execution failed", ex);
  73243. }</stringProp>
  73244. <stringProp name="BeanShellSampler.filename"/>
  73245. <stringProp name="BeanShellSampler.parameters"/>
  73246. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  73247. </BeanShellSampler>
  73248. <hashTree/>
  73249. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product" enabled="true">
  73250. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  73251. <collectionProp name="Arguments.arguments"/>
  73252. </elementProp>
  73253. <stringProp name="HTTPSampler.domain"/>
  73254. <stringProp name="HTTPSampler.port"/>
  73255. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  73256. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  73257. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  73258. <stringProp name="HTTPSampler.contentEncoding"/>
  73259. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/</stringProp>
  73260. <stringProp name="HTTPSampler.method">GET</stringProp>
  73261. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  73262. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  73263. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  73264. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  73265. <boolProp name="HTTPSampler.monitor">false</boolProp>
  73266. <stringProp name="HTTPSampler.embedded_url_re"/>
  73267. </HTTPSamplerProxy>
  73268. <hashTree>
  73269. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  73270. <collectionProp name="Asserion.test_strings">
  73271. <stringProp name="1355179215">Product</stringProp>
  73272. </collectionProp>
  73273. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  73274. <boolProp name="Assertion.assume_success">false</boolProp>
  73275. <intProp name="Assertion.test_type">16</intProp>
  73276. </ResponseAssertion>
  73277. <hashTree/>
  73278. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  73279. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  73280. <stringProp name="RegexExtractor.refname">simple_product_name</stringProp>
  73281. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  73282. <stringProp name="RegexExtractor.template">$1$</stringProp>
  73283. <stringProp name="RegexExtractor.default"/>
  73284. <stringProp name="RegexExtractor.match_number">1</stringProp>
  73285. </RegexExtractor>
  73286. <hashTree/>
  73287. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  73288. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  73289. <stringProp name="RegexExtractor.refname">simple_product_sku</stringProp>
  73290. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  73291. <stringProp name="RegexExtractor.template">$1$</stringProp>
  73292. <stringProp name="RegexExtractor.default"/>
  73293. <stringProp name="RegexExtractor.match_number">1</stringProp>
  73294. </RegexExtractor>
  73295. <hashTree/>
  73296. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  73297. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  73298. <stringProp name="RegexExtractor.refname">simple_product_category_id</stringProp>
  73299. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)".</stringProp>
  73300. <stringProp name="RegexExtractor.template">$1$</stringProp>
  73301. <stringProp name="RegexExtractor.default"/>
  73302. <stringProp name="RegexExtractor.match_number">1</stringProp>
  73303. </RegexExtractor>
  73304. <hashTree/>
  73305. </hashTree>
  73306. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set updated values" enabled="true">
  73307. <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
  73308. <stringProp name="BeanShellSampler.query">//Additional category to be added
  73309. import java.util.Random;
  73310. Random randomGenerator = new Random();
  73311. int newCategoryId;
  73312. if (${seedForRandom} &gt; 0) {
  73313. randomGenerator.setSeed(${seedForRandom} + ${__threadNum});
  73314. }
  73315. int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  73316. categoryList = props.get("admin_category_ids_list");
  73317. if (categoryList.size() &gt; 1) {
  73318. do {
  73319. int index = randomGenerator.nextInt(categoryList.size());
  73320. newCategoryId = Integer.parseInt(categoryList.get(index));
  73321. } while (categoryId == newCategoryId);
  73322. vars.put("category_additional", newCategoryId.toString());
  73323. }
  73324. //New price
  73325. vars.put("price_new", "9999");
  73326. //New special price
  73327. vars.put("special_price_new", "8888");
  73328. //New quantity
  73329. vars.put("quantity_new", "100600");
  73330. </stringProp>
  73331. <stringProp name="BeanShellSampler.filename"/>
  73332. <stringProp name="BeanShellSampler.parameters"/>
  73333. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  73334. </BeanShellSampler>
  73335. <hashTree/>
  73336. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Validate" enabled="true">
  73337. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  73338. <collectionProp name="Arguments.arguments">
  73339. <elementProp name="ajax" elementType="HTTPArgument">
  73340. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73341. <stringProp name="Argument.value">true</stringProp>
  73342. <stringProp name="Argument.metadata">=</stringProp>
  73343. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73344. <stringProp name="Argument.name">ajax</stringProp>
  73345. <stringProp name="Argument.desc">false</stringProp>
  73346. </elementProp>
  73347. <elementProp name="isAjax" elementType="HTTPArgument">
  73348. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73349. <stringProp name="Argument.value">true</stringProp>
  73350. <stringProp name="Argument.metadata">=</stringProp>
  73351. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73352. <stringProp name="Argument.name">isAjax</stringProp>
  73353. <stringProp name="Argument.desc">false</stringProp>
  73354. </elementProp>
  73355. <elementProp name="form_key" elementType="HTTPArgument">
  73356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73357. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  73358. <stringProp name="Argument.metadata">=</stringProp>
  73359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73360. <stringProp name="Argument.name">form_key</stringProp>
  73361. <stringProp name="Argument.desc">false</stringProp>
  73362. </elementProp>
  73363. <elementProp name="product[name]" elementType="HTTPArgument">
  73364. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73365. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  73366. <stringProp name="Argument.metadata">=</stringProp>
  73367. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73368. <stringProp name="Argument.name">product[name]</stringProp>
  73369. <stringProp name="Argument.desc">false</stringProp>
  73370. </elementProp>
  73371. <elementProp name="product[sku]" elementType="HTTPArgument">
  73372. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73373. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  73374. <stringProp name="Argument.metadata">=</stringProp>
  73375. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73376. <stringProp name="Argument.name">product[sku]</stringProp>
  73377. <stringProp name="Argument.desc">false</stringProp>
  73378. </elementProp>
  73379. <elementProp name="product[price]" elementType="HTTPArgument">
  73380. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73381. <stringProp name="Argument.value">${price_new}</stringProp>
  73382. <stringProp name="Argument.metadata">=</stringProp>
  73383. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73384. <stringProp name="Argument.name">product[price]</stringProp>
  73385. <stringProp name="Argument.desc">false</stringProp>
  73386. </elementProp>
  73387. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  73388. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73389. <stringProp name="Argument.value">2</stringProp>
  73390. <stringProp name="Argument.metadata">=</stringProp>
  73391. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73392. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  73393. <stringProp name="Argument.desc">false</stringProp>
  73394. </elementProp>
  73395. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  73396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73397. <stringProp name="Argument.value">${quantity_new}</stringProp>
  73398. <stringProp name="Argument.metadata">=</stringProp>
  73399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73400. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  73401. <stringProp name="Argument.desc">false</stringProp>
  73402. </elementProp>
  73403. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  73404. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73405. <stringProp name="Argument.value">1</stringProp>
  73406. <stringProp name="Argument.metadata">=</stringProp>
  73407. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73408. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  73409. <stringProp name="Argument.desc">false</stringProp>
  73410. </elementProp>
  73411. <elementProp name="product[weight]" elementType="HTTPArgument">
  73412. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73413. <stringProp name="Argument.value">1.0000</stringProp>
  73414. <stringProp name="Argument.metadata">=</stringProp>
  73415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73416. <stringProp name="Argument.name">product[weight]</stringProp>
  73417. <stringProp name="Argument.desc">false</stringProp>
  73418. </elementProp>
  73419. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  73420. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73421. <stringProp name="Argument.value">1</stringProp>
  73422. <stringProp name="Argument.metadata">=</stringProp>
  73423. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73424. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  73425. <stringProp name="Argument.desc">false</stringProp>
  73426. </elementProp>
  73427. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  73428. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73429. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  73430. <stringProp name="Argument.metadata">=</stringProp>
  73431. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73432. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  73433. <stringProp name="Argument.desc">false</stringProp>
  73434. </elementProp>
  73435. <elementProp name="product[description]" elementType="HTTPArgument">
  73436. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73437. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  73438. <stringProp name="Argument.metadata">=</stringProp>
  73439. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73440. <stringProp name="Argument.name">product[description]</stringProp>
  73441. <stringProp name="Argument.desc">false</stringProp>
  73442. </elementProp>
  73443. <elementProp name="product[status]" elementType="HTTPArgument">
  73444. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73445. <stringProp name="Argument.value">1</stringProp>
  73446. <stringProp name="Argument.metadata">=</stringProp>
  73447. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73448. <stringProp name="Argument.name">product[status]</stringProp>
  73449. <stringProp name="Argument.desc">false</stringProp>
  73450. </elementProp>
  73451. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  73452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73453. <stringProp name="Argument.value"/>
  73454. <stringProp name="Argument.metadata">=</stringProp>
  73455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73456. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  73457. <stringProp name="Argument.desc">false</stringProp>
  73458. </elementProp>
  73459. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  73460. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73461. <stringProp name="Argument.value">1</stringProp>
  73462. <stringProp name="Argument.metadata">=</stringProp>
  73463. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73464. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  73465. <stringProp name="Argument.desc">false</stringProp>
  73466. </elementProp>
  73467. <elementProp name="product[image]" elementType="HTTPArgument">
  73468. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73469. <stringProp name="Argument.value"/>
  73470. <stringProp name="Argument.metadata">=</stringProp>
  73471. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73472. <stringProp name="Argument.name">product[image]</stringProp>
  73473. <stringProp name="Argument.desc">false</stringProp>
  73474. </elementProp>
  73475. <elementProp name="product[small_image]" elementType="HTTPArgument">
  73476. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73477. <stringProp name="Argument.value"/>
  73478. <stringProp name="Argument.metadata">=</stringProp>
  73479. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73480. <stringProp name="Argument.name">product[small_image]</stringProp>
  73481. <stringProp name="Argument.desc">false</stringProp>
  73482. </elementProp>
  73483. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  73484. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73485. <stringProp name="Argument.value"/>
  73486. <stringProp name="Argument.metadata">=</stringProp>
  73487. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73488. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  73489. <stringProp name="Argument.desc">false</stringProp>
  73490. </elementProp>
  73491. <elementProp name="product[url_key]" elementType="HTTPArgument">
  73492. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73493. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  73494. <stringProp name="Argument.metadata">=</stringProp>
  73495. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73496. <stringProp name="Argument.name">product[url_key]</stringProp>
  73497. <stringProp name="Argument.desc">false</stringProp>
  73498. </elementProp>
  73499. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  73500. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73501. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  73502. <stringProp name="Argument.metadata">=</stringProp>
  73503. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73504. <stringProp name="Argument.name">product[meta_title]</stringProp>
  73505. <stringProp name="Argument.desc">false</stringProp>
  73506. </elementProp>
  73507. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  73508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73509. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  73510. <stringProp name="Argument.metadata">=</stringProp>
  73511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73512. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  73513. <stringProp name="Argument.desc">false</stringProp>
  73514. </elementProp>
  73515. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  73516. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73517. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  73518. <stringProp name="Argument.metadata">=</stringProp>
  73519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73520. <stringProp name="Argument.name">product[meta_description]</stringProp>
  73521. <stringProp name="Argument.desc">false</stringProp>
  73522. </elementProp>
  73523. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  73524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73525. <stringProp name="Argument.value">1</stringProp>
  73526. <stringProp name="Argument.metadata">=</stringProp>
  73527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73528. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  73529. <stringProp name="Argument.desc">false</stringProp>
  73530. </elementProp>
  73531. <elementProp name="product[special_price]" elementType="HTTPArgument">
  73532. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73533. <stringProp name="Argument.value">${special_price_new}</stringProp>
  73534. <stringProp name="Argument.metadata">=</stringProp>
  73535. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73536. <stringProp name="Argument.name">product[special_price]</stringProp>
  73537. <stringProp name="Argument.desc">false</stringProp>
  73538. </elementProp>
  73539. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  73540. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73541. <stringProp name="Argument.value"/>
  73542. <stringProp name="Argument.metadata">=</stringProp>
  73543. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73544. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  73545. <stringProp name="Argument.desc">false</stringProp>
  73546. </elementProp>
  73547. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  73548. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73549. <stringProp name="Argument.value"/>
  73550. <stringProp name="Argument.metadata">=</stringProp>
  73551. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73552. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  73553. <stringProp name="Argument.desc">false</stringProp>
  73554. </elementProp>
  73555. <elementProp name="product[cost]" elementType="HTTPArgument">
  73556. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73557. <stringProp name="Argument.value"/>
  73558. <stringProp name="Argument.metadata">=</stringProp>
  73559. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73560. <stringProp name="Argument.name">product[cost]</stringProp>
  73561. <stringProp name="Argument.desc">false</stringProp>
  73562. </elementProp>
  73563. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  73564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73565. <stringProp name="Argument.value">1</stringProp>
  73566. <stringProp name="Argument.metadata">=</stringProp>
  73567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73568. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  73569. <stringProp name="Argument.desc">false</stringProp>
  73570. </elementProp>
  73571. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  73572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73573. <stringProp name="Argument.value">${quantity_new}</stringProp>
  73574. <stringProp name="Argument.metadata">=</stringProp>
  73575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73576. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  73577. <stringProp name="Argument.desc">false</stringProp>
  73578. </elementProp>
  73579. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  73580. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73581. <stringProp name="Argument.value">${quantity_new}</stringProp>
  73582. <stringProp name="Argument.metadata">=</stringProp>
  73583. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73584. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  73585. <stringProp name="Argument.desc">false</stringProp>
  73586. </elementProp>
  73587. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  73588. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73589. <stringProp name="Argument.value">0</stringProp>
  73590. <stringProp name="Argument.metadata">=</stringProp>
  73591. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73592. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  73593. <stringProp name="Argument.desc">false</stringProp>
  73594. </elementProp>
  73595. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  73596. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73597. <stringProp name="Argument.value">1</stringProp>
  73598. <stringProp name="Argument.metadata">=</stringProp>
  73599. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73600. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  73601. <stringProp name="Argument.desc">false</stringProp>
  73602. </elementProp>
  73603. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  73604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73605. <stringProp name="Argument.value">1</stringProp>
  73606. <stringProp name="Argument.metadata">=</stringProp>
  73607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73608. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  73609. <stringProp name="Argument.desc">false</stringProp>
  73610. </elementProp>
  73611. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  73612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73613. <stringProp name="Argument.value">1</stringProp>
  73614. <stringProp name="Argument.metadata">=</stringProp>
  73615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73616. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  73617. <stringProp name="Argument.desc">false</stringProp>
  73618. </elementProp>
  73619. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  73620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73621. <stringProp name="Argument.value">10000</stringProp>
  73622. <stringProp name="Argument.metadata">=</stringProp>
  73623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73624. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  73625. <stringProp name="Argument.desc">false</stringProp>
  73626. </elementProp>
  73627. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  73628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73629. <stringProp name="Argument.value">1</stringProp>
  73630. <stringProp name="Argument.metadata">=</stringProp>
  73631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73632. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  73633. <stringProp name="Argument.desc">false</stringProp>
  73634. </elementProp>
  73635. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  73636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73637. <stringProp name="Argument.value">0</stringProp>
  73638. <stringProp name="Argument.metadata">=</stringProp>
  73639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73640. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  73641. <stringProp name="Argument.desc">false</stringProp>
  73642. </elementProp>
  73643. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  73644. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73645. <stringProp name="Argument.value">0</stringProp>
  73646. <stringProp name="Argument.metadata">=</stringProp>
  73647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73648. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  73649. <stringProp name="Argument.desc">false</stringProp>
  73650. </elementProp>
  73651. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  73652. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73653. <stringProp name="Argument.value">0</stringProp>
  73654. <stringProp name="Argument.metadata">=</stringProp>
  73655. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73656. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  73657. <stringProp name="Argument.desc">false</stringProp>
  73658. </elementProp>
  73659. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  73660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73661. <stringProp name="Argument.value">1</stringProp>
  73662. <stringProp name="Argument.metadata">=</stringProp>
  73663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73664. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  73665. <stringProp name="Argument.desc">false</stringProp>
  73666. </elementProp>
  73667. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  73668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73669. <stringProp name="Argument.value">1</stringProp>
  73670. <stringProp name="Argument.metadata">=</stringProp>
  73671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73672. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  73673. <stringProp name="Argument.desc">false</stringProp>
  73674. </elementProp>
  73675. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  73676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73677. <stringProp name="Argument.value">1</stringProp>
  73678. <stringProp name="Argument.metadata">=</stringProp>
  73679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73680. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  73681. <stringProp name="Argument.desc">false</stringProp>
  73682. </elementProp>
  73683. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  73684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73685. <stringProp name="Argument.value">0</stringProp>
  73686. <stringProp name="Argument.metadata">=</stringProp>
  73687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73688. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  73689. <stringProp name="Argument.desc">false</stringProp>
  73690. </elementProp>
  73691. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  73692. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73693. <stringProp name="Argument.value">0</stringProp>
  73694. <stringProp name="Argument.metadata">=</stringProp>
  73695. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73696. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  73697. <stringProp name="Argument.desc">false</stringProp>
  73698. </elementProp>
  73699. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  73700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73701. <stringProp name="Argument.value">1</stringProp>
  73702. <stringProp name="Argument.metadata">=</stringProp>
  73703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73704. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  73705. <stringProp name="Argument.desc">false</stringProp>
  73706. </elementProp>
  73707. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  73708. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73709. <stringProp name="Argument.value">1</stringProp>
  73710. <stringProp name="Argument.metadata">=</stringProp>
  73711. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73712. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  73713. <stringProp name="Argument.desc">false</stringProp>
  73714. </elementProp>
  73715. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  73716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73717. <stringProp name="Argument.value"/>
  73718. <stringProp name="Argument.metadata">=</stringProp>
  73719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73720. <stringProp name="Argument.name">product[custom_design]</stringProp>
  73721. <stringProp name="Argument.desc">false</stringProp>
  73722. </elementProp>
  73723. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  73724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73725. <stringProp name="Argument.value"/>
  73726. <stringProp name="Argument.metadata">=</stringProp>
  73727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73728. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  73729. <stringProp name="Argument.desc">false</stringProp>
  73730. </elementProp>
  73731. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  73732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73733. <stringProp name="Argument.value"/>
  73734. <stringProp name="Argument.metadata">=</stringProp>
  73735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73736. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  73737. <stringProp name="Argument.desc">false</stringProp>
  73738. </elementProp>
  73739. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  73740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73741. <stringProp name="Argument.value"/>
  73742. <stringProp name="Argument.metadata">=</stringProp>
  73743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73744. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  73745. <stringProp name="Argument.desc">false</stringProp>
  73746. </elementProp>
  73747. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  73748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73749. <stringProp name="Argument.value"/>
  73750. <stringProp name="Argument.metadata">=</stringProp>
  73751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73752. <stringProp name="Argument.name">product[page_layout]</stringProp>
  73753. <stringProp name="Argument.desc">false</stringProp>
  73754. </elementProp>
  73755. <elementProp name="product[options_container]" elementType="HTTPArgument">
  73756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73757. <stringProp name="Argument.value">container2</stringProp>
  73758. <stringProp name="Argument.metadata">=</stringProp>
  73759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73760. <stringProp name="Argument.name">product[options_container]</stringProp>
  73761. <stringProp name="Argument.desc">false</stringProp>
  73762. </elementProp>
  73763. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  73764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73765. <stringProp name="Argument.value"/>
  73766. <stringProp name="Argument.metadata">=</stringProp>
  73767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73768. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  73769. <stringProp name="Argument.desc">false</stringProp>
  73770. </elementProp>
  73771. </collectionProp>
  73772. </elementProp>
  73773. <stringProp name="HTTPSampler.domain"/>
  73774. <stringProp name="HTTPSampler.port"/>
  73775. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  73776. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  73777. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  73778. <stringProp name="HTTPSampler.contentEncoding"/>
  73779. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true</stringProp>
  73780. <stringProp name="HTTPSampler.method">POST</stringProp>
  73781. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  73782. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  73783. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  73784. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  73785. <boolProp name="HTTPSampler.monitor">false</boolProp>
  73786. <stringProp name="HTTPSampler.embedded_url_re"/>
  73787. </HTTPSamplerProxy>
  73788. <hashTree>
  73789. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  73790. <collectionProp name="Asserion.test_strings">
  73791. <stringProp name="1853918323">{"error":false}</stringProp>
  73792. </collectionProp>
  73793. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  73794. <boolProp name="Assertion.assume_success">false</boolProp>
  73795. <intProp name="Assertion.test_type">2</intProp>
  73796. </ResponseAssertion>
  73797. <hashTree/>
  73798. </hashTree>
  73799. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Save" enabled="true">
  73800. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  73801. <collectionProp name="Arguments.arguments">
  73802. <elementProp name="ajax" elementType="HTTPArgument">
  73803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73804. <stringProp name="Argument.value">true</stringProp>
  73805. <stringProp name="Argument.metadata">=</stringProp>
  73806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73807. <stringProp name="Argument.name">ajax</stringProp>
  73808. <stringProp name="Argument.desc">false</stringProp>
  73809. </elementProp>
  73810. <elementProp name="isAjax" elementType="HTTPArgument">
  73811. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73812. <stringProp name="Argument.value">true</stringProp>
  73813. <stringProp name="Argument.metadata">=</stringProp>
  73814. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73815. <stringProp name="Argument.name">isAjax</stringProp>
  73816. <stringProp name="Argument.desc">false</stringProp>
  73817. </elementProp>
  73818. <elementProp name="form_key" elementType="HTTPArgument">
  73819. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73820. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  73821. <stringProp name="Argument.metadata">=</stringProp>
  73822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73823. <stringProp name="Argument.name">form_key</stringProp>
  73824. <stringProp name="Argument.desc">false</stringProp>
  73825. </elementProp>
  73826. <elementProp name="product[name]" elementType="HTTPArgument">
  73827. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73828. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  73829. <stringProp name="Argument.metadata">=</stringProp>
  73830. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73831. <stringProp name="Argument.name">product[name]</stringProp>
  73832. <stringProp name="Argument.desc">false</stringProp>
  73833. </elementProp>
  73834. <elementProp name="product[sku]" elementType="HTTPArgument">
  73835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73836. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  73837. <stringProp name="Argument.metadata">=</stringProp>
  73838. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73839. <stringProp name="Argument.name">product[sku]</stringProp>
  73840. <stringProp name="Argument.desc">false</stringProp>
  73841. </elementProp>
  73842. <elementProp name="product[price]" elementType="HTTPArgument">
  73843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73844. <stringProp name="Argument.value">${price_new}</stringProp>
  73845. <stringProp name="Argument.metadata">=</stringProp>
  73846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73847. <stringProp name="Argument.name">product[price]</stringProp>
  73848. <stringProp name="Argument.desc">false</stringProp>
  73849. </elementProp>
  73850. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  73851. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73852. <stringProp name="Argument.value">2</stringProp>
  73853. <stringProp name="Argument.metadata">=</stringProp>
  73854. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73855. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  73856. <stringProp name="Argument.desc">false</stringProp>
  73857. </elementProp>
  73858. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  73859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73860. <stringProp name="Argument.value">${quantity_new}</stringProp>
  73861. <stringProp name="Argument.metadata">=</stringProp>
  73862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73863. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  73864. <stringProp name="Argument.desc">false</stringProp>
  73865. </elementProp>
  73866. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  73867. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73868. <stringProp name="Argument.value">1</stringProp>
  73869. <stringProp name="Argument.metadata">=</stringProp>
  73870. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73871. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  73872. <stringProp name="Argument.desc">false</stringProp>
  73873. </elementProp>
  73874. <elementProp name="product[weight]" elementType="HTTPArgument">
  73875. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73876. <stringProp name="Argument.value">1.0000</stringProp>
  73877. <stringProp name="Argument.metadata">=</stringProp>
  73878. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73879. <stringProp name="Argument.name">product[weight]</stringProp>
  73880. <stringProp name="Argument.desc">false</stringProp>
  73881. </elementProp>
  73882. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  73883. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73884. <stringProp name="Argument.value">1</stringProp>
  73885. <stringProp name="Argument.metadata">=</stringProp>
  73886. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73887. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  73888. <stringProp name="Argument.desc">false</stringProp>
  73889. </elementProp>
  73890. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  73891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73892. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  73893. <stringProp name="Argument.metadata">=</stringProp>
  73894. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73895. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  73896. <stringProp name="Argument.desc">false</stringProp>
  73897. </elementProp>
  73898. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  73899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73900. <stringProp name="Argument.value">${category_additional}</stringProp>
  73901. <stringProp name="Argument.metadata">=</stringProp>
  73902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73903. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  73904. </elementProp>
  73905. <elementProp name="product[description]" elementType="HTTPArgument">
  73906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73907. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  73908. <stringProp name="Argument.metadata">=</stringProp>
  73909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73910. <stringProp name="Argument.name">product[description]</stringProp>
  73911. <stringProp name="Argument.desc">false</stringProp>
  73912. </elementProp>
  73913. <elementProp name="product[status]" elementType="HTTPArgument">
  73914. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73915. <stringProp name="Argument.value">1</stringProp>
  73916. <stringProp name="Argument.metadata">=</stringProp>
  73917. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73918. <stringProp name="Argument.name">product[status]</stringProp>
  73919. <stringProp name="Argument.desc">false</stringProp>
  73920. </elementProp>
  73921. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  73922. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73923. <stringProp name="Argument.value"/>
  73924. <stringProp name="Argument.metadata">=</stringProp>
  73925. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73926. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  73927. <stringProp name="Argument.desc">false</stringProp>
  73928. </elementProp>
  73929. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  73930. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73931. <stringProp name="Argument.value">1</stringProp>
  73932. <stringProp name="Argument.metadata">=</stringProp>
  73933. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73934. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  73935. <stringProp name="Argument.desc">false</stringProp>
  73936. </elementProp>
  73937. <elementProp name="product[image]" elementType="HTTPArgument">
  73938. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73939. <stringProp name="Argument.value"/>
  73940. <stringProp name="Argument.metadata">=</stringProp>
  73941. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73942. <stringProp name="Argument.name">product[image]</stringProp>
  73943. <stringProp name="Argument.desc">false</stringProp>
  73944. </elementProp>
  73945. <elementProp name="product[small_image]" elementType="HTTPArgument">
  73946. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73947. <stringProp name="Argument.value"/>
  73948. <stringProp name="Argument.metadata">=</stringProp>
  73949. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73950. <stringProp name="Argument.name">product[small_image]</stringProp>
  73951. <stringProp name="Argument.desc">false</stringProp>
  73952. </elementProp>
  73953. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  73954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73955. <stringProp name="Argument.value"/>
  73956. <stringProp name="Argument.metadata">=</stringProp>
  73957. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73958. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  73959. <stringProp name="Argument.desc">false</stringProp>
  73960. </elementProp>
  73961. <elementProp name="product[url_key]" elementType="HTTPArgument">
  73962. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73963. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  73964. <stringProp name="Argument.metadata">=</stringProp>
  73965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73966. <stringProp name="Argument.name">product[url_key]</stringProp>
  73967. <stringProp name="Argument.desc">false</stringProp>
  73968. </elementProp>
  73969. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  73970. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73971. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  73972. <stringProp name="Argument.metadata">=</stringProp>
  73973. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73974. <stringProp name="Argument.name">product[meta_title]</stringProp>
  73975. <stringProp name="Argument.desc">false</stringProp>
  73976. </elementProp>
  73977. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  73978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73979. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  73980. <stringProp name="Argument.metadata">=</stringProp>
  73981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73982. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  73983. <stringProp name="Argument.desc">false</stringProp>
  73984. </elementProp>
  73985. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  73986. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73987. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  73988. <stringProp name="Argument.metadata">=</stringProp>
  73989. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73990. <stringProp name="Argument.name">product[meta_description]</stringProp>
  73991. <stringProp name="Argument.desc">false</stringProp>
  73992. </elementProp>
  73993. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  73994. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  73995. <stringProp name="Argument.value">1</stringProp>
  73996. <stringProp name="Argument.metadata">=</stringProp>
  73997. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  73998. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  73999. <stringProp name="Argument.desc">false</stringProp>
  74000. </elementProp>
  74001. <elementProp name="product[special_price]" elementType="HTTPArgument">
  74002. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74003. <stringProp name="Argument.value">${special_price_new}</stringProp>
  74004. <stringProp name="Argument.metadata">=</stringProp>
  74005. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74006. <stringProp name="Argument.name">product[special_price]</stringProp>
  74007. <stringProp name="Argument.desc">false</stringProp>
  74008. </elementProp>
  74009. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  74010. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74011. <stringProp name="Argument.value"/>
  74012. <stringProp name="Argument.metadata">=</stringProp>
  74013. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74014. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  74015. <stringProp name="Argument.desc">false</stringProp>
  74016. </elementProp>
  74017. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  74018. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74019. <stringProp name="Argument.value"/>
  74020. <stringProp name="Argument.metadata">=</stringProp>
  74021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74022. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  74023. <stringProp name="Argument.desc">false</stringProp>
  74024. </elementProp>
  74025. <elementProp name="product[cost]" elementType="HTTPArgument">
  74026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74027. <stringProp name="Argument.value"/>
  74028. <stringProp name="Argument.metadata">=</stringProp>
  74029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74030. <stringProp name="Argument.name">product[cost]</stringProp>
  74031. <stringProp name="Argument.desc">false</stringProp>
  74032. </elementProp>
  74033. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  74034. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74035. <stringProp name="Argument.value">1</stringProp>
  74036. <stringProp name="Argument.metadata">=</stringProp>
  74037. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74038. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  74039. <stringProp name="Argument.desc">false</stringProp>
  74040. </elementProp>
  74041. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  74042. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74043. <stringProp name="Argument.value">${quantity_new}</stringProp>
  74044. <stringProp name="Argument.metadata">=</stringProp>
  74045. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74046. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  74047. <stringProp name="Argument.desc">false</stringProp>
  74048. </elementProp>
  74049. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  74050. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74051. <stringProp name="Argument.value">${quantity_new}</stringProp>
  74052. <stringProp name="Argument.metadata">=</stringProp>
  74053. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74054. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  74055. <stringProp name="Argument.desc">false</stringProp>
  74056. </elementProp>
  74057. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  74058. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74059. <stringProp name="Argument.value">0</stringProp>
  74060. <stringProp name="Argument.metadata">=</stringProp>
  74061. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74062. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  74063. <stringProp name="Argument.desc">false</stringProp>
  74064. </elementProp>
  74065. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  74066. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74067. <stringProp name="Argument.value">1</stringProp>
  74068. <stringProp name="Argument.metadata">=</stringProp>
  74069. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74070. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  74071. <stringProp name="Argument.desc">false</stringProp>
  74072. </elementProp>
  74073. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  74074. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74075. <stringProp name="Argument.value">1</stringProp>
  74076. <stringProp name="Argument.metadata">=</stringProp>
  74077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74078. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  74079. <stringProp name="Argument.desc">false</stringProp>
  74080. </elementProp>
  74081. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  74082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74083. <stringProp name="Argument.value">1</stringProp>
  74084. <stringProp name="Argument.metadata">=</stringProp>
  74085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74086. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  74087. <stringProp name="Argument.desc">false</stringProp>
  74088. </elementProp>
  74089. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  74090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74091. <stringProp name="Argument.value">10000</stringProp>
  74092. <stringProp name="Argument.metadata">=</stringProp>
  74093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74094. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  74095. <stringProp name="Argument.desc">false</stringProp>
  74096. </elementProp>
  74097. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  74098. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74099. <stringProp name="Argument.value">1</stringProp>
  74100. <stringProp name="Argument.metadata">=</stringProp>
  74101. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74102. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  74103. <stringProp name="Argument.desc">false</stringProp>
  74104. </elementProp>
  74105. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  74106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74107. <stringProp name="Argument.value">0</stringProp>
  74108. <stringProp name="Argument.metadata">=</stringProp>
  74109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74110. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  74111. <stringProp name="Argument.desc">false</stringProp>
  74112. </elementProp>
  74113. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  74114. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74115. <stringProp name="Argument.value">0</stringProp>
  74116. <stringProp name="Argument.metadata">=</stringProp>
  74117. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74118. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  74119. <stringProp name="Argument.desc">false</stringProp>
  74120. </elementProp>
  74121. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  74122. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74123. <stringProp name="Argument.value">0</stringProp>
  74124. <stringProp name="Argument.metadata">=</stringProp>
  74125. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74126. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  74127. <stringProp name="Argument.desc">false</stringProp>
  74128. </elementProp>
  74129. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  74130. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74131. <stringProp name="Argument.value">1</stringProp>
  74132. <stringProp name="Argument.metadata">=</stringProp>
  74133. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74134. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  74135. <stringProp name="Argument.desc">false</stringProp>
  74136. </elementProp>
  74137. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  74138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74139. <stringProp name="Argument.value">1</stringProp>
  74140. <stringProp name="Argument.metadata">=</stringProp>
  74141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74142. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  74143. <stringProp name="Argument.desc">false</stringProp>
  74144. </elementProp>
  74145. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  74146. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74147. <stringProp name="Argument.value">1</stringProp>
  74148. <stringProp name="Argument.metadata">=</stringProp>
  74149. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74150. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  74151. <stringProp name="Argument.desc">false</stringProp>
  74152. </elementProp>
  74153. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  74154. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74155. <stringProp name="Argument.value">0</stringProp>
  74156. <stringProp name="Argument.metadata">=</stringProp>
  74157. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74158. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  74159. <stringProp name="Argument.desc">false</stringProp>
  74160. </elementProp>
  74161. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  74162. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74163. <stringProp name="Argument.value">0</stringProp>
  74164. <stringProp name="Argument.metadata">=</stringProp>
  74165. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74166. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  74167. <stringProp name="Argument.desc">false</stringProp>
  74168. </elementProp>
  74169. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  74170. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74171. <stringProp name="Argument.value">1</stringProp>
  74172. <stringProp name="Argument.metadata">=</stringProp>
  74173. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74174. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  74175. <stringProp name="Argument.desc">false</stringProp>
  74176. </elementProp>
  74177. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  74178. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74179. <stringProp name="Argument.value">1</stringProp>
  74180. <stringProp name="Argument.metadata">=</stringProp>
  74181. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74182. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  74183. <stringProp name="Argument.desc">false</stringProp>
  74184. </elementProp>
  74185. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  74186. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74187. <stringProp name="Argument.value"/>
  74188. <stringProp name="Argument.metadata">=</stringProp>
  74189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74190. <stringProp name="Argument.name">product[custom_design]</stringProp>
  74191. <stringProp name="Argument.desc">false</stringProp>
  74192. </elementProp>
  74193. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  74194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74195. <stringProp name="Argument.value"/>
  74196. <stringProp name="Argument.metadata">=</stringProp>
  74197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74198. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  74199. <stringProp name="Argument.desc">false</stringProp>
  74200. </elementProp>
  74201. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  74202. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74203. <stringProp name="Argument.value"/>
  74204. <stringProp name="Argument.metadata">=</stringProp>
  74205. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74206. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  74207. <stringProp name="Argument.desc">false</stringProp>
  74208. </elementProp>
  74209. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  74210. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74211. <stringProp name="Argument.value"/>
  74212. <stringProp name="Argument.metadata">=</stringProp>
  74213. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74214. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  74215. <stringProp name="Argument.desc">false</stringProp>
  74216. </elementProp>
  74217. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  74218. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74219. <stringProp name="Argument.value"/>
  74220. <stringProp name="Argument.metadata">=</stringProp>
  74221. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74222. <stringProp name="Argument.name">product[page_layout]</stringProp>
  74223. <stringProp name="Argument.desc">false</stringProp>
  74224. </elementProp>
  74225. <elementProp name="product[options_container]" elementType="HTTPArgument">
  74226. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74227. <stringProp name="Argument.value">container2</stringProp>
  74228. <stringProp name="Argument.metadata">=</stringProp>
  74229. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74230. <stringProp name="Argument.name">product[options_container]</stringProp>
  74231. <stringProp name="Argument.desc">false</stringProp>
  74232. </elementProp>
  74233. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  74234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74235. <stringProp name="Argument.value"/>
  74236. <stringProp name="Argument.metadata">=</stringProp>
  74237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74238. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  74239. <stringProp name="Argument.desc">false</stringProp>
  74240. </elementProp>
  74241. </collectionProp>
  74242. </elementProp>
  74243. <stringProp name="HTTPSampler.domain"/>
  74244. <stringProp name="HTTPSampler.port"/>
  74245. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  74246. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  74247. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  74248. <stringProp name="HTTPSampler.contentEncoding"/>
  74249. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/</stringProp>
  74250. <stringProp name="HTTPSampler.method">POST</stringProp>
  74251. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  74252. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  74253. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  74254. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  74255. <boolProp name="HTTPSampler.monitor">false</boolProp>
  74256. <stringProp name="HTTPSampler.embedded_url_re"/>
  74257. </HTTPSamplerProxy>
  74258. <hashTree>
  74259. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  74260. <collectionProp name="Asserion.test_strings">
  74261. <stringProp name="-583471546">You saved the product</stringProp>
  74262. </collectionProp>
  74263. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  74264. <boolProp name="Assertion.assume_success">false</boolProp>
  74265. <intProp name="Assertion.test_type">2</intProp>
  74266. </ResponseAssertion>
  74267. <hashTree/>
  74268. </hashTree>
  74269. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product" enabled="true">
  74270. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  74271. <collectionProp name="Arguments.arguments"/>
  74272. </elementProp>
  74273. <stringProp name="HTTPSampler.domain"/>
  74274. <stringProp name="HTTPSampler.port"/>
  74275. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  74276. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  74277. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  74278. <stringProp name="HTTPSampler.contentEncoding"/>
  74279. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/</stringProp>
  74280. <stringProp name="HTTPSampler.method">GET</stringProp>
  74281. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  74282. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  74283. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  74284. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  74285. <boolProp name="HTTPSampler.monitor">false</boolProp>
  74286. <stringProp name="HTTPSampler.embedded_url_re"/>
  74287. </HTTPSamplerProxy>
  74288. <hashTree>
  74289. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  74290. <collectionProp name="Asserion.test_strings">
  74291. <stringProp name="1355179215">Product</stringProp>
  74292. </collectionProp>
  74293. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  74294. <boolProp name="Assertion.assume_success">false</boolProp>
  74295. <intProp name="Assertion.test_type">16</intProp>
  74296. </ResponseAssertion>
  74297. <hashTree/>
  74298. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  74299. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74300. <stringProp name="RegexExtractor.refname">configurable_product_name</stringProp>
  74301. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  74302. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74303. <stringProp name="RegexExtractor.default"/>
  74304. <stringProp name="RegexExtractor.match_number">1</stringProp>
  74305. </RegexExtractor>
  74306. <hashTree/>
  74307. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  74308. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74309. <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
  74310. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  74311. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74312. <stringProp name="RegexExtractor.default"/>
  74313. <stringProp name="RegexExtractor.match_number">1</stringProp>
  74314. </RegexExtractor>
  74315. <hashTree/>
  74316. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  74317. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74318. <stringProp name="RegexExtractor.refname">configurable_product_category_id</stringProp>
  74319. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)"</stringProp>
  74320. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74321. <stringProp name="RegexExtractor.default"/>
  74322. <stringProp name="RegexExtractor.match_number">1</stringProp>
  74323. </RegexExtractor>
  74324. <hashTree/>
  74325. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable attribute id" enabled="true">
  74326. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74327. <stringProp name="RegexExtractor.refname">configurable_attribute_id</stringProp>
  74328. <stringProp name="RegexExtractor.regex">,"configurable_variation":"([^'"]+)",</stringProp>
  74329. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74330. <stringProp name="RegexExtractor.default"/>
  74331. <stringProp name="RegexExtractor.match_number">1</stringProp>
  74332. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  74333. </RegexExtractor>
  74334. <hashTree/>
  74335. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable matrix" enabled="true">
  74336. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74337. <stringProp name="RegexExtractor.refname">configurable_matrix</stringProp>
  74338. <stringProp name="RegexExtractor.regex">"configurable-matrix":(\[.*?\])</stringProp>
  74339. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74340. <stringProp name="RegexExtractor.default"/>
  74341. <stringProp name="RegexExtractor.match_number">1</stringProp>
  74342. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  74343. </RegexExtractor>
  74344. <hashTree/>
  74345. <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 associated products ids" enabled="true">
  74346. <stringProp name="VAR">associated_products_ids</stringProp>
  74347. <stringProp name="JSONPATH">$.[*].id</stringProp>
  74348. <stringProp name="DEFAULT"/>
  74349. <stringProp name="VARIABLE">configurable_matrix</stringProp>
  74350. <stringProp name="SUBJECT">VAR</stringProp>
  74351. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  74352. <hashTree/>
  74353. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable product json" enabled="true">
  74354. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74355. <stringProp name="RegexExtractor.refname">configurable_product_data</stringProp>
  74356. <stringProp name="RegexExtractor.regex">(\{"product":.*?configurable_attributes_data.*?\})\s*&lt;</stringProp>
  74357. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74358. <stringProp name="RegexExtractor.default"/>
  74359. <stringProp name="RegexExtractor.match_number">1</stringProp>
  74360. </RegexExtractor>
  74361. <hashTree/>
  74362. <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 configurable attributes data" enabled="true">
  74363. <stringProp name="VAR">configurable_attributes_data</stringProp>
  74364. <stringProp name="JSONPATH">$.product.configurable_attributes_data</stringProp>
  74365. <stringProp name="DEFAULT"/>
  74366. <stringProp name="VARIABLE">configurable_product_data</stringProp>
  74367. <stringProp name="SUBJECT">VAR</stringProp>
  74368. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  74369. <hashTree/>
  74370. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute ids" enabled="true">
  74371. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74372. <stringProp name="RegexExtractor.refname">configurable_attribute_ids</stringProp>
  74373. <stringProp name="RegexExtractor.regex">"attribute_id":"(\d+)"</stringProp>
  74374. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74375. <stringProp name="RegexExtractor.default"/>
  74376. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  74377. <stringProp name="Sample.scope">variable</stringProp>
  74378. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  74379. </RegexExtractor>
  74380. <hashTree/>
  74381. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute codes" enabled="true">
  74382. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74383. <stringProp name="RegexExtractor.refname">configurable_attribute_codes</stringProp>
  74384. <stringProp name="RegexExtractor.regex">"code":"(\w+)"</stringProp>
  74385. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74386. <stringProp name="RegexExtractor.default"/>
  74387. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  74388. <stringProp name="Sample.scope">variable</stringProp>
  74389. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  74390. </RegexExtractor>
  74391. <hashTree/>
  74392. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute labels" enabled="true">
  74393. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74394. <stringProp name="RegexExtractor.refname">configurable_attribute_labels</stringProp>
  74395. <stringProp name="RegexExtractor.regex">"label":"(.*?)"</stringProp>
  74396. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74397. <stringProp name="RegexExtractor.default"/>
  74398. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  74399. <stringProp name="Sample.scope">variable</stringProp>
  74400. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  74401. </RegexExtractor>
  74402. <hashTree/>
  74403. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute values" enabled="true">
  74404. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74405. <stringProp name="RegexExtractor.refname">configurable_attribute_values</stringProp>
  74406. <stringProp name="RegexExtractor.regex">"values":(\{(?:\}|.*?\}\}))</stringProp>
  74407. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74408. <stringProp name="RegexExtractor.default"/>
  74409. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  74410. <stringProp name="Sample.scope">variable</stringProp>
  74411. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  74412. </RegexExtractor>
  74413. <hashTree/>
  74414. </hashTree>
  74415. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach configurable attribute id" enabled="true">
  74416. <stringProp name="ForeachController.inputVal">configurable_attribute_ids</stringProp>
  74417. <stringProp name="ForeachController.returnVal">configurable_attribute_id</stringProp>
  74418. <boolProp name="ForeachController.useSeparator">true</boolProp>
  74419. </ForeachController>
  74420. <hashTree>
  74421. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  74422. <stringProp name="CounterConfig.start">1</stringProp>
  74423. <stringProp name="CounterConfig.end">${configurable_attribute_ids_matchNr}</stringProp>
  74424. <stringProp name="CounterConfig.incr">1</stringProp>
  74425. <stringProp name="CounterConfig.name">attribute_counter</stringProp>
  74426. <stringProp name="CounterConfig.format"/>
  74427. <boolProp name="CounterConfig.per_user">true</boolProp>
  74428. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  74429. </CounterConfig>
  74430. <hashTree/>
  74431. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process configurable attribute values" enabled="true">
  74432. <stringProp name="BeanShellSampler.query">return vars.get("configurable_attribute_values_" + vars.get("attribute_counter"));</stringProp>
  74433. <stringProp name="BeanShellSampler.filename"/>
  74434. <stringProp name="BeanShellSampler.parameters"/>
  74435. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  74436. </BeanShellSampler>
  74437. <hashTree>
  74438. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Exctract attribute values" enabled="true">
  74439. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  74440. <stringProp name="RegexExtractor.refname">attribute_${configurable_attribute_id}_values</stringProp>
  74441. <stringProp name="RegexExtractor.regex">"value_index":"(\d+)"</stringProp>
  74442. <stringProp name="RegexExtractor.template">$1$</stringProp>
  74443. <stringProp name="RegexExtractor.default"/>
  74444. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  74445. <stringProp name="Scope.variable">configurable_attribute_values_${attribute_counter}</stringProp>
  74446. </RegexExtractor>
  74447. <hashTree/>
  74448. </hashTree>
  74449. </hashTree>
  74450. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Validate" enabled="true">
  74451. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  74452. <collectionProp name="Arguments.arguments">
  74453. <elementProp name="isAjax" elementType="HTTPArgument">
  74454. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74455. <stringProp name="Argument.value">true</stringProp>
  74456. <stringProp name="Argument.metadata">=</stringProp>
  74457. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74458. <stringProp name="Argument.name">isAjax</stringProp>
  74459. <stringProp name="Argument.desc">false</stringProp>
  74460. </elementProp>
  74461. <elementProp name="form_key" elementType="HTTPArgument">
  74462. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74463. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  74464. <stringProp name="Argument.metadata">=</stringProp>
  74465. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74466. <stringProp name="Argument.name">form_key</stringProp>
  74467. <stringProp name="Argument.desc">false</stringProp>
  74468. </elementProp>
  74469. <elementProp name="product[name]" elementType="HTTPArgument">
  74470. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74471. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  74472. <stringProp name="Argument.metadata">=</stringProp>
  74473. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74474. <stringProp name="Argument.name">product[name]</stringProp>
  74475. <stringProp name="Argument.desc">false</stringProp>
  74476. </elementProp>
  74477. <elementProp name="product[sku]" elementType="HTTPArgument">
  74478. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74479. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  74480. <stringProp name="Argument.metadata">=</stringProp>
  74481. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74482. <stringProp name="Argument.name">product[sku]</stringProp>
  74483. <stringProp name="Argument.desc">false</stringProp>
  74484. </elementProp>
  74485. <elementProp name="product[price]" elementType="HTTPArgument">
  74486. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74487. <stringProp name="Argument.value">${price_new}</stringProp>
  74488. <stringProp name="Argument.metadata">=</stringProp>
  74489. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74490. <stringProp name="Argument.name">product[price]</stringProp>
  74491. <stringProp name="Argument.desc">false</stringProp>
  74492. </elementProp>
  74493. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  74494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74495. <stringProp name="Argument.value">2</stringProp>
  74496. <stringProp name="Argument.metadata">=</stringProp>
  74497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74498. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  74499. <stringProp name="Argument.desc">false</stringProp>
  74500. </elementProp>
  74501. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  74502. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74503. <stringProp name="Argument.value">1</stringProp>
  74504. <stringProp name="Argument.metadata">=</stringProp>
  74505. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74506. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  74507. <stringProp name="Argument.desc">false</stringProp>
  74508. </elementProp>
  74509. <elementProp name="product[weight]" elementType="HTTPArgument">
  74510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74511. <stringProp name="Argument.value">3</stringProp>
  74512. <stringProp name="Argument.metadata">=</stringProp>
  74513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74514. <stringProp name="Argument.name">product[weight]</stringProp>
  74515. <stringProp name="Argument.desc">false</stringProp>
  74516. </elementProp>
  74517. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  74518. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74519. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  74520. <stringProp name="Argument.metadata">=</stringProp>
  74521. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74522. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  74523. <stringProp name="Argument.desc">false</stringProp>
  74524. </elementProp>
  74525. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  74526. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74527. <stringProp name="Argument.value">${category_additional}</stringProp>
  74528. <stringProp name="Argument.metadata">=</stringProp>
  74529. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74530. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  74531. <stringProp name="Argument.desc">false</stringProp>
  74532. </elementProp>
  74533. <elementProp name="product[description]" elementType="HTTPArgument">
  74534. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74535. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  74536. <stringProp name="Argument.metadata">=</stringProp>
  74537. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74538. <stringProp name="Argument.name">product[description]</stringProp>
  74539. <stringProp name="Argument.desc">false</stringProp>
  74540. </elementProp>
  74541. <elementProp name="product[status]" elementType="HTTPArgument">
  74542. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74543. <stringProp name="Argument.value">1</stringProp>
  74544. <stringProp name="Argument.metadata">=</stringProp>
  74545. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74546. <stringProp name="Argument.name">product[status]</stringProp>
  74547. <stringProp name="Argument.desc">false</stringProp>
  74548. </elementProp>
  74549. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  74550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74551. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  74552. <stringProp name="Argument.metadata">=</stringProp>
  74553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74554. <stringProp name="Argument.name">product[meta_title]</stringProp>
  74555. <stringProp name="Argument.desc">false</stringProp>
  74556. </elementProp>
  74557. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  74558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74559. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  74560. <stringProp name="Argument.metadata">=</stringProp>
  74561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74562. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  74563. <stringProp name="Argument.desc">false</stringProp>
  74564. </elementProp>
  74565. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  74566. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74567. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  74568. <stringProp name="Argument.metadata">=</stringProp>
  74569. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74570. <stringProp name="Argument.name">product[meta_description]</stringProp>
  74571. <stringProp name="Argument.desc">false</stringProp>
  74572. </elementProp>
  74573. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  74574. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74575. <stringProp name="Argument.value">1</stringProp>
  74576. <stringProp name="Argument.metadata">=</stringProp>
  74577. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74578. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  74579. <stringProp name="Argument.desc">false</stringProp>
  74580. </elementProp>
  74581. <elementProp name="product[special_price]" elementType="HTTPArgument">
  74582. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74583. <stringProp name="Argument.value">${special_price_new}</stringProp>
  74584. <stringProp name="Argument.metadata">=</stringProp>
  74585. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74586. <stringProp name="Argument.name">product[special_price]</stringProp>
  74587. <stringProp name="Argument.desc">false</stringProp>
  74588. </elementProp>
  74589. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  74590. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74591. <stringProp name="Argument.value"/>
  74592. <stringProp name="Argument.metadata">=</stringProp>
  74593. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74594. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  74595. <stringProp name="Argument.desc">false</stringProp>
  74596. </elementProp>
  74597. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  74598. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74599. <stringProp name="Argument.value"/>
  74600. <stringProp name="Argument.metadata">=</stringProp>
  74601. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74602. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  74603. <stringProp name="Argument.desc">false</stringProp>
  74604. </elementProp>
  74605. <elementProp name="product[cost]" elementType="HTTPArgument">
  74606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74607. <stringProp name="Argument.value"/>
  74608. <stringProp name="Argument.metadata">=</stringProp>
  74609. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74610. <stringProp name="Argument.name">product[cost]</stringProp>
  74611. <stringProp name="Argument.desc">false</stringProp>
  74612. </elementProp>
  74613. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  74614. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74615. <stringProp name="Argument.value">1</stringProp>
  74616. <stringProp name="Argument.metadata">=</stringProp>
  74617. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74618. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  74619. <stringProp name="Argument.desc">false</stringProp>
  74620. </elementProp>
  74621. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  74622. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74623. <stringProp name="Argument.value">0</stringProp>
  74624. <stringProp name="Argument.metadata">=</stringProp>
  74625. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74626. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  74627. <stringProp name="Argument.desc">false</stringProp>
  74628. </elementProp>
  74629. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  74630. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74631. <stringProp name="Argument.value">1</stringProp>
  74632. <stringProp name="Argument.metadata">=</stringProp>
  74633. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74634. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  74635. <stringProp name="Argument.desc">false</stringProp>
  74636. </elementProp>
  74637. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  74638. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74639. <stringProp name="Argument.value">1</stringProp>
  74640. <stringProp name="Argument.metadata">=</stringProp>
  74641. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74642. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  74643. <stringProp name="Argument.desc">false</stringProp>
  74644. </elementProp>
  74645. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  74646. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74647. <stringProp name="Argument.value">1</stringProp>
  74648. <stringProp name="Argument.metadata">=</stringProp>
  74649. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74650. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  74651. <stringProp name="Argument.desc">false</stringProp>
  74652. </elementProp>
  74653. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  74654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74655. <stringProp name="Argument.value">1</stringProp>
  74656. <stringProp name="Argument.metadata">=</stringProp>
  74657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74658. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  74659. <stringProp name="Argument.desc">false</stringProp>
  74660. </elementProp>
  74661. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  74662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74663. <stringProp name="Argument.value">0</stringProp>
  74664. <stringProp name="Argument.metadata">=</stringProp>
  74665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74666. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  74667. <stringProp name="Argument.desc">false</stringProp>
  74668. </elementProp>
  74669. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  74670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74671. <stringProp name="Argument.value">0</stringProp>
  74672. <stringProp name="Argument.metadata">=</stringProp>
  74673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74674. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  74675. <stringProp name="Argument.desc">false</stringProp>
  74676. </elementProp>
  74677. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  74678. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74679. <stringProp name="Argument.value">0</stringProp>
  74680. <stringProp name="Argument.metadata">=</stringProp>
  74681. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74682. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  74683. <stringProp name="Argument.desc">false</stringProp>
  74684. </elementProp>
  74685. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  74686. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74687. <stringProp name="Argument.value">1</stringProp>
  74688. <stringProp name="Argument.metadata">=</stringProp>
  74689. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74690. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  74691. <stringProp name="Argument.desc">false</stringProp>
  74692. </elementProp>
  74693. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  74694. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74695. <stringProp name="Argument.value">1</stringProp>
  74696. <stringProp name="Argument.metadata">=</stringProp>
  74697. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74698. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  74699. <stringProp name="Argument.desc">false</stringProp>
  74700. </elementProp>
  74701. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  74702. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74703. <stringProp name="Argument.value">1</stringProp>
  74704. <stringProp name="Argument.metadata">=</stringProp>
  74705. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74706. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  74707. <stringProp name="Argument.desc">false</stringProp>
  74708. </elementProp>
  74709. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  74710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74711. <stringProp name="Argument.value">0</stringProp>
  74712. <stringProp name="Argument.metadata">=</stringProp>
  74713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74714. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  74715. <stringProp name="Argument.desc">false</stringProp>
  74716. </elementProp>
  74717. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  74718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74719. <stringProp name="Argument.value">0</stringProp>
  74720. <stringProp name="Argument.metadata">=</stringProp>
  74721. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74722. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  74723. <stringProp name="Argument.desc">false</stringProp>
  74724. </elementProp>
  74725. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  74726. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74727. <stringProp name="Argument.value">1</stringProp>
  74728. <stringProp name="Argument.metadata">=</stringProp>
  74729. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74730. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  74731. <stringProp name="Argument.desc">false</stringProp>
  74732. </elementProp>
  74733. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  74734. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74735. <stringProp name="Argument.value">1</stringProp>
  74736. <stringProp name="Argument.metadata">=</stringProp>
  74737. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74738. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  74739. <stringProp name="Argument.desc">false</stringProp>
  74740. </elementProp>
  74741. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  74742. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74743. <stringProp name="Argument.value"/>
  74744. <stringProp name="Argument.metadata">=</stringProp>
  74745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74746. <stringProp name="Argument.name">product[custom_design]</stringProp>
  74747. <stringProp name="Argument.desc">false</stringProp>
  74748. </elementProp>
  74749. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  74750. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74751. <stringProp name="Argument.value"/>
  74752. <stringProp name="Argument.metadata">=</stringProp>
  74753. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74754. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  74755. <stringProp name="Argument.desc">false</stringProp>
  74756. </elementProp>
  74757. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  74758. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74759. <stringProp name="Argument.value"/>
  74760. <stringProp name="Argument.metadata">=</stringProp>
  74761. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74762. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  74763. <stringProp name="Argument.desc">false</stringProp>
  74764. </elementProp>
  74765. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  74766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74767. <stringProp name="Argument.value"/>
  74768. <stringProp name="Argument.metadata">=</stringProp>
  74769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74770. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  74771. <stringProp name="Argument.desc">false</stringProp>
  74772. </elementProp>
  74773. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  74774. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74775. <stringProp name="Argument.value"/>
  74776. <stringProp name="Argument.metadata">=</stringProp>
  74777. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74778. <stringProp name="Argument.name">product[page_layout]</stringProp>
  74779. <stringProp name="Argument.desc">false</stringProp>
  74780. </elementProp>
  74781. <elementProp name="product[options_container]" elementType="HTTPArgument">
  74782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74783. <stringProp name="Argument.value">container2</stringProp>
  74784. <stringProp name="Argument.metadata">=</stringProp>
  74785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74786. <stringProp name="Argument.name">product[options_container]</stringProp>
  74787. <stringProp name="Argument.desc">false</stringProp>
  74788. </elementProp>
  74789. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  74790. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74791. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  74792. <stringProp name="Argument.metadata">=</stringProp>
  74793. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74794. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  74795. <stringProp name="Argument.desc">false</stringProp>
  74796. </elementProp>
  74797. <elementProp name="product[url_key]" elementType="HTTPArgument">
  74798. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74799. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  74800. <stringProp name="Argument.metadata">=</stringProp>
  74801. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74802. <stringProp name="Argument.name">product[url_key]</stringProp>
  74803. </elementProp>
  74804. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  74805. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74806. <stringProp name="Argument.value">1</stringProp>
  74807. <stringProp name="Argument.metadata">=</stringProp>
  74808. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74809. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  74810. </elementProp>
  74811. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  74812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74813. <stringProp name="Argument.value">1</stringProp>
  74814. <stringProp name="Argument.metadata">=</stringProp>
  74815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74816. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  74817. </elementProp>
  74818. <elementProp name="product[visibility]" elementType="HTTPArgument">
  74819. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74820. <stringProp name="Argument.value">4</stringProp>
  74821. <stringProp name="Argument.metadata">=</stringProp>
  74822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74823. <stringProp name="Argument.name">product[visibility]</stringProp>
  74824. </elementProp>
  74825. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  74826. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74827. <stringProp name="Argument.value">1</stringProp>
  74828. <stringProp name="Argument.metadata">=</stringProp>
  74829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74830. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  74831. <stringProp name="Argument.desc">true</stringProp>
  74832. </elementProp>
  74833. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  74834. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74835. <stringProp name="Argument.value">50</stringProp>
  74836. <stringProp name="Argument.metadata">=</stringProp>
  74837. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74838. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  74839. <stringProp name="Argument.desc">false</stringProp>
  74840. </elementProp>
  74841. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  74842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74843. <stringProp name="Argument.value">configurable</stringProp>
  74844. <stringProp name="Argument.metadata">=</stringProp>
  74845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74846. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  74847. <stringProp name="Argument.desc">false</stringProp>
  74848. </elementProp>
  74849. </collectionProp>
  74850. </elementProp>
  74851. <stringProp name="HTTPSampler.domain"/>
  74852. <stringProp name="HTTPSampler.port"/>
  74853. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  74854. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  74855. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  74856. <stringProp name="HTTPSampler.contentEncoding"/>
  74857. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/</stringProp>
  74858. <stringProp name="HTTPSampler.method">POST</stringProp>
  74859. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  74860. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  74861. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  74862. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  74863. <boolProp name="HTTPSampler.monitor">false</boolProp>
  74864. <stringProp name="HTTPSampler.embedded_url_re"/>
  74865. </HTTPSamplerProxy>
  74866. <hashTree>
  74867. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  74868. <boolProp name="resetInterpreter">false</boolProp>
  74869. <stringProp name="parameters"/>
  74870. <stringProp name="filename"/>
  74871. <stringProp name="script">try {
  74872. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  74873. for (int i = 1; i &lt;= attributesCount; i++) {
  74874. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  74875. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  74876. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  74877. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  74878. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  74879. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  74880. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  74881. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  74882. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  74883. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  74884. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  74885. for (int j = 1; j &lt;= valuesCount; j++) {
  74886. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  74887. ctx.getCurrentSampler().addArgument(
  74888. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  74889. "1"
  74890. );
  74891. ctx.getCurrentSampler().addArgument(
  74892. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  74893. attributeValue
  74894. );
  74895. }
  74896. }
  74897. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  74898. } catch (Exception e) {
  74899. log.error("error???", e);
  74900. }</stringProp>
  74901. </BeanShellPreProcessor>
  74902. <hashTree/>
  74903. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  74904. <collectionProp name="Asserion.test_strings">
  74905. <stringProp name="1853918323">{"error":false}</stringProp>
  74906. </collectionProp>
  74907. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  74908. <boolProp name="Assertion.assume_success">false</boolProp>
  74909. <intProp name="Assertion.test_type">2</intProp>
  74910. </ResponseAssertion>
  74911. <hashTree/>
  74912. </hashTree>
  74913. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Save" enabled="true">
  74914. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  74915. <collectionProp name="Arguments.arguments">
  74916. <elementProp name="ajax" elementType="HTTPArgument">
  74917. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74918. <stringProp name="Argument.value">true</stringProp>
  74919. <stringProp name="Argument.metadata">=</stringProp>
  74920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74921. <stringProp name="Argument.name">ajax</stringProp>
  74922. <stringProp name="Argument.desc">false</stringProp>
  74923. </elementProp>
  74924. <elementProp name="isAjax" elementType="HTTPArgument">
  74925. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74926. <stringProp name="Argument.value">true</stringProp>
  74927. <stringProp name="Argument.metadata">=</stringProp>
  74928. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74929. <stringProp name="Argument.name">isAjax</stringProp>
  74930. <stringProp name="Argument.desc">false</stringProp>
  74931. </elementProp>
  74932. <elementProp name="form_key" elementType="HTTPArgument">
  74933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74934. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  74935. <stringProp name="Argument.metadata">=</stringProp>
  74936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74937. <stringProp name="Argument.name">form_key</stringProp>
  74938. <stringProp name="Argument.desc">false</stringProp>
  74939. </elementProp>
  74940. <elementProp name="product[name]" elementType="HTTPArgument">
  74941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74942. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  74943. <stringProp name="Argument.metadata">=</stringProp>
  74944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74945. <stringProp name="Argument.name">product[name]</stringProp>
  74946. <stringProp name="Argument.desc">false</stringProp>
  74947. </elementProp>
  74948. <elementProp name="product[sku]" elementType="HTTPArgument">
  74949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74950. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  74951. <stringProp name="Argument.metadata">=</stringProp>
  74952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74953. <stringProp name="Argument.name">product[sku]</stringProp>
  74954. <stringProp name="Argument.desc">false</stringProp>
  74955. </elementProp>
  74956. <elementProp name="product[price]" elementType="HTTPArgument">
  74957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74958. <stringProp name="Argument.value">${price_new}</stringProp>
  74959. <stringProp name="Argument.metadata">=</stringProp>
  74960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74961. <stringProp name="Argument.name">product[price]</stringProp>
  74962. <stringProp name="Argument.desc">false</stringProp>
  74963. </elementProp>
  74964. <elementProp name="product[tax_class_id]admin" elementType="HTTPArgument">
  74965. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74966. <stringProp name="Argument.value">2</stringProp>
  74967. <stringProp name="Argument.metadata">=</stringProp>
  74968. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74969. <stringProp name="Argument.name">product[tax_class_id]admin</stringProp>
  74970. <stringProp name="Argument.desc">false</stringProp>
  74971. </elementProp>
  74972. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  74973. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74974. <stringProp name="Argument.value">1</stringProp>
  74975. <stringProp name="Argument.metadata">=</stringProp>
  74976. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74977. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  74978. <stringProp name="Argument.desc">false</stringProp>
  74979. </elementProp>
  74980. <elementProp name="product[weight]" elementType="HTTPArgument">
  74981. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74982. <stringProp name="Argument.value">3</stringProp>
  74983. <stringProp name="Argument.metadata">=</stringProp>
  74984. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74985. <stringProp name="Argument.name">product[weight]</stringProp>
  74986. <stringProp name="Argument.desc">false</stringProp>
  74987. </elementProp>
  74988. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  74989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74990. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  74991. <stringProp name="Argument.metadata">=</stringProp>
  74992. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  74993. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  74994. <stringProp name="Argument.desc">false</stringProp>
  74995. </elementProp>
  74996. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  74997. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  74998. <stringProp name="Argument.value">${category_additional}</stringProp>
  74999. <stringProp name="Argument.metadata">=</stringProp>
  75000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75001. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  75002. <stringProp name="Argument.desc">false</stringProp>
  75003. </elementProp>
  75004. <elementProp name="product[description]" elementType="HTTPArgument">
  75005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75006. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  75007. <stringProp name="Argument.metadata">=</stringProp>
  75008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75009. <stringProp name="Argument.name">product[description]</stringProp>
  75010. <stringProp name="Argument.desc">false</stringProp>
  75011. </elementProp>
  75012. <elementProp name="product[status]" elementType="HTTPArgument">
  75013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75014. <stringProp name="Argument.value">1</stringProp>
  75015. <stringProp name="Argument.metadata">=</stringProp>
  75016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75017. <stringProp name="Argument.name">product[status]</stringProp>
  75018. <stringProp name="Argument.desc">false</stringProp>
  75019. </elementProp>
  75020. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  75021. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75022. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  75023. <stringProp name="Argument.metadata">=</stringProp>
  75024. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75025. <stringProp name="Argument.name">product[meta_title]</stringProp>
  75026. <stringProp name="Argument.desc">false</stringProp>
  75027. </elementProp>
  75028. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  75029. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75030. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  75031. <stringProp name="Argument.metadata">=</stringProp>
  75032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75033. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  75034. <stringProp name="Argument.desc">false</stringProp>
  75035. </elementProp>
  75036. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  75037. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75038. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  75039. <stringProp name="Argument.metadata">=</stringProp>
  75040. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75041. <stringProp name="Argument.name">product[meta_description]</stringProp>
  75042. <stringProp name="Argument.desc">false</stringProp>
  75043. </elementProp>
  75044. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  75045. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75046. <stringProp name="Argument.value">1</stringProp>
  75047. <stringProp name="Argument.metadata">=</stringProp>
  75048. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75049. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  75050. <stringProp name="Argument.desc">false</stringProp>
  75051. </elementProp>
  75052. <elementProp name="product[special_price]" elementType="HTTPArgument">
  75053. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75054. <stringProp name="Argument.value">${special_price_new}</stringProp>
  75055. <stringProp name="Argument.metadata">=</stringProp>
  75056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75057. <stringProp name="Argument.name">product[special_price]</stringProp>
  75058. <stringProp name="Argument.desc">false</stringProp>
  75059. </elementProp>
  75060. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  75061. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75062. <stringProp name="Argument.value"/>
  75063. <stringProp name="Argument.metadata">=</stringProp>
  75064. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75065. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  75066. <stringProp name="Argument.desc">false</stringProp>
  75067. </elementProp>
  75068. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  75069. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75070. <stringProp name="Argument.value"/>
  75071. <stringProp name="Argument.metadata">=</stringProp>
  75072. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75073. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  75074. <stringProp name="Argument.desc">false</stringProp>
  75075. </elementProp>
  75076. <elementProp name="product[cost]" elementType="HTTPArgument">
  75077. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75078. <stringProp name="Argument.value"/>
  75079. <stringProp name="Argument.metadata">=</stringProp>
  75080. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75081. <stringProp name="Argument.name">product[cost]</stringProp>
  75082. <stringProp name="Argument.desc">false</stringProp>
  75083. </elementProp>
  75084. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  75085. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75086. <stringProp name="Argument.value">1</stringProp>
  75087. <stringProp name="Argument.metadata">=</stringProp>
  75088. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75089. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  75090. <stringProp name="Argument.desc">false</stringProp>
  75091. </elementProp>
  75092. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  75093. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75094. <stringProp name="Argument.value">0</stringProp>
  75095. <stringProp name="Argument.metadata">=</stringProp>
  75096. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75097. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  75098. <stringProp name="Argument.desc">false</stringProp>
  75099. </elementProp>
  75100. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  75101. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75102. <stringProp name="Argument.value">1</stringProp>
  75103. <stringProp name="Argument.metadata">=</stringProp>
  75104. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75105. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  75106. <stringProp name="Argument.desc">false</stringProp>
  75107. </elementProp>
  75108. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  75109. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75110. <stringProp name="Argument.value">1</stringProp>
  75111. <stringProp name="Argument.metadata">=</stringProp>
  75112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75113. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  75114. <stringProp name="Argument.desc">false</stringProp>
  75115. </elementProp>
  75116. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  75117. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75118. <stringProp name="Argument.value">1</stringProp>
  75119. <stringProp name="Argument.metadata">=</stringProp>
  75120. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75121. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  75122. <stringProp name="Argument.desc">false</stringProp>
  75123. </elementProp>
  75124. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  75125. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75126. <stringProp name="Argument.value">1</stringProp>
  75127. <stringProp name="Argument.metadata">=</stringProp>
  75128. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75129. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  75130. <stringProp name="Argument.desc">false</stringProp>
  75131. </elementProp>
  75132. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  75133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75134. <stringProp name="Argument.value">0</stringProp>
  75135. <stringProp name="Argument.metadata">=</stringProp>
  75136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75137. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  75138. <stringProp name="Argument.desc">false</stringProp>
  75139. </elementProp>
  75140. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  75141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75142. <stringProp name="Argument.value">0</stringProp>
  75143. <stringProp name="Argument.metadata">=</stringProp>
  75144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75145. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  75146. <stringProp name="Argument.desc">false</stringProp>
  75147. </elementProp>
  75148. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  75149. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75150. <stringProp name="Argument.value">0</stringProp>
  75151. <stringProp name="Argument.metadata">=</stringProp>
  75152. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75153. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  75154. <stringProp name="Argument.desc">false</stringProp>
  75155. </elementProp>
  75156. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  75157. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75158. <stringProp name="Argument.value">1</stringProp>
  75159. <stringProp name="Argument.metadata">=</stringProp>
  75160. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75161. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  75162. <stringProp name="Argument.desc">false</stringProp>
  75163. </elementProp>
  75164. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  75165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75166. <stringProp name="Argument.value">1</stringProp>
  75167. <stringProp name="Argument.metadata">=</stringProp>
  75168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75169. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  75170. <stringProp name="Argument.desc">false</stringProp>
  75171. </elementProp>
  75172. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  75173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75174. <stringProp name="Argument.value">1</stringProp>
  75175. <stringProp name="Argument.metadata">=</stringProp>
  75176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75177. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  75178. <stringProp name="Argument.desc">false</stringProp>
  75179. </elementProp>
  75180. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  75181. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75182. <stringProp name="Argument.value">0</stringProp>
  75183. <stringProp name="Argument.metadata">=</stringProp>
  75184. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75185. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  75186. <stringProp name="Argument.desc">false</stringProp>
  75187. </elementProp>
  75188. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  75189. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75190. <stringProp name="Argument.value">0</stringProp>
  75191. <stringProp name="Argument.metadata">=</stringProp>
  75192. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75193. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  75194. <stringProp name="Argument.desc">false</stringProp>
  75195. </elementProp>
  75196. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  75197. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75198. <stringProp name="Argument.value">1</stringProp>
  75199. <stringProp name="Argument.metadata">=</stringProp>
  75200. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75201. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  75202. <stringProp name="Argument.desc">false</stringProp>
  75203. </elementProp>
  75204. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  75205. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75206. <stringProp name="Argument.value">1</stringProp>
  75207. <stringProp name="Argument.metadata">=</stringProp>
  75208. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75209. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  75210. <stringProp name="Argument.desc">false</stringProp>
  75211. </elementProp>
  75212. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  75213. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75214. <stringProp name="Argument.value"/>
  75215. <stringProp name="Argument.metadata">=</stringProp>
  75216. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75217. <stringProp name="Argument.name">product[custom_design]</stringProp>
  75218. <stringProp name="Argument.desc">false</stringProp>
  75219. </elementProp>
  75220. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  75221. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75222. <stringProp name="Argument.value"/>
  75223. <stringProp name="Argument.metadata">=</stringProp>
  75224. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75225. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  75226. <stringProp name="Argument.desc">false</stringProp>
  75227. </elementProp>
  75228. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  75229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75230. <stringProp name="Argument.value"/>
  75231. <stringProp name="Argument.metadata">=</stringProp>
  75232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75233. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  75234. <stringProp name="Argument.desc">false</stringProp>
  75235. </elementProp>
  75236. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  75237. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75238. <stringProp name="Argument.value"/>
  75239. <stringProp name="Argument.metadata">=</stringProp>
  75240. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75241. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  75242. <stringProp name="Argument.desc">false</stringProp>
  75243. </elementProp>
  75244. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  75245. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75246. <stringProp name="Argument.value"/>
  75247. <stringProp name="Argument.metadata">=</stringProp>
  75248. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75249. <stringProp name="Argument.name">product[page_layout]</stringProp>
  75250. <stringProp name="Argument.desc">false</stringProp>
  75251. </elementProp>
  75252. <elementProp name="product[options_container]" elementType="HTTPArgument">
  75253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75254. <stringProp name="Argument.value">container2</stringProp>
  75255. <stringProp name="Argument.metadata">=</stringProp>
  75256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75257. <stringProp name="Argument.name">product[options_container]</stringProp>
  75258. <stringProp name="Argument.desc">false</stringProp>
  75259. </elementProp>
  75260. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  75261. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75262. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  75263. <stringProp name="Argument.metadata">=</stringProp>
  75264. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75265. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  75266. <stringProp name="Argument.desc">false</stringProp>
  75267. </elementProp>
  75268. <elementProp name="product[url_key]" elementType="HTTPArgument">
  75269. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75270. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  75271. <stringProp name="Argument.metadata">=</stringProp>
  75272. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75273. <stringProp name="Argument.name">product[url_key]</stringProp>
  75274. </elementProp>
  75275. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  75276. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75277. <stringProp name="Argument.value">1</stringProp>
  75278. <stringProp name="Argument.metadata">=</stringProp>
  75279. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75280. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  75281. </elementProp>
  75282. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  75283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75284. <stringProp name="Argument.value">1</stringProp>
  75285. <stringProp name="Argument.metadata">=</stringProp>
  75286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75287. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  75288. </elementProp>
  75289. <elementProp name="product[visibility]" elementType="HTTPArgument">
  75290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75291. <stringProp name="Argument.value">4</stringProp>
  75292. <stringProp name="Argument.metadata">=</stringProp>
  75293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75294. <stringProp name="Argument.name">product[visibility]</stringProp>
  75295. </elementProp>
  75296. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  75297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75298. <stringProp name="Argument.value">1</stringProp>
  75299. <stringProp name="Argument.metadata">=</stringProp>
  75300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75301. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  75302. <stringProp name="Argument.desc">true</stringProp>
  75303. </elementProp>
  75304. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  75305. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75306. <stringProp name="Argument.value">50</stringProp>
  75307. <stringProp name="Argument.metadata">=</stringProp>
  75308. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75309. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  75310. <stringProp name="Argument.desc">false</stringProp>
  75311. </elementProp>
  75312. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  75313. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75314. <stringProp name="Argument.value">configurable</stringProp>
  75315. <stringProp name="Argument.metadata">=</stringProp>
  75316. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75317. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  75318. <stringProp name="Argument.desc">false</stringProp>
  75319. </elementProp>
  75320. </collectionProp>
  75321. </elementProp>
  75322. <stringProp name="HTTPSampler.domain"/>
  75323. <stringProp name="HTTPSampler.port"/>
  75324. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75325. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75326. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75327. <stringProp name="HTTPSampler.contentEncoding"/>
  75328. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/</stringProp>
  75329. <stringProp name="HTTPSampler.method">POST</stringProp>
  75330. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75331. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75332. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75333. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75334. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75335. <stringProp name="HTTPSampler.embedded_url_re"/>
  75336. </HTTPSamplerProxy>
  75337. <hashTree>
  75338. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  75339. <boolProp name="resetInterpreter">false</boolProp>
  75340. <stringProp name="parameters"/>
  75341. <stringProp name="filename"/>
  75342. <stringProp name="script">try {
  75343. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  75344. for (int i = 1; i &lt;= attributesCount; i++) {
  75345. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  75346. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  75347. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  75348. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  75349. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  75350. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  75351. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  75352. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  75353. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  75354. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  75355. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  75356. for (int j = 1; j &lt;= valuesCount; j++) {
  75357. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  75358. ctx.getCurrentSampler().addArgument(
  75359. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  75360. "1"
  75361. );
  75362. ctx.getCurrentSampler().addArgument(
  75363. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  75364. attributeValue
  75365. );
  75366. }
  75367. }
  75368. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  75369. } catch (Exception e) {
  75370. log.error("error???", e);
  75371. }</stringProp>
  75372. </BeanShellPreProcessor>
  75373. <hashTree/>
  75374. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  75375. <collectionProp name="Asserion.test_strings">
  75376. <stringProp name="-583471546">You saved the product</stringProp>
  75377. </collectionProp>
  75378. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  75379. <boolProp name="Assertion.assume_success">false</boolProp>
  75380. <intProp name="Assertion.test_type">2</intProp>
  75381. <stringProp name="TestPlan.comments"> if have trouble see messages-message-error </stringProp>
  75382. </ResponseAssertion>
  75383. <hashTree/>
  75384. </hashTree>
  75385. </hashTree>
  75386. </hashTree>
  75387. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  75388. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  75389. <collectionProp name="Arguments.arguments"/>
  75390. </elementProp>
  75391. <stringProp name="HTTPSampler.domain"/>
  75392. <stringProp name="HTTPSampler.port"/>
  75393. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75394. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75395. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75396. <stringProp name="HTTPSampler.contentEncoding"/>
  75397. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  75398. <stringProp name="HTTPSampler.method">GET</stringProp>
  75399. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75400. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75401. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75402. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75403. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75404. <stringProp name="HTTPSampler.embedded_url_re"/>
  75405. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  75406. <hashTree>
  75407. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  75408. <boolProp name="resetInterpreter">false</boolProp>
  75409. <stringProp name="parameters"/>
  75410. <stringProp name="filename"/>
  75411. <stringProp name="script">
  75412. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  75413. if (adminUsersDistribution == 1) {
  75414. adminUserList = props.get("adminUserList");
  75415. adminUserList.add(vars.get("admin_user"));
  75416. }
  75417. </stringProp>
  75418. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  75419. <hashTree/>
  75420. </hashTree>
  75421. </hashTree>
  75422. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Returns Management" enabled="true">
  75423. <intProp name="ThroughputController.style">1</intProp>
  75424. <boolProp name="ThroughputController.perThread">false</boolProp>
  75425. <intProp name="ThroughputController.maxThroughput">1</intProp>
  75426. <stringProp name="ThroughputController.percentThroughput">${cAdminReturnsManagementPercentage}</stringProp>
  75427. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  75428. <hashTree>
  75429. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  75430. <stringProp name="script">
  75431. var tmpLabel = vars.get("testLabel")
  75432. if (tmpLabel) {
  75433. var testLabel = " (" + tmpLabel + ")"
  75434. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  75435. if (sampler.getName().indexOf(testLabel) == -1) {
  75436. sampler.setName(sampler.getName() + testLabel);
  75437. }
  75438. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  75439. sampler.setName("SetUp - " + sampler.getName());
  75440. }
  75441. } else {
  75442. testLabel = ""
  75443. }
  75444. </stringProp>
  75445. <stringProp name="scriptLanguage">javascript</stringProp>
  75446. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  75447. <hashTree/>
  75448. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  75449. <stringProp name="BeanShellSampler.query">
  75450. vars.put("testLabel", "[GraphQL C] Admin Returns Management");
  75451. </stringProp>
  75452. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  75453. </BeanShellSampler>
  75454. <hashTree/>
  75455. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  75456. <stringProp name="script">
  75457. function getFormKeyFromResponse()
  75458. {
  75459. var url = prev.getUrlAsString(),
  75460. responseCode = prev.getResponseCode(),
  75461. formKey = null;
  75462. searchPattern = /var FORM_KEY = '(.+)'/;
  75463. if (responseCode == "200" &amp;&amp; url) {
  75464. response = prev.getResponseDataAsString();
  75465. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  75466. }
  75467. return formKey;
  75468. }
  75469. formKey = vars.get("form_key_storage");
  75470. currentFormKey = getFormKeyFromResponse();
  75471. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  75472. vars.put("form_key_storage", currentFormKey);
  75473. }
  75474. </stringProp>
  75475. <stringProp name="scriptLanguage">javascript</stringProp>
  75476. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  75477. <hashTree/>
  75478. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  75479. <stringProp name="script">
  75480. formKey = vars.get("form_key_storage");
  75481. if (formKey
  75482. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  75483. &amp;&amp; sampler.getMethod() == "POST")
  75484. {
  75485. arguments = sampler.getArguments();
  75486. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  75487. {
  75488. argument = arguments.getArgument(i);
  75489. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  75490. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  75491. argument.setValue(formKey);
  75492. }
  75493. }
  75494. }
  75495. </stringProp>
  75496. <stringProp name="scriptLanguage">javascript</stringProp>
  75497. </JSR223PreProcessor>
  75498. <hashTree/>
  75499. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  75500. <collectionProp name="CookieManager.cookies"/>
  75501. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  75502. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  75503. <hashTree/>
  75504. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  75505. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  75506. </GenericController>
  75507. <hashTree>
  75508. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  75509. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  75510. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  75511. <hashTree>
  75512. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  75513. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  75514. <stringProp name="BeanShellSampler.query">
  75515. adminUser = "none";
  75516. adminUserList = props.get("adminUserList");
  75517. adminUserListIterator = props.get("adminUserListIterator");
  75518. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  75519. if (adminUsersDistribution == 1) {
  75520. adminUser = adminUserList.poll();
  75521. } else {
  75522. if (!adminUserListIterator.hasNext()) {
  75523. adminUserListIterator = adminUserList.descendingIterator();
  75524. }
  75525. adminUser = adminUserListIterator.next();
  75526. }
  75527. if (adminUser == "none") {
  75528. SampleResult.setResponseMessage("adminUser list is empty");
  75529. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  75530. IsSuccess=false;
  75531. SampleResult.setSuccessful(false);
  75532. SampleResult.setStopThread(true);
  75533. }
  75534. vars.put("admin_user", adminUser);
  75535. </stringProp>
  75536. <stringProp name="BeanShellSampler.filename"/>
  75537. <stringProp name="BeanShellSampler.parameters"/>
  75538. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  75539. </BeanShellSampler>
  75540. <hashTree/>
  75541. </hashTree>
  75542. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  75543. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  75544. <collectionProp name="Arguments.arguments"/>
  75545. </elementProp>
  75546. <stringProp name="HTTPSampler.domain"/>
  75547. <stringProp name="HTTPSampler.port"/>
  75548. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75549. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75550. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75551. <stringProp name="HTTPSampler.contentEncoding"/>
  75552. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  75553. <stringProp name="HTTPSampler.method">GET</stringProp>
  75554. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75555. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75556. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75557. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75558. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75559. <stringProp name="HTTPSampler.embedded_url_re"/>
  75560. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  75561. <hashTree>
  75562. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  75563. <collectionProp name="Asserion.test_strings">
  75564. <stringProp name="-1397214398">Welcome</stringProp>
  75565. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  75566. </collectionProp>
  75567. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  75568. <boolProp name="Assertion.assume_success">false</boolProp>
  75569. <intProp name="Assertion.test_type">2</intProp>
  75570. </ResponseAssertion>
  75571. <hashTree/>
  75572. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  75573. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  75574. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  75575. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  75576. <stringProp name="RegexExtractor.template">$1$</stringProp>
  75577. <stringProp name="RegexExtractor.default"/>
  75578. <stringProp name="RegexExtractor.match_number">1</stringProp>
  75579. </RegexExtractor>
  75580. <hashTree/>
  75581. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  75582. <collectionProp name="Asserion.test_strings">
  75583. <stringProp name="2845929">^.+$</stringProp>
  75584. </collectionProp>
  75585. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  75586. <boolProp name="Assertion.assume_success">false</boolProp>
  75587. <intProp name="Assertion.test_type">1</intProp>
  75588. <stringProp name="Assertion.scope">variable</stringProp>
  75589. <stringProp name="Scope.variable">admin_form_key</stringProp>
  75590. </ResponseAssertion>
  75591. <hashTree/>
  75592. </hashTree>
  75593. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  75594. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  75595. <collectionProp name="Arguments.arguments">
  75596. <elementProp name="dummy" elementType="HTTPArgument">
  75597. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75598. <stringProp name="Argument.value"/>
  75599. <stringProp name="Argument.metadata">=</stringProp>
  75600. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75601. <stringProp name="Argument.name">dummy</stringProp>
  75602. </elementProp>
  75603. <elementProp name="form_key" elementType="HTTPArgument">
  75604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75605. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  75606. <stringProp name="Argument.metadata">=</stringProp>
  75607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75608. <stringProp name="Argument.name">form_key</stringProp>
  75609. </elementProp>
  75610. <elementProp name="login[password]" elementType="HTTPArgument">
  75611. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75612. <stringProp name="Argument.value">${admin_password}</stringProp>
  75613. <stringProp name="Argument.metadata">=</stringProp>
  75614. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75615. <stringProp name="Argument.name">login[password]</stringProp>
  75616. </elementProp>
  75617. <elementProp name="login[username]" elementType="HTTPArgument">
  75618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75619. <stringProp name="Argument.value">${admin_user}</stringProp>
  75620. <stringProp name="Argument.metadata">=</stringProp>
  75621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75622. <stringProp name="Argument.name">login[username]</stringProp>
  75623. </elementProp>
  75624. </collectionProp>
  75625. </elementProp>
  75626. <stringProp name="HTTPSampler.domain"/>
  75627. <stringProp name="HTTPSampler.port"/>
  75628. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75629. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75630. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75631. <stringProp name="HTTPSampler.contentEncoding"/>
  75632. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  75633. <stringProp name="HTTPSampler.method">POST</stringProp>
  75634. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75635. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75636. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75637. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75638. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  75639. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75640. <stringProp name="HTTPSampler.embedded_url_re"/>
  75641. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  75642. </HTTPSamplerProxy>
  75643. <hashTree>
  75644. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  75645. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  75646. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  75647. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  75648. <stringProp name="RegexExtractor.template">$1$</stringProp>
  75649. <stringProp name="RegexExtractor.default"/>
  75650. <stringProp name="RegexExtractor.match_number">1</stringProp>
  75651. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  75652. <hashTree/>
  75653. </hashTree>
  75654. </hashTree>
  75655. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  75656. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  75657. </GenericController>
  75658. <hashTree>
  75659. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  75660. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  75661. <collectionProp name="Arguments.arguments"/>
  75662. </elementProp>
  75663. <stringProp name="HTTPSampler.domain"/>
  75664. <stringProp name="HTTPSampler.port"/>
  75665. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75666. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75667. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75668. <stringProp name="HTTPSampler.contentEncoding"/>
  75669. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  75670. <stringProp name="HTTPSampler.method">GET</stringProp>
  75671. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75672. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75673. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75674. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75675. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75676. <stringProp name="HTTPSampler.embedded_url_re"/>
  75677. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  75678. <hashTree>
  75679. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  75680. <collectionProp name="Asserion.test_strings">
  75681. <stringProp name="1204796042">Create New Order</stringProp>
  75682. </collectionProp>
  75683. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  75684. <boolProp name="Assertion.assume_success">false</boolProp>
  75685. <intProp name="Assertion.test_type">2</intProp>
  75686. </ResponseAssertion>
  75687. <hashTree/>
  75688. </hashTree>
  75689. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  75690. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  75691. <collectionProp name="Arguments.arguments">
  75692. <elementProp name="namespace" elementType="HTTPArgument">
  75693. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75694. <stringProp name="Argument.value">sales_order_grid</stringProp>
  75695. <stringProp name="Argument.metadata">=</stringProp>
  75696. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75697. <stringProp name="Argument.name">namespace</stringProp>
  75698. </elementProp>
  75699. <elementProp name="search" elementType="HTTPArgument">
  75700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75701. <stringProp name="Argument.value"/>
  75702. <stringProp name="Argument.metadata">=</stringProp>
  75703. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75704. <stringProp name="Argument.name">search</stringProp>
  75705. </elementProp>
  75706. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  75707. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75708. <stringProp name="Argument.value">true</stringProp>
  75709. <stringProp name="Argument.metadata">=</stringProp>
  75710. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75711. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  75712. </elementProp>
  75713. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  75714. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75715. <stringProp name="Argument.value">200</stringProp>
  75716. <stringProp name="Argument.metadata">=</stringProp>
  75717. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75718. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  75719. </elementProp>
  75720. <elementProp name="paging[current]" elementType="HTTPArgument">
  75721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75722. <stringProp name="Argument.value">1</stringProp>
  75723. <stringProp name="Argument.metadata">=</stringProp>
  75724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75725. <stringProp name="Argument.name">paging[current]</stringProp>
  75726. </elementProp>
  75727. <elementProp name="sorting[field]" elementType="HTTPArgument">
  75728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75729. <stringProp name="Argument.value">increment_id</stringProp>
  75730. <stringProp name="Argument.metadata">=</stringProp>
  75731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75732. <stringProp name="Argument.name">sorting[field]</stringProp>
  75733. </elementProp>
  75734. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  75735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75736. <stringProp name="Argument.value">desc</stringProp>
  75737. <stringProp name="Argument.metadata">=</stringProp>
  75738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75739. <stringProp name="Argument.name">sorting[direction]</stringProp>
  75740. </elementProp>
  75741. <elementProp name="isAjax" elementType="HTTPArgument">
  75742. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75743. <stringProp name="Argument.value">true</stringProp>
  75744. <stringProp name="Argument.metadata">=</stringProp>
  75745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75746. <stringProp name="Argument.name">isAjax</stringProp>
  75747. </elementProp>
  75748. <elementProp name="form_key" elementType="HTTPArgument">
  75749. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75750. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  75751. <stringProp name="Argument.metadata">=</stringProp>
  75752. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75753. <stringProp name="Argument.name">form_key</stringProp>
  75754. <stringProp name="Argument.desc">false</stringProp>
  75755. </elementProp>
  75756. <elementProp name="filters[status]" elementType="HTTPArgument">
  75757. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75758. <stringProp name="Argument.value">pending</stringProp>
  75759. <stringProp name="Argument.metadata">=</stringProp>
  75760. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75761. <stringProp name="Argument.name">filters[status]</stringProp>
  75762. <stringProp name="Argument.desc">true</stringProp>
  75763. </elementProp>
  75764. <elementProp name="_" elementType="HTTPArgument">
  75765. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75766. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  75767. <stringProp name="Argument.metadata">=</stringProp>
  75768. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75769. <stringProp name="Argument.name">_</stringProp>
  75770. </elementProp>
  75771. </collectionProp>
  75772. </elementProp>
  75773. <stringProp name="HTTPSampler.domain"/>
  75774. <stringProp name="HTTPSampler.port"/>
  75775. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75776. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75777. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75778. <stringProp name="HTTPSampler.contentEncoding"/>
  75779. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  75780. <stringProp name="HTTPSampler.method">GET</stringProp>
  75781. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75782. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75783. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75784. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75785. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75786. <stringProp name="HTTPSampler.embedded_url_re"/>
  75787. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  75788. <hashTree>
  75789. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  75790. <collectionProp name="Asserion.test_strings">
  75791. <stringProp name="1637639774">totalRecords</stringProp>
  75792. </collectionProp>
  75793. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  75794. <boolProp name="Assertion.assume_success">false</boolProp>
  75795. <intProp name="Assertion.test_type">2</intProp>
  75796. </ResponseAssertion>
  75797. <hashTree/>
  75798. </hashTree>
  75799. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  75800. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  75801. <collectionProp name="Arguments.arguments">
  75802. <elementProp name="form_key" elementType="HTTPArgument">
  75803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75804. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  75805. <stringProp name="Argument.metadata">=</stringProp>
  75806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75807. <stringProp name="Argument.name">form_key</stringProp>
  75808. </elementProp>
  75809. <elementProp name="namespace" elementType="HTTPArgument">
  75810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75811. <stringProp name="Argument.value">sales_order_grid</stringProp>
  75812. <stringProp name="Argument.metadata">=</stringProp>
  75813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75814. <stringProp name="Argument.name">namespace</stringProp>
  75815. <stringProp name="Argument.desc">true</stringProp>
  75816. </elementProp>
  75817. <elementProp name="search" elementType="HTTPArgument">
  75818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75819. <stringProp name="Argument.value"/>
  75820. <stringProp name="Argument.metadata">=</stringProp>
  75821. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75822. <stringProp name="Argument.name">search</stringProp>
  75823. <stringProp name="Argument.desc">true</stringProp>
  75824. </elementProp>
  75825. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  75826. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75827. <stringProp name="Argument.value">true</stringProp>
  75828. <stringProp name="Argument.metadata">=</stringProp>
  75829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75830. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  75831. <stringProp name="Argument.desc">true</stringProp>
  75832. </elementProp>
  75833. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  75834. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75835. <stringProp name="Argument.value">200</stringProp>
  75836. <stringProp name="Argument.metadata">=</stringProp>
  75837. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75838. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  75839. <stringProp name="Argument.desc">true</stringProp>
  75840. </elementProp>
  75841. <elementProp name="paging[current]" elementType="HTTPArgument">
  75842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75843. <stringProp name="Argument.value">1</stringProp>
  75844. <stringProp name="Argument.metadata">=</stringProp>
  75845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75846. <stringProp name="Argument.name">paging[current]</stringProp>
  75847. <stringProp name="Argument.desc">true</stringProp>
  75848. </elementProp>
  75849. <elementProp name="sorting[field]" elementType="HTTPArgument">
  75850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75851. <stringProp name="Argument.value">increment_id</stringProp>
  75852. <stringProp name="Argument.metadata">=</stringProp>
  75853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75854. <stringProp name="Argument.name">sorting[field]</stringProp>
  75855. <stringProp name="Argument.desc">true</stringProp>
  75856. </elementProp>
  75857. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  75858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75859. <stringProp name="Argument.value">asc</stringProp>
  75860. <stringProp name="Argument.metadata">=</stringProp>
  75861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75862. <stringProp name="Argument.name">sorting[direction]</stringProp>
  75863. <stringProp name="Argument.desc">true</stringProp>
  75864. </elementProp>
  75865. <elementProp name="isAjax" elementType="HTTPArgument">
  75866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75867. <stringProp name="Argument.value">true</stringProp>
  75868. <stringProp name="Argument.metadata">=</stringProp>
  75869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75870. <stringProp name="Argument.name">isAjax</stringProp>
  75871. <stringProp name="Argument.desc">true</stringProp>
  75872. </elementProp>
  75873. <elementProp name="filters[status]" elementType="HTTPArgument">
  75874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75875. <stringProp name="Argument.value">pending</stringProp>
  75876. <stringProp name="Argument.metadata">=</stringProp>
  75877. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75878. <stringProp name="Argument.name">filters[status]</stringProp>
  75879. </elementProp>
  75880. <elementProp name="_" elementType="HTTPArgument">
  75881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  75882. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  75883. <stringProp name="Argument.metadata">=</stringProp>
  75884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  75885. <stringProp name="Argument.name">_</stringProp>
  75886. </elementProp>
  75887. </collectionProp>
  75888. </elementProp>
  75889. <stringProp name="HTTPSampler.domain"/>
  75890. <stringProp name="HTTPSampler.port"/>
  75891. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75892. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75893. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75894. <stringProp name="HTTPSampler.contentEncoding"/>
  75895. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  75896. <stringProp name="HTTPSampler.method">GET</stringProp>
  75897. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75898. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75899. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75900. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75901. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75902. <stringProp name="HTTPSampler.embedded_url_re"/>
  75903. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  75904. <hashTree>
  75905. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  75906. <collectionProp name="Asserion.test_strings">
  75907. <stringProp name="1637639774">totalRecords</stringProp>
  75908. </collectionProp>
  75909. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  75910. <boolProp name="Assertion.assume_success">false</boolProp>
  75911. <intProp name="Assertion.test_type">2</intProp>
  75912. </ResponseAssertion>
  75913. <hashTree/>
  75914. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  75915. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  75916. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  75917. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  75918. <stringProp name="RegexExtractor.template">$1$</stringProp>
  75919. <stringProp name="RegexExtractor.default"/>
  75920. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  75921. <stringProp name="Scope.variable">simple_products</stringProp>
  75922. </RegexExtractor>
  75923. <hashTree/>
  75924. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  75925. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  75926. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  75927. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  75928. <stringProp name="RegexExtractor.template">$1$</stringProp>
  75929. <stringProp name="RegexExtractor.default"/>
  75930. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  75931. <stringProp name="Scope.variable">simple_products</stringProp>
  75932. </RegexExtractor>
  75933. <hashTree/>
  75934. </hashTree>
  75935. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  75936. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  75937. <stringProp name="BeanShellSampler.query">
  75938. import java.util.ArrayList;
  75939. import java.util.HashMap;
  75940. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  75941. import java.util.Random;
  75942. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  75943. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  75944. int clusterLength;
  75945. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  75946. if (threadsNumber == 0) {
  75947. //Number of orders for one thread
  75948. clusterLength = ordersCount;
  75949. } else {
  75950. clusterLength = Math.round(ordersCount / threadsNumber);
  75951. if (clusterLength == 0) {
  75952. clusterLength = 1;
  75953. }
  75954. }
  75955. //Current thread number starts from 0
  75956. int currentThreadNum = ctx.getThreadNum();
  75957. //Index of the current product from the cluster
  75958. Random random = new Random();
  75959. if (${seedForRandom} &gt; 0) {
  75960. random.setSeed(${seedForRandom} + ${__threadNum});
  75961. }
  75962. int iterator = random.nextInt(clusterLength);
  75963. if (iterator == 0) {
  75964. iterator = 1;
  75965. }
  75966. int i = clusterLength * currentThreadNum + iterator;
  75967. orderNumber = vars.get("order_numbers_" + i.toString());
  75968. orderId = vars.get("order_ids_" + i.toString());
  75969. vars.put("order_number", orderNumber);
  75970. vars.put("order_id", orderId);
  75971. </stringProp>
  75972. <stringProp name="BeanShellSampler.filename"/>
  75973. <stringProp name="BeanShellSampler.parameters"/>
  75974. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  75975. </BeanShellSampler>
  75976. <hashTree/>
  75977. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  75978. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  75979. <collectionProp name="Arguments.arguments"/>
  75980. </elementProp>
  75981. <stringProp name="HTTPSampler.domain"/>
  75982. <stringProp name="HTTPSampler.port"/>
  75983. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  75984. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  75985. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  75986. <stringProp name="HTTPSampler.contentEncoding"/>
  75987. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  75988. <stringProp name="HTTPSampler.method">GET</stringProp>
  75989. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  75990. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  75991. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  75992. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  75993. <boolProp name="HTTPSampler.monitor">false</boolProp>
  75994. <stringProp name="HTTPSampler.embedded_url_re"/>
  75995. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  75996. <hashTree>
  75997. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  75998. <collectionProp name="Asserion.test_strings">
  75999. <stringProp name="2103620713">#${order_number}</stringProp>
  76000. </collectionProp>
  76001. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76002. <boolProp name="Assertion.assume_success">false</boolProp>
  76003. <intProp name="Assertion.test_type">2</intProp>
  76004. </ResponseAssertion>
  76005. <hashTree/>
  76006. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  76007. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  76008. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  76009. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  76010. <stringProp name="RegexExtractor.template">$1$</stringProp>
  76011. <stringProp name="RegexExtractor.default"/>
  76012. <stringProp name="RegexExtractor.match_number">1</stringProp>
  76013. <stringProp name="Scope.variable">simple_products</stringProp>
  76014. </RegexExtractor>
  76015. <hashTree/>
  76016. </hashTree>
  76017. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  76018. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  76019. <boolProp name="IfController.evaluateAll">false</boolProp>
  76020. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  76021. <hashTree>
  76022. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  76023. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76024. <collectionProp name="Arguments.arguments"/>
  76025. </elementProp>
  76026. <stringProp name="HTTPSampler.domain"/>
  76027. <stringProp name="HTTPSampler.port"/>
  76028. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76029. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76030. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76031. <stringProp name="HTTPSampler.contentEncoding"/>
  76032. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  76033. <stringProp name="HTTPSampler.method">GET</stringProp>
  76034. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76035. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76036. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76037. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76038. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76039. <stringProp name="HTTPSampler.embedded_url_re"/>
  76040. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  76041. <hashTree>
  76042. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  76043. <collectionProp name="Asserion.test_strings">
  76044. <stringProp name="-1233850814">Invoice Totals</stringProp>
  76045. </collectionProp>
  76046. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76047. <boolProp name="Assertion.assume_success">false</boolProp>
  76048. <intProp name="Assertion.test_type">2</intProp>
  76049. </ResponseAssertion>
  76050. <hashTree/>
  76051. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  76052. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  76053. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  76054. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  76055. <stringProp name="RegexExtractor.template">$1$</stringProp>
  76056. <stringProp name="RegexExtractor.default"/>
  76057. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  76058. <stringProp name="Scope.variable">simple_products</stringProp>
  76059. </RegexExtractor>
  76060. <hashTree/>
  76061. </hashTree>
  76062. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  76063. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76064. <collectionProp name="Arguments.arguments">
  76065. <elementProp name="form_key" elementType="HTTPArgument">
  76066. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76067. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  76068. <stringProp name="Argument.metadata">=</stringProp>
  76069. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76070. <stringProp name="Argument.name">form_key</stringProp>
  76071. <stringProp name="Argument.desc">false</stringProp>
  76072. </elementProp>
  76073. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  76074. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76075. <stringProp name="Argument.value">1</stringProp>
  76076. <stringProp name="Argument.metadata">=</stringProp>
  76077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76078. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  76079. </elementProp>
  76080. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  76081. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76082. <stringProp name="Argument.value">1</stringProp>
  76083. <stringProp name="Argument.metadata">=</stringProp>
  76084. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76085. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  76086. </elementProp>
  76087. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  76088. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76089. <stringProp name="Argument.value">Invoiced</stringProp>
  76090. <stringProp name="Argument.metadata">=</stringProp>
  76091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76092. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  76093. </elementProp>
  76094. </collectionProp>
  76095. </elementProp>
  76096. <stringProp name="HTTPSampler.domain"/>
  76097. <stringProp name="HTTPSampler.port"/>
  76098. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76099. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76100. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76101. <stringProp name="HTTPSampler.contentEncoding"/>
  76102. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  76103. <stringProp name="HTTPSampler.method">POST</stringProp>
  76104. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76105. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76106. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76107. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76108. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76109. <stringProp name="HTTPSampler.embedded_url_re"/>
  76110. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  76111. <hashTree>
  76112. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  76113. <collectionProp name="Asserion.test_strings">
  76114. <stringProp name="1740524604">The invoice has been created</stringProp>
  76115. </collectionProp>
  76116. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76117. <boolProp name="Assertion.assume_success">false</boolProp>
  76118. <intProp name="Assertion.test_type">2</intProp>
  76119. </ResponseAssertion>
  76120. <hashTree/>
  76121. </hashTree>
  76122. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Start" enabled="true">
  76123. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76124. <collectionProp name="Arguments.arguments"/>
  76125. </elementProp>
  76126. <stringProp name="HTTPSampler.domain"/>
  76127. <stringProp name="HTTPSampler.port"/>
  76128. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76129. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76130. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76131. <stringProp name="HTTPSampler.contentEncoding"/>
  76132. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/</stringProp>
  76133. <stringProp name="HTTPSampler.method">GET</stringProp>
  76134. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76135. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76136. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76137. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76138. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76139. <stringProp name="HTTPSampler.embedded_url_re"/>
  76140. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx</stringProp></HTTPSamplerProxy>
  76141. <hashTree>
  76142. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  76143. <collectionProp name="Asserion.test_strings">
  76144. <stringProp name="1382627322">New Memo</stringProp>
  76145. </collectionProp>
  76146. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76147. <boolProp name="Assertion.assume_success">false</boolProp>
  76148. <intProp name="Assertion.test_type">2</intProp>
  76149. </ResponseAssertion>
  76150. <hashTree/>
  76151. </hashTree>
  76152. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Submit - Full Refund" enabled="true">
  76153. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76154. <collectionProp name="Arguments.arguments">
  76155. <elementProp name="form_key" elementType="HTTPArgument">
  76156. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76157. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  76158. <stringProp name="Argument.metadata">=</stringProp>
  76159. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76160. <stringProp name="Argument.name">form_key</stringProp>
  76161. <stringProp name="Argument.desc">false</stringProp>
  76162. </elementProp>
  76163. <elementProp name="creditmemo[items][${item_ids_1}][qty]" elementType="HTTPArgument">
  76164. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76165. <stringProp name="Argument.value">1</stringProp>
  76166. <stringProp name="Argument.metadata">=</stringProp>
  76167. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76168. <stringProp name="Argument.name">creditmemo[items][${item_ids_1}][qty]</stringProp>
  76169. </elementProp>
  76170. <elementProp name="creditmemo[items][${item_ids_2}][qty]" elementType="HTTPArgument">
  76171. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76172. <stringProp name="Argument.value">1</stringProp>
  76173. <stringProp name="Argument.metadata">=</stringProp>
  76174. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76175. <stringProp name="Argument.name">creditmemo[items][${item_ids_2}][qty]</stringProp>
  76176. </elementProp>
  76177. <elementProp name="creditmemo[do_offline]" elementType="HTTPArgument">
  76178. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76179. <stringProp name="Argument.value">1</stringProp>
  76180. <stringProp name="Argument.metadata">=</stringProp>
  76181. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76182. <stringProp name="Argument.name">creditmemo[do_offline]</stringProp>
  76183. </elementProp>
  76184. <elementProp name="creditmemo[comment_text]" elementType="HTTPArgument">
  76185. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76186. <stringProp name="Argument.value">Credit Memo added</stringProp>
  76187. <stringProp name="Argument.metadata">=</stringProp>
  76188. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76189. <stringProp name="Argument.name">creditmemo[comment_text]</stringProp>
  76190. </elementProp>
  76191. <elementProp name="creditmemo[shipping_amount]" elementType="HTTPArgument">
  76192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76193. <stringProp name="Argument.value">10</stringProp>
  76194. <stringProp name="Argument.metadata">=</stringProp>
  76195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76196. <stringProp name="Argument.name">creditmemo[shipping_amount]</stringProp>
  76197. </elementProp>
  76198. <elementProp name="creditmemo[adjustment_positive]" elementType="HTTPArgument">
  76199. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76200. <stringProp name="Argument.value">0</stringProp>
  76201. <stringProp name="Argument.metadata">=</stringProp>
  76202. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76203. <stringProp name="Argument.name">creditmemo[adjustment_positive]</stringProp>
  76204. </elementProp>
  76205. <elementProp name="creditmemo[adjustment_negative]" elementType="HTTPArgument">
  76206. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76207. <stringProp name="Argument.value">0</stringProp>
  76208. <stringProp name="Argument.metadata">=</stringProp>
  76209. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76210. <stringProp name="Argument.name">creditmemo[adjustment_negative]</stringProp>
  76211. </elementProp>
  76212. </collectionProp>
  76213. </elementProp>
  76214. <stringProp name="HTTPSampler.domain"/>
  76215. <stringProp name="HTTPSampler.port"/>
  76216. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76217. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76218. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76219. <stringProp name="HTTPSampler.contentEncoding"/>
  76220. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/</stringProp>
  76221. <stringProp name="HTTPSampler.method">POST</stringProp>
  76222. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76223. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76224. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76225. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76226. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76227. <stringProp name="HTTPSampler.embedded_url_re"/>
  76228. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_full_refund.jmx</stringProp></HTTPSamplerProxy>
  76229. <hashTree>
  76230. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  76231. <collectionProp name="Asserion.test_strings">
  76232. <stringProp name="-515117447">You created the credit memo</stringProp>
  76233. </collectionProp>
  76234. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76235. <boolProp name="Assertion.assume_success">false</boolProp>
  76236. <intProp name="Assertion.test_type">2</intProp>
  76237. </ResponseAssertion>
  76238. <hashTree/>
  76239. </hashTree>
  76240. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Create/Process Returns - Pause" enabled="true">
  76241. <intProp name="ActionProcessor.action">1</intProp>
  76242. <intProp name="ActionProcessor.target">0</intProp>
  76243. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))}</stringProp>
  76244. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/pause.jmx</stringProp></TestAction>
  76245. <hashTree/>
  76246. </hashTree>
  76247. </hashTree>
  76248. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  76249. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76250. <collectionProp name="Arguments.arguments"/>
  76251. </elementProp>
  76252. <stringProp name="HTTPSampler.domain"/>
  76253. <stringProp name="HTTPSampler.port"/>
  76254. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76255. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76256. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76257. <stringProp name="HTTPSampler.contentEncoding"/>
  76258. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  76259. <stringProp name="HTTPSampler.method">GET</stringProp>
  76260. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76261. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76262. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76263. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76264. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76265. <stringProp name="HTTPSampler.embedded_url_re"/>
  76266. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  76267. <hashTree>
  76268. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  76269. <boolProp name="resetInterpreter">false</boolProp>
  76270. <stringProp name="parameters"/>
  76271. <stringProp name="filename"/>
  76272. <stringProp name="script">
  76273. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  76274. if (adminUsersDistribution == 1) {
  76275. adminUserList = props.get("adminUserList");
  76276. adminUserList.add(vars.get("admin_user"));
  76277. }
  76278. </stringProp>
  76279. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  76280. <hashTree/>
  76281. </hashTree>
  76282. </hashTree>
  76283. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Browse Customer Grid" enabled="true">
  76284. <intProp name="ThroughputController.style">1</intProp>
  76285. <boolProp name="ThroughputController.perThread">false</boolProp>
  76286. <intProp name="ThroughputController.maxThroughput">1</intProp>
  76287. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseCustomerGridPercentage}</stringProp>
  76288. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  76289. <hashTree>
  76290. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  76291. <stringProp name="script">
  76292. var tmpLabel = vars.get("testLabel")
  76293. if (tmpLabel) {
  76294. var testLabel = " (" + tmpLabel + ")"
  76295. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  76296. if (sampler.getName().indexOf(testLabel) == -1) {
  76297. sampler.setName(sampler.getName() + testLabel);
  76298. }
  76299. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  76300. sampler.setName("SetUp - " + sampler.getName());
  76301. }
  76302. } else {
  76303. testLabel = ""
  76304. }
  76305. </stringProp>
  76306. <stringProp name="scriptLanguage">javascript</stringProp>
  76307. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  76308. <hashTree/>
  76309. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  76310. <stringProp name="BeanShellSampler.query">
  76311. vars.put("testLabel", "[GraphQL C] Admin Browse Customer Grid");
  76312. </stringProp>
  76313. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  76314. </BeanShellSampler>
  76315. <hashTree/>
  76316. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  76317. <stringProp name="script">
  76318. function getFormKeyFromResponse()
  76319. {
  76320. var url = prev.getUrlAsString(),
  76321. responseCode = prev.getResponseCode(),
  76322. formKey = null;
  76323. searchPattern = /var FORM_KEY = '(.+)'/;
  76324. if (responseCode == "200" &amp;&amp; url) {
  76325. response = prev.getResponseDataAsString();
  76326. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  76327. }
  76328. return formKey;
  76329. }
  76330. formKey = vars.get("form_key_storage");
  76331. currentFormKey = getFormKeyFromResponse();
  76332. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  76333. vars.put("form_key_storage", currentFormKey);
  76334. }
  76335. </stringProp>
  76336. <stringProp name="scriptLanguage">javascript</stringProp>
  76337. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  76338. <hashTree/>
  76339. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  76340. <stringProp name="script">
  76341. formKey = vars.get("form_key_storage");
  76342. if (formKey
  76343. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  76344. &amp;&amp; sampler.getMethod() == "POST")
  76345. {
  76346. arguments = sampler.getArguments();
  76347. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  76348. {
  76349. argument = arguments.getArgument(i);
  76350. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  76351. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  76352. argument.setValue(formKey);
  76353. }
  76354. }
  76355. }
  76356. </stringProp>
  76357. <stringProp name="scriptLanguage">javascript</stringProp>
  76358. </JSR223PreProcessor>
  76359. <hashTree/>
  76360. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  76361. <collectionProp name="CookieManager.cookies"/>
  76362. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  76363. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  76364. <hashTree/>
  76365. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  76366. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  76367. </GenericController>
  76368. <hashTree>
  76369. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  76370. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  76371. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  76372. <hashTree>
  76373. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  76374. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  76375. <stringProp name="BeanShellSampler.query">
  76376. adminUser = "none";
  76377. adminUserList = props.get("adminUserList");
  76378. adminUserListIterator = props.get("adminUserListIterator");
  76379. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  76380. if (adminUsersDistribution == 1) {
  76381. adminUser = adminUserList.poll();
  76382. } else {
  76383. if (!adminUserListIterator.hasNext()) {
  76384. adminUserListIterator = adminUserList.descendingIterator();
  76385. }
  76386. adminUser = adminUserListIterator.next();
  76387. }
  76388. if (adminUser == "none") {
  76389. SampleResult.setResponseMessage("adminUser list is empty");
  76390. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  76391. IsSuccess=false;
  76392. SampleResult.setSuccessful(false);
  76393. SampleResult.setStopThread(true);
  76394. }
  76395. vars.put("admin_user", adminUser);
  76396. </stringProp>
  76397. <stringProp name="BeanShellSampler.filename"/>
  76398. <stringProp name="BeanShellSampler.parameters"/>
  76399. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  76400. </BeanShellSampler>
  76401. <hashTree/>
  76402. </hashTree>
  76403. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  76404. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76405. <collectionProp name="Arguments.arguments"/>
  76406. </elementProp>
  76407. <stringProp name="HTTPSampler.domain"/>
  76408. <stringProp name="HTTPSampler.port"/>
  76409. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76410. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76411. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76412. <stringProp name="HTTPSampler.contentEncoding"/>
  76413. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  76414. <stringProp name="HTTPSampler.method">GET</stringProp>
  76415. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76416. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76417. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76418. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76419. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76420. <stringProp name="HTTPSampler.embedded_url_re"/>
  76421. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  76422. <hashTree>
  76423. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  76424. <collectionProp name="Asserion.test_strings">
  76425. <stringProp name="-1397214398">Welcome</stringProp>
  76426. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  76427. </collectionProp>
  76428. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76429. <boolProp name="Assertion.assume_success">false</boolProp>
  76430. <intProp name="Assertion.test_type">2</intProp>
  76431. </ResponseAssertion>
  76432. <hashTree/>
  76433. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  76434. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  76435. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  76436. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  76437. <stringProp name="RegexExtractor.template">$1$</stringProp>
  76438. <stringProp name="RegexExtractor.default"/>
  76439. <stringProp name="RegexExtractor.match_number">1</stringProp>
  76440. </RegexExtractor>
  76441. <hashTree/>
  76442. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  76443. <collectionProp name="Asserion.test_strings">
  76444. <stringProp name="2845929">^.+$</stringProp>
  76445. </collectionProp>
  76446. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76447. <boolProp name="Assertion.assume_success">false</boolProp>
  76448. <intProp name="Assertion.test_type">1</intProp>
  76449. <stringProp name="Assertion.scope">variable</stringProp>
  76450. <stringProp name="Scope.variable">admin_form_key</stringProp>
  76451. </ResponseAssertion>
  76452. <hashTree/>
  76453. </hashTree>
  76454. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  76455. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76456. <collectionProp name="Arguments.arguments">
  76457. <elementProp name="dummy" elementType="HTTPArgument">
  76458. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76459. <stringProp name="Argument.value"/>
  76460. <stringProp name="Argument.metadata">=</stringProp>
  76461. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76462. <stringProp name="Argument.name">dummy</stringProp>
  76463. </elementProp>
  76464. <elementProp name="form_key" elementType="HTTPArgument">
  76465. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76466. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  76467. <stringProp name="Argument.metadata">=</stringProp>
  76468. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76469. <stringProp name="Argument.name">form_key</stringProp>
  76470. </elementProp>
  76471. <elementProp name="login[password]" elementType="HTTPArgument">
  76472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76473. <stringProp name="Argument.value">${admin_password}</stringProp>
  76474. <stringProp name="Argument.metadata">=</stringProp>
  76475. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76476. <stringProp name="Argument.name">login[password]</stringProp>
  76477. </elementProp>
  76478. <elementProp name="login[username]" elementType="HTTPArgument">
  76479. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76480. <stringProp name="Argument.value">${admin_user}</stringProp>
  76481. <stringProp name="Argument.metadata">=</stringProp>
  76482. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76483. <stringProp name="Argument.name">login[username]</stringProp>
  76484. </elementProp>
  76485. </collectionProp>
  76486. </elementProp>
  76487. <stringProp name="HTTPSampler.domain"/>
  76488. <stringProp name="HTTPSampler.port"/>
  76489. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76490. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76491. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76492. <stringProp name="HTTPSampler.contentEncoding"/>
  76493. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  76494. <stringProp name="HTTPSampler.method">POST</stringProp>
  76495. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76496. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76497. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76498. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76499. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  76500. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76501. <stringProp name="HTTPSampler.embedded_url_re"/>
  76502. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  76503. </HTTPSamplerProxy>
  76504. <hashTree>
  76505. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  76506. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  76507. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  76508. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  76509. <stringProp name="RegexExtractor.template">$1$</stringProp>
  76510. <stringProp name="RegexExtractor.default"/>
  76511. <stringProp name="RegexExtractor.match_number">1</stringProp>
  76512. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  76513. <hashTree/>
  76514. </hashTree>
  76515. </hashTree>
  76516. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  76517. <stringProp name="script">
  76518. vars.put("gridEntityType" , "Customer");
  76519. pagesCount = parseInt(vars.get("customers_page_size")) || 20;
  76520. vars.put("grid_entity_page_size" , pagesCount);
  76521. vars.put("grid_namespace" , "customer_listing");
  76522. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text"));
  76523. vars.put("grid_filter_field", "name");
  76524. // set sort fields and sort directions
  76525. vars.put("grid_sort_field_1", "name");
  76526. vars.put("grid_sort_field_2", "group_id");
  76527. vars.put("grid_sort_field_3", "billing_country_id");
  76528. vars.put("grid_sort_order_1", "asc");
  76529. vars.put("grid_sort_order_2", "desc");
  76530. </stringProp>
  76531. <stringProp name="scriptLanguage">javascript</stringProp>
  76532. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_customers_grid/setup.jmx</stringProp></JSR223PostProcessor>
  76533. <hashTree/>
  76534. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  76535. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  76536. </GenericController>
  76537. <hashTree>
  76538. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  76539. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76540. <collectionProp name="Arguments.arguments">
  76541. <elementProp name="namespace" elementType="HTTPArgument">
  76542. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76543. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  76544. <stringProp name="Argument.metadata">=</stringProp>
  76545. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76546. <stringProp name="Argument.name">namespace</stringProp>
  76547. <stringProp name="Argument.desc">true</stringProp>
  76548. </elementProp>
  76549. <elementProp name="search" elementType="HTTPArgument">
  76550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76551. <stringProp name="Argument.value"/>
  76552. <stringProp name="Argument.metadata">=</stringProp>
  76553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76554. <stringProp name="Argument.name">search</stringProp>
  76555. <stringProp name="Argument.desc">true</stringProp>
  76556. </elementProp>
  76557. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  76558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76559. <stringProp name="Argument.value">true</stringProp>
  76560. <stringProp name="Argument.metadata">=</stringProp>
  76561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76562. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  76563. <stringProp name="Argument.desc">true</stringProp>
  76564. </elementProp>
  76565. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  76566. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76567. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  76568. <stringProp name="Argument.metadata">=</stringProp>
  76569. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76570. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  76571. <stringProp name="Argument.desc">true</stringProp>
  76572. </elementProp>
  76573. <elementProp name="paging[current]" elementType="HTTPArgument">
  76574. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76575. <stringProp name="Argument.value">1</stringProp>
  76576. <stringProp name="Argument.metadata">=</stringProp>
  76577. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76578. <stringProp name="Argument.name">paging[current]</stringProp>
  76579. <stringProp name="Argument.desc">true</stringProp>
  76580. </elementProp>
  76581. <elementProp name="sorting[field]" elementType="HTTPArgument">
  76582. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76583. <stringProp name="Argument.value">entity_id</stringProp>
  76584. <stringProp name="Argument.metadata">=</stringProp>
  76585. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76586. <stringProp name="Argument.name">sorting[field]</stringProp>
  76587. <stringProp name="Argument.desc">true</stringProp>
  76588. </elementProp>
  76589. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  76590. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76591. <stringProp name="Argument.value">asc</stringProp>
  76592. <stringProp name="Argument.metadata">=</stringProp>
  76593. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76594. <stringProp name="Argument.name">sorting[direction]</stringProp>
  76595. <stringProp name="Argument.desc">true</stringProp>
  76596. </elementProp>
  76597. <elementProp name="isAjax" elementType="HTTPArgument">
  76598. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76599. <stringProp name="Argument.value">true</stringProp>
  76600. <stringProp name="Argument.metadata">=</stringProp>
  76601. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76602. <stringProp name="Argument.name">isAjax</stringProp>
  76603. <stringProp name="Argument.desc">true</stringProp>
  76604. </elementProp>
  76605. </collectionProp>
  76606. </elementProp>
  76607. <stringProp name="HTTPSampler.domain"/>
  76608. <stringProp name="HTTPSampler.port"/>
  76609. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76610. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76611. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76612. <stringProp name="HTTPSampler.contentEncoding"/>
  76613. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  76614. <stringProp name="HTTPSampler.method">GET</stringProp>
  76615. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76616. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76617. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76618. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76619. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76620. <stringProp name="HTTPSampler.embedded_url_re"/>
  76621. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  76622. <hashTree>
  76623. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  76624. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  76625. <stringProp name="EXPECTED_VALUE">0</stringProp>
  76626. <boolProp name="JSONVALIDATION">true</boolProp>
  76627. <boolProp name="EXPECT_NULL">false</boolProp>
  76628. <boolProp name="INVERT">true</boolProp>
  76629. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  76630. <hashTree/>
  76631. <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 total records" enabled="true">
  76632. <stringProp name="VAR">entity_total_records</stringProp>
  76633. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  76634. <stringProp name="DEFAULT"/>
  76635. <stringProp name="VARIABLE"/>
  76636. <stringProp name="SUBJECT">BODY</stringProp>
  76637. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  76638. <hashTree/>
  76639. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  76640. <stringProp name="cacheKey"/>
  76641. <stringProp name="filename"/>
  76642. <stringProp name="parameters"/>
  76643. <stringProp name="script">
  76644. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  76645. var totalsRecord = parseInt(vars.get("entity_total_records"));
  76646. var pageCount = Math.round(totalsRecord/pageSize);
  76647. vars.put("grid_pages_count", pageCount);
  76648. </stringProp>
  76649. <stringProp name="scriptLanguage">javascript</stringProp>
  76650. </JSR223PostProcessor>
  76651. <hashTree/>
  76652. </hashTree>
  76653. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  76654. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76655. <collectionProp name="Arguments.arguments">
  76656. <elementProp name="namespace" elementType="HTTPArgument">
  76657. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76658. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  76659. <stringProp name="Argument.metadata">=</stringProp>
  76660. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76661. <stringProp name="Argument.name">namespace</stringProp>
  76662. <stringProp name="Argument.desc">true</stringProp>
  76663. </elementProp>
  76664. <elementProp name="search" elementType="HTTPArgument">
  76665. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76666. <stringProp name="Argument.value"/>
  76667. <stringProp name="Argument.metadata">=</stringProp>
  76668. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76669. <stringProp name="Argument.name">search</stringProp>
  76670. <stringProp name="Argument.desc">true</stringProp>
  76671. </elementProp>
  76672. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  76673. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76674. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  76675. <stringProp name="Argument.metadata">=</stringProp>
  76676. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76677. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  76678. <stringProp name="Argument.desc">true</stringProp>
  76679. </elementProp>
  76680. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  76681. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76682. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  76683. <stringProp name="Argument.metadata">=</stringProp>
  76684. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76685. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  76686. <stringProp name="Argument.desc">true</stringProp>
  76687. </elementProp>
  76688. <elementProp name="paging[current]" elementType="HTTPArgument">
  76689. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76690. <stringProp name="Argument.value">1</stringProp>
  76691. <stringProp name="Argument.metadata">=</stringProp>
  76692. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76693. <stringProp name="Argument.name">paging[current]</stringProp>
  76694. <stringProp name="Argument.desc">true</stringProp>
  76695. </elementProp>
  76696. <elementProp name="sorting[field]" elementType="HTTPArgument">
  76697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76698. <stringProp name="Argument.value">entity_id</stringProp>
  76699. <stringProp name="Argument.metadata">=</stringProp>
  76700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76701. <stringProp name="Argument.name">sorting[field]</stringProp>
  76702. <stringProp name="Argument.desc">true</stringProp>
  76703. </elementProp>
  76704. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  76705. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76706. <stringProp name="Argument.value">asc</stringProp>
  76707. <stringProp name="Argument.metadata">=</stringProp>
  76708. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76709. <stringProp name="Argument.name">sorting[direction]</stringProp>
  76710. <stringProp name="Argument.desc">true</stringProp>
  76711. </elementProp>
  76712. <elementProp name="isAjax" elementType="HTTPArgument">
  76713. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76714. <stringProp name="Argument.value">true</stringProp>
  76715. <stringProp name="Argument.metadata">=</stringProp>
  76716. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76717. <stringProp name="Argument.name">isAjax</stringProp>
  76718. <stringProp name="Argument.desc">true</stringProp>
  76719. </elementProp>
  76720. </collectionProp>
  76721. </elementProp>
  76722. <stringProp name="HTTPSampler.domain"/>
  76723. <stringProp name="HTTPSampler.port"/>
  76724. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76725. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76726. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76727. <stringProp name="HTTPSampler.contentEncoding"/>
  76728. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  76729. <stringProp name="HTTPSampler.method">GET</stringProp>
  76730. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76731. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76732. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76733. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76734. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76735. <stringProp name="HTTPSampler.embedded_url_re"/>
  76736. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  76737. <hashTree>
  76738. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  76739. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  76740. <stringProp name="EXPECTED_VALUE">0</stringProp>
  76741. <boolProp name="JSONVALIDATION">true</boolProp>
  76742. <boolProp name="EXPECT_NULL">false</boolProp>
  76743. <boolProp name="INVERT">true</boolProp>
  76744. <boolProp name="ISREGEX">true</boolProp>
  76745. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  76746. <hashTree/>
  76747. <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 total records" enabled="true">
  76748. <stringProp name="VAR">entity_total_records</stringProp>
  76749. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  76750. <stringProp name="DEFAULT"/>
  76751. <stringProp name="VARIABLE"/>
  76752. <stringProp name="SUBJECT">BODY</stringProp>
  76753. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  76754. <hashTree/>
  76755. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  76756. <stringProp name="parameters"/>
  76757. <stringProp name="filename"/>
  76758. <stringProp name="script">
  76759. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  76760. var totalsRecord = parseInt(vars.get("entity_total_records"));
  76761. var pageCount = Math.round(totalsRecord/pageSize);
  76762. vars.put("grid_pages_count_filtered", pageCount);
  76763. </stringProp>
  76764. <stringProp name="scriptLanguage">javascript</stringProp>
  76765. </JSR223PostProcessor>
  76766. <hashTree/>
  76767. </hashTree>
  76768. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  76769. <stringProp name="CounterConfig.start">1</stringProp>
  76770. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  76771. <stringProp name="CounterConfig.incr">1</stringProp>
  76772. <stringProp name="CounterConfig.name">page_number</stringProp>
  76773. <stringProp name="CounterConfig.format"/>
  76774. <boolProp name="CounterConfig.per_user">true</boolProp>
  76775. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  76776. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  76777. <hashTree/>
  76778. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  76779. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76780. <collectionProp name="Arguments.arguments">
  76781. <elementProp name="namespace" elementType="HTTPArgument">
  76782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76783. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  76784. <stringProp name="Argument.metadata">=</stringProp>
  76785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76786. <stringProp name="Argument.name">namespace</stringProp>
  76787. <stringProp name="Argument.desc">true</stringProp>
  76788. </elementProp>
  76789. <elementProp name="search" elementType="HTTPArgument">
  76790. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76791. <stringProp name="Argument.value"/>
  76792. <stringProp name="Argument.metadata">=</stringProp>
  76793. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76794. <stringProp name="Argument.name">search</stringProp>
  76795. <stringProp name="Argument.desc">true</stringProp>
  76796. </elementProp>
  76797. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  76798. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76799. <stringProp name="Argument.value">true</stringProp>
  76800. <stringProp name="Argument.metadata">=</stringProp>
  76801. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76802. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  76803. <stringProp name="Argument.desc">true</stringProp>
  76804. </elementProp>
  76805. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  76806. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76807. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  76808. <stringProp name="Argument.metadata">=</stringProp>
  76809. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76810. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  76811. <stringProp name="Argument.desc">true</stringProp>
  76812. </elementProp>
  76813. <elementProp name="paging[current]" elementType="HTTPArgument">
  76814. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76815. <stringProp name="Argument.value">${page_number}</stringProp>
  76816. <stringProp name="Argument.metadata">=</stringProp>
  76817. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76818. <stringProp name="Argument.name">paging[current]</stringProp>
  76819. <stringProp name="Argument.desc">true</stringProp>
  76820. </elementProp>
  76821. <elementProp name="sorting[field]" elementType="HTTPArgument">
  76822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76823. <stringProp name="Argument.value">entity_id</stringProp>
  76824. <stringProp name="Argument.metadata">=</stringProp>
  76825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76826. <stringProp name="Argument.name">sorting[field]</stringProp>
  76827. <stringProp name="Argument.desc">true</stringProp>
  76828. </elementProp>
  76829. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  76830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76831. <stringProp name="Argument.value">asc</stringProp>
  76832. <stringProp name="Argument.metadata">=</stringProp>
  76833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76834. <stringProp name="Argument.name">sorting[direction]</stringProp>
  76835. <stringProp name="Argument.desc">true</stringProp>
  76836. </elementProp>
  76837. <elementProp name="isAjax" elementType="HTTPArgument">
  76838. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76839. <stringProp name="Argument.value">true</stringProp>
  76840. <stringProp name="Argument.metadata">=</stringProp>
  76841. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76842. <stringProp name="Argument.name">isAjax</stringProp>
  76843. <stringProp name="Argument.desc">true</stringProp>
  76844. </elementProp>
  76845. </collectionProp>
  76846. </elementProp>
  76847. <stringProp name="HTTPSampler.domain"/>
  76848. <stringProp name="HTTPSampler.port"/>
  76849. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76850. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76851. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76852. <stringProp name="HTTPSampler.contentEncoding"/>
  76853. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  76854. <stringProp name="HTTPSampler.method">GET</stringProp>
  76855. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76856. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76857. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76858. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76859. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76860. <stringProp name="HTTPSampler.embedded_url_re"/>
  76861. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  76862. <hashTree>
  76863. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  76864. <collectionProp name="Asserion.test_strings">
  76865. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  76866. </collectionProp>
  76867. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76868. <boolProp name="Assertion.assume_success">false</boolProp>
  76869. <intProp name="Assertion.test_type">2</intProp>
  76870. </ResponseAssertion>
  76871. <hashTree/>
  76872. </hashTree>
  76873. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  76874. <stringProp name="CounterConfig.start">1</stringProp>
  76875. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  76876. <stringProp name="CounterConfig.incr">1</stringProp>
  76877. <stringProp name="CounterConfig.name">page_number</stringProp>
  76878. <stringProp name="CounterConfig.format"/>
  76879. <boolProp name="CounterConfig.per_user">true</boolProp>
  76880. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  76881. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  76882. <hashTree/>
  76883. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  76884. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  76885. </TestFragmentController>
  76886. <hashTree>
  76887. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  76888. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  76889. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  76890. <boolProp name="ForeachController.useSeparator">true</boolProp>
  76891. <stringProp name="ForeachController.startIndex">0</stringProp>
  76892. <stringProp name="ForeachController.endIndex">3</stringProp>
  76893. </ForeachController>
  76894. <hashTree>
  76895. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  76896. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  76897. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  76898. <boolProp name="ForeachController.useSeparator">true</boolProp>
  76899. <stringProp name="ForeachController.startIndex">0</stringProp>
  76900. <stringProp name="ForeachController.endIndex">2</stringProp>
  76901. </ForeachController>
  76902. <hashTree>
  76903. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  76904. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  76905. <collectionProp name="Arguments.arguments">
  76906. <elementProp name="namespace" elementType="HTTPArgument">
  76907. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76908. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  76909. <stringProp name="Argument.metadata">=</stringProp>
  76910. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76911. <stringProp name="Argument.name">namespace</stringProp>
  76912. <stringProp name="Argument.desc">false</stringProp>
  76913. </elementProp>
  76914. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  76915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76916. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  76917. <stringProp name="Argument.metadata">=</stringProp>
  76918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76919. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  76920. <stringProp name="Argument.desc">false</stringProp>
  76921. </elementProp>
  76922. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  76923. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76924. <stringProp name="Argument.value">true</stringProp>
  76925. <stringProp name="Argument.metadata">=</stringProp>
  76926. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76927. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  76928. <stringProp name="Argument.desc">false</stringProp>
  76929. </elementProp>
  76930. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  76931. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76932. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  76933. <stringProp name="Argument.metadata">=</stringProp>
  76934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76935. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  76936. <stringProp name="Argument.desc">false</stringProp>
  76937. </elementProp>
  76938. <elementProp name="paging[current]" elementType="HTTPArgument">
  76939. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76940. <stringProp name="Argument.value">${page_number}</stringProp>
  76941. <stringProp name="Argument.metadata">=</stringProp>
  76942. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76943. <stringProp name="Argument.name">paging[current]</stringProp>
  76944. <stringProp name="Argument.desc">false</stringProp>
  76945. </elementProp>
  76946. <elementProp name="sorting[field]" elementType="HTTPArgument">
  76947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76948. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  76949. <stringProp name="Argument.metadata">=</stringProp>
  76950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76951. <stringProp name="Argument.name">sorting[field]</stringProp>
  76952. <stringProp name="Argument.desc">false</stringProp>
  76953. </elementProp>
  76954. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  76955. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76956. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  76957. <stringProp name="Argument.metadata">=</stringProp>
  76958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76959. <stringProp name="Argument.name">sorting[direction]</stringProp>
  76960. <stringProp name="Argument.desc">false</stringProp>
  76961. </elementProp>
  76962. <elementProp name="isAjax" elementType="HTTPArgument">
  76963. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  76964. <stringProp name="Argument.value">true</stringProp>
  76965. <stringProp name="Argument.metadata">=</stringProp>
  76966. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  76967. <stringProp name="Argument.name">isAjax</stringProp>
  76968. <stringProp name="Argument.desc">false</stringProp>
  76969. </elementProp>
  76970. </collectionProp>
  76971. </elementProp>
  76972. <stringProp name="HTTPSampler.domain"/>
  76973. <stringProp name="HTTPSampler.port"/>
  76974. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  76975. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  76976. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  76977. <stringProp name="HTTPSampler.contentEncoding"/>
  76978. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  76979. <stringProp name="HTTPSampler.method">GET</stringProp>
  76980. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  76981. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  76982. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  76983. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  76984. <boolProp name="HTTPSampler.monitor">false</boolProp>
  76985. <stringProp name="HTTPSampler.embedded_url_re"/>
  76986. </HTTPSamplerProxy>
  76987. <hashTree>
  76988. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  76989. <collectionProp name="Asserion.test_strings">
  76990. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  76991. </collectionProp>
  76992. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  76993. <boolProp name="Assertion.assume_success">false</boolProp>
  76994. <intProp name="Assertion.test_type">2</intProp>
  76995. </ResponseAssertion>
  76996. <hashTree/>
  76997. </hashTree>
  76998. </hashTree>
  76999. </hashTree>
  77000. </hashTree>
  77001. </hashTree>
  77002. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  77003. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77004. <collectionProp name="Arguments.arguments"/>
  77005. </elementProp>
  77006. <stringProp name="HTTPSampler.domain"/>
  77007. <stringProp name="HTTPSampler.port"/>
  77008. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77009. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77010. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77011. <stringProp name="HTTPSampler.contentEncoding"/>
  77012. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  77013. <stringProp name="HTTPSampler.method">GET</stringProp>
  77014. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77015. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77016. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77017. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77018. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77019. <stringProp name="HTTPSampler.embedded_url_re"/>
  77020. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  77021. <hashTree>
  77022. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  77023. <boolProp name="resetInterpreter">false</boolProp>
  77024. <stringProp name="parameters"/>
  77025. <stringProp name="filename"/>
  77026. <stringProp name="script">
  77027. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  77028. if (adminUsersDistribution == 1) {
  77029. adminUserList = props.get("adminUserList");
  77030. adminUserList.add(vars.get("admin_user"));
  77031. }
  77032. </stringProp>
  77033. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  77034. <hashTree/>
  77035. </hashTree>
  77036. </hashTree>
  77037. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Create Order" enabled="true">
  77038. <intProp name="ThroughputController.style">1</intProp>
  77039. <boolProp name="ThroughputController.perThread">false</boolProp>
  77040. <intProp name="ThroughputController.maxThroughput">1</intProp>
  77041. <stringProp name="ThroughputController.percentThroughput">${cAdminCreateOrderPercentage}</stringProp>
  77042. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  77043. <hashTree>
  77044. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  77045. <stringProp name="script">
  77046. var tmpLabel = vars.get("testLabel")
  77047. if (tmpLabel) {
  77048. var testLabel = " (" + tmpLabel + ")"
  77049. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  77050. if (sampler.getName().indexOf(testLabel) == -1) {
  77051. sampler.setName(sampler.getName() + testLabel);
  77052. }
  77053. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  77054. sampler.setName("SetUp - " + sampler.getName());
  77055. }
  77056. } else {
  77057. testLabel = ""
  77058. }
  77059. </stringProp>
  77060. <stringProp name="scriptLanguage">javascript</stringProp>
  77061. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  77062. <hashTree/>
  77063. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  77064. <stringProp name="BeanShellSampler.query">
  77065. vars.put("testLabel", "[GraphQL C] Admin Create Order");
  77066. </stringProp>
  77067. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  77068. </BeanShellSampler>
  77069. <hashTree/>
  77070. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  77071. <stringProp name="script">
  77072. function getFormKeyFromResponse()
  77073. {
  77074. var url = prev.getUrlAsString(),
  77075. responseCode = prev.getResponseCode(),
  77076. formKey = null;
  77077. searchPattern = /var FORM_KEY = '(.+)'/;
  77078. if (responseCode == "200" &amp;&amp; url) {
  77079. response = prev.getResponseDataAsString();
  77080. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  77081. }
  77082. return formKey;
  77083. }
  77084. formKey = vars.get("form_key_storage");
  77085. currentFormKey = getFormKeyFromResponse();
  77086. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  77087. vars.put("form_key_storage", currentFormKey);
  77088. }
  77089. </stringProp>
  77090. <stringProp name="scriptLanguage">javascript</stringProp>
  77091. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  77092. <hashTree/>
  77093. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  77094. <stringProp name="script">
  77095. formKey = vars.get("form_key_storage");
  77096. if (formKey
  77097. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  77098. &amp;&amp; sampler.getMethod() == "POST")
  77099. {
  77100. arguments = sampler.getArguments();
  77101. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  77102. {
  77103. argument = arguments.getArgument(i);
  77104. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  77105. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  77106. argument.setValue(formKey);
  77107. }
  77108. }
  77109. }
  77110. </stringProp>
  77111. <stringProp name="scriptLanguage">javascript</stringProp>
  77112. </JSR223PreProcessor>
  77113. <hashTree/>
  77114. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  77115. <collectionProp name="CookieManager.cookies"/>
  77116. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  77117. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  77118. <hashTree/>
  77119. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  77120. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  77121. </GenericController>
  77122. <hashTree>
  77123. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  77124. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  77125. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  77126. <hashTree>
  77127. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  77128. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  77129. <stringProp name="BeanShellSampler.query">
  77130. adminUser = "none";
  77131. adminUserList = props.get("adminUserList");
  77132. adminUserListIterator = props.get("adminUserListIterator");
  77133. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  77134. if (adminUsersDistribution == 1) {
  77135. adminUser = adminUserList.poll();
  77136. } else {
  77137. if (!adminUserListIterator.hasNext()) {
  77138. adminUserListIterator = adminUserList.descendingIterator();
  77139. }
  77140. adminUser = adminUserListIterator.next();
  77141. }
  77142. if (adminUser == "none") {
  77143. SampleResult.setResponseMessage("adminUser list is empty");
  77144. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  77145. IsSuccess=false;
  77146. SampleResult.setSuccessful(false);
  77147. SampleResult.setStopThread(true);
  77148. }
  77149. vars.put("admin_user", adminUser);
  77150. </stringProp>
  77151. <stringProp name="BeanShellSampler.filename"/>
  77152. <stringProp name="BeanShellSampler.parameters"/>
  77153. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  77154. </BeanShellSampler>
  77155. <hashTree/>
  77156. </hashTree>
  77157. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  77158. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77159. <collectionProp name="Arguments.arguments"/>
  77160. </elementProp>
  77161. <stringProp name="HTTPSampler.domain"/>
  77162. <stringProp name="HTTPSampler.port"/>
  77163. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77164. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77165. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77166. <stringProp name="HTTPSampler.contentEncoding"/>
  77167. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  77168. <stringProp name="HTTPSampler.method">GET</stringProp>
  77169. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77170. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77171. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77172. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77173. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77174. <stringProp name="HTTPSampler.embedded_url_re"/>
  77175. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  77176. <hashTree>
  77177. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  77178. <collectionProp name="Asserion.test_strings">
  77179. <stringProp name="-1397214398">Welcome</stringProp>
  77180. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  77181. </collectionProp>
  77182. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  77183. <boolProp name="Assertion.assume_success">false</boolProp>
  77184. <intProp name="Assertion.test_type">2</intProp>
  77185. </ResponseAssertion>
  77186. <hashTree/>
  77187. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  77188. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  77189. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  77190. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  77191. <stringProp name="RegexExtractor.template">$1$</stringProp>
  77192. <stringProp name="RegexExtractor.default"/>
  77193. <stringProp name="RegexExtractor.match_number">1</stringProp>
  77194. </RegexExtractor>
  77195. <hashTree/>
  77196. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  77197. <collectionProp name="Asserion.test_strings">
  77198. <stringProp name="2845929">^.+$</stringProp>
  77199. </collectionProp>
  77200. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  77201. <boolProp name="Assertion.assume_success">false</boolProp>
  77202. <intProp name="Assertion.test_type">1</intProp>
  77203. <stringProp name="Assertion.scope">variable</stringProp>
  77204. <stringProp name="Scope.variable">admin_form_key</stringProp>
  77205. </ResponseAssertion>
  77206. <hashTree/>
  77207. </hashTree>
  77208. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  77209. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77210. <collectionProp name="Arguments.arguments">
  77211. <elementProp name="dummy" elementType="HTTPArgument">
  77212. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77213. <stringProp name="Argument.value"/>
  77214. <stringProp name="Argument.metadata">=</stringProp>
  77215. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77216. <stringProp name="Argument.name">dummy</stringProp>
  77217. </elementProp>
  77218. <elementProp name="form_key" elementType="HTTPArgument">
  77219. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77220. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  77221. <stringProp name="Argument.metadata">=</stringProp>
  77222. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77223. <stringProp name="Argument.name">form_key</stringProp>
  77224. </elementProp>
  77225. <elementProp name="login[password]" elementType="HTTPArgument">
  77226. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77227. <stringProp name="Argument.value">${admin_password}</stringProp>
  77228. <stringProp name="Argument.metadata">=</stringProp>
  77229. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77230. <stringProp name="Argument.name">login[password]</stringProp>
  77231. </elementProp>
  77232. <elementProp name="login[username]" elementType="HTTPArgument">
  77233. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77234. <stringProp name="Argument.value">${admin_user}</stringProp>
  77235. <stringProp name="Argument.metadata">=</stringProp>
  77236. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77237. <stringProp name="Argument.name">login[username]</stringProp>
  77238. </elementProp>
  77239. </collectionProp>
  77240. </elementProp>
  77241. <stringProp name="HTTPSampler.domain"/>
  77242. <stringProp name="HTTPSampler.port"/>
  77243. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77244. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77245. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77246. <stringProp name="HTTPSampler.contentEncoding"/>
  77247. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  77248. <stringProp name="HTTPSampler.method">POST</stringProp>
  77249. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77250. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77251. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77252. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77253. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  77254. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77255. <stringProp name="HTTPSampler.embedded_url_re"/>
  77256. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  77257. </HTTPSamplerProxy>
  77258. <hashTree>
  77259. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  77260. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  77261. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  77262. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  77263. <stringProp name="RegexExtractor.template">$1$</stringProp>
  77264. <stringProp name="RegexExtractor.default"/>
  77265. <stringProp name="RegexExtractor.match_number">1</stringProp>
  77266. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  77267. <hashTree/>
  77268. </hashTree>
  77269. </hashTree>
  77270. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  77271. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  77272. </GenericController>
  77273. <hashTree>
  77274. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  77275. <stringProp name="scriptLanguage">javascript</stringProp>
  77276. <stringProp name="parameters"/>
  77277. <stringProp name="filename"/>
  77278. <stringProp name="cacheKey"/>
  77279. <stringProp name="script">
  77280. vars.put("alabama_region_id", props.get("alabama_region_id"));
  77281. vars.put("california_region_id", props.get("california_region_id"));
  77282. </stringProp>
  77283. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  77284. <hashTree/>
  77285. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Order" enabled="true"/>
  77286. <hashTree>
  77287. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  77288. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_order/admin_create_order.jmx</stringProp>
  77289. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  77290. import java.util.Random;
  77291. Random random = new Random();
  77292. if (${seedForRandom} &gt; 0) {
  77293. random.setSeed(${seedForRandom});
  77294. }
  77295. number = random.nextInt(props.get("configurable_products_list").size());
  77296. configurableList = props.get("configurable_products_list").get(number);
  77297. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  77298. vars.put("configurable_product_1_name", configurableList.get("title"));
  77299. vars.put("configurable_product_1_id", configurableList.get("id"));
  77300. vars.put("configurable_product_1_sku", configurableList.get("sku"));
  77301. vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
  77302. vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
  77303. number = random.nextInt(props.get("simple_products_list").size());
  77304. simpleList = props.get("simple_products_list").get(number);
  77305. vars.put("simple_product_1_url_key", simpleList.get("url_key"));
  77306. vars.put("simple_product_1_name", simpleList.get("title"));
  77307. vars.put("simple_product_1_id", simpleList.get("id"));
  77308. number1 = random.nextInt(props.get("configurable_products_list").size());
  77309. do {
  77310. number1 = random.nextInt(props.get("simple_products_list").size());
  77311. } while(number == number1);
  77312. simpleList = props.get("simple_products_list").get(number1);
  77313. vars.put("simple_product_2_url_key", simpleList.get("url_key"));
  77314. vars.put("simple_product_2_name", simpleList.get("title"));
  77315. vars.put("simple_product_2_id", simpleList.get("id"));
  77316. customers_index = 0;
  77317. if (!props.containsKey("customer_ids_index")) {
  77318. props.put("customer_ids_index", customers_index);
  77319. }
  77320. try {
  77321. customers_index = props.get("customer_ids_index");
  77322. customers_list = props.get("customer_ids_list");
  77323. if (customers_index == customers_list.size()) {
  77324. customers_index=0;
  77325. }
  77326. vars.put("customer_id", customers_list.get(customers_index));
  77327. props.put("customer_ids_index", ++customers_index);
  77328. }
  77329. catch (java.lang.Exception e) {
  77330. log.error("Caught Exception in 'Admin Create Order' thread.");
  77331. SampleResult.setStopThread(true);
  77332. }</stringProp>
  77333. <stringProp name="BeanShellSampler.filename"/>
  77334. <stringProp name="BeanShellSampler.parameters"/>
  77335. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  77336. </BeanShellSampler>
  77337. <hashTree/>
  77338. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Start Order" enabled="true">
  77339. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77340. <collectionProp name="Arguments.arguments"/>
  77341. </elementProp>
  77342. <stringProp name="HTTPSampler.domain"/>
  77343. <stringProp name="HTTPSampler.port"/>
  77344. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77345. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77346. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77347. <stringProp name="HTTPSampler.contentEncoding"/>
  77348. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/start/</stringProp>
  77349. <stringProp name="HTTPSampler.method">GET</stringProp>
  77350. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77351. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77352. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77353. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77354. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77355. <stringProp name="HTTPSampler.embedded_url_re"/>
  77356. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  77357. </HTTPSamplerProxy>
  77358. <hashTree/>
  77359. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Configurable Product Options" enabled="true"/>
  77360. <hashTree>
  77361. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  77362. <collectionProp name="HeaderManager.headers">
  77363. <elementProp name="" elementType="Header">
  77364. <stringProp name="Header.name">Content-Type</stringProp>
  77365. <stringProp name="Header.value">application/json</stringProp>
  77366. </elementProp>
  77367. <elementProp name="" elementType="Header">
  77368. <stringProp name="Header.name">Accept</stringProp>
  77369. <stringProp name="Header.value">*/*</stringProp>
  77370. </elementProp>
  77371. </collectionProp>
  77372. </HeaderManager>
  77373. <hashTree/>
  77374. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  77375. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  77376. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  77377. <collectionProp name="Arguments.arguments">
  77378. <elementProp name="" elementType="HTTPArgument">
  77379. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  77380. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  77381. <stringProp name="Argument.metadata">=</stringProp>
  77382. </elementProp>
  77383. </collectionProp>
  77384. </elementProp>
  77385. <stringProp name="HTTPSampler.domain"/>
  77386. <stringProp name="HTTPSampler.port"/>
  77387. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77388. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77389. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77390. <stringProp name="HTTPSampler.contentEncoding"/>
  77391. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  77392. <stringProp name="HTTPSampler.method">POST</stringProp>
  77393. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77394. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77395. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77396. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77397. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77398. <stringProp name="HTTPSampler.embedded_url_re"/>
  77399. </HTTPSamplerProxy>
  77400. <hashTree>
  77401. <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">
  77402. <stringProp name="VAR">admin_token</stringProp>
  77403. <stringProp name="JSONPATH">$</stringProp>
  77404. <stringProp name="DEFAULT"/>
  77405. <stringProp name="VARIABLE"/>
  77406. <stringProp name="SUBJECT">BODY</stringProp>
  77407. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  77408. <hashTree/>
  77409. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  77410. <collectionProp name="Asserion.test_strings">
  77411. <stringProp name="484395188">^.{10,}$</stringProp>
  77412. </collectionProp>
  77413. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  77414. <boolProp name="Assertion.assume_success">false</boolProp>
  77415. <intProp name="Assertion.test_type">1</intProp>
  77416. <stringProp name="Assertion.scope">variable</stringProp>
  77417. <stringProp name="Scope.variable">admin_token</stringProp>
  77418. </ResponseAssertion>
  77419. <hashTree/>
  77420. </hashTree>
  77421. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  77422. <collectionProp name="HeaderManager.headers">
  77423. <elementProp name="" elementType="Header">
  77424. <stringProp name="Header.name">Authorization</stringProp>
  77425. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  77426. </elementProp>
  77427. </collectionProp>
  77428. </HeaderManager>
  77429. <hashTree/>
  77430. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Configurable Product Options" enabled="true">
  77431. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77432. <collectionProp name="Arguments.arguments"/>
  77433. </elementProp>
  77434. <stringProp name="HTTPSampler.domain"/>
  77435. <stringProp name="HTTPSampler.port"/>
  77436. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77437. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77438. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77439. <stringProp name="HTTPSampler.contentEncoding"/>
  77440. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all</stringProp>
  77441. <stringProp name="HTTPSampler.method">GET</stringProp>
  77442. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77443. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77444. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77445. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77446. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77447. <stringProp name="HTTPSampler.embedded_url_re"/>
  77448. </HTTPSamplerProxy>
  77449. <hashTree>
  77450. <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">
  77451. <stringProp name="VAR">attribute_ids</stringProp>
  77452. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  77453. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  77454. <stringProp name="VARIABLE"/>
  77455. <stringProp name="SUBJECT">BODY</stringProp>
  77456. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  77457. <hashTree/>
  77458. <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">
  77459. <stringProp name="VAR">option_values</stringProp>
  77460. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  77461. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  77462. <stringProp name="VARIABLE"/>
  77463. <stringProp name="SUBJECT">BODY</stringProp>
  77464. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  77465. <hashTree/>
  77466. </hashTree>
  77467. </hashTree>
  77468. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Products" enabled="true">
  77469. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77470. <collectionProp name="Arguments.arguments">
  77471. <elementProp name="item[${simple_product_1_id}][qty]" elementType="HTTPArgument">
  77472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77473. <stringProp name="Argument.name">item[${simple_product_1_id}][qty]</stringProp>
  77474. <stringProp name="Argument.value">1</stringProp>
  77475. <stringProp name="Argument.metadata">=</stringProp>
  77476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77477. </elementProp>
  77478. <elementProp name="item[${simple_product_2_id}][qty]" elementType="HTTPArgument">
  77479. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77480. <stringProp name="Argument.name">item[${simple_product_2_id}][qty]</stringProp>
  77481. <stringProp name="Argument.value">1</stringProp>
  77482. <stringProp name="Argument.metadata">=</stringProp>
  77483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77484. </elementProp>
  77485. <elementProp name="item[${configurable_product_1_id}][qty]" elementType="HTTPArgument">
  77486. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77487. <stringProp name="Argument.name">item[${configurable_product_1_id}][qty]</stringProp>
  77488. <stringProp name="Argument.value">1</stringProp>
  77489. <stringProp name="Argument.metadata">=</stringProp>
  77490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77491. </elementProp>
  77492. <elementProp name="customer_id" elementType="HTTPArgument">
  77493. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77494. <stringProp name="Argument.name">customer_id</stringProp>
  77495. <stringProp name="Argument.value">${customer_id}</stringProp>
  77496. <stringProp name="Argument.metadata">=</stringProp>
  77497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77498. </elementProp>
  77499. <elementProp name="store_id" elementType="HTTPArgument">
  77500. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77501. <stringProp name="Argument.name">store_id</stringProp>
  77502. <stringProp name="Argument.value">1</stringProp>
  77503. <stringProp name="Argument.metadata">=</stringProp>
  77504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77505. </elementProp>
  77506. <elementProp name="currency_id" elementType="HTTPArgument">
  77507. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77508. <stringProp name="Argument.name">currency_id</stringProp>
  77509. <stringProp name="Argument.value"/>
  77510. <stringProp name="Argument.metadata">=</stringProp>
  77511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77512. </elementProp>
  77513. <elementProp name="form_key" elementType="HTTPArgument">
  77514. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77515. <stringProp name="Argument.name">form_key</stringProp>
  77516. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  77517. <stringProp name="Argument.metadata">=</stringProp>
  77518. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77519. </elementProp>
  77520. <elementProp name="payment[method]" elementType="HTTPArgument">
  77521. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77522. <stringProp name="Argument.name">payment[method]</stringProp>
  77523. <stringProp name="Argument.value">checkmo</stringProp>
  77524. <stringProp name="Argument.metadata">=</stringProp>
  77525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77526. </elementProp>
  77527. <elementProp name="reset_shipping" elementType="HTTPArgument">
  77528. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77529. <stringProp name="Argument.name">reset_shipping</stringProp>
  77530. <stringProp name="Argument.value">1</stringProp>
  77531. <stringProp name="Argument.metadata">=</stringProp>
  77532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77533. </elementProp>
  77534. <elementProp name="json" elementType="HTTPArgument">
  77535. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77536. <stringProp name="Argument.name">json</stringProp>
  77537. <stringProp name="Argument.value">1</stringProp>
  77538. <stringProp name="Argument.metadata">=</stringProp>
  77539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77540. </elementProp>
  77541. <elementProp name="as_js_varname" elementType="HTTPArgument">
  77542. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77543. <stringProp name="Argument.name">as_js_varname</stringProp>
  77544. <stringProp name="Argument.value">iFrameResponse</stringProp>
  77545. <stringProp name="Argument.metadata">=</stringProp>
  77546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77547. </elementProp>
  77548. <elementProp name="form_key" elementType="HTTPArgument">
  77549. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77550. <stringProp name="Argument.name">form_key</stringProp>
  77551. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  77552. <stringProp name="Argument.metadata">=</stringProp>
  77553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77554. </elementProp>
  77555. </collectionProp>
  77556. </elementProp>
  77557. <stringProp name="HTTPSampler.domain"/>
  77558. <stringProp name="HTTPSampler.port"/>
  77559. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77560. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77561. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77562. <stringProp name="HTTPSampler.contentEncoding"/>
  77563. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true</stringProp>
  77564. <stringProp name="HTTPSampler.method">POST</stringProp>
  77565. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77566. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77567. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77568. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77569. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77570. <stringProp name="HTTPSampler.embedded_url_re"/>
  77571. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  77572. </HTTPSamplerProxy>
  77573. <hashTree>
  77574. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  77575. <boolProp name="resetInterpreter">false</boolProp>
  77576. <stringProp name="parameters"/>
  77577. <stringProp name="filename"/>
  77578. <stringProp name="script">try {
  77579. attribute_ids = vars.get("attribute_ids");
  77580. option_values = vars.get("option_values");
  77581. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  77582. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  77583. attribute_ids_array = attribute_ids.split(",");
  77584. option_values_array = option_values.split(",");
  77585. args = ctx.getCurrentSampler().getArguments();
  77586. it = args.iterator();
  77587. while (it.hasNext()) {
  77588. argument = it.next();
  77589. if (argument.getStringValue().contains("${")) {
  77590. args.removeArgument(argument.getName());
  77591. }
  77592. }
  77593. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  77594. ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]);
  77595. }
  77596. } catch (Exception e) {
  77597. log.error("error???", e);
  77598. }</stringProp>
  77599. </BeanShellPreProcessor>
  77600. <hashTree/>
  77601. </hashTree>
  77602. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Collect Shipping Rates" enabled="true">
  77603. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77604. <collectionProp name="Arguments.arguments">
  77605. <elementProp name="collect_shipping_rates" elementType="HTTPArgument">
  77606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77607. <stringProp name="Argument.name">collect_shipping_rates</stringProp>
  77608. <stringProp name="Argument.value">1</stringProp>
  77609. <stringProp name="Argument.metadata">=</stringProp>
  77610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77611. </elementProp>
  77612. <elementProp name="customer_id" elementType="HTTPArgument">
  77613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77614. <stringProp name="Argument.name">customer_id</stringProp>
  77615. <stringProp name="Argument.value">${customer_id}</stringProp>
  77616. <stringProp name="Argument.metadata">=</stringProp>
  77617. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77618. </elementProp>
  77619. <elementProp name="store_id" elementType="HTTPArgument">
  77620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77621. <stringProp name="Argument.name">store_id</stringProp>
  77622. <stringProp name="Argument.value">1</stringProp>
  77623. <stringProp name="Argument.metadata">=</stringProp>
  77624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77625. </elementProp>
  77626. <elementProp name="currency_id" elementType="HTTPArgument">
  77627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77628. <stringProp name="Argument.name">currency_id</stringProp>
  77629. <stringProp name="Argument.value">false</stringProp>
  77630. <stringProp name="Argument.metadata">=</stringProp>
  77631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77632. </elementProp>
  77633. <elementProp name="form_key" elementType="HTTPArgument">
  77634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77635. <stringProp name="Argument.name">form_key</stringProp>
  77636. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  77637. <stringProp name="Argument.metadata">=</stringProp>
  77638. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77639. </elementProp>
  77640. <elementProp name="payment[method]" elementType="HTTPArgument">
  77641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77642. <stringProp name="Argument.name">payment[method]</stringProp>
  77643. <stringProp name="Argument.value">checkmo</stringProp>
  77644. <stringProp name="Argument.metadata">=</stringProp>
  77645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77646. </elementProp>
  77647. <elementProp name="json" elementType="HTTPArgument">
  77648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77649. <stringProp name="Argument.name">json</stringProp>
  77650. <stringProp name="Argument.value">true</stringProp>
  77651. <stringProp name="Argument.metadata">=</stringProp>
  77652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77653. </elementProp>
  77654. </collectionProp>
  77655. </elementProp>
  77656. <stringProp name="HTTPSampler.domain"/>
  77657. <stringProp name="HTTPSampler.port"/>
  77658. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77659. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77660. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77661. <stringProp name="HTTPSampler.contentEncoding"/>
  77662. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true</stringProp>
  77663. <stringProp name="HTTPSampler.method">POST</stringProp>
  77664. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77665. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77666. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77667. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77668. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77669. <stringProp name="HTTPSampler.embedded_url_re"/>
  77670. </HTTPSamplerProxy>
  77671. <hashTree>
  77672. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipping Method" enabled="true">
  77673. <collectionProp name="Asserion.test_strings">
  77674. <stringProp name="-1987784558">shipping_method</stringProp>
  77675. <stringProp name="818779431">Flat Rate</stringProp>
  77676. </collectionProp>
  77677. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  77678. <boolProp name="Assertion.assume_success">false</boolProp>
  77679. <intProp name="Assertion.test_type">2</intProp>
  77680. </ResponseAssertion>
  77681. <hashTree/>
  77682. </hashTree>
  77683. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filled Order Page" enabled="true">
  77684. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77685. <collectionProp name="Arguments.arguments"/>
  77686. </elementProp>
  77687. <stringProp name="HTTPSampler.domain"/>
  77688. <stringProp name="HTTPSampler.port"/>
  77689. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  77690. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  77691. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  77692. <stringProp name="HTTPSampler.contentEncoding"/>
  77693. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/index/</stringProp>
  77694. <stringProp name="HTTPSampler.method">GET</stringProp>
  77695. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  77696. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  77697. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  77698. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  77699. <boolProp name="HTTPSampler.monitor">false</boolProp>
  77700. <stringProp name="HTTPSampler.embedded_url_re"/>
  77701. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  77702. </HTTPSamplerProxy>
  77703. <hashTree>
  77704. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Filled Order Page" enabled="true">
  77705. <collectionProp name="Asserion.test_strings">
  77706. <stringProp name="-37823069">Select from existing customer addresses</stringProp>
  77707. <stringProp name="-13185722">Submit Order</stringProp>
  77708. <stringProp name="-209419315">Items Ordered</stringProp>
  77709. </collectionProp>
  77710. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  77711. <boolProp name="Assertion.assume_success">false</boolProp>
  77712. <intProp name="Assertion.test_type">2</intProp>
  77713. </ResponseAssertion>
  77714. <hashTree/>
  77715. </hashTree>
  77716. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Order" enabled="true">
  77717. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  77718. <collectionProp name="Arguments.arguments">
  77719. <elementProp name="form_key" elementType="HTTPArgument">
  77720. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77721. <stringProp name="Argument.name">form_key</stringProp>
  77722. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  77723. <stringProp name="Argument.metadata">=</stringProp>
  77724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77725. </elementProp>
  77726. <elementProp name="limit" elementType="HTTPArgument">
  77727. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77728. <stringProp name="Argument.name">limit</stringProp>
  77729. <stringProp name="Argument.value">20</stringProp>
  77730. <stringProp name="Argument.metadata">=</stringProp>
  77731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77732. </elementProp>
  77733. <elementProp name="entity_id" elementType="HTTPArgument">
  77734. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77735. <stringProp name="Argument.name">entity_id</stringProp>
  77736. <stringProp name="Argument.value"/>
  77737. <stringProp name="Argument.metadata">=</stringProp>
  77738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77739. </elementProp>
  77740. <elementProp name="name" elementType="HTTPArgument">
  77741. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77742. <stringProp name="Argument.name">name</stringProp>
  77743. <stringProp name="Argument.value"/>
  77744. <stringProp name="Argument.metadata">=</stringProp>
  77745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77746. </elementProp>
  77747. <elementProp name="email" elementType="HTTPArgument">
  77748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77749. <stringProp name="Argument.name">email</stringProp>
  77750. <stringProp name="Argument.value"/>
  77751. <stringProp name="Argument.metadata">=</stringProp>
  77752. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77753. </elementProp>
  77754. <elementProp name="Telephone" elementType="HTTPArgument">
  77755. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77756. <stringProp name="Argument.name">Telephone</stringProp>
  77757. <stringProp name="Argument.value"/>
  77758. <stringProp name="Argument.metadata">=</stringProp>
  77759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77760. </elementProp>
  77761. <elementProp name="billing_postcode" elementType="HTTPArgument">
  77762. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77763. <stringProp name="Argument.name">billing_postcode</stringProp>
  77764. <stringProp name="Argument.value"/>
  77765. <stringProp name="Argument.metadata">=</stringProp>
  77766. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77767. </elementProp>
  77768. <elementProp name="billing_country_id" elementType="HTTPArgument">
  77769. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77770. <stringProp name="Argument.name">billing_country_id</stringProp>
  77771. <stringProp name="Argument.value"/>
  77772. <stringProp name="Argument.metadata">=</stringProp>
  77773. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77774. </elementProp>
  77775. <elementProp name="billing_regione" elementType="HTTPArgument">
  77776. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77777. <stringProp name="Argument.name">billing_regione</stringProp>
  77778. <stringProp name="Argument.value"/>
  77779. <stringProp name="Argument.metadata">=</stringProp>
  77780. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77781. </elementProp>
  77782. <elementProp name="store_name" elementType="HTTPArgument">
  77783. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77784. <stringProp name="Argument.name">store_name</stringProp>
  77785. <stringProp name="Argument.value"/>
  77786. <stringProp name="Argument.metadata">=</stringProp>
  77787. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77788. </elementProp>
  77789. <elementProp name="page" elementType="HTTPArgument">
  77790. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77791. <stringProp name="Argument.name">page</stringProp>
  77792. <stringProp name="Argument.value">1</stringProp>
  77793. <stringProp name="Argument.metadata">=</stringProp>
  77794. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77795. </elementProp>
  77796. <elementProp name="order[currency]" elementType="HTTPArgument">
  77797. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77798. <stringProp name="Argument.name">order[currency]</stringProp>
  77799. <stringProp name="Argument.value">USD</stringProp>
  77800. <stringProp name="Argument.metadata">=</stringProp>
  77801. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77802. </elementProp>
  77803. <elementProp name="sku" elementType="HTTPArgument">
  77804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77805. <stringProp name="Argument.name">sku</stringProp>
  77806. <stringProp name="Argument.value"/>
  77807. <stringProp name="Argument.metadata">=</stringProp>
  77808. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77809. </elementProp>
  77810. <elementProp name="qty" elementType="HTTPArgument">
  77811. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77812. <stringProp name="Argument.name">qty</stringProp>
  77813. <stringProp name="Argument.value"/>
  77814. <stringProp name="Argument.metadata">=</stringProp>
  77815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77816. </elementProp>
  77817. <elementProp name="limit" elementType="HTTPArgument">
  77818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77819. <stringProp name="Argument.name">limit</stringProp>
  77820. <stringProp name="Argument.value">20</stringProp>
  77821. <stringProp name="Argument.metadata">=</stringProp>
  77822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77823. </elementProp>
  77824. <elementProp name="entity_id" elementType="HTTPArgument">
  77825. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77826. <stringProp name="Argument.name">entity_id</stringProp>
  77827. <stringProp name="Argument.value"/>
  77828. <stringProp name="Argument.metadata">=</stringProp>
  77829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77830. </elementProp>
  77831. <elementProp name="name" elementType="HTTPArgument">
  77832. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77833. <stringProp name="Argument.name">name</stringProp>
  77834. <stringProp name="Argument.value"/>
  77835. <stringProp name="Argument.metadata">=</stringProp>
  77836. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77837. </elementProp>
  77838. <elementProp name="sku" elementType="HTTPArgument">
  77839. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77840. <stringProp name="Argument.name">sku</stringProp>
  77841. <stringProp name="Argument.value"/>
  77842. <stringProp name="Argument.metadata">=</stringProp>
  77843. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77844. </elementProp>
  77845. <elementProp name="price[from]" elementType="HTTPArgument">
  77846. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77847. <stringProp name="Argument.name">price[from]</stringProp>
  77848. <stringProp name="Argument.value"/>
  77849. <stringProp name="Argument.metadata">=</stringProp>
  77850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77851. </elementProp>
  77852. <elementProp name="price[to]" elementType="HTTPArgument">
  77853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77854. <stringProp name="Argument.name">price[to]</stringProp>
  77855. <stringProp name="Argument.value"/>
  77856. <stringProp name="Argument.metadata">=</stringProp>
  77857. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77858. </elementProp>
  77859. <elementProp name="in_products" elementType="HTTPArgument">
  77860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77861. <stringProp name="Argument.name">in_products</stringProp>
  77862. <stringProp name="Argument.value"/>
  77863. <stringProp name="Argument.metadata">=</stringProp>
  77864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77865. </elementProp>
  77866. <elementProp name="page" elementType="HTTPArgument">
  77867. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77868. <stringProp name="Argument.name">page</stringProp>
  77869. <stringProp name="Argument.value">1</stringProp>
  77870. <stringProp name="Argument.metadata">=</stringProp>
  77871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77872. </elementProp>
  77873. <elementProp name="coupon_code" elementType="HTTPArgument">
  77874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77875. <stringProp name="Argument.name">coupon_code</stringProp>
  77876. <stringProp name="Argument.value"/>
  77877. <stringProp name="Argument.metadata">=</stringProp>
  77878. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77879. </elementProp>
  77880. <elementProp name="order[account][group_id]" elementType="HTTPArgument">
  77881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77882. <stringProp name="Argument.name">order[account][group_id]</stringProp>
  77883. <stringProp name="Argument.value">1</stringProp>
  77884. <stringProp name="Argument.metadata">=</stringProp>
  77885. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77886. </elementProp>
  77887. <elementProp name="order[account][email]" elementType="HTTPArgument">
  77888. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77889. <stringProp name="Argument.name">order[account][email]</stringProp>
  77890. <stringProp name="Argument.value">user_${customer_id}@example.com</stringProp>
  77891. <stringProp name="Argument.metadata">=</stringProp>
  77892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77893. </elementProp>
  77894. <elementProp name="order[billing_address][customer_address_id]" elementType="HTTPArgument">
  77895. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77896. <stringProp name="Argument.name">order[billing_address][customer_address_id]</stringProp>
  77897. <stringProp name="Argument.value"/>
  77898. <stringProp name="Argument.metadata">=</stringProp>
  77899. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77900. </elementProp>
  77901. <elementProp name="order[billing_address][prefix]" elementType="HTTPArgument">
  77902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77903. <stringProp name="Argument.name">order[billing_address][prefix]</stringProp>
  77904. <stringProp name="Argument.value"/>
  77905. <stringProp name="Argument.metadata">=</stringProp>
  77906. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77907. </elementProp>
  77908. <elementProp name="order[billing_address][firstname]" elementType="HTTPArgument">
  77909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77910. <stringProp name="Argument.name">order[billing_address][firstname]</stringProp>
  77911. <stringProp name="Argument.value">Anthony</stringProp>
  77912. <stringProp name="Argument.metadata">=</stringProp>
  77913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77914. </elementProp>
  77915. <elementProp name="order[billing_address][middlename]" elementType="HTTPArgument">
  77916. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77917. <stringProp name="Argument.name">order[billing_address][middlename]</stringProp>
  77918. <stringProp name="Argument.value"/>
  77919. <stringProp name="Argument.metadata">=</stringProp>
  77920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77921. </elementProp>
  77922. <elementProp name="order[billing_address][lastname]" elementType="HTTPArgument">
  77923. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77924. <stringProp name="Argument.name">order[billing_address][lastname]</stringProp>
  77925. <stringProp name="Argument.value">Nealy</stringProp>
  77926. <stringProp name="Argument.metadata">=</stringProp>
  77927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77928. </elementProp>
  77929. <elementProp name="order[billing_address][suffix]" elementType="HTTPArgument">
  77930. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77931. <stringProp name="Argument.name">order[billing_address][suffix]</stringProp>
  77932. <stringProp name="Argument.value"/>
  77933. <stringProp name="Argument.metadata">=</stringProp>
  77934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77935. </elementProp>
  77936. <elementProp name="order[billing_address][company]" elementType="HTTPArgument">
  77937. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77938. <stringProp name="Argument.name">order[billing_address][company]</stringProp>
  77939. <stringProp name="Argument.value"/>
  77940. <stringProp name="Argument.metadata">=</stringProp>
  77941. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77942. </elementProp>
  77943. <elementProp name="order[billing_address][street][0]" elementType="HTTPArgument">
  77944. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77945. <stringProp name="Argument.name">order[billing_address][street][0]</stringProp>
  77946. <stringProp name="Argument.value">123 Freedom Blvd. #123</stringProp>
  77947. <stringProp name="Argument.metadata">=</stringProp>
  77948. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77949. </elementProp>
  77950. <elementProp name="order[billing_address][street][1]" elementType="HTTPArgument">
  77951. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77952. <stringProp name="Argument.name">order[billing_address][street][1]</stringProp>
  77953. <stringProp name="Argument.value"/>
  77954. <stringProp name="Argument.metadata">=</stringProp>
  77955. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77956. </elementProp>
  77957. <elementProp name="order[billing_address][city]" elementType="HTTPArgument">
  77958. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77959. <stringProp name="Argument.name">order[billing_address][city]</stringProp>
  77960. <stringProp name="Argument.value">Fayetteville</stringProp>
  77961. <stringProp name="Argument.metadata">=</stringProp>
  77962. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77963. </elementProp>
  77964. <elementProp name="order[billing_address][country_id]" elementType="HTTPArgument">
  77965. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77966. <stringProp name="Argument.name">order[billing_address][country_id]</stringProp>
  77967. <stringProp name="Argument.value">US</stringProp>
  77968. <stringProp name="Argument.metadata">=</stringProp>
  77969. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77970. </elementProp>
  77971. <elementProp name="order[billing_address][region]" elementType="HTTPArgument">
  77972. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77973. <stringProp name="Argument.name">order[billing_address][region]</stringProp>
  77974. <stringProp name="Argument.value"/>
  77975. <stringProp name="Argument.metadata">=</stringProp>
  77976. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77977. </elementProp>
  77978. <elementProp name="order[billing_address][region_id]" elementType="HTTPArgument">
  77979. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77980. <stringProp name="Argument.name">order[billing_address][region_id]</stringProp>
  77981. <stringProp name="Argument.value">${alabama_region_id}</stringProp>
  77982. <stringProp name="Argument.metadata">=</stringProp>
  77983. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77984. </elementProp>
  77985. <elementProp name="order[billing_address][postcode]" elementType="HTTPArgument">
  77986. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77987. <stringProp name="Argument.name">order[billing_address][postcode]</stringProp>
  77988. <stringProp name="Argument.value">123123</stringProp>
  77989. <stringProp name="Argument.metadata">=</stringProp>
  77990. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77991. </elementProp>
  77992. <elementProp name="order[billing_address][telephone]" elementType="HTTPArgument">
  77993. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  77994. <stringProp name="Argument.name">order[billing_address][telephone]</stringProp>
  77995. <stringProp name="Argument.value">022-333-4455</stringProp>
  77996. <stringProp name="Argument.metadata">=</stringProp>
  77997. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  77998. </elementProp>
  77999. <elementProp name="order[billing_address][fax]" elementType="HTTPArgument">
  78000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78001. <stringProp name="Argument.name">order[billing_address][fax]</stringProp>
  78002. <stringProp name="Argument.value"/>
  78003. <stringProp name="Argument.metadata">=</stringProp>
  78004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78005. </elementProp>
  78006. <elementProp name="order[billing_address][vat_id]" elementType="HTTPArgument">
  78007. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78008. <stringProp name="Argument.name">order[billing_address][vat_id]</stringProp>
  78009. <stringProp name="Argument.value"/>
  78010. <stringProp name="Argument.metadata">=</stringProp>
  78011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78012. </elementProp>
  78013. <elementProp name="shipping_same_as_billing" elementType="HTTPArgument">
  78014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78015. <stringProp name="Argument.name">shipping_same_as_billing</stringProp>
  78016. <stringProp name="Argument.value">on</stringProp>
  78017. <stringProp name="Argument.metadata">=</stringProp>
  78018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78019. </elementProp>
  78020. <elementProp name="payment[method]" elementType="HTTPArgument">
  78021. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78022. <stringProp name="Argument.name">payment[method]</stringProp>
  78023. <stringProp name="Argument.value">checkmo</stringProp>
  78024. <stringProp name="Argument.metadata">=</stringProp>
  78025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78026. </elementProp>
  78027. <elementProp name="order[shipping_method]" elementType="HTTPArgument">
  78028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78029. <stringProp name="Argument.name">order[shipping_method]</stringProp>
  78030. <stringProp name="Argument.value">flatrate_flatrate</stringProp>
  78031. <stringProp name="Argument.metadata">=</stringProp>
  78032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78033. </elementProp>
  78034. <elementProp name="order[comment][customer_note]" elementType="HTTPArgument">
  78035. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78036. <stringProp name="Argument.name">order[comment][customer_note]</stringProp>
  78037. <stringProp name="Argument.value"/>
  78038. <stringProp name="Argument.metadata">=</stringProp>
  78039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78040. </elementProp>
  78041. <elementProp name="order[comment][customer_note_notify]" elementType="HTTPArgument">
  78042. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78043. <stringProp name="Argument.name">order[comment][customer_note_notify]</stringProp>
  78044. <stringProp name="Argument.value">1</stringProp>
  78045. <stringProp name="Argument.metadata">=</stringProp>
  78046. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78047. </elementProp>
  78048. <elementProp name="order[send_confirmation]" elementType="HTTPArgument">
  78049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78050. <stringProp name="Argument.name">order[send_confirmation]</stringProp>
  78051. <stringProp name="Argument.value">1</stringProp>
  78052. <stringProp name="Argument.metadata">=</stringProp>
  78053. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78054. </elementProp>
  78055. </collectionProp>
  78056. </elementProp>
  78057. <stringProp name="HTTPSampler.domain"/>
  78058. <stringProp name="HTTPSampler.port"/>
  78059. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78060. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78061. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78062. <stringProp name="HTTPSampler.contentEncoding"/>
  78063. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/save/</stringProp>
  78064. <stringProp name="HTTPSampler.method">POST</stringProp>
  78065. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78066. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78067. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78068. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  78069. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78070. <stringProp name="HTTPSampler.embedded_url_re"/>
  78071. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  78072. </HTTPSamplerProxy>
  78073. <hashTree>
  78074. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Id" enabled="true">
  78075. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78076. <stringProp name="RegexExtractor.refname">order_id</stringProp>
  78077. <stringProp name="RegexExtractor.regex">${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/</stringProp>
  78078. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78079. <stringProp name="RegexExtractor.default"/>
  78080. <stringProp name="RegexExtractor.match_number">1</stringProp>
  78081. </RegexExtractor>
  78082. <hashTree/>
  78083. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 1" enabled="true">
  78084. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78085. <stringProp name="RegexExtractor.refname">order_item_1</stringProp>
  78086. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  78087. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78088. <stringProp name="RegexExtractor.default"/>
  78089. <stringProp name="RegexExtractor.match_number">1</stringProp>
  78090. </RegexExtractor>
  78091. <hashTree/>
  78092. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 2" enabled="true">
  78093. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78094. <stringProp name="RegexExtractor.refname">order_item_2</stringProp>
  78095. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  78096. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78097. <stringProp name="RegexExtractor.default"/>
  78098. <stringProp name="RegexExtractor.match_number">2</stringProp>
  78099. </RegexExtractor>
  78100. <hashTree/>
  78101. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 3" enabled="true">
  78102. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78103. <stringProp name="RegexExtractor.refname">order_item_3</stringProp>
  78104. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  78105. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78106. <stringProp name="RegexExtractor.default"/>
  78107. <stringProp name="RegexExtractor.match_number">3</stringProp>
  78108. </RegexExtractor>
  78109. <hashTree/>
  78110. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Id" enabled="true">
  78111. <collectionProp name="Asserion.test_strings">
  78112. <stringProp name="89649215">^\d+$</stringProp>
  78113. </collectionProp>
  78114. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78115. <boolProp name="Assertion.assume_success">false</boolProp>
  78116. <intProp name="Assertion.test_type">1</intProp>
  78117. <stringProp name="Assertion.scope">variable</stringProp>
  78118. <stringProp name="Scope.variable">order_id</stringProp>
  78119. </ResponseAssertion>
  78120. <hashTree/>
  78121. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 1" enabled="true">
  78122. <collectionProp name="Asserion.test_strings">
  78123. <stringProp name="89649215">^\d+$</stringProp>
  78124. </collectionProp>
  78125. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78126. <boolProp name="Assertion.assume_success">false</boolProp>
  78127. <intProp name="Assertion.test_type">1</intProp>
  78128. <stringProp name="Assertion.scope">variable</stringProp>
  78129. <stringProp name="Scope.variable">order_item_1</stringProp>
  78130. </ResponseAssertion>
  78131. <hashTree/>
  78132. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 2" enabled="true">
  78133. <collectionProp name="Asserion.test_strings">
  78134. <stringProp name="89649215">^\d+$</stringProp>
  78135. </collectionProp>
  78136. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78137. <boolProp name="Assertion.assume_success">false</boolProp>
  78138. <intProp name="Assertion.test_type">1</intProp>
  78139. <stringProp name="Assertion.scope">variable</stringProp>
  78140. <stringProp name="Scope.variable">order_item_2</stringProp>
  78141. </ResponseAssertion>
  78142. <hashTree/>
  78143. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 3" enabled="true">
  78144. <collectionProp name="Asserion.test_strings">
  78145. <stringProp name="89649215">^\d+$</stringProp>
  78146. </collectionProp>
  78147. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78148. <boolProp name="Assertion.assume_success">false</boolProp>
  78149. <intProp name="Assertion.test_type">1</intProp>
  78150. <stringProp name="Assertion.scope">variable</stringProp>
  78151. <stringProp name="Scope.variable">order_item_3</stringProp>
  78152. </ResponseAssertion>
  78153. <hashTree/>
  78154. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Created" enabled="true">
  78155. <collectionProp name="Asserion.test_strings">
  78156. <stringProp name="563107624">You created the order.</stringProp>
  78157. </collectionProp>
  78158. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78159. <boolProp name="Assertion.assume_success">false</boolProp>
  78160. <intProp name="Assertion.test_type">2</intProp>
  78161. </ResponseAssertion>
  78162. <hashTree/>
  78163. </hashTree>
  78164. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Invoice" enabled="true">
  78165. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78166. <collectionProp name="Arguments.arguments">
  78167. <elementProp name="form_key" elementType="HTTPArgument">
  78168. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78169. <stringProp name="Argument.name">form_key</stringProp>
  78170. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  78171. <stringProp name="Argument.metadata">=</stringProp>
  78172. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78173. </elementProp>
  78174. <elementProp name="invoice[items][${order_item_1}]" elementType="HTTPArgument">
  78175. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78176. <stringProp name="Argument.name">invoice[items][${order_item_1}]</stringProp>
  78177. <stringProp name="Argument.value">1</stringProp>
  78178. <stringProp name="Argument.metadata">=</stringProp>
  78179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78180. </elementProp>
  78181. <elementProp name="invoice[items][${order_item_2}]" elementType="HTTPArgument">
  78182. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78183. <stringProp name="Argument.name">invoice[items][${order_item_2}]</stringProp>
  78184. <stringProp name="Argument.value">1</stringProp>
  78185. <stringProp name="Argument.metadata">=</stringProp>
  78186. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78187. </elementProp>
  78188. <elementProp name="invoice[items][${order_item_3}]" elementType="HTTPArgument">
  78189. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78190. <stringProp name="Argument.name">invoice[items][${order_item_3}]</stringProp>
  78191. <stringProp name="Argument.value">1</stringProp>
  78192. <stringProp name="Argument.metadata">=</stringProp>
  78193. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78194. </elementProp>
  78195. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  78196. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78197. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  78198. <stringProp name="Argument.value"/>
  78199. <stringProp name="Argument.metadata">=</stringProp>
  78200. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78201. </elementProp>
  78202. </collectionProp>
  78203. </elementProp>
  78204. <stringProp name="HTTPSampler.domain"/>
  78205. <stringProp name="HTTPSampler.port"/>
  78206. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78207. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78208. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78209. <stringProp name="HTTPSampler.contentEncoding"/>
  78210. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  78211. <stringProp name="HTTPSampler.method">POST</stringProp>
  78212. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78213. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78214. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78215. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78216. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78217. <stringProp name="HTTPSampler.embedded_url_re"/>
  78218. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  78219. </HTTPSamplerProxy>
  78220. <hashTree>
  78221. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Invoice Created" enabled="true">
  78222. <collectionProp name="Asserion.test_strings">
  78223. <stringProp name="-1878312078">The invoice has been created.</stringProp>
  78224. </collectionProp>
  78225. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78226. <boolProp name="Assertion.assume_success">false</boolProp>
  78227. <intProp name="Assertion.test_type">2</intProp>
  78228. </ResponseAssertion>
  78229. <hashTree/>
  78230. </hashTree>
  78231. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Shipment" enabled="true">
  78232. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78233. <collectionProp name="Arguments.arguments">
  78234. <elementProp name="form_key" elementType="HTTPArgument">
  78235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78236. <stringProp name="Argument.name">form_key</stringProp>
  78237. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  78238. <stringProp name="Argument.metadata">=</stringProp>
  78239. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78240. </elementProp>
  78241. <elementProp name="shipment[items][${order_item_1}]" elementType="HTTPArgument">
  78242. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78243. <stringProp name="Argument.name">shipment[items][${order_item_1}]</stringProp>
  78244. <stringProp name="Argument.value">1</stringProp>
  78245. <stringProp name="Argument.metadata">=</stringProp>
  78246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78247. </elementProp>
  78248. <elementProp name="shipment[items][${order_item_2}]" elementType="HTTPArgument">
  78249. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78250. <stringProp name="Argument.name">shipment[items][${order_item_2}]</stringProp>
  78251. <stringProp name="Argument.value">1</stringProp>
  78252. <stringProp name="Argument.metadata">=</stringProp>
  78253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78254. </elementProp>
  78255. <elementProp name="shipment[items][${order_item_3}]" elementType="HTTPArgument">
  78256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78257. <stringProp name="Argument.name">shipment[items][${order_item_3}]</stringProp>
  78258. <stringProp name="Argument.value">1</stringProp>
  78259. <stringProp name="Argument.metadata">=</stringProp>
  78260. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78261. </elementProp>
  78262. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  78263. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78264. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  78265. <stringProp name="Argument.value"/>
  78266. <stringProp name="Argument.metadata">=</stringProp>
  78267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78268. </elementProp>
  78269. </collectionProp>
  78270. </elementProp>
  78271. <stringProp name="HTTPSampler.domain"/>
  78272. <stringProp name="HTTPSampler.port"/>
  78273. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78274. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78275. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78276. <stringProp name="HTTPSampler.contentEncoding"/>
  78277. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  78278. <stringProp name="HTTPSampler.method">POST</stringProp>
  78279. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78280. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78281. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78282. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78283. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78284. <stringProp name="HTTPSampler.embedded_url_re"/>
  78285. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  78286. </HTTPSamplerProxy>
  78287. <hashTree>
  78288. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipment Created" enabled="true">
  78289. <collectionProp name="Asserion.test_strings">
  78290. <stringProp name="-348539683">The shipment has been created.</stringProp>
  78291. </collectionProp>
  78292. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78293. <boolProp name="Assertion.assume_success">false</boolProp>
  78294. <intProp name="Assertion.test_type">2</intProp>
  78295. </ResponseAssertion>
  78296. <hashTree/>
  78297. </hashTree>
  78298. </hashTree>
  78299. </hashTree>
  78300. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  78301. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78302. <collectionProp name="Arguments.arguments"/>
  78303. </elementProp>
  78304. <stringProp name="HTTPSampler.domain"/>
  78305. <stringProp name="HTTPSampler.port"/>
  78306. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78307. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78308. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78309. <stringProp name="HTTPSampler.contentEncoding"/>
  78310. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  78311. <stringProp name="HTTPSampler.method">GET</stringProp>
  78312. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78313. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78314. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78315. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78316. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78317. <stringProp name="HTTPSampler.embedded_url_re"/>
  78318. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  78319. <hashTree>
  78320. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  78321. <boolProp name="resetInterpreter">false</boolProp>
  78322. <stringProp name="parameters"/>
  78323. <stringProp name="filename"/>
  78324. <stringProp name="script">
  78325. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  78326. if (adminUsersDistribution == 1) {
  78327. adminUserList = props.get("adminUserList");
  78328. adminUserList.add(vars.get("admin_user"));
  78329. }
  78330. </stringProp>
  78331. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  78332. <hashTree/>
  78333. </hashTree>
  78334. </hashTree>
  78335. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Category Management" enabled="true">
  78336. <intProp name="ThroughputController.style">1</intProp>
  78337. <boolProp name="ThroughputController.perThread">false</boolProp>
  78338. <intProp name="ThroughputController.maxThroughput">1</intProp>
  78339. <stringProp name="ThroughputController.percentThroughput">${cAdminCategoryManagementPercentage}</stringProp>
  78340. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  78341. <hashTree>
  78342. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  78343. <stringProp name="script">
  78344. var tmpLabel = vars.get("testLabel")
  78345. if (tmpLabel) {
  78346. var testLabel = " (" + tmpLabel + ")"
  78347. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  78348. if (sampler.getName().indexOf(testLabel) == -1) {
  78349. sampler.setName(sampler.getName() + testLabel);
  78350. }
  78351. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  78352. sampler.setName("SetUp - " + sampler.getName());
  78353. }
  78354. } else {
  78355. testLabel = ""
  78356. }
  78357. </stringProp>
  78358. <stringProp name="scriptLanguage">javascript</stringProp>
  78359. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  78360. <hashTree/>
  78361. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  78362. <stringProp name="BeanShellSampler.query">
  78363. vars.put("testLabel", "[GraphQL C] Admin Category Management");
  78364. </stringProp>
  78365. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  78366. </BeanShellSampler>
  78367. <hashTree/>
  78368. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  78369. <stringProp name="script">
  78370. function getFormKeyFromResponse()
  78371. {
  78372. var url = prev.getUrlAsString(),
  78373. responseCode = prev.getResponseCode(),
  78374. formKey = null;
  78375. searchPattern = /var FORM_KEY = '(.+)'/;
  78376. if (responseCode == "200" &amp;&amp; url) {
  78377. response = prev.getResponseDataAsString();
  78378. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  78379. }
  78380. return formKey;
  78381. }
  78382. formKey = vars.get("form_key_storage");
  78383. currentFormKey = getFormKeyFromResponse();
  78384. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  78385. vars.put("form_key_storage", currentFormKey);
  78386. }
  78387. </stringProp>
  78388. <stringProp name="scriptLanguage">javascript</stringProp>
  78389. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  78390. <hashTree/>
  78391. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  78392. <stringProp name="script">
  78393. formKey = vars.get("form_key_storage");
  78394. if (formKey
  78395. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  78396. &amp;&amp; sampler.getMethod() == "POST")
  78397. {
  78398. arguments = sampler.getArguments();
  78399. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  78400. {
  78401. argument = arguments.getArgument(i);
  78402. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  78403. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  78404. argument.setValue(formKey);
  78405. }
  78406. }
  78407. }
  78408. </stringProp>
  78409. <stringProp name="scriptLanguage">javascript</stringProp>
  78410. </JSR223PreProcessor>
  78411. <hashTree/>
  78412. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  78413. <collectionProp name="CookieManager.cookies"/>
  78414. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  78415. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  78416. <hashTree/>
  78417. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  78418. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  78419. </GenericController>
  78420. <hashTree>
  78421. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  78422. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  78423. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  78424. <hashTree>
  78425. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  78426. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  78427. <stringProp name="BeanShellSampler.query">
  78428. adminUser = "none";
  78429. adminUserList = props.get("adminUserList");
  78430. adminUserListIterator = props.get("adminUserListIterator");
  78431. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  78432. if (adminUsersDistribution == 1) {
  78433. adminUser = adminUserList.poll();
  78434. } else {
  78435. if (!adminUserListIterator.hasNext()) {
  78436. adminUserListIterator = adminUserList.descendingIterator();
  78437. }
  78438. adminUser = adminUserListIterator.next();
  78439. }
  78440. if (adminUser == "none") {
  78441. SampleResult.setResponseMessage("adminUser list is empty");
  78442. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  78443. IsSuccess=false;
  78444. SampleResult.setSuccessful(false);
  78445. SampleResult.setStopThread(true);
  78446. }
  78447. vars.put("admin_user", adminUser);
  78448. </stringProp>
  78449. <stringProp name="BeanShellSampler.filename"/>
  78450. <stringProp name="BeanShellSampler.parameters"/>
  78451. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  78452. </BeanShellSampler>
  78453. <hashTree/>
  78454. </hashTree>
  78455. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  78456. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78457. <collectionProp name="Arguments.arguments"/>
  78458. </elementProp>
  78459. <stringProp name="HTTPSampler.domain"/>
  78460. <stringProp name="HTTPSampler.port"/>
  78461. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78462. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78463. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78464. <stringProp name="HTTPSampler.contentEncoding"/>
  78465. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  78466. <stringProp name="HTTPSampler.method">GET</stringProp>
  78467. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78468. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78469. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78470. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78471. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78472. <stringProp name="HTTPSampler.embedded_url_re"/>
  78473. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  78474. <hashTree>
  78475. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  78476. <collectionProp name="Asserion.test_strings">
  78477. <stringProp name="-1397214398">Welcome</stringProp>
  78478. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  78479. </collectionProp>
  78480. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78481. <boolProp name="Assertion.assume_success">false</boolProp>
  78482. <intProp name="Assertion.test_type">2</intProp>
  78483. </ResponseAssertion>
  78484. <hashTree/>
  78485. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  78486. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78487. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  78488. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  78489. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78490. <stringProp name="RegexExtractor.default"/>
  78491. <stringProp name="RegexExtractor.match_number">1</stringProp>
  78492. </RegexExtractor>
  78493. <hashTree/>
  78494. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  78495. <collectionProp name="Asserion.test_strings">
  78496. <stringProp name="2845929">^.+$</stringProp>
  78497. </collectionProp>
  78498. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78499. <boolProp name="Assertion.assume_success">false</boolProp>
  78500. <intProp name="Assertion.test_type">1</intProp>
  78501. <stringProp name="Assertion.scope">variable</stringProp>
  78502. <stringProp name="Scope.variable">admin_form_key</stringProp>
  78503. </ResponseAssertion>
  78504. <hashTree/>
  78505. </hashTree>
  78506. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  78507. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78508. <collectionProp name="Arguments.arguments">
  78509. <elementProp name="dummy" elementType="HTTPArgument">
  78510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78511. <stringProp name="Argument.value"/>
  78512. <stringProp name="Argument.metadata">=</stringProp>
  78513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78514. <stringProp name="Argument.name">dummy</stringProp>
  78515. </elementProp>
  78516. <elementProp name="form_key" elementType="HTTPArgument">
  78517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78518. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  78519. <stringProp name="Argument.metadata">=</stringProp>
  78520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78521. <stringProp name="Argument.name">form_key</stringProp>
  78522. </elementProp>
  78523. <elementProp name="login[password]" elementType="HTTPArgument">
  78524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78525. <stringProp name="Argument.value">${admin_password}</stringProp>
  78526. <stringProp name="Argument.metadata">=</stringProp>
  78527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78528. <stringProp name="Argument.name">login[password]</stringProp>
  78529. </elementProp>
  78530. <elementProp name="login[username]" elementType="HTTPArgument">
  78531. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78532. <stringProp name="Argument.value">${admin_user}</stringProp>
  78533. <stringProp name="Argument.metadata">=</stringProp>
  78534. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78535. <stringProp name="Argument.name">login[username]</stringProp>
  78536. </elementProp>
  78537. </collectionProp>
  78538. </elementProp>
  78539. <stringProp name="HTTPSampler.domain"/>
  78540. <stringProp name="HTTPSampler.port"/>
  78541. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78542. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78543. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78544. <stringProp name="HTTPSampler.contentEncoding"/>
  78545. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  78546. <stringProp name="HTTPSampler.method">POST</stringProp>
  78547. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78548. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78549. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78550. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78551. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  78552. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78553. <stringProp name="HTTPSampler.embedded_url_re"/>
  78554. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  78555. </HTTPSamplerProxy>
  78556. <hashTree>
  78557. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  78558. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78559. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  78560. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  78561. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78562. <stringProp name="RegexExtractor.default"/>
  78563. <stringProp name="RegexExtractor.match_number">1</stringProp>
  78564. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  78565. <hashTree/>
  78566. </hashTree>
  78567. </hashTree>
  78568. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  78569. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  78570. </GenericController>
  78571. <hashTree>
  78572. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Category Management" enabled="true">
  78573. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_category_management/admin_category_management.jmx</stringProp>
  78574. </TestFragmentController>
  78575. <hashTree>
  78576. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Set Arguments" enabled="true">
  78577. <stringProp name="scriptLanguage">javascript</stringProp>
  78578. <stringProp name="parameters"/>
  78579. <stringProp name="filename"/>
  78580. <stringProp name="cacheKey"/>
  78581. <stringProp name="script">random = new java.util.Random();
  78582. if (${seedForRandom} &gt; 0) {
  78583. random.setSeed(${seedForRandom} + ${__threadNum});
  78584. }
  78585. /**
  78586. * Get unique ids for fix concurrent category saving
  78587. */
  78588. function getNextProductNumber(i) {
  78589. number = productsVariationsSize * ${__threadNum} - i;
  78590. if (number &gt;= productsSize) {
  78591. log.info("${testLabel}: capacity of product list is not enough for support all ${adminPoolUsers} threads");
  78592. return random.nextInt(productsSize);
  78593. }
  78594. return productsVariationsSize * ${__threadNum} - i;
  78595. }
  78596. var productsVariationsSize = 5,
  78597. productsSize = props.get("simple_products_list_for_edit").size();
  78598. for (i = 1; i&lt;= productsVariationsSize; i++) {
  78599. var productVariablePrefix = "simple_product_" + i + "_";
  78600. number = getNextProductNumber(i);
  78601. simpleList = props.get("simple_products_list_for_edit").get(number);
  78602. vars.put(productVariablePrefix + "url_key", simpleList.get("url_key"));
  78603. vars.put(productVariablePrefix + "id", simpleList.get("id"));
  78604. vars.put(productVariablePrefix + "name", simpleList.get("title"));
  78605. }
  78606. categoryIndex = random.nextInt(props.get("admin_category_ids_list").size());
  78607. vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex));
  78608. do {
  78609. categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size());
  78610. } while(categoryIndex == categoryIndexNew);
  78611. vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew));</stringProp>
  78612. </JSR223Sampler>
  78613. <hashTree/>
  78614. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  78615. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78616. <collectionProp name="Arguments.arguments"/>
  78617. </elementProp>
  78618. <stringProp name="HTTPSampler.domain"/>
  78619. <stringProp name="HTTPSampler.port"/>
  78620. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78621. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78622. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78623. <stringProp name="HTTPSampler.contentEncoding"/>
  78624. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/</stringProp>
  78625. <stringProp name="HTTPSampler.method">GET</stringProp>
  78626. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78627. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78628. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78629. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78630. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78631. <stringProp name="HTTPSampler.embedded_url_re"/>
  78632. </HTTPSamplerProxy>
  78633. <hashTree>
  78634. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  78635. <collectionProp name="HeaderManager.headers">
  78636. <elementProp name="Accept-Language" elementType="Header">
  78637. <stringProp name="Header.name">Accept-Language</stringProp>
  78638. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  78639. </elementProp>
  78640. <elementProp name="Accept" elementType="Header">
  78641. <stringProp name="Header.name">Accept</stringProp>
  78642. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  78643. </elementProp>
  78644. <elementProp name="User-Agent" elementType="Header">
  78645. <stringProp name="Header.name">User-Agent</stringProp>
  78646. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  78647. </elementProp>
  78648. <elementProp name="Accept-Encoding" elementType="Header">
  78649. <stringProp name="Header.name">Accept-Encoding</stringProp>
  78650. <stringProp name="Header.value">gzip, deflate</stringProp>
  78651. </elementProp>
  78652. </collectionProp>
  78653. </HeaderManager>
  78654. <hashTree/>
  78655. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  78656. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78657. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  78658. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  78659. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78660. <stringProp name="RegexExtractor.default"/>
  78661. <stringProp name="RegexExtractor.match_number">1</stringProp>
  78662. </RegexExtractor>
  78663. <hashTree/>
  78664. </hashTree>
  78665. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select parent category" enabled="true">
  78666. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78667. <collectionProp name="Arguments.arguments"/>
  78668. </elementProp>
  78669. <stringProp name="HTTPSampler.domain"/>
  78670. <stringProp name="HTTPSampler.port"/>
  78671. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78672. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78673. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78674. <stringProp name="HTTPSampler.contentEncoding"/>
  78675. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/</stringProp>
  78676. <stringProp name="HTTPSampler.method">GET</stringProp>
  78677. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78678. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78679. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78680. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78681. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78682. <stringProp name="HTTPSampler.embedded_url_re"/>
  78683. </HTTPSamplerProxy>
  78684. <hashTree>
  78685. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  78686. <collectionProp name="HeaderManager.headers">
  78687. <elementProp name="Accept-Language" elementType="Header">
  78688. <stringProp name="Header.name">Accept-Language</stringProp>
  78689. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  78690. </elementProp>
  78691. <elementProp name="Accept" elementType="Header">
  78692. <stringProp name="Header.name">Accept</stringProp>
  78693. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  78694. </elementProp>
  78695. <elementProp name="User-Agent" elementType="Header">
  78696. <stringProp name="Header.name">User-Agent</stringProp>
  78697. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  78698. </elementProp>
  78699. <elementProp name="Accept-Encoding" elementType="Header">
  78700. <stringProp name="Header.name">Accept-Encoding</stringProp>
  78701. <stringProp name="Header.value">gzip, deflate</stringProp>
  78702. </elementProp>
  78703. </collectionProp>
  78704. </HeaderManager>
  78705. <hashTree/>
  78706. </hashTree>
  78707. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open new category page" enabled="true">
  78708. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78709. <collectionProp name="Arguments.arguments"/>
  78710. </elementProp>
  78711. <stringProp name="HTTPSampler.domain"/>
  78712. <stringProp name="HTTPSampler.port"/>
  78713. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78714. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78715. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78716. <stringProp name="HTTPSampler.contentEncoding"/>
  78717. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id}</stringProp>
  78718. <stringProp name="HTTPSampler.method">GET</stringProp>
  78719. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78720. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78721. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78722. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78723. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78724. <stringProp name="HTTPSampler.embedded_url_re"/>
  78725. </HTTPSamplerProxy>
  78726. <hashTree>
  78727. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  78728. <collectionProp name="Asserion.test_strings">
  78729. <stringProp name="-1903925024">&lt;title&gt;New Category</stringProp>
  78730. </collectionProp>
  78731. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78732. <boolProp name="Assertion.assume_success">false</boolProp>
  78733. <intProp name="Assertion.test_type">2</intProp>
  78734. </ResponseAssertion>
  78735. <hashTree/>
  78736. </hashTree>
  78737. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create category" enabled="true">
  78738. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78739. <collectionProp name="Arguments.arguments">
  78740. <elementProp name="id" elementType="HTTPArgument">
  78741. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78742. <stringProp name="Argument.value"/>
  78743. <stringProp name="Argument.metadata">=</stringProp>
  78744. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78745. <stringProp name="Argument.name">id</stringProp>
  78746. </elementProp>
  78747. <elementProp name="parent" elementType="HTTPArgument">
  78748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78749. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  78750. <stringProp name="Argument.metadata">=</stringProp>
  78751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78752. <stringProp name="Argument.name">parent</stringProp>
  78753. </elementProp>
  78754. <elementProp name="path" elementType="HTTPArgument">
  78755. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78756. <stringProp name="Argument.value"/>
  78757. <stringProp name="Argument.metadata">=</stringProp>
  78758. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78759. <stringProp name="Argument.name">path</stringProp>
  78760. </elementProp>
  78761. <elementProp name="store_id" elementType="HTTPArgument">
  78762. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78763. <stringProp name="Argument.value"/>
  78764. <stringProp name="Argument.metadata">=</stringProp>
  78765. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78766. <stringProp name="Argument.name">store_id</stringProp>
  78767. </elementProp>
  78768. <elementProp name="is_active" elementType="HTTPArgument">
  78769. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78770. <stringProp name="Argument.value">0</stringProp>
  78771. <stringProp name="Argument.metadata">=</stringProp>
  78772. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78773. <stringProp name="Argument.name">is_active</stringProp>
  78774. </elementProp>
  78775. <elementProp name="include_in_menu" elementType="HTTPArgument">
  78776. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78777. <stringProp name="Argument.value">0</stringProp>
  78778. <stringProp name="Argument.metadata">=</stringProp>
  78779. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78780. <stringProp name="Argument.name">include_in_menu</stringProp>
  78781. </elementProp>
  78782. <elementProp name="is_anchor" elementType="HTTPArgument">
  78783. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78784. <stringProp name="Argument.value">1</stringProp>
  78785. <stringProp name="Argument.metadata">=</stringProp>
  78786. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78787. <stringProp name="Argument.name">is_anchor</stringProp>
  78788. </elementProp>
  78789. <elementProp name="use_config[available_sort_by]" elementType="HTTPArgument">
  78790. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78791. <stringProp name="Argument.value">true</stringProp>
  78792. <stringProp name="Argument.metadata">=</stringProp>
  78793. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78794. <stringProp name="Argument.name">use_config[available_sort_by]</stringProp>
  78795. </elementProp>
  78796. <elementProp name="use_config[default_sort_by]" elementType="HTTPArgument">
  78797. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78798. <stringProp name="Argument.value">true</stringProp>
  78799. <stringProp name="Argument.metadata">=</stringProp>
  78800. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78801. <stringProp name="Argument.name">use_config[default_sort_by]</stringProp>
  78802. </elementProp>
  78803. <elementProp name="use_config[filter_price_range]" elementType="HTTPArgument">
  78804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78805. <stringProp name="Argument.value">true</stringProp>
  78806. <stringProp name="Argument.metadata">=</stringProp>
  78807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78808. <stringProp name="Argument.name">use_config[filter_price_range]</stringProp>
  78809. </elementProp>
  78810. <elementProp name="use_default[url_key]" elementType="HTTPArgument">
  78811. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78812. <stringProp name="Argument.value">false</stringProp>
  78813. <stringProp name="Argument.metadata">=</stringProp>
  78814. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78815. <stringProp name="Argument.name">use_default[url_key]</stringProp>
  78816. </elementProp>
  78817. <elementProp name="url_key_create_redirect" elementType="HTTPArgument">
  78818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78819. <stringProp name="Argument.value">0</stringProp>
  78820. <stringProp name="Argument.metadata">=</stringProp>
  78821. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78822. <stringProp name="Argument.name">url_key_create_redirect</stringProp>
  78823. </elementProp>
  78824. <elementProp name="custom_use_parent_settings" elementType="HTTPArgument">
  78825. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78826. <stringProp name="Argument.value">0</stringProp>
  78827. <stringProp name="Argument.metadata">=</stringProp>
  78828. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78829. <stringProp name="Argument.name">custom_use_parent_settings</stringProp>
  78830. </elementProp>
  78831. <elementProp name="custom_apply_to_products" elementType="HTTPArgument">
  78832. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78833. <stringProp name="Argument.value">0</stringProp>
  78834. <stringProp name="Argument.metadata">=</stringProp>
  78835. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78836. <stringProp name="Argument.name">custom_apply_to_products</stringProp>
  78837. </elementProp>
  78838. <elementProp name="name" elementType="HTTPArgument">
  78839. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78840. <stringProp name="Argument.value">Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  78841. <stringProp name="Argument.metadata">=</stringProp>
  78842. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78843. <stringProp name="Argument.name">name</stringProp>
  78844. </elementProp>
  78845. <elementProp name="url_key" elementType="HTTPArgument">
  78846. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78847. <stringProp name="Argument.value">admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  78848. <stringProp name="Argument.metadata">=</stringProp>
  78849. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78850. <stringProp name="Argument.name">url_key</stringProp>
  78851. </elementProp>
  78852. <elementProp name="meta_title" elementType="HTTPArgument">
  78853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78854. <stringProp name="Argument.value"/>
  78855. <stringProp name="Argument.metadata">=</stringProp>
  78856. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78857. <stringProp name="Argument.name">meta_title</stringProp>
  78858. </elementProp>
  78859. <elementProp name="description" elementType="HTTPArgument">
  78860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78861. <stringProp name="Argument.value"/>
  78862. <stringProp name="Argument.metadata">=</stringProp>
  78863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78864. <stringProp name="Argument.name">description</stringProp>
  78865. </elementProp>
  78866. <elementProp name="display_mode" elementType="HTTPArgument">
  78867. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78868. <stringProp name="Argument.value">PRODUCTS</stringProp>
  78869. <stringProp name="Argument.metadata">=</stringProp>
  78870. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78871. <stringProp name="Argument.name">display_mode</stringProp>
  78872. </elementProp>
  78873. <elementProp name="default_sort_by" elementType="HTTPArgument">
  78874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78875. <stringProp name="Argument.value">position</stringProp>
  78876. <stringProp name="Argument.metadata">=</stringProp>
  78877. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78878. <stringProp name="Argument.name">default_sort_by</stringProp>
  78879. </elementProp>
  78880. <elementProp name="meta_keywords" elementType="HTTPArgument">
  78881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78882. <stringProp name="Argument.value"/>
  78883. <stringProp name="Argument.metadata">=</stringProp>
  78884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78885. <stringProp name="Argument.name">meta_keywords</stringProp>
  78886. </elementProp>
  78887. <elementProp name="meta_description" elementType="HTTPArgument">
  78888. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78889. <stringProp name="Argument.value"/>
  78890. <stringProp name="Argument.metadata">=</stringProp>
  78891. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78892. <stringProp name="Argument.name">meta_description</stringProp>
  78893. </elementProp>
  78894. <elementProp name="custom_layout_update" elementType="HTTPArgument">
  78895. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78896. <stringProp name="Argument.value"/>
  78897. <stringProp name="Argument.metadata">=</stringProp>
  78898. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78899. <stringProp name="Argument.name">custom_layout_update</stringProp>
  78900. </elementProp>
  78901. <elementProp name="category_products" elementType="HTTPArgument">
  78902. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  78903. <stringProp name="Argument.value">{"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""}</stringProp>
  78904. <stringProp name="Argument.metadata">=</stringProp>
  78905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78906. <stringProp name="Argument.name">category_products</stringProp>
  78907. </elementProp>
  78908. <elementProp name="form_key" elementType="HTTPArgument">
  78909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  78910. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  78911. <stringProp name="Argument.metadata">=</stringProp>
  78912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  78913. <stringProp name="Argument.name">form_key</stringProp>
  78914. </elementProp>
  78915. </collectionProp>
  78916. </elementProp>
  78917. <stringProp name="HTTPSampler.domain"/>
  78918. <stringProp name="HTTPSampler.port"/>
  78919. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78920. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78921. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78922. <stringProp name="HTTPSampler.contentEncoding"/>
  78923. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/save/</stringProp>
  78924. <stringProp name="HTTPSampler.method">POST</stringProp>
  78925. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78926. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78927. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78928. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78929. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78930. <stringProp name="HTTPSampler.embedded_url_re"/>
  78931. </HTTPSamplerProxy>
  78932. <hashTree>
  78933. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category id" enabled="true">
  78934. <stringProp name="RegexExtractor.useHeaders">URL</stringProp>
  78935. <stringProp name="RegexExtractor.refname">admin_category_id</stringProp>
  78936. <stringProp name="RegexExtractor.regex">/catalog/category/edit/id/(\d+)/</stringProp>
  78937. <stringProp name="RegexExtractor.template">$1$</stringProp>
  78938. <stringProp name="RegexExtractor.default"/>
  78939. <stringProp name="RegexExtractor.match_number">1</stringProp>
  78940. </RegexExtractor>
  78941. <hashTree/>
  78942. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category id" enabled="true">
  78943. <collectionProp name="Asserion.test_strings">
  78944. <stringProp name="89649215">^\d+$</stringProp>
  78945. </collectionProp>
  78946. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  78947. <boolProp name="Assertion.assume_success">false</boolProp>
  78948. <intProp name="Assertion.test_type">1</intProp>
  78949. <stringProp name="Assertion.scope">variable</stringProp>
  78950. <stringProp name="Scope.variable">admin_category_id</stringProp>
  78951. </ResponseAssertion>
  78952. <hashTree/>
  78953. </hashTree>
  78954. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select created category" enabled="true">
  78955. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  78956. <collectionProp name="Arguments.arguments"/>
  78957. </elementProp>
  78958. <stringProp name="HTTPSampler.domain"/>
  78959. <stringProp name="HTTPSampler.port"/>
  78960. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  78961. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  78962. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  78963. <stringProp name="HTTPSampler.contentEncoding"/>
  78964. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/</stringProp>
  78965. <stringProp name="HTTPSampler.method">GET</stringProp>
  78966. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  78967. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  78968. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  78969. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  78970. <boolProp name="HTTPSampler.monitor">false</boolProp>
  78971. <stringProp name="HTTPSampler.embedded_url_re"/>
  78972. </HTTPSamplerProxy>
  78973. <hashTree>
  78974. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  78975. <collectionProp name="HeaderManager.headers">
  78976. <elementProp name="Accept-Language" elementType="Header">
  78977. <stringProp name="Header.name">Accept-Language</stringProp>
  78978. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  78979. </elementProp>
  78980. <elementProp name="Accept" elementType="Header">
  78981. <stringProp name="Header.name">Accept</stringProp>
  78982. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  78983. </elementProp>
  78984. <elementProp name="User-Agent" elementType="Header">
  78985. <stringProp name="Header.name">User-Agent</stringProp>
  78986. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  78987. </elementProp>
  78988. <elementProp name="Accept-Encoding" elementType="Header">
  78989. <stringProp name="Header.name">Accept-Encoding</stringProp>
  78990. <stringProp name="Header.value">gzip, deflate</stringProp>
  78991. </elementProp>
  78992. </collectionProp>
  78993. </HeaderManager>
  78994. <hashTree/>
  78995. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category row id" enabled="true">
  78996. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  78997. <stringProp name="RegexExtractor.refname">admin_category_entity_id</stringProp>
  78998. <stringProp name="RegexExtractor.regex">"entity_id":"([^"]+)"</stringProp>
  78999. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79000. <stringProp name="RegexExtractor.default"/>
  79001. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79002. </RegexExtractor>
  79003. <hashTree/>
  79004. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category attribute set id" enabled="true">
  79005. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79006. <stringProp name="RegexExtractor.refname">admin_category_attribute_set_id</stringProp>
  79007. <stringProp name="RegexExtractor.regex">"attribute_set_id":"([^"]+)"</stringProp>
  79008. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79009. <stringProp name="RegexExtractor.default"/>
  79010. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79011. </RegexExtractor>
  79012. <hashTree/>
  79013. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category parent Id" enabled="true">
  79014. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79015. <stringProp name="RegexExtractor.refname">admin_category_parent_id</stringProp>
  79016. <stringProp name="RegexExtractor.regex">"parent_id":"([^"]+)"</stringProp>
  79017. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79018. <stringProp name="RegexExtractor.default"/>
  79019. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79020. </RegexExtractor>
  79021. <hashTree/>
  79022. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category created at" enabled="true">
  79023. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79024. <stringProp name="RegexExtractor.refname">admin_category_created_at</stringProp>
  79025. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  79026. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79027. <stringProp name="RegexExtractor.default"/>
  79028. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79029. </RegexExtractor>
  79030. <hashTree/>
  79031. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category updated at" enabled="true">
  79032. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79033. <stringProp name="RegexExtractor.refname">admin_category_updated_at</stringProp>
  79034. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  79035. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79036. <stringProp name="RegexExtractor.default"/>
  79037. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79038. </RegexExtractor>
  79039. <hashTree/>
  79040. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category path" enabled="true">
  79041. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79042. <stringProp name="RegexExtractor.refname">admin_category_path</stringProp>
  79043. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"path":"([^\"]+)"</stringProp>
  79044. <stringProp name="RegexExtractor.template">$2$</stringProp>
  79045. <stringProp name="RegexExtractor.default"/>
  79046. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79047. </RegexExtractor>
  79048. <hashTree/>
  79049. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category level" enabled="true">
  79050. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79051. <stringProp name="RegexExtractor.refname">admin_category_level</stringProp>
  79052. <stringProp name="RegexExtractor.regex">"level":"([^"]+)"</stringProp>
  79053. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79054. <stringProp name="RegexExtractor.default"/>
  79055. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79056. </RegexExtractor>
  79057. <hashTree/>
  79058. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category name" enabled="true">
  79059. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79060. <stringProp name="RegexExtractor.refname">admin_category_name</stringProp>
  79061. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"name":"([^"]+)"</stringProp>
  79062. <stringProp name="RegexExtractor.template">$2$</stringProp>
  79063. <stringProp name="RegexExtractor.default"/>
  79064. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79065. </RegexExtractor>
  79066. <hashTree/>
  79067. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url key" enabled="true">
  79068. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79069. <stringProp name="RegexExtractor.refname">admin_category_url_key</stringProp>
  79070. <stringProp name="RegexExtractor.regex">"url_key":"([^"]+)"</stringProp>
  79071. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79072. <stringProp name="RegexExtractor.default"/>
  79073. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79074. </RegexExtractor>
  79075. <hashTree/>
  79076. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url path" enabled="true">
  79077. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79078. <stringProp name="RegexExtractor.refname">admin_category_url_path</stringProp>
  79079. <stringProp name="RegexExtractor.regex">"url_path":"([^"]+)"</stringProp>
  79080. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79081. <stringProp name="RegexExtractor.default"/>
  79082. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79083. </RegexExtractor>
  79084. <hashTree/>
  79085. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category row id" enabled="true">
  79086. <collectionProp name="Asserion.test_strings">
  79087. <stringProp name="89649215">^\d+$</stringProp>
  79088. </collectionProp>
  79089. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79090. <boolProp name="Assertion.assume_success">false</boolProp>
  79091. <intProp name="Assertion.test_type">1</intProp>
  79092. <stringProp name="Assertion.scope">variable</stringProp>
  79093. <stringProp name="Scope.variable">admin_category_entity_id</stringProp>
  79094. </ResponseAssertion>
  79095. <hashTree/>
  79096. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category attribute set id" enabled="true">
  79097. <collectionProp name="Asserion.test_strings">
  79098. <stringProp name="89649215">^\d+$</stringProp>
  79099. </collectionProp>
  79100. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79101. <boolProp name="Assertion.assume_success">false</boolProp>
  79102. <intProp name="Assertion.test_type">1</intProp>
  79103. <stringProp name="Assertion.scope">variable</stringProp>
  79104. <stringProp name="Scope.variable">admin_category_attribute_set_id</stringProp>
  79105. </ResponseAssertion>
  79106. <hashTree/>
  79107. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category parent id" enabled="true">
  79108. <collectionProp name="Asserion.test_strings">
  79109. <stringProp name="89649215">^\d+$</stringProp>
  79110. </collectionProp>
  79111. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79112. <boolProp name="Assertion.assume_success">false</boolProp>
  79113. <intProp name="Assertion.test_type">1</intProp>
  79114. <stringProp name="Assertion.scope">variable</stringProp>
  79115. <stringProp name="Scope.variable">admin_category_parent_id</stringProp>
  79116. </ResponseAssertion>
  79117. <hashTree/>
  79118. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category created at" enabled="true">
  79119. <collectionProp name="Asserion.test_strings">
  79120. <stringProp name="2845929">^.+$</stringProp>
  79121. </collectionProp>
  79122. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79123. <boolProp name="Assertion.assume_success">false</boolProp>
  79124. <intProp name="Assertion.test_type">1</intProp>
  79125. <stringProp name="Assertion.scope">variable</stringProp>
  79126. <stringProp name="Scope.variable">admin_category_created_at</stringProp>
  79127. </ResponseAssertion>
  79128. <hashTree/>
  79129. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category updated at" enabled="true">
  79130. <collectionProp name="Asserion.test_strings">
  79131. <stringProp name="2845929">^.+$</stringProp>
  79132. </collectionProp>
  79133. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79134. <boolProp name="Assertion.assume_success">false</boolProp>
  79135. <intProp name="Assertion.test_type">1</intProp>
  79136. <stringProp name="Assertion.scope">variable</stringProp>
  79137. <stringProp name="Scope.variable">admin_category_updated_at</stringProp>
  79138. </ResponseAssertion>
  79139. <hashTree/>
  79140. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category path" enabled="true">
  79141. <collectionProp name="Asserion.test_strings">
  79142. <stringProp name="59022110">^[\d\\\/]+$</stringProp>
  79143. </collectionProp>
  79144. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79145. <boolProp name="Assertion.assume_success">false</boolProp>
  79146. <intProp name="Assertion.test_type">1</intProp>
  79147. <stringProp name="Assertion.scope">variable</stringProp>
  79148. <stringProp name="Scope.variable">admin_category_path</stringProp>
  79149. </ResponseAssertion>
  79150. <hashTree/>
  79151. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category level" enabled="true">
  79152. <collectionProp name="Asserion.test_strings">
  79153. <stringProp name="89649215">^\d+$</stringProp>
  79154. </collectionProp>
  79155. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79156. <boolProp name="Assertion.assume_success">false</boolProp>
  79157. <intProp name="Assertion.test_type">1</intProp>
  79158. <stringProp name="Assertion.scope">variable</stringProp>
  79159. <stringProp name="Scope.variable">admin_category_level</stringProp>
  79160. </ResponseAssertion>
  79161. <hashTree/>
  79162. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category name" enabled="true">
  79163. <collectionProp name="Asserion.test_strings">
  79164. <stringProp name="2845929">^.+$</stringProp>
  79165. </collectionProp>
  79166. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79167. <boolProp name="Assertion.assume_success">false</boolProp>
  79168. <intProp name="Assertion.test_type">1</intProp>
  79169. <stringProp name="Assertion.scope">variable</stringProp>
  79170. <stringProp name="Scope.variable">admin_category_name</stringProp>
  79171. </ResponseAssertion>
  79172. <hashTree/>
  79173. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url key" enabled="true">
  79174. <collectionProp name="Asserion.test_strings">
  79175. <stringProp name="2845929">^.+$</stringProp>
  79176. </collectionProp>
  79177. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79178. <boolProp name="Assertion.assume_success">false</boolProp>
  79179. <intProp name="Assertion.test_type">1</intProp>
  79180. <stringProp name="Assertion.scope">variable</stringProp>
  79181. <stringProp name="Scope.variable">admin_category_url_key</stringProp>
  79182. </ResponseAssertion>
  79183. <hashTree/>
  79184. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url path" enabled="true">
  79185. <collectionProp name="Asserion.test_strings">
  79186. <stringProp name="2845929">^.+$</stringProp>
  79187. </collectionProp>
  79188. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79189. <boolProp name="Assertion.assume_success">false</boolProp>
  79190. <intProp name="Assertion.test_type">1</intProp>
  79191. <stringProp name="Assertion.scope">variable</stringProp>
  79192. <stringProp name="Scope.variable">admin_category_url_path</stringProp>
  79193. </ResponseAssertion>
  79194. <hashTree/>
  79195. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert products added" enabled="true">
  79196. <collectionProp name="Asserion.test_strings">
  79197. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  79198. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  79199. <stringProp name="-2102674944">${simple_product_3_name}</stringProp>
  79200. <stringProp name="-1215171263">${simple_product_4_name}</stringProp>
  79201. <stringProp name="-327667582">${simple_product_5_name}</stringProp>
  79202. </collectionProp>
  79203. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79204. <boolProp name="Assertion.assume_success">false</boolProp>
  79205. <intProp name="Assertion.test_type">2</intProp>
  79206. </ResponseAssertion>
  79207. <hashTree/>
  79208. </hashTree>
  79209. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Move category" enabled="true">
  79210. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79211. <collectionProp name="Arguments.arguments">
  79212. <elementProp name="id" elementType="HTTPArgument">
  79213. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79214. <stringProp name="Argument.value">${admin_category_id}</stringProp>
  79215. <stringProp name="Argument.metadata">=</stringProp>
  79216. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79217. <stringProp name="Argument.name">id</stringProp>
  79218. </elementProp>
  79219. <elementProp name="form_key" elementType="HTTPArgument">
  79220. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79221. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  79222. <stringProp name="Argument.metadata">=</stringProp>
  79223. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79224. <stringProp name="Argument.name">form_key</stringProp>
  79225. </elementProp>
  79226. <elementProp name="point" elementType="HTTPArgument">
  79227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79228. <stringProp name="Argument.value">append</stringProp>
  79229. <stringProp name="Argument.metadata">=</stringProp>
  79230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79231. <stringProp name="Argument.name">point</stringProp>
  79232. </elementProp>
  79233. <elementProp name="pid" elementType="HTTPArgument">
  79234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79235. <stringProp name="Argument.value">${new_parent_category_id}</stringProp>
  79236. <stringProp name="Argument.metadata">=</stringProp>
  79237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79238. <stringProp name="Argument.name">pid</stringProp>
  79239. </elementProp>
  79240. <elementProp name="paid" elementType="HTTPArgument">
  79241. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79242. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  79243. <stringProp name="Argument.metadata">=</stringProp>
  79244. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79245. <stringProp name="Argument.name">paid</stringProp>
  79246. </elementProp>
  79247. <elementProp name="aid" elementType="HTTPArgument">
  79248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79249. <stringProp name="Argument.value">0</stringProp>
  79250. <stringProp name="Argument.metadata">=</stringProp>
  79251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79252. <stringProp name="Argument.name">aid</stringProp>
  79253. </elementProp>
  79254. <elementProp name="isAjax" elementType="HTTPArgument">
  79255. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79256. <stringProp name="Argument.value">true</stringProp>
  79257. <stringProp name="Argument.metadata">=</stringProp>
  79258. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79259. <stringProp name="Argument.name">isAjax</stringProp>
  79260. </elementProp>
  79261. </collectionProp>
  79262. </elementProp>
  79263. <stringProp name="HTTPSampler.domain"/>
  79264. <stringProp name="HTTPSampler.port"/>
  79265. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79266. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79267. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79268. <stringProp name="HTTPSampler.contentEncoding"/>
  79269. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/move/</stringProp>
  79270. <stringProp name="HTTPSampler.method">POST</stringProp>
  79271. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79272. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79273. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79274. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79275. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79276. <stringProp name="HTTPSampler.embedded_url_re"/>
  79277. </HTTPSamplerProxy>
  79278. <hashTree/>
  79279. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete category" enabled="true">
  79280. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79281. <collectionProp name="Arguments.arguments">
  79282. <elementProp name="form_key" elementType="HTTPArgument">
  79283. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79284. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  79285. <stringProp name="Argument.metadata">=</stringProp>
  79286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79287. <stringProp name="Argument.name">form_key</stringProp>
  79288. </elementProp>
  79289. </collectionProp>
  79290. </elementProp>
  79291. <stringProp name="HTTPSampler.domain"/>
  79292. <stringProp name="HTTPSampler.port"/>
  79293. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79294. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79295. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79296. <stringProp name="HTTPSampler.contentEncoding"/>
  79297. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/</stringProp>
  79298. <stringProp name="HTTPSampler.method">POST</stringProp>
  79299. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79300. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79301. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79302. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79303. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79304. <stringProp name="HTTPSampler.embedded_url_re"/>
  79305. </HTTPSamplerProxy>
  79306. <hashTree>
  79307. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category deleted" enabled="true">
  79308. <collectionProp name="Asserion.test_strings">
  79309. <stringProp name="1277069529">You deleted the category.</stringProp>
  79310. </collectionProp>
  79311. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79312. <boolProp name="Assertion.assume_success">false</boolProp>
  79313. <intProp name="Assertion.test_type">2</intProp>
  79314. </ResponseAssertion>
  79315. <hashTree/>
  79316. </hashTree>
  79317. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  79318. <intProp name="ActionProcessor.action">1</intProp>
  79319. <intProp name="ActionProcessor.target">0</intProp>
  79320. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))}</stringProp>
  79321. </TestAction>
  79322. <hashTree/>
  79323. </hashTree>
  79324. </hashTree>
  79325. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  79326. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79327. <collectionProp name="Arguments.arguments"/>
  79328. </elementProp>
  79329. <stringProp name="HTTPSampler.domain"/>
  79330. <stringProp name="HTTPSampler.port"/>
  79331. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79332. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79333. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79334. <stringProp name="HTTPSampler.contentEncoding"/>
  79335. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  79336. <stringProp name="HTTPSampler.method">GET</stringProp>
  79337. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79338. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79339. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79340. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79341. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79342. <stringProp name="HTTPSampler.embedded_url_re"/>
  79343. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  79344. <hashTree>
  79345. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  79346. <boolProp name="resetInterpreter">false</boolProp>
  79347. <stringProp name="parameters"/>
  79348. <stringProp name="filename"/>
  79349. <stringProp name="script">
  79350. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  79351. if (adminUsersDistribution == 1) {
  79352. adminUserList = props.get("adminUserList");
  79353. adminUserList.add(vars.get("admin_user"));
  79354. }
  79355. </stringProp>
  79356. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  79357. <hashTree/>
  79358. </hashTree>
  79359. </hashTree>
  79360. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Promotion Rules" enabled="true">
  79361. <intProp name="ThroughputController.style">1</intProp>
  79362. <boolProp name="ThroughputController.perThread">false</boolProp>
  79363. <intProp name="ThroughputController.maxThroughput">1</intProp>
  79364. <stringProp name="ThroughputController.percentThroughput">${cAdminPromotionRulesPercentage}</stringProp>
  79365. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  79366. <hashTree>
  79367. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  79368. <stringProp name="script">
  79369. var tmpLabel = vars.get("testLabel")
  79370. if (tmpLabel) {
  79371. var testLabel = " (" + tmpLabel + ")"
  79372. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  79373. if (sampler.getName().indexOf(testLabel) == -1) {
  79374. sampler.setName(sampler.getName() + testLabel);
  79375. }
  79376. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  79377. sampler.setName("SetUp - " + sampler.getName());
  79378. }
  79379. } else {
  79380. testLabel = ""
  79381. }
  79382. </stringProp>
  79383. <stringProp name="scriptLanguage">javascript</stringProp>
  79384. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  79385. <hashTree/>
  79386. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  79387. <stringProp name="BeanShellSampler.query">
  79388. vars.put("testLabel", "[GraphQL C] Admin Promotion Rules");
  79389. </stringProp>
  79390. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  79391. </BeanShellSampler>
  79392. <hashTree/>
  79393. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  79394. <stringProp name="script">
  79395. function getFormKeyFromResponse()
  79396. {
  79397. var url = prev.getUrlAsString(),
  79398. responseCode = prev.getResponseCode(),
  79399. formKey = null;
  79400. searchPattern = /var FORM_KEY = '(.+)'/;
  79401. if (responseCode == "200" &amp;&amp; url) {
  79402. response = prev.getResponseDataAsString();
  79403. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  79404. }
  79405. return formKey;
  79406. }
  79407. formKey = vars.get("form_key_storage");
  79408. currentFormKey = getFormKeyFromResponse();
  79409. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  79410. vars.put("form_key_storage", currentFormKey);
  79411. }
  79412. </stringProp>
  79413. <stringProp name="scriptLanguage">javascript</stringProp>
  79414. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  79415. <hashTree/>
  79416. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  79417. <stringProp name="script">
  79418. formKey = vars.get("form_key_storage");
  79419. if (formKey
  79420. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  79421. &amp;&amp; sampler.getMethod() == "POST")
  79422. {
  79423. arguments = sampler.getArguments();
  79424. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  79425. {
  79426. argument = arguments.getArgument(i);
  79427. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  79428. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  79429. argument.setValue(formKey);
  79430. }
  79431. }
  79432. }
  79433. </stringProp>
  79434. <stringProp name="scriptLanguage">javascript</stringProp>
  79435. </JSR223PreProcessor>
  79436. <hashTree/>
  79437. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  79438. <collectionProp name="CookieManager.cookies"/>
  79439. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  79440. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  79441. <hashTree/>
  79442. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  79443. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  79444. </GenericController>
  79445. <hashTree>
  79446. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  79447. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  79448. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  79449. <hashTree>
  79450. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  79451. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  79452. <stringProp name="BeanShellSampler.query">
  79453. adminUser = "none";
  79454. adminUserList = props.get("adminUserList");
  79455. adminUserListIterator = props.get("adminUserListIterator");
  79456. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  79457. if (adminUsersDistribution == 1) {
  79458. adminUser = adminUserList.poll();
  79459. } else {
  79460. if (!adminUserListIterator.hasNext()) {
  79461. adminUserListIterator = adminUserList.descendingIterator();
  79462. }
  79463. adminUser = adminUserListIterator.next();
  79464. }
  79465. if (adminUser == "none") {
  79466. SampleResult.setResponseMessage("adminUser list is empty");
  79467. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  79468. IsSuccess=false;
  79469. SampleResult.setSuccessful(false);
  79470. SampleResult.setStopThread(true);
  79471. }
  79472. vars.put("admin_user", adminUser);
  79473. </stringProp>
  79474. <stringProp name="BeanShellSampler.filename"/>
  79475. <stringProp name="BeanShellSampler.parameters"/>
  79476. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  79477. </BeanShellSampler>
  79478. <hashTree/>
  79479. </hashTree>
  79480. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  79481. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79482. <collectionProp name="Arguments.arguments"/>
  79483. </elementProp>
  79484. <stringProp name="HTTPSampler.domain"/>
  79485. <stringProp name="HTTPSampler.port"/>
  79486. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79487. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79488. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79489. <stringProp name="HTTPSampler.contentEncoding"/>
  79490. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  79491. <stringProp name="HTTPSampler.method">GET</stringProp>
  79492. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79493. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79494. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79495. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79496. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79497. <stringProp name="HTTPSampler.embedded_url_re"/>
  79498. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  79499. <hashTree>
  79500. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  79501. <collectionProp name="Asserion.test_strings">
  79502. <stringProp name="-1397214398">Welcome</stringProp>
  79503. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  79504. </collectionProp>
  79505. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79506. <boolProp name="Assertion.assume_success">false</boolProp>
  79507. <intProp name="Assertion.test_type">2</intProp>
  79508. </ResponseAssertion>
  79509. <hashTree/>
  79510. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  79511. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79512. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  79513. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  79514. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79515. <stringProp name="RegexExtractor.default"/>
  79516. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79517. </RegexExtractor>
  79518. <hashTree/>
  79519. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  79520. <collectionProp name="Asserion.test_strings">
  79521. <stringProp name="2845929">^.+$</stringProp>
  79522. </collectionProp>
  79523. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79524. <boolProp name="Assertion.assume_success">false</boolProp>
  79525. <intProp name="Assertion.test_type">1</intProp>
  79526. <stringProp name="Assertion.scope">variable</stringProp>
  79527. <stringProp name="Scope.variable">admin_form_key</stringProp>
  79528. </ResponseAssertion>
  79529. <hashTree/>
  79530. </hashTree>
  79531. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  79532. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79533. <collectionProp name="Arguments.arguments">
  79534. <elementProp name="dummy" elementType="HTTPArgument">
  79535. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79536. <stringProp name="Argument.value"/>
  79537. <stringProp name="Argument.metadata">=</stringProp>
  79538. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79539. <stringProp name="Argument.name">dummy</stringProp>
  79540. </elementProp>
  79541. <elementProp name="form_key" elementType="HTTPArgument">
  79542. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79543. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  79544. <stringProp name="Argument.metadata">=</stringProp>
  79545. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79546. <stringProp name="Argument.name">form_key</stringProp>
  79547. </elementProp>
  79548. <elementProp name="login[password]" elementType="HTTPArgument">
  79549. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79550. <stringProp name="Argument.value">${admin_password}</stringProp>
  79551. <stringProp name="Argument.metadata">=</stringProp>
  79552. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79553. <stringProp name="Argument.name">login[password]</stringProp>
  79554. </elementProp>
  79555. <elementProp name="login[username]" elementType="HTTPArgument">
  79556. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79557. <stringProp name="Argument.value">${admin_user}</stringProp>
  79558. <stringProp name="Argument.metadata">=</stringProp>
  79559. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79560. <stringProp name="Argument.name">login[username]</stringProp>
  79561. </elementProp>
  79562. </collectionProp>
  79563. </elementProp>
  79564. <stringProp name="HTTPSampler.domain"/>
  79565. <stringProp name="HTTPSampler.port"/>
  79566. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79567. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79568. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79569. <stringProp name="HTTPSampler.contentEncoding"/>
  79570. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  79571. <stringProp name="HTTPSampler.method">POST</stringProp>
  79572. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79573. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79574. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79575. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79576. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  79577. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79578. <stringProp name="HTTPSampler.embedded_url_re"/>
  79579. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  79580. </HTTPSamplerProxy>
  79581. <hashTree>
  79582. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  79583. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  79584. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  79585. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  79586. <stringProp name="RegexExtractor.template">$1$</stringProp>
  79587. <stringProp name="RegexExtractor.default"/>
  79588. <stringProp name="RegexExtractor.match_number">1</stringProp>
  79589. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  79590. <hashTree/>
  79591. </hashTree>
  79592. </hashTree>
  79593. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  79594. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  79595. </GenericController>
  79596. <hashTree>
  79597. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Promotions Management" enabled="true">
  79598. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx</stringProp>
  79599. </TestFragmentController>
  79600. <hashTree>
  79601. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  79602. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79603. <collectionProp name="Arguments.arguments"/>
  79604. </elementProp>
  79605. <stringProp name="HTTPSampler.domain"/>
  79606. <stringProp name="HTTPSampler.port"/>
  79607. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79608. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79609. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79610. <stringProp name="HTTPSampler.contentEncoding"/>
  79611. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/</stringProp>
  79612. <stringProp name="HTTPSampler.method">GET</stringProp>
  79613. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79614. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79615. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79616. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79617. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79618. <stringProp name="HTTPSampler.embedded_url_re"/>
  79619. </HTTPSamplerProxy>
  79620. <hashTree/>
  79621. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  79622. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79623. <collectionProp name="Arguments.arguments"/>
  79624. </elementProp>
  79625. <stringProp name="HTTPSampler.domain"/>
  79626. <stringProp name="HTTPSampler.port"/>
  79627. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79628. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79629. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79630. <stringProp name="HTTPSampler.contentEncoding"/>
  79631. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/new</stringProp>
  79632. <stringProp name="HTTPSampler.method">GET</stringProp>
  79633. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79634. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79635. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79636. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79637. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79638. <stringProp name="HTTPSampler.embedded_url_re"/>
  79639. </HTTPSamplerProxy>
  79640. <hashTree/>
  79641. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New Conditional" enabled="true">
  79642. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79643. <collectionProp name="Arguments.arguments">
  79644. <elementProp name="isAjax" elementType="HTTPArgument">
  79645. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79646. <stringProp name="Argument.value">true</stringProp>
  79647. <stringProp name="Argument.metadata">=</stringProp>
  79648. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79649. <stringProp name="Argument.name">isAjax</stringProp>
  79650. </elementProp>
  79651. <elementProp name="form_key" elementType="HTTPArgument">
  79652. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79653. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  79654. <stringProp name="Argument.metadata">=</stringProp>
  79655. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79656. <stringProp name="Argument.name">form_key</stringProp>
  79657. <stringProp name="Argument.desc">true</stringProp>
  79658. </elementProp>
  79659. <elementProp name="id" elementType="HTTPArgument">
  79660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79661. <stringProp name="Argument.value">1--1</stringProp>
  79662. <stringProp name="Argument.metadata">=</stringProp>
  79663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79664. <stringProp name="Argument.name">id</stringProp>
  79665. </elementProp>
  79666. <elementProp name="type" elementType="HTTPArgument">
  79667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79668. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal</stringProp>
  79669. <stringProp name="Argument.metadata">=</stringProp>
  79670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79671. <stringProp name="Argument.name">type</stringProp>
  79672. </elementProp>
  79673. </collectionProp>
  79674. </elementProp>
  79675. <stringProp name="HTTPSampler.domain"/>
  79676. <stringProp name="HTTPSampler.port"/>
  79677. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79678. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79679. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79680. <stringProp name="HTTPSampler.contentEncoding"/>
  79681. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form</stringProp>
  79682. <stringProp name="HTTPSampler.method">POST</stringProp>
  79683. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79684. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79685. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79686. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79687. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79688. <stringProp name="HTTPSampler.embedded_url_re"/>
  79689. </HTTPSamplerProxy>
  79690. <hashTree/>
  79691. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  79692. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79693. <collectionProp name="Arguments.arguments">
  79694. <elementProp name="name" elementType="HTTPArgument">
  79695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79696. <stringProp name="Argument.value">Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  79697. <stringProp name="Argument.metadata">=</stringProp>
  79698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79699. <stringProp name="Argument.name">name</stringProp>
  79700. </elementProp>
  79701. <elementProp name="is_active" elementType="HTTPArgument">
  79702. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79703. <stringProp name="Argument.value">0</stringProp>
  79704. <stringProp name="Argument.metadata">=</stringProp>
  79705. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79706. <stringProp name="Argument.name">is_active</stringProp>
  79707. </elementProp>
  79708. <elementProp name="use_auto_generation" elementType="HTTPArgument">
  79709. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79710. <stringProp name="Argument.value">0</stringProp>
  79711. <stringProp name="Argument.metadata">=</stringProp>
  79712. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79713. <stringProp name="Argument.name">use_auto_generation</stringProp>
  79714. </elementProp>
  79715. <elementProp name="is_rss" elementType="HTTPArgument">
  79716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79717. <stringProp name="Argument.value">1</stringProp>
  79718. <stringProp name="Argument.metadata">=</stringProp>
  79719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79720. <stringProp name="Argument.name">is_rss</stringProp>
  79721. </elementProp>
  79722. <elementProp name="apply_to_shipping" elementType="HTTPArgument">
  79723. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79724. <stringProp name="Argument.value">0</stringProp>
  79725. <stringProp name="Argument.metadata">=</stringProp>
  79726. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79727. <stringProp name="Argument.name">apply_to_shipping</stringProp>
  79728. </elementProp>
  79729. <elementProp name="stop_rules_processing" elementType="HTTPArgument">
  79730. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79731. <stringProp name="Argument.value">0</stringProp>
  79732. <stringProp name="Argument.metadata">=</stringProp>
  79733. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79734. <stringProp name="Argument.name">stop_rules_processing</stringProp>
  79735. </elementProp>
  79736. <elementProp name="coupon_code" elementType="HTTPArgument">
  79737. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79738. <stringProp name="Argument.value"/>
  79739. <stringProp name="Argument.metadata">=</stringProp>
  79740. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79741. <stringProp name="Argument.name">coupon_code</stringProp>
  79742. </elementProp>
  79743. <elementProp name="uses_per_coupon" elementType="HTTPArgument">
  79744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79745. <stringProp name="Argument.value"/>
  79746. <stringProp name="Argument.metadata">=</stringProp>
  79747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79748. <stringProp name="Argument.name">uses_per_coupon</stringProp>
  79749. </elementProp>
  79750. <elementProp name="uses_per_customer" elementType="HTTPArgument">
  79751. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79752. <stringProp name="Argument.value"/>
  79753. <stringProp name="Argument.metadata">=</stringProp>
  79754. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79755. <stringProp name="Argument.name">uses_per_customer</stringProp>
  79756. </elementProp>
  79757. <elementProp name="sort_order" elementType="HTTPArgument">
  79758. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79759. <stringProp name="Argument.value"/>
  79760. <stringProp name="Argument.metadata">=</stringProp>
  79761. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79762. <stringProp name="Argument.name">sort_order</stringProp>
  79763. </elementProp>
  79764. <elementProp name="discount_amount" elementType="HTTPArgument">
  79765. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79766. <stringProp name="Argument.value">5</stringProp>
  79767. <stringProp name="Argument.metadata">=</stringProp>
  79768. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79769. <stringProp name="Argument.name">discount_amount</stringProp>
  79770. </elementProp>
  79771. <elementProp name="discount_qty" elementType="HTTPArgument">
  79772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79773. <stringProp name="Argument.value">0</stringProp>
  79774. <stringProp name="Argument.metadata">=</stringProp>
  79775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79776. <stringProp name="Argument.name">discount_qty</stringProp>
  79777. </elementProp>
  79778. <elementProp name="discount_step" elementType="HTTPArgument">
  79779. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79780. <stringProp name="Argument.value"/>
  79781. <stringProp name="Argument.metadata">=</stringProp>
  79782. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79783. <stringProp name="Argument.name">discount_step</stringProp>
  79784. </elementProp>
  79785. <elementProp name="reward_points_delta" elementType="HTTPArgument">
  79786. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79787. <stringProp name="Argument.value"/>
  79788. <stringProp name="Argument.metadata">=</stringProp>
  79789. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79790. <stringProp name="Argument.name">reward_points_delta</stringProp>
  79791. </elementProp>
  79792. <elementProp name="store_labels[0]" elementType="HTTPArgument">
  79793. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79794. <stringProp name="Argument.value"/>
  79795. <stringProp name="Argument.metadata">=</stringProp>
  79796. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79797. <stringProp name="Argument.name">store_labels[0]</stringProp>
  79798. </elementProp>
  79799. <elementProp name="description" elementType="HTTPArgument">
  79800. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79801. <stringProp name="Argument.value">Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  79802. <stringProp name="Argument.metadata">=</stringProp>
  79803. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79804. <stringProp name="Argument.name">description</stringProp>
  79805. </elementProp>
  79806. <elementProp name="coupon_type" elementType="HTTPArgument">
  79807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79808. <stringProp name="Argument.value">1</stringProp>
  79809. <stringProp name="Argument.metadata">=</stringProp>
  79810. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79811. <stringProp name="Argument.name">coupon_type</stringProp>
  79812. </elementProp>
  79813. <elementProp name="simple_action" elementType="HTTPArgument">
  79814. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79815. <stringProp name="Argument.value">cart_fixed</stringProp>
  79816. <stringProp name="Argument.metadata">=</stringProp>
  79817. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79818. <stringProp name="Argument.name">simple_action</stringProp>
  79819. </elementProp>
  79820. <elementProp name="website_ids[0]" elementType="HTTPArgument">
  79821. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79822. <stringProp name="Argument.value">1</stringProp>
  79823. <stringProp name="Argument.metadata">=</stringProp>
  79824. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79825. <stringProp name="Argument.name">website_ids[0]</stringProp>
  79826. </elementProp>
  79827. <elementProp name="customer_group_ids[0]" elementType="HTTPArgument">
  79828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79829. <stringProp name="Argument.value">0</stringProp>
  79830. <stringProp name="Argument.metadata">=</stringProp>
  79831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79832. <stringProp name="Argument.name">customer_group_ids[0]</stringProp>
  79833. </elementProp>
  79834. <elementProp name="from_date" elementType="HTTPArgument">
  79835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79836. <stringProp name="Argument.value"/>
  79837. <stringProp name="Argument.metadata">=</stringProp>
  79838. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79839. <stringProp name="Argument.name">from_date</stringProp>
  79840. </elementProp>
  79841. <elementProp name="to_date" elementType="HTTPArgument">
  79842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79843. <stringProp name="Argument.value"/>
  79844. <stringProp name="Argument.metadata">=</stringProp>
  79845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79846. <stringProp name="Argument.name">to_date</stringProp>
  79847. </elementProp>
  79848. <elementProp name="rule[conditions][1][type]" elementType="HTTPArgument">
  79849. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79850. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Combine</stringProp>
  79851. <stringProp name="Argument.metadata">=</stringProp>
  79852. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79853. <stringProp name="Argument.name">rule[conditions][1][type]</stringProp>
  79854. </elementProp>
  79855. <elementProp name="rule[conditions][1][aggregator]" elementType="HTTPArgument">
  79856. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79857. <stringProp name="Argument.value">all</stringProp>
  79858. <stringProp name="Argument.metadata">=</stringProp>
  79859. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79860. <stringProp name="Argument.name">rule[conditions][1][aggregator]</stringProp>
  79861. </elementProp>
  79862. <elementProp name="rule[conditions][1][value]" elementType="HTTPArgument">
  79863. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79864. <stringProp name="Argument.value">1</stringProp>
  79865. <stringProp name="Argument.metadata">=</stringProp>
  79866. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79867. <stringProp name="Argument.name">rule[conditions][1][value]</stringProp>
  79868. </elementProp>
  79869. <elementProp name="rule[conditions][1--1][type]" elementType="HTTPArgument">
  79870. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79871. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address</stringProp>
  79872. <stringProp name="Argument.metadata">=</stringProp>
  79873. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79874. <stringProp name="Argument.name">rule[conditions][1--1][type]</stringProp>
  79875. </elementProp>
  79876. <elementProp name="rule[conditions][1--1][attribute]" elementType="HTTPArgument">
  79877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79878. <stringProp name="Argument.value">base_subtotal</stringProp>
  79879. <stringProp name="Argument.metadata">=</stringProp>
  79880. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79881. <stringProp name="Argument.name">rule[conditions][1--1][attribute]</stringProp>
  79882. </elementProp>
  79883. <elementProp name="rule[conditions][1--1][operator]" elementType="HTTPArgument">
  79884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79885. <stringProp name="Argument.value">&gt;=</stringProp>
  79886. <stringProp name="Argument.metadata">=</stringProp>
  79887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79888. <stringProp name="Argument.name">rule[conditions][1--1][operator]</stringProp>
  79889. </elementProp>
  79890. <elementProp name="rule[conditions][1--1][value]" elementType="HTTPArgument">
  79891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79892. <stringProp name="Argument.value">100</stringProp>
  79893. <stringProp name="Argument.metadata">=</stringProp>
  79894. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79895. <stringProp name="Argument.name">rule[conditions][1--1][value]</stringProp>
  79896. </elementProp>
  79897. <elementProp name="rule[conditions][1][new_chlid]" elementType="HTTPArgument">
  79898. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79899. <stringProp name="Argument.value"/>
  79900. <stringProp name="Argument.metadata">=</stringProp>
  79901. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79902. <stringProp name="Argument.name">rule[conditions][1][new_chlid]</stringProp>
  79903. </elementProp>
  79904. <elementProp name="rule[actions][1][type]" elementType="HTTPArgument">
  79905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79906. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Product\Combine</stringProp>
  79907. <stringProp name="Argument.metadata">=</stringProp>
  79908. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79909. <stringProp name="Argument.name">rule[actions][1][type]</stringProp>
  79910. </elementProp>
  79911. <elementProp name="rule[actions][1][aggregator]" elementType="HTTPArgument">
  79912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79913. <stringProp name="Argument.value">all</stringProp>
  79914. <stringProp name="Argument.metadata">=</stringProp>
  79915. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79916. <stringProp name="Argument.name">rule[actions][1][aggregator]</stringProp>
  79917. </elementProp>
  79918. <elementProp name="rule[actions][1][value]" elementType="HTTPArgument">
  79919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79920. <stringProp name="Argument.value">1</stringProp>
  79921. <stringProp name="Argument.metadata">=</stringProp>
  79922. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79923. <stringProp name="Argument.name">rule[actions][1][value]</stringProp>
  79924. </elementProp>
  79925. <elementProp name="rule[actions][1][new_child]" elementType="HTTPArgument">
  79926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79927. <stringProp name="Argument.value"/>
  79928. <stringProp name="Argument.metadata">=</stringProp>
  79929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79930. <stringProp name="Argument.name">rule[actions][1][new_child]</stringProp>
  79931. </elementProp>
  79932. <elementProp name="store_labels[1]" elementType="HTTPArgument">
  79933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79934. <stringProp name="Argument.value"/>
  79935. <stringProp name="Argument.metadata">=</stringProp>
  79936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79937. <stringProp name="Argument.name">store_labels[1]</stringProp>
  79938. </elementProp>
  79939. <elementProp name="store_labels[2]" elementType="HTTPArgument">
  79940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79941. <stringProp name="Argument.value"/>
  79942. <stringProp name="Argument.metadata">=</stringProp>
  79943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79944. <stringProp name="Argument.name">store_labels[2]</stringProp>
  79945. </elementProp>
  79946. <elementProp name="related_banners" elementType="HTTPArgument">
  79947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79948. <stringProp name="Argument.value"/>
  79949. <stringProp name="Argument.metadata">=</stringProp>
  79950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79951. <stringProp name="Argument.name">related_banners</stringProp>
  79952. </elementProp>
  79953. <elementProp name="form_key" elementType="HTTPArgument">
  79954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  79955. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  79956. <stringProp name="Argument.metadata">=</stringProp>
  79957. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  79958. <stringProp name="Argument.name">form_key</stringProp>
  79959. </elementProp>
  79960. </collectionProp>
  79961. </elementProp>
  79962. <stringProp name="HTTPSampler.domain"/>
  79963. <stringProp name="HTTPSampler.port"/>
  79964. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  79965. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  79966. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  79967. <stringProp name="HTTPSampler.contentEncoding"/>
  79968. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/save/</stringProp>
  79969. <stringProp name="HTTPSampler.method">POST</stringProp>
  79970. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  79971. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  79972. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  79973. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  79974. <boolProp name="HTTPSampler.monitor">false</boolProp>
  79975. <stringProp name="HTTPSampler.embedded_url_re"/>
  79976. </HTTPSamplerProxy>
  79977. <hashTree>
  79978. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  79979. <collectionProp name="Asserion.test_strings">
  79980. <stringProp name="-396438583">You saved the rule.</stringProp>
  79981. </collectionProp>
  79982. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  79983. <boolProp name="Assertion.assume_success">false</boolProp>
  79984. <intProp name="Assertion.test_type">16</intProp>
  79985. </ResponseAssertion>
  79986. <hashTree/>
  79987. </hashTree>
  79988. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  79989. <intProp name="ActionProcessor.action">1</intProp>
  79990. <intProp name="ActionProcessor.target">0</intProp>
  79991. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))}</stringProp>
  79992. </TestAction>
  79993. <hashTree/>
  79994. </hashTree>
  79995. </hashTree>
  79996. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  79997. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  79998. <collectionProp name="Arguments.arguments"/>
  79999. </elementProp>
  80000. <stringProp name="HTTPSampler.domain"/>
  80001. <stringProp name="HTTPSampler.port"/>
  80002. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  80003. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  80004. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  80005. <stringProp name="HTTPSampler.contentEncoding"/>
  80006. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  80007. <stringProp name="HTTPSampler.method">GET</stringProp>
  80008. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  80009. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  80010. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  80011. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  80012. <boolProp name="HTTPSampler.monitor">false</boolProp>
  80013. <stringProp name="HTTPSampler.embedded_url_re"/>
  80014. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  80015. <hashTree>
  80016. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  80017. <boolProp name="resetInterpreter">false</boolProp>
  80018. <stringProp name="parameters"/>
  80019. <stringProp name="filename"/>
  80020. <stringProp name="script">
  80021. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  80022. if (adminUsersDistribution == 1) {
  80023. adminUserList = props.get("adminUserList");
  80024. adminUserList.add(vars.get("admin_user"));
  80025. }
  80026. </stringProp>
  80027. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  80028. <hashTree/>
  80029. </hashTree>
  80030. </hashTree>
  80031. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Customer Management" enabled="true">
  80032. <intProp name="ThroughputController.style">1</intProp>
  80033. <boolProp name="ThroughputController.perThread">false</boolProp>
  80034. <intProp name="ThroughputController.maxThroughput">1</intProp>
  80035. <stringProp name="ThroughputController.percentThroughput">${cAdminCustomerManagementPercentage}</stringProp>
  80036. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  80037. <hashTree>
  80038. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  80039. <stringProp name="script">
  80040. var tmpLabel = vars.get("testLabel")
  80041. if (tmpLabel) {
  80042. var testLabel = " (" + tmpLabel + ")"
  80043. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  80044. if (sampler.getName().indexOf(testLabel) == -1) {
  80045. sampler.setName(sampler.getName() + testLabel);
  80046. }
  80047. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  80048. sampler.setName("SetUp - " + sampler.getName());
  80049. }
  80050. } else {
  80051. testLabel = ""
  80052. }
  80053. </stringProp>
  80054. <stringProp name="scriptLanguage">javascript</stringProp>
  80055. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  80056. <hashTree/>
  80057. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  80058. <stringProp name="BeanShellSampler.query">
  80059. vars.put("testLabel", "[GraphQL C] Admin Customer Management");
  80060. </stringProp>
  80061. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  80062. </BeanShellSampler>
  80063. <hashTree/>
  80064. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  80065. <stringProp name="script">
  80066. function getFormKeyFromResponse()
  80067. {
  80068. var url = prev.getUrlAsString(),
  80069. responseCode = prev.getResponseCode(),
  80070. formKey = null;
  80071. searchPattern = /var FORM_KEY = '(.+)'/;
  80072. if (responseCode == "200" &amp;&amp; url) {
  80073. response = prev.getResponseDataAsString();
  80074. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  80075. }
  80076. return formKey;
  80077. }
  80078. formKey = vars.get("form_key_storage");
  80079. currentFormKey = getFormKeyFromResponse();
  80080. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  80081. vars.put("form_key_storage", currentFormKey);
  80082. }
  80083. </stringProp>
  80084. <stringProp name="scriptLanguage">javascript</stringProp>
  80085. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  80086. <hashTree/>
  80087. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  80088. <stringProp name="script">
  80089. formKey = vars.get("form_key_storage");
  80090. if (formKey
  80091. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  80092. &amp;&amp; sampler.getMethod() == "POST")
  80093. {
  80094. arguments = sampler.getArguments();
  80095. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  80096. {
  80097. argument = arguments.getArgument(i);
  80098. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  80099. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  80100. argument.setValue(formKey);
  80101. }
  80102. }
  80103. }
  80104. </stringProp>
  80105. <stringProp name="scriptLanguage">javascript</stringProp>
  80106. </JSR223PreProcessor>
  80107. <hashTree/>
  80108. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  80109. <collectionProp name="CookieManager.cookies"/>
  80110. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  80111. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  80112. <hashTree/>
  80113. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  80114. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  80115. </GenericController>
  80116. <hashTree>
  80117. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  80118. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  80119. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  80120. <hashTree>
  80121. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  80122. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  80123. <stringProp name="BeanShellSampler.query">
  80124. adminUser = "none";
  80125. adminUserList = props.get("adminUserList");
  80126. adminUserListIterator = props.get("adminUserListIterator");
  80127. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  80128. if (adminUsersDistribution == 1) {
  80129. adminUser = adminUserList.poll();
  80130. } else {
  80131. if (!adminUserListIterator.hasNext()) {
  80132. adminUserListIterator = adminUserList.descendingIterator();
  80133. }
  80134. adminUser = adminUserListIterator.next();
  80135. }
  80136. if (adminUser == "none") {
  80137. SampleResult.setResponseMessage("adminUser list is empty");
  80138. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  80139. IsSuccess=false;
  80140. SampleResult.setSuccessful(false);
  80141. SampleResult.setStopThread(true);
  80142. }
  80143. vars.put("admin_user", adminUser);
  80144. </stringProp>
  80145. <stringProp name="BeanShellSampler.filename"/>
  80146. <stringProp name="BeanShellSampler.parameters"/>
  80147. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  80148. </BeanShellSampler>
  80149. <hashTree/>
  80150. </hashTree>
  80151. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  80152. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  80153. <collectionProp name="Arguments.arguments"/>
  80154. </elementProp>
  80155. <stringProp name="HTTPSampler.domain"/>
  80156. <stringProp name="HTTPSampler.port"/>
  80157. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  80158. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  80159. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  80160. <stringProp name="HTTPSampler.contentEncoding"/>
  80161. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  80162. <stringProp name="HTTPSampler.method">GET</stringProp>
  80163. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  80164. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  80165. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  80166. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  80167. <boolProp name="HTTPSampler.monitor">false</boolProp>
  80168. <stringProp name="HTTPSampler.embedded_url_re"/>
  80169. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  80170. <hashTree>
  80171. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  80172. <collectionProp name="Asserion.test_strings">
  80173. <stringProp name="-1397214398">Welcome</stringProp>
  80174. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  80175. </collectionProp>
  80176. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80177. <boolProp name="Assertion.assume_success">false</boolProp>
  80178. <intProp name="Assertion.test_type">2</intProp>
  80179. </ResponseAssertion>
  80180. <hashTree/>
  80181. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  80182. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80183. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  80184. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  80185. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80186. <stringProp name="RegexExtractor.default"/>
  80187. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80188. </RegexExtractor>
  80189. <hashTree/>
  80190. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  80191. <collectionProp name="Asserion.test_strings">
  80192. <stringProp name="2845929">^.+$</stringProp>
  80193. </collectionProp>
  80194. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80195. <boolProp name="Assertion.assume_success">false</boolProp>
  80196. <intProp name="Assertion.test_type">1</intProp>
  80197. <stringProp name="Assertion.scope">variable</stringProp>
  80198. <stringProp name="Scope.variable">admin_form_key</stringProp>
  80199. </ResponseAssertion>
  80200. <hashTree/>
  80201. </hashTree>
  80202. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  80203. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  80204. <collectionProp name="Arguments.arguments">
  80205. <elementProp name="dummy" elementType="HTTPArgument">
  80206. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80207. <stringProp name="Argument.value"/>
  80208. <stringProp name="Argument.metadata">=</stringProp>
  80209. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80210. <stringProp name="Argument.name">dummy</stringProp>
  80211. </elementProp>
  80212. <elementProp name="form_key" elementType="HTTPArgument">
  80213. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80214. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  80215. <stringProp name="Argument.metadata">=</stringProp>
  80216. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80217. <stringProp name="Argument.name">form_key</stringProp>
  80218. </elementProp>
  80219. <elementProp name="login[password]" elementType="HTTPArgument">
  80220. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80221. <stringProp name="Argument.value">${admin_password}</stringProp>
  80222. <stringProp name="Argument.metadata">=</stringProp>
  80223. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80224. <stringProp name="Argument.name">login[password]</stringProp>
  80225. </elementProp>
  80226. <elementProp name="login[username]" elementType="HTTPArgument">
  80227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80228. <stringProp name="Argument.value">${admin_user}</stringProp>
  80229. <stringProp name="Argument.metadata">=</stringProp>
  80230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80231. <stringProp name="Argument.name">login[username]</stringProp>
  80232. </elementProp>
  80233. </collectionProp>
  80234. </elementProp>
  80235. <stringProp name="HTTPSampler.domain"/>
  80236. <stringProp name="HTTPSampler.port"/>
  80237. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  80238. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  80239. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  80240. <stringProp name="HTTPSampler.contentEncoding"/>
  80241. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  80242. <stringProp name="HTTPSampler.method">POST</stringProp>
  80243. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  80244. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  80245. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  80246. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  80247. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  80248. <boolProp name="HTTPSampler.monitor">false</boolProp>
  80249. <stringProp name="HTTPSampler.embedded_url_re"/>
  80250. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  80251. </HTTPSamplerProxy>
  80252. <hashTree>
  80253. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  80254. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80255. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  80256. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  80257. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80258. <stringProp name="RegexExtractor.default"/>
  80259. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80260. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  80261. <hashTree/>
  80262. </hashTree>
  80263. </hashTree>
  80264. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  80265. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  80266. </GenericController>
  80267. <hashTree>
  80268. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Customer Management" enabled="true">
  80269. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_customer_management/admin_customer_management.jmx</stringProp>
  80270. </TestFragmentController>
  80271. <hashTree>
  80272. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  80273. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  80274. <collectionProp name="Arguments.arguments"/>
  80275. </elementProp>
  80276. <stringProp name="HTTPSampler.domain"/>
  80277. <stringProp name="HTTPSampler.port"/>
  80278. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  80279. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  80280. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  80281. <stringProp name="HTTPSampler.contentEncoding"/>
  80282. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index</stringProp>
  80283. <stringProp name="HTTPSampler.method">GET</stringProp>
  80284. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  80285. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  80286. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  80287. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  80288. <boolProp name="HTTPSampler.monitor">false</boolProp>
  80289. <stringProp name="HTTPSampler.embedded_url_re"/>
  80290. </HTTPSamplerProxy>
  80291. <hashTree>
  80292. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  80293. <collectionProp name="HeaderManager.headers">
  80294. <elementProp name="Accept-Language" elementType="Header">
  80295. <stringProp name="Header.name">Accept-Language</stringProp>
  80296. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  80297. </elementProp>
  80298. <elementProp name="Accept" elementType="Header">
  80299. <stringProp name="Header.name">Accept</stringProp>
  80300. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  80301. </elementProp>
  80302. <elementProp name="User-Agent" elementType="Header">
  80303. <stringProp name="Header.name">User-Agent</stringProp>
  80304. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  80305. </elementProp>
  80306. <elementProp name="Accept-Encoding" elementType="Header">
  80307. <stringProp name="Header.name">Accept-Encoding</stringProp>
  80308. <stringProp name="Header.value">gzip, deflate</stringProp>
  80309. </elementProp>
  80310. </collectionProp>
  80311. </HeaderManager>
  80312. <hashTree/>
  80313. </hashTree>
  80314. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Render" enabled="true">
  80315. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  80316. <collectionProp name="Arguments.arguments">
  80317. <elementProp name="namespace" elementType="HTTPArgument">
  80318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80319. <stringProp name="Argument.value">customer_listing</stringProp>
  80320. <stringProp name="Argument.metadata">=</stringProp>
  80321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80322. <stringProp name="Argument.name">namespace</stringProp>
  80323. </elementProp>
  80324. <elementProp name="search" elementType="HTTPArgument">
  80325. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80326. <stringProp name="Argument.value"/>
  80327. <stringProp name="Argument.metadata">=</stringProp>
  80328. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80329. <stringProp name="Argument.name">search</stringProp>
  80330. </elementProp>
  80331. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  80332. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80333. <stringProp name="Argument.value">true</stringProp>
  80334. <stringProp name="Argument.metadata">=</stringProp>
  80335. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80336. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  80337. </elementProp>
  80338. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  80339. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80340. <stringProp name="Argument.value">20</stringProp>
  80341. <stringProp name="Argument.metadata">=</stringProp>
  80342. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80343. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  80344. </elementProp>
  80345. <elementProp name="paging[current]" elementType="HTTPArgument">
  80346. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80347. <stringProp name="Argument.value">1</stringProp>
  80348. <stringProp name="Argument.metadata">=</stringProp>
  80349. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80350. <stringProp name="Argument.name">paging[current]</stringProp>
  80351. </elementProp>
  80352. <elementProp name="sorting[field]" elementType="HTTPArgument">
  80353. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80354. <stringProp name="Argument.value">entity_id</stringProp>
  80355. <stringProp name="Argument.metadata">=</stringProp>
  80356. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80357. <stringProp name="Argument.name">sorting[field]</stringProp>
  80358. </elementProp>
  80359. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  80360. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80361. <stringProp name="Argument.value">asc</stringProp>
  80362. <stringProp name="Argument.metadata">=</stringProp>
  80363. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80364. <stringProp name="Argument.name">sorting[direction]</stringProp>
  80365. </elementProp>
  80366. <elementProp name="isAjax" elementType="HTTPArgument">
  80367. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80368. <stringProp name="Argument.value">true</stringProp>
  80369. <stringProp name="Argument.metadata">=</stringProp>
  80370. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80371. <stringProp name="Argument.name">isAjax</stringProp>
  80372. </elementProp>
  80373. </collectionProp>
  80374. </elementProp>
  80375. <stringProp name="HTTPSampler.domain"/>
  80376. <stringProp name="HTTPSampler.port"/>
  80377. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  80378. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  80379. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  80380. <stringProp name="HTTPSampler.contentEncoding"/>
  80381. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  80382. <stringProp name="HTTPSampler.method">GET</stringProp>
  80383. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  80384. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  80385. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  80386. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  80387. <boolProp name="HTTPSampler.monitor">false</boolProp>
  80388. <stringProp name="HTTPSampler.embedded_url_re"/>
  80389. </HTTPSamplerProxy>
  80390. <hashTree>
  80391. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  80392. <collectionProp name="HeaderManager.headers">
  80393. <elementProp name="" elementType="Header">
  80394. <stringProp name="Header.name">X-Requested-With</stringProp>
  80395. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  80396. </elementProp>
  80397. </collectionProp>
  80398. </HeaderManager>
  80399. <hashTree/>
  80400. </hashTree>
  80401. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Render" enabled="true">
  80402. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  80403. <collectionProp name="Arguments.arguments">
  80404. <elementProp name="namespace" elementType="HTTPArgument">
  80405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80406. <stringProp name="Argument.value">customer_listing</stringProp>
  80407. <stringProp name="Argument.metadata">=</stringProp>
  80408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80409. <stringProp name="Argument.name">namespace</stringProp>
  80410. </elementProp>
  80411. <elementProp name="search" elementType="HTTPArgument">
  80412. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80413. <stringProp name="Argument.value">Lastname</stringProp>
  80414. <stringProp name="Argument.metadata">=</stringProp>
  80415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80416. <stringProp name="Argument.name">search</stringProp>
  80417. </elementProp>
  80418. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  80419. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80420. <stringProp name="Argument.value">true</stringProp>
  80421. <stringProp name="Argument.metadata">=</stringProp>
  80422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80423. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  80424. </elementProp>
  80425. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  80426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80427. <stringProp name="Argument.value">20</stringProp>
  80428. <stringProp name="Argument.metadata">=</stringProp>
  80429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80430. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  80431. </elementProp>
  80432. <elementProp name="paging[current]" elementType="HTTPArgument">
  80433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80434. <stringProp name="Argument.value">1</stringProp>
  80435. <stringProp name="Argument.metadata">=</stringProp>
  80436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80437. <stringProp name="Argument.name">paging[current]</stringProp>
  80438. </elementProp>
  80439. <elementProp name="sorting[field]" elementType="HTTPArgument">
  80440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80441. <stringProp name="Argument.value">entity_id</stringProp>
  80442. <stringProp name="Argument.metadata">=</stringProp>
  80443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80444. <stringProp name="Argument.name">sorting[field]</stringProp>
  80445. </elementProp>
  80446. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  80447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80448. <stringProp name="Argument.value">asc</stringProp>
  80449. <stringProp name="Argument.metadata">=</stringProp>
  80450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80451. <stringProp name="Argument.name">sorting[direction]</stringProp>
  80452. </elementProp>
  80453. <elementProp name="isAjax" elementType="HTTPArgument">
  80454. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  80455. <stringProp name="Argument.value">true</stringProp>
  80456. <stringProp name="Argument.metadata">=</stringProp>
  80457. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  80458. <stringProp name="Argument.name">isAjax</stringProp>
  80459. </elementProp>
  80460. </collectionProp>
  80461. </elementProp>
  80462. <stringProp name="HTTPSampler.domain"/>
  80463. <stringProp name="HTTPSampler.port"/>
  80464. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  80465. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  80466. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  80467. <stringProp name="HTTPSampler.contentEncoding"/>
  80468. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  80469. <stringProp name="HTTPSampler.method">GET</stringProp>
  80470. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  80471. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  80472. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  80473. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  80474. <boolProp name="HTTPSampler.monitor">false</boolProp>
  80475. <stringProp name="HTTPSampler.embedded_url_re"/>
  80476. </HTTPSamplerProxy>
  80477. <hashTree>
  80478. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  80479. <collectionProp name="HeaderManager.headers">
  80480. <elementProp name="" elementType="Header">
  80481. <stringProp name="Header.name">X-Requested-With</stringProp>
  80482. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  80483. </elementProp>
  80484. </collectionProp>
  80485. </HeaderManager>
  80486. <hashTree/>
  80487. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer edit url" enabled="true">
  80488. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80489. <stringProp name="RegexExtractor.refname">customer_edit_url_path</stringProp>
  80490. <stringProp name="RegexExtractor.regex">actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/",</stringProp>
  80491. <stringProp name="RegexExtractor.template">/customer/index/edit/id/$2$/</stringProp>
  80492. <stringProp name="RegexExtractor.default"/>
  80493. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80494. </RegexExtractor>
  80495. <hashTree/>
  80496. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer edit url" enabled="true">
  80497. <collectionProp name="Asserion.test_strings">
  80498. <stringProp name="2845929">^.+$</stringProp>
  80499. </collectionProp>
  80500. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80501. <boolProp name="Assertion.assume_success">false</boolProp>
  80502. <intProp name="Assertion.test_type">1</intProp>
  80503. <stringProp name="Assertion.scope">variable</stringProp>
  80504. <stringProp name="Scope.variable">customer_edit_url_path</stringProp>
  80505. </ResponseAssertion>
  80506. <hashTree/>
  80507. </hashTree>
  80508. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Customer" enabled="true">
  80509. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  80510. <collectionProp name="Arguments.arguments"/>
  80511. </elementProp>
  80512. <stringProp name="HTTPSampler.domain"/>
  80513. <stringProp name="HTTPSampler.port"/>
  80514. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  80515. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  80516. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  80517. <stringProp name="HTTPSampler.contentEncoding"/>
  80518. <stringProp name="HTTPSampler.path">${base_path}${admin_path}${customer_edit_url_path}</stringProp>
  80519. <stringProp name="HTTPSampler.method">GET</stringProp>
  80520. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  80521. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  80522. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  80523. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  80524. <boolProp name="HTTPSampler.monitor">false</boolProp>
  80525. <stringProp name="HTTPSampler.embedded_url_re"/>
  80526. </HTTPSamplerProxy>
  80527. <hashTree>
  80528. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert edit customer page" enabled="true">
  80529. <collectionProp name="Asserion.test_strings">
  80530. <stringProp name="-1422614550">Customer Information</stringProp>
  80531. </collectionProp>
  80532. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80533. <boolProp name="Assertion.assume_success">false</boolProp>
  80534. <intProp name="Assertion.test_type">2</intProp>
  80535. </ResponseAssertion>
  80536. <hashTree/>
  80537. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer entity_id" enabled="true">
  80538. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80539. <stringProp name="RegexExtractor.refname">admin_customer_entity_id</stringProp>
  80540. <stringProp name="RegexExtractor.regex">"entity_id":"(\d+)"</stringProp>
  80541. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80542. <stringProp name="RegexExtractor.default"/>
  80543. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80544. </RegexExtractor>
  80545. <hashTree/>
  80546. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract website_id" enabled="true">
  80547. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80548. <stringProp name="RegexExtractor.refname">admin_customer_website_id</stringProp>
  80549. <stringProp name="RegexExtractor.regex">"website_id":"(\d+)"</stringProp>
  80550. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80551. <stringProp name="RegexExtractor.default"/>
  80552. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80553. </RegexExtractor>
  80554. <hashTree/>
  80555. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer firstname" enabled="true">
  80556. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80557. <stringProp name="RegexExtractor.refname">admin_customer_firstname</stringProp>
  80558. <stringProp name="RegexExtractor.regex">"firstname":"([^"]+)"</stringProp>
  80559. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80560. <stringProp name="RegexExtractor.default"/>
  80561. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80562. </RegexExtractor>
  80563. <hashTree/>
  80564. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer lastname" enabled="true">
  80565. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80566. <stringProp name="RegexExtractor.refname">admin_customer_lastname</stringProp>
  80567. <stringProp name="RegexExtractor.regex">"lastname":"([^"]+)"</stringProp>
  80568. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80569. <stringProp name="RegexExtractor.default"/>
  80570. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80571. </RegexExtractor>
  80572. <hashTree/>
  80573. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer email" enabled="true">
  80574. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80575. <stringProp name="RegexExtractor.refname">admin_customer_email</stringProp>
  80576. <stringProp name="RegexExtractor.regex">"email":"([^\@]+@[^.]+.[^"]+)"</stringProp>
  80577. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80578. <stringProp name="RegexExtractor.default"/>
  80579. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80580. </RegexExtractor>
  80581. <hashTree/>
  80582. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract group_id" enabled="true">
  80583. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80584. <stringProp name="RegexExtractor.refname">admin_customer_group_id</stringProp>
  80585. <stringProp name="RegexExtractor.regex">"group_id":"(\d+)"</stringProp>
  80586. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80587. <stringProp name="RegexExtractor.default"/>
  80588. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80589. </RegexExtractor>
  80590. <hashTree/>
  80591. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract store_id" enabled="true">
  80592. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80593. <stringProp name="RegexExtractor.refname">admin_customer_store_id</stringProp>
  80594. <stringProp name="RegexExtractor.regex">"store_id":"(\d+)"</stringProp>
  80595. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80596. <stringProp name="RegexExtractor.default"/>
  80597. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80598. </RegexExtractor>
  80599. <hashTree/>
  80600. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extact created_at" enabled="true">
  80601. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80602. <stringProp name="RegexExtractor.refname">admin_customer_created_at</stringProp>
  80603. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  80604. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80605. <stringProp name="RegexExtractor.default"/>
  80606. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80607. </RegexExtractor>
  80608. <hashTree/>
  80609. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract updated_at" enabled="true">
  80610. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80611. <stringProp name="RegexExtractor.refname">admin_customer_updated_at</stringProp>
  80612. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  80613. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80614. <stringProp name="RegexExtractor.default"/>
  80615. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80616. </RegexExtractor>
  80617. <hashTree/>
  80618. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract is_active" enabled="true">
  80619. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80620. <stringProp name="RegexExtractor.refname">admin_customer_is_active</stringProp>
  80621. <stringProp name="RegexExtractor.regex">"is_active":"(\d+)"</stringProp>
  80622. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80623. <stringProp name="RegexExtractor.default"/>
  80624. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80625. </RegexExtractor>
  80626. <hashTree/>
  80627. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract disable_auto_group_change" enabled="true">
  80628. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80629. <stringProp name="RegexExtractor.refname">admin_customer_disable_auto_group_change</stringProp>
  80630. <stringProp name="RegexExtractor.regex">"disable_auto_group_change":"(\d+)"</stringProp>
  80631. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80632. <stringProp name="RegexExtractor.default"/>
  80633. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80634. </RegexExtractor>
  80635. <hashTree/>
  80636. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract created_in" enabled="true">
  80637. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80638. <stringProp name="RegexExtractor.refname">admin_customer_created_in</stringProp>
  80639. <stringProp name="RegexExtractor.regex">"created_in":"([^"]+)"</stringProp>
  80640. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80641. <stringProp name="RegexExtractor.default"/>
  80642. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80643. </RegexExtractor>
  80644. <hashTree/>
  80645. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract dob" enabled="true">
  80646. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80647. <stringProp name="RegexExtractor.refname">admin_customer_dob</stringProp>
  80648. <stringProp name="RegexExtractor.regex">"dob":"(\d+)-(\d+)-(\d+)"</stringProp>
  80649. <stringProp name="RegexExtractor.template">$2$/$3$/$1$</stringProp>
  80650. <stringProp name="RegexExtractor.default"/>
  80651. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80652. </RegexExtractor>
  80653. <hashTree/>
  80654. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_billing" enabled="true">
  80655. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80656. <stringProp name="RegexExtractor.refname">admin_customer_default_billing</stringProp>
  80657. <stringProp name="RegexExtractor.regex">"default_billing":"(\d+)"</stringProp>
  80658. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80659. <stringProp name="RegexExtractor.default"/>
  80660. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80661. </RegexExtractor>
  80662. <hashTree/>
  80663. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_shipping" enabled="true">
  80664. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80665. <stringProp name="RegexExtractor.refname">admin_customer_default_shipping</stringProp>
  80666. <stringProp name="RegexExtractor.regex">"default_shipping":"(\d+)"</stringProp>
  80667. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80668. <stringProp name="RegexExtractor.default"/>
  80669. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80670. </RegexExtractor>
  80671. <hashTree/>
  80672. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract gender" enabled="true">
  80673. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80674. <stringProp name="RegexExtractor.refname">admin_customer_gender</stringProp>
  80675. <stringProp name="RegexExtractor.regex">"gender":"(\d+)"</stringProp>
  80676. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80677. <stringProp name="RegexExtractor.default"/>
  80678. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80679. </RegexExtractor>
  80680. <hashTree/>
  80681. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract failures_num" enabled="true">
  80682. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80683. <stringProp name="RegexExtractor.refname">admin_customer_failures_num</stringProp>
  80684. <stringProp name="RegexExtractor.regex">"failures_num":"(\d+)"</stringProp>
  80685. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80686. <stringProp name="RegexExtractor.default"/>
  80687. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80688. </RegexExtractor>
  80689. <hashTree/>
  80690. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_entity_id" enabled="true">
  80691. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80692. <stringProp name="RegexExtractor.refname">admin_customer_address_entity_id</stringProp>
  80693. <stringProp name="RegexExtractor.regex">_address":\{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}"</stringProp>
  80694. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80695. <stringProp name="RegexExtractor.default"/>
  80696. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80697. </RegexExtractor>
  80698. <hashTree/>
  80699. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_created_at" enabled="true">
  80700. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80701. <stringProp name="RegexExtractor.refname">admin_customer_address_created_at</stringProp>
  80702. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)"</stringProp>
  80703. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80704. <stringProp name="RegexExtractor.default"/>
  80705. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80706. </RegexExtractor>
  80707. <hashTree/>
  80708. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_updated_at" enabled="true">
  80709. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80710. <stringProp name="RegexExtractor.refname">admin_customer_address_updated_at</stringProp>
  80711. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)"</stringProp>
  80712. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80713. <stringProp name="RegexExtractor.default"/>
  80714. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80715. </RegexExtractor>
  80716. <hashTree/>
  80717. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_is_active" enabled="true">
  80718. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80719. <stringProp name="RegexExtractor.refname">admin_customer_address_is_active</stringProp>
  80720. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)"</stringProp>
  80721. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80722. <stringProp name="RegexExtractor.default"/>
  80723. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80724. </RegexExtractor>
  80725. <hashTree/>
  80726. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_city" enabled="true">
  80727. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80728. <stringProp name="RegexExtractor.refname">admin_customer_address_city</stringProp>
  80729. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)"</stringProp>
  80730. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80731. <stringProp name="RegexExtractor.default"/>
  80732. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80733. </RegexExtractor>
  80734. <hashTree/>
  80735. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_country_id" enabled="true">
  80736. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80737. <stringProp name="RegexExtractor.refname">admin_customer_address_country_id</stringProp>
  80738. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)"</stringProp>
  80739. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80740. <stringProp name="RegexExtractor.default"/>
  80741. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80742. </RegexExtractor>
  80743. <hashTree/>
  80744. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_firstname" enabled="true">
  80745. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80746. <stringProp name="RegexExtractor.refname">admin_customer_address_firstname</stringProp>
  80747. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)"</stringProp>
  80748. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80749. <stringProp name="RegexExtractor.default"/>
  80750. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80751. </RegexExtractor>
  80752. <hashTree/>
  80753. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_lastname" enabled="true">
  80754. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80755. <stringProp name="RegexExtractor.refname">admin_customer_address_lastname</stringProp>
  80756. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)"</stringProp>
  80757. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80758. <stringProp name="RegexExtractor.default"/>
  80759. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80760. </RegexExtractor>
  80761. <hashTree/>
  80762. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_postcode" enabled="true">
  80763. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80764. <stringProp name="RegexExtractor.refname">admin_customer_address_postcode</stringProp>
  80765. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)"</stringProp>
  80766. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80767. <stringProp name="RegexExtractor.default"/>
  80768. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80769. </RegexExtractor>
  80770. <hashTree/>
  80771. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region" enabled="true">
  80772. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80773. <stringProp name="RegexExtractor.refname">admin_customer_address_region</stringProp>
  80774. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)"</stringProp>
  80775. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80776. <stringProp name="RegexExtractor.default"/>
  80777. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80778. </RegexExtractor>
  80779. <hashTree/>
  80780. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region_id" enabled="true">
  80781. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80782. <stringProp name="RegexExtractor.refname">admin_customer_address_region_id</stringProp>
  80783. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)"</stringProp>
  80784. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80785. <stringProp name="RegexExtractor.default"/>
  80786. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80787. </RegexExtractor>
  80788. <hashTree/>
  80789. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address street" enabled="true">
  80790. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80791. <stringProp name="RegexExtractor.refname">admin_customer_address_street</stringProp>
  80792. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\]</stringProp>
  80793. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80794. <stringProp name="RegexExtractor.default"/>
  80795. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80796. </RegexExtractor>
  80797. <hashTree/>
  80798. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_telephone" enabled="true">
  80799. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80800. <stringProp name="RegexExtractor.refname">admin_customer_address_telephone</stringProp>
  80801. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)"</stringProp>
  80802. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80803. <stringProp name="RegexExtractor.default"/>
  80804. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80805. </RegexExtractor>
  80806. <hashTree/>
  80807. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_customer_id" enabled="true">
  80808. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  80809. <stringProp name="RegexExtractor.refname">admin_customer_address_customer_id</stringProp>
  80810. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)"</stringProp>
  80811. <stringProp name="RegexExtractor.template">$1$</stringProp>
  80812. <stringProp name="RegexExtractor.default"/>
  80813. <stringProp name="RegexExtractor.match_number">1</stringProp>
  80814. </RegexExtractor>
  80815. <hashTree/>
  80816. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer entity_id" enabled="true">
  80817. <collectionProp name="Asserion.test_strings">
  80818. <stringProp name="89649215">^\d+$</stringProp>
  80819. </collectionProp>
  80820. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80821. <boolProp name="Assertion.assume_success">false</boolProp>
  80822. <intProp name="Assertion.test_type">1</intProp>
  80823. <stringProp name="Assertion.scope">variable</stringProp>
  80824. <stringProp name="Scope.variable">admin_customer_entity_id</stringProp>
  80825. </ResponseAssertion>
  80826. <hashTree/>
  80827. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert website_id" enabled="true">
  80828. <collectionProp name="Asserion.test_strings">
  80829. <stringProp name="89649215">^\d+$</stringProp>
  80830. </collectionProp>
  80831. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80832. <boolProp name="Assertion.assume_success">false</boolProp>
  80833. <intProp name="Assertion.test_type">1</intProp>
  80834. <stringProp name="Assertion.scope">variable</stringProp>
  80835. <stringProp name="Scope.variable">admin_customer_website_id</stringProp>
  80836. </ResponseAssertion>
  80837. <hashTree/>
  80838. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer firstname" enabled="true">
  80839. <collectionProp name="Asserion.test_strings">
  80840. <stringProp name="2845929">^.+$</stringProp>
  80841. </collectionProp>
  80842. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80843. <boolProp name="Assertion.assume_success">false</boolProp>
  80844. <intProp name="Assertion.test_type">1</intProp>
  80845. <stringProp name="Assertion.scope">variable</stringProp>
  80846. <stringProp name="Scope.variable">admin_customer_firstname</stringProp>
  80847. </ResponseAssertion>
  80848. <hashTree/>
  80849. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer lastname" enabled="true">
  80850. <collectionProp name="Asserion.test_strings">
  80851. <stringProp name="2845929">^.+$</stringProp>
  80852. </collectionProp>
  80853. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80854. <boolProp name="Assertion.assume_success">false</boolProp>
  80855. <intProp name="Assertion.test_type">1</intProp>
  80856. <stringProp name="Assertion.scope">variable</stringProp>
  80857. <stringProp name="Scope.variable">admin_customer_lastname</stringProp>
  80858. </ResponseAssertion>
  80859. <hashTree/>
  80860. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer email" enabled="true">
  80861. <collectionProp name="Asserion.test_strings">
  80862. <stringProp name="2845929">^.+$</stringProp>
  80863. </collectionProp>
  80864. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80865. <boolProp name="Assertion.assume_success">false</boolProp>
  80866. <intProp name="Assertion.test_type">1</intProp>
  80867. <stringProp name="Assertion.scope">variable</stringProp>
  80868. <stringProp name="Scope.variable">admin_customer_email</stringProp>
  80869. </ResponseAssertion>
  80870. <hashTree/>
  80871. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer group_id" enabled="true">
  80872. <collectionProp name="Asserion.test_strings">
  80873. <stringProp name="89649215">^\d+$</stringProp>
  80874. </collectionProp>
  80875. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80876. <boolProp name="Assertion.assume_success">false</boolProp>
  80877. <intProp name="Assertion.test_type">1</intProp>
  80878. <stringProp name="Assertion.scope">variable</stringProp>
  80879. <stringProp name="Scope.variable">admin_customer_group_id</stringProp>
  80880. </ResponseAssertion>
  80881. <hashTree/>
  80882. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer store_id" enabled="true">
  80883. <collectionProp name="Asserion.test_strings">
  80884. <stringProp name="89649215">^\d+$</stringProp>
  80885. </collectionProp>
  80886. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80887. <boolProp name="Assertion.assume_success">false</boolProp>
  80888. <intProp name="Assertion.test_type">1</intProp>
  80889. <stringProp name="Assertion.scope">variable</stringProp>
  80890. <stringProp name="Scope.variable">admin_customer_store_id</stringProp>
  80891. </ResponseAssertion>
  80892. <hashTree/>
  80893. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_at" enabled="true">
  80894. <collectionProp name="Asserion.test_strings">
  80895. <stringProp name="2845929">^.+$</stringProp>
  80896. </collectionProp>
  80897. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80898. <boolProp name="Assertion.assume_success">false</boolProp>
  80899. <intProp name="Assertion.test_type">1</intProp>
  80900. <stringProp name="Assertion.scope">variable</stringProp>
  80901. <stringProp name="Scope.variable">admin_customer_created_at</stringProp>
  80902. </ResponseAssertion>
  80903. <hashTree/>
  80904. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer updated_at" enabled="true">
  80905. <collectionProp name="Asserion.test_strings">
  80906. <stringProp name="2845929">^.+$</stringProp>
  80907. </collectionProp>
  80908. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80909. <boolProp name="Assertion.assume_success">false</boolProp>
  80910. <intProp name="Assertion.test_type">1</intProp>
  80911. <stringProp name="Assertion.scope">variable</stringProp>
  80912. <stringProp name="Scope.variable">admin_customer_updated_at</stringProp>
  80913. </ResponseAssertion>
  80914. <hashTree/>
  80915. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer is_active" enabled="true">
  80916. <collectionProp name="Asserion.test_strings">
  80917. <stringProp name="89649215">^\d+$</stringProp>
  80918. </collectionProp>
  80919. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80920. <boolProp name="Assertion.assume_success">false</boolProp>
  80921. <intProp name="Assertion.test_type">1</intProp>
  80922. <stringProp name="Assertion.scope">variable</stringProp>
  80923. <stringProp name="Scope.variable">admin_customer_is_active</stringProp>
  80924. </ResponseAssertion>
  80925. <hashTree/>
  80926. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer disable_auto_group_change" enabled="true">
  80927. <collectionProp name="Asserion.test_strings">
  80928. <stringProp name="89649215">^\d+$</stringProp>
  80929. </collectionProp>
  80930. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80931. <boolProp name="Assertion.assume_success">false</boolProp>
  80932. <intProp name="Assertion.test_type">1</intProp>
  80933. <stringProp name="Assertion.scope">variable</stringProp>
  80934. <stringProp name="Scope.variable">admin_customer_disable_auto_group_change</stringProp>
  80935. </ResponseAssertion>
  80936. <hashTree/>
  80937. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_in" enabled="true">
  80938. <collectionProp name="Asserion.test_strings">
  80939. <stringProp name="2845929">^.+$</stringProp>
  80940. </collectionProp>
  80941. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80942. <boolProp name="Assertion.assume_success">false</boolProp>
  80943. <intProp name="Assertion.test_type">1</intProp>
  80944. <stringProp name="Assertion.scope">variable</stringProp>
  80945. <stringProp name="Scope.variable">admin_customer_created_in</stringProp>
  80946. </ResponseAssertion>
  80947. <hashTree/>
  80948. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer dob" enabled="true">
  80949. <collectionProp name="Asserion.test_strings">
  80950. <stringProp name="221072919">^\d+/\d+/\d+$</stringProp>
  80951. </collectionProp>
  80952. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80953. <boolProp name="Assertion.assume_success">false</boolProp>
  80954. <intProp name="Assertion.test_type">1</intProp>
  80955. <stringProp name="Assertion.scope">variable</stringProp>
  80956. <stringProp name="Scope.variable">admin_customer_dob</stringProp>
  80957. </ResponseAssertion>
  80958. <hashTree/>
  80959. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_billing" enabled="true">
  80960. <collectionProp name="Asserion.test_strings">
  80961. <stringProp name="89649215">^\d+$</stringProp>
  80962. </collectionProp>
  80963. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80964. <boolProp name="Assertion.assume_success">false</boolProp>
  80965. <intProp name="Assertion.test_type">1</intProp>
  80966. <stringProp name="Assertion.scope">variable</stringProp>
  80967. <stringProp name="Scope.variable">admin_customer_default_billing</stringProp>
  80968. </ResponseAssertion>
  80969. <hashTree/>
  80970. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_shipping" enabled="true">
  80971. <collectionProp name="Asserion.test_strings">
  80972. <stringProp name="89649215">^\d+$</stringProp>
  80973. </collectionProp>
  80974. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80975. <boolProp name="Assertion.assume_success">false</boolProp>
  80976. <intProp name="Assertion.test_type">1</intProp>
  80977. <stringProp name="Assertion.scope">variable</stringProp>
  80978. <stringProp name="Scope.variable">admin_customer_default_shipping</stringProp>
  80979. </ResponseAssertion>
  80980. <hashTree/>
  80981. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer gender" enabled="true">
  80982. <collectionProp name="Asserion.test_strings">
  80983. <stringProp name="89649215">^\d+$</stringProp>
  80984. </collectionProp>
  80985. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80986. <boolProp name="Assertion.assume_success">false</boolProp>
  80987. <intProp name="Assertion.test_type">1</intProp>
  80988. <stringProp name="Assertion.scope">variable</stringProp>
  80989. <stringProp name="Scope.variable">admin_customer_gender</stringProp>
  80990. </ResponseAssertion>
  80991. <hashTree/>
  80992. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer failures_num" enabled="true">
  80993. <collectionProp name="Asserion.test_strings">
  80994. <stringProp name="89649215">^\d+$</stringProp>
  80995. </collectionProp>
  80996. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  80997. <boolProp name="Assertion.assume_success">false</boolProp>
  80998. <intProp name="Assertion.test_type">1</intProp>
  80999. <stringProp name="Assertion.scope">variable</stringProp>
  81000. <stringProp name="Scope.variable">admin_customer_failures_num</stringProp>
  81001. </ResponseAssertion>
  81002. <hashTree/>
  81003. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_entity_id" enabled="true">
  81004. <collectionProp name="Asserion.test_strings">
  81005. <stringProp name="89649215">^\d+$</stringProp>
  81006. </collectionProp>
  81007. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81008. <boolProp name="Assertion.assume_success">false</boolProp>
  81009. <intProp name="Assertion.test_type">1</intProp>
  81010. <stringProp name="Assertion.scope">variable</stringProp>
  81011. <stringProp name="Scope.variable">admin_customer_address_entity_id</stringProp>
  81012. </ResponseAssertion>
  81013. <hashTree/>
  81014. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_created_at" enabled="true">
  81015. <collectionProp name="Asserion.test_strings">
  81016. <stringProp name="2845929">^.+$</stringProp>
  81017. </collectionProp>
  81018. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81019. <boolProp name="Assertion.assume_success">false</boolProp>
  81020. <intProp name="Assertion.test_type">1</intProp>
  81021. <stringProp name="Assertion.scope">variable</stringProp>
  81022. <stringProp name="Scope.variable">admin_customer_address_created_at</stringProp>
  81023. </ResponseAssertion>
  81024. <hashTree/>
  81025. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_updated_at" enabled="true">
  81026. <collectionProp name="Asserion.test_strings">
  81027. <stringProp name="2845929">^.+$</stringProp>
  81028. </collectionProp>
  81029. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81030. <boolProp name="Assertion.assume_success">false</boolProp>
  81031. <intProp name="Assertion.test_type">1</intProp>
  81032. <stringProp name="Assertion.scope">variable</stringProp>
  81033. <stringProp name="Scope.variable">admin_customer_address_updated_at</stringProp>
  81034. </ResponseAssertion>
  81035. <hashTree/>
  81036. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_is_active" enabled="true">
  81037. <collectionProp name="Asserion.test_strings">
  81038. <stringProp name="89649215">^\d+$</stringProp>
  81039. </collectionProp>
  81040. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81041. <boolProp name="Assertion.assume_success">false</boolProp>
  81042. <intProp name="Assertion.test_type">1</intProp>
  81043. <stringProp name="Assertion.scope">variable</stringProp>
  81044. <stringProp name="Scope.variable">admin_customer_address_is_active</stringProp>
  81045. </ResponseAssertion>
  81046. <hashTree/>
  81047. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_city" enabled="true">
  81048. <collectionProp name="Asserion.test_strings">
  81049. <stringProp name="2845929">^.+$</stringProp>
  81050. </collectionProp>
  81051. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81052. <boolProp name="Assertion.assume_success">false</boolProp>
  81053. <intProp name="Assertion.test_type">1</intProp>
  81054. <stringProp name="Assertion.scope">variable</stringProp>
  81055. <stringProp name="Scope.variable">admin_customer_address_city</stringProp>
  81056. </ResponseAssertion>
  81057. <hashTree/>
  81058. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_country_id" enabled="true">
  81059. <collectionProp name="Asserion.test_strings">
  81060. <stringProp name="2845929">^.+$</stringProp>
  81061. </collectionProp>
  81062. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81063. <boolProp name="Assertion.assume_success">false</boolProp>
  81064. <intProp name="Assertion.test_type">1</intProp>
  81065. <stringProp name="Assertion.scope">variable</stringProp>
  81066. <stringProp name="Scope.variable">admin_customer_address_country_id</stringProp>
  81067. </ResponseAssertion>
  81068. <hashTree/>
  81069. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_firstname" enabled="true">
  81070. <collectionProp name="Asserion.test_strings">
  81071. <stringProp name="2845929">^.+$</stringProp>
  81072. </collectionProp>
  81073. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81074. <boolProp name="Assertion.assume_success">false</boolProp>
  81075. <intProp name="Assertion.test_type">1</intProp>
  81076. <stringProp name="Assertion.scope">variable</stringProp>
  81077. <stringProp name="Scope.variable">admin_customer_address_firstname</stringProp>
  81078. </ResponseAssertion>
  81079. <hashTree/>
  81080. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_lastname" enabled="true">
  81081. <collectionProp name="Asserion.test_strings">
  81082. <stringProp name="2845929">^.+$</stringProp>
  81083. </collectionProp>
  81084. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81085. <boolProp name="Assertion.assume_success">false</boolProp>
  81086. <intProp name="Assertion.test_type">1</intProp>
  81087. <stringProp name="Assertion.scope">variable</stringProp>
  81088. <stringProp name="Scope.variable">admin_customer_address_lastname</stringProp>
  81089. </ResponseAssertion>
  81090. <hashTree/>
  81091. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_postcode" enabled="true">
  81092. <collectionProp name="Asserion.test_strings">
  81093. <stringProp name="2845929">^.+$</stringProp>
  81094. </collectionProp>
  81095. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81096. <boolProp name="Assertion.assume_success">false</boolProp>
  81097. <intProp name="Assertion.test_type">1</intProp>
  81098. <stringProp name="Assertion.scope">variable</stringProp>
  81099. <stringProp name="Scope.variable">admin_customer_address_postcode</stringProp>
  81100. </ResponseAssertion>
  81101. <hashTree/>
  81102. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region" enabled="true">
  81103. <collectionProp name="Asserion.test_strings">
  81104. <stringProp name="2845929">^.+$</stringProp>
  81105. </collectionProp>
  81106. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81107. <boolProp name="Assertion.assume_success">false</boolProp>
  81108. <intProp name="Assertion.test_type">1</intProp>
  81109. <stringProp name="Assertion.scope">variable</stringProp>
  81110. <stringProp name="Scope.variable">admin_customer_address_region</stringProp>
  81111. </ResponseAssertion>
  81112. <hashTree/>
  81113. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region_id" enabled="true">
  81114. <collectionProp name="Asserion.test_strings">
  81115. <stringProp name="89649215">^\d+$</stringProp>
  81116. </collectionProp>
  81117. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81118. <boolProp name="Assertion.assume_success">false</boolProp>
  81119. <intProp name="Assertion.test_type">1</intProp>
  81120. <stringProp name="Assertion.scope">variable</stringProp>
  81121. <stringProp name="Scope.variable">admin_customer_address_region_id</stringProp>
  81122. </ResponseAssertion>
  81123. <hashTree/>
  81124. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_street" enabled="true">
  81125. <collectionProp name="Asserion.test_strings">
  81126. <stringProp name="2845929">^.+$</stringProp>
  81127. </collectionProp>
  81128. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81129. <boolProp name="Assertion.assume_success">false</boolProp>
  81130. <intProp name="Assertion.test_type">1</intProp>
  81131. <stringProp name="Assertion.scope">variable</stringProp>
  81132. <stringProp name="Scope.variable">admin_customer_address_street</stringProp>
  81133. </ResponseAssertion>
  81134. <hashTree/>
  81135. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_telephone" enabled="true">
  81136. <collectionProp name="Asserion.test_strings">
  81137. <stringProp name="2845929">^.+$</stringProp>
  81138. </collectionProp>
  81139. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81140. <boolProp name="Assertion.assume_success">false</boolProp>
  81141. <intProp name="Assertion.test_type">1</intProp>
  81142. <stringProp name="Assertion.scope">variable</stringProp>
  81143. <stringProp name="Scope.variable">admin_customer_address_telephone</stringProp>
  81144. </ResponseAssertion>
  81145. <hashTree/>
  81146. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_customer_id" enabled="true">
  81147. <collectionProp name="Asserion.test_strings">
  81148. <stringProp name="89649215">^\d+$</stringProp>
  81149. </collectionProp>
  81150. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  81151. <boolProp name="Assertion.assume_success">false</boolProp>
  81152. <intProp name="Assertion.test_type">1</intProp>
  81153. <stringProp name="Assertion.scope">variable</stringProp>
  81154. <stringProp name="Scope.variable">admin_customer_address_customer_id</stringProp>
  81155. </ResponseAssertion>
  81156. <hashTree/>
  81157. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  81158. <collectionProp name="HeaderManager.headers">
  81159. <elementProp name="Accept-Language" elementType="Header">
  81160. <stringProp name="Header.name">Accept-Language</stringProp>
  81161. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  81162. </elementProp>
  81163. <elementProp name="Accept" elementType="Header">
  81164. <stringProp name="Header.name">Accept</stringProp>
  81165. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  81166. </elementProp>
  81167. <elementProp name="User-Agent" elementType="Header">
  81168. <stringProp name="Header.name">User-Agent</stringProp>
  81169. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  81170. </elementProp>
  81171. <elementProp name="Accept-Encoding" elementType="Header">
  81172. <stringProp name="Header.name">Accept-Encoding</stringProp>
  81173. <stringProp name="Header.value">gzip, deflate</stringProp>
  81174. </elementProp>
  81175. </collectionProp>
  81176. </HeaderManager>
  81177. <hashTree/>
  81178. </hashTree>
  81179. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Validate" enabled="true">
  81180. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  81181. <collectionProp name="Arguments.arguments">
  81182. <elementProp name="isAjax " elementType="HTTPArgument">
  81183. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81184. <stringProp name="Argument.value">true</stringProp>
  81185. <stringProp name="Argument.metadata">=</stringProp>
  81186. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81187. <stringProp name="Argument.name">isAjax </stringProp>
  81188. </elementProp>
  81189. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  81190. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81191. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  81192. <stringProp name="Argument.metadata">=</stringProp>
  81193. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81194. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  81195. </elementProp>
  81196. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  81197. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81198. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  81199. <stringProp name="Argument.metadata">=</stringProp>
  81200. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81201. <stringProp name="Argument.name">customer[website_id]</stringProp>
  81202. </elementProp>
  81203. <elementProp name="customer[email]" elementType="HTTPArgument">
  81204. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81205. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  81206. <stringProp name="Argument.metadata">=</stringProp>
  81207. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81208. <stringProp name="Argument.name">customer[email]</stringProp>
  81209. </elementProp>
  81210. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  81211. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81212. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  81213. <stringProp name="Argument.metadata">=</stringProp>
  81214. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81215. <stringProp name="Argument.name">customer[group_id]</stringProp>
  81216. </elementProp>
  81217. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  81218. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81219. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  81220. <stringProp name="Argument.metadata">=</stringProp>
  81221. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81222. <stringProp name="Argument.name">customer[store_id]</stringProp>
  81223. </elementProp>
  81224. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  81225. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81226. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  81227. <stringProp name="Argument.metadata">=</stringProp>
  81228. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81229. <stringProp name="Argument.name">customer[created_at]</stringProp>
  81230. </elementProp>
  81231. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  81232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81233. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  81234. <stringProp name="Argument.metadata">=</stringProp>
  81235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81236. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  81237. </elementProp>
  81238. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  81239. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81240. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  81241. <stringProp name="Argument.metadata">=</stringProp>
  81242. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81243. <stringProp name="Argument.name">customer[is_active]</stringProp>
  81244. </elementProp>
  81245. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  81246. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81247. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  81248. <stringProp name="Argument.metadata">=</stringProp>
  81249. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81250. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  81251. </elementProp>
  81252. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  81253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81254. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  81255. <stringProp name="Argument.metadata">=</stringProp>
  81256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81257. <stringProp name="Argument.name">customer[created_in]</stringProp>
  81258. </elementProp>
  81259. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  81260. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81261. <stringProp name="Argument.value"/>
  81262. <stringProp name="Argument.metadata">=</stringProp>
  81263. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81264. <stringProp name="Argument.name">customer[prefix]</stringProp>
  81265. </elementProp>
  81266. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  81267. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81268. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  81269. <stringProp name="Argument.metadata">=</stringProp>
  81270. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81271. <stringProp name="Argument.name">customer[firstname]</stringProp>
  81272. </elementProp>
  81273. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  81274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81275. <stringProp name="Argument.value"/>
  81276. <stringProp name="Argument.metadata">=</stringProp>
  81277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81278. <stringProp name="Argument.name">customer[middlename]</stringProp>
  81279. </elementProp>
  81280. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  81281. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81282. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  81283. <stringProp name="Argument.metadata">=</stringProp>
  81284. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81285. <stringProp name="Argument.name">customer[lastname]</stringProp>
  81286. </elementProp>
  81287. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  81288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81289. <stringProp name="Argument.value"/>
  81290. <stringProp name="Argument.metadata">=</stringProp>
  81291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81292. <stringProp name="Argument.name">customer[suffix]</stringProp>
  81293. </elementProp>
  81294. <elementProp name="customer[dob]" elementType="HTTPArgument">
  81295. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81296. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  81297. <stringProp name="Argument.metadata">=</stringProp>
  81298. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81299. <stringProp name="Argument.name">customer[dob]</stringProp>
  81300. </elementProp>
  81301. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  81302. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81303. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  81304. <stringProp name="Argument.metadata">=</stringProp>
  81305. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81306. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  81307. </elementProp>
  81308. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  81309. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81310. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  81311. <stringProp name="Argument.metadata">=</stringProp>
  81312. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81313. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  81314. </elementProp>
  81315. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  81316. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81317. <stringProp name="Argument.value"/>
  81318. <stringProp name="Argument.metadata">=</stringProp>
  81319. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81320. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  81321. </elementProp>
  81322. <elementProp name="customer[gender]" elementType="HTTPArgument">
  81323. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81324. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  81325. <stringProp name="Argument.metadata">=</stringProp>
  81326. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81327. <stringProp name="Argument.name">customer[gender]</stringProp>
  81328. </elementProp>
  81329. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  81330. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81331. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  81332. <stringProp name="Argument.metadata">=</stringProp>
  81333. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81334. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  81335. </elementProp>
  81336. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  81337. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81338. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  81339. <stringProp name="Argument.metadata">=</stringProp>
  81340. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81341. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  81342. </elementProp>
  81343. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  81344. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81345. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  81346. <stringProp name="Argument.metadata">=</stringProp>
  81347. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81348. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  81349. </elementProp>
  81350. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  81351. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81352. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  81353. <stringProp name="Argument.metadata">=</stringProp>
  81354. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81355. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  81356. </elementProp>
  81357. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  81358. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81359. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  81360. <stringProp name="Argument.metadata">=</stringProp>
  81361. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81362. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  81363. </elementProp>
  81364. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  81365. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81366. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  81367. <stringProp name="Argument.metadata">=</stringProp>
  81368. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81369. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  81370. </elementProp>
  81371. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  81372. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81373. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  81374. <stringProp name="Argument.metadata">=</stringProp>
  81375. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81376. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  81377. </elementProp>
  81378. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  81379. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81380. <stringProp name="Argument.value"/>
  81381. <stringProp name="Argument.metadata">=</stringProp>
  81382. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81383. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  81384. </elementProp>
  81385. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  81386. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81387. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  81388. <stringProp name="Argument.metadata">=</stringProp>
  81389. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81390. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  81391. </elementProp>
  81392. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  81393. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81394. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  81395. <stringProp name="Argument.metadata">=</stringProp>
  81396. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81397. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  81398. </elementProp>
  81399. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  81400. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81401. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  81402. <stringProp name="Argument.metadata">=</stringProp>
  81403. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81404. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  81405. </elementProp>
  81406. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  81407. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81408. <stringProp name="Argument.value"/>
  81409. <stringProp name="Argument.metadata">=</stringProp>
  81410. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81411. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  81412. </elementProp>
  81413. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  81414. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81415. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  81416. <stringProp name="Argument.metadata">=</stringProp>
  81417. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81418. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  81419. </elementProp>
  81420. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  81421. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81422. <stringProp name="Argument.value"/>
  81423. <stringProp name="Argument.metadata">=</stringProp>
  81424. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81425. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  81426. </elementProp>
  81427. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  81428. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81429. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  81430. <stringProp name="Argument.metadata">=</stringProp>
  81431. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81432. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  81433. </elementProp>
  81434. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  81435. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81436. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  81437. <stringProp name="Argument.metadata">=</stringProp>
  81438. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81439. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  81440. </elementProp>
  81441. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  81442. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81443. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  81444. <stringProp name="Argument.metadata">=</stringProp>
  81445. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81446. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  81447. </elementProp>
  81448. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  81449. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81450. <stringProp name="Argument.value"/>
  81451. <stringProp name="Argument.metadata">=</stringProp>
  81452. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81453. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  81454. </elementProp>
  81455. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  81456. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81457. <stringProp name="Argument.value"/>
  81458. <stringProp name="Argument.metadata">=</stringProp>
  81459. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81460. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  81461. </elementProp>
  81462. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  81463. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81464. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  81465. <stringProp name="Argument.metadata">=</stringProp>
  81466. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81467. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  81468. </elementProp>
  81469. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  81470. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81471. <stringProp name="Argument.value"/>
  81472. <stringProp name="Argument.metadata">=</stringProp>
  81473. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81474. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  81475. </elementProp>
  81476. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  81477. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81478. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  81479. <stringProp name="Argument.metadata">=</stringProp>
  81480. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81481. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  81482. </elementProp>
  81483. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  81484. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81485. <stringProp name="Argument.value">true</stringProp>
  81486. <stringProp name="Argument.metadata">=</stringProp>
  81487. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81488. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  81489. </elementProp>
  81490. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  81491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81492. <stringProp name="Argument.value">true</stringProp>
  81493. <stringProp name="Argument.metadata">=</stringProp>
  81494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81495. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  81496. </elementProp>
  81497. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  81498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81499. <stringProp name="Argument.value"/>
  81500. <stringProp name="Argument.metadata">=</stringProp>
  81501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81502. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  81503. </elementProp>
  81504. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  81505. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81506. <stringProp name="Argument.value">John</stringProp>
  81507. <stringProp name="Argument.metadata">=</stringProp>
  81508. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81509. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  81510. </elementProp>
  81511. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  81512. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81513. <stringProp name="Argument.value"/>
  81514. <stringProp name="Argument.metadata">=</stringProp>
  81515. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81516. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  81517. </elementProp>
  81518. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  81519. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81520. <stringProp name="Argument.value">Doe</stringProp>
  81521. <stringProp name="Argument.metadata">=</stringProp>
  81522. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81523. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  81524. </elementProp>
  81525. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  81526. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81527. <stringProp name="Argument.value"/>
  81528. <stringProp name="Argument.metadata">=</stringProp>
  81529. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81530. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  81531. </elementProp>
  81532. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  81533. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81534. <stringProp name="Argument.value">Test Company</stringProp>
  81535. <stringProp name="Argument.metadata">=</stringProp>
  81536. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81537. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  81538. </elementProp>
  81539. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  81540. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81541. <stringProp name="Argument.value">Folsom</stringProp>
  81542. <stringProp name="Argument.metadata">=</stringProp>
  81543. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81544. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  81545. </elementProp>
  81546. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  81547. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81548. <stringProp name="Argument.value">95630</stringProp>
  81549. <stringProp name="Argument.metadata">=</stringProp>
  81550. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81551. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  81552. </elementProp>
  81553. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  81554. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81555. <stringProp name="Argument.value">1234567890</stringProp>
  81556. <stringProp name="Argument.metadata">=</stringProp>
  81557. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81558. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  81559. </elementProp>
  81560. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  81561. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81562. <stringProp name="Argument.value"/>
  81563. <stringProp name="Argument.metadata">=</stringProp>
  81564. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81565. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  81566. </elementProp>
  81567. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  81568. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81569. <stringProp name="Argument.value">false</stringProp>
  81570. <stringProp name="Argument.metadata">=</stringProp>
  81571. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81572. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  81573. </elementProp>
  81574. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  81575. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81576. <stringProp name="Argument.value">false</stringProp>
  81577. <stringProp name="Argument.metadata">=</stringProp>
  81578. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81579. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  81580. </elementProp>
  81581. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  81582. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81583. <stringProp name="Argument.value">123 Main</stringProp>
  81584. <stringProp name="Argument.metadata">=</stringProp>
  81585. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81586. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  81587. </elementProp>
  81588. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  81589. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81590. <stringProp name="Argument.value"/>
  81591. <stringProp name="Argument.metadata">=</stringProp>
  81592. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81593. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  81594. </elementProp>
  81595. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  81596. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81597. <stringProp name="Argument.value"/>
  81598. <stringProp name="Argument.metadata">=</stringProp>
  81599. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81600. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  81601. </elementProp>
  81602. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  81603. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81604. <stringProp name="Argument.value">US</stringProp>
  81605. <stringProp name="Argument.metadata">=</stringProp>
  81606. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81607. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  81608. </elementProp>
  81609. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  81610. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81611. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  81612. <stringProp name="Argument.metadata">=</stringProp>
  81613. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81614. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  81615. </elementProp>
  81616. <elementProp name="form_key" elementType="HTTPArgument">
  81617. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81618. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  81619. <stringProp name="Argument.metadata">=</stringProp>
  81620. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81621. <stringProp name="Argument.name">form_key</stringProp>
  81622. </elementProp>
  81623. </collectionProp>
  81624. </elementProp>
  81625. <stringProp name="HTTPSampler.domain"/>
  81626. <stringProp name="HTTPSampler.port"/>
  81627. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  81628. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  81629. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  81630. <stringProp name="HTTPSampler.contentEncoding"/>
  81631. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/validate/</stringProp>
  81632. <stringProp name="HTTPSampler.method">POST</stringProp>
  81633. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  81634. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  81635. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  81636. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  81637. <boolProp name="HTTPSampler.monitor">false</boolProp>
  81638. <stringProp name="HTTPSampler.embedded_url_re"/>
  81639. </HTTPSamplerProxy>
  81640. <hashTree>
  81641. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  81642. <collectionProp name="Asserion.test_strings">
  81643. <stringProp name="49586">200</stringProp>
  81644. </collectionProp>
  81645. <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
  81646. <boolProp name="Assertion.assume_success">false</boolProp>
  81647. <intProp name="Assertion.test_type">16</intProp>
  81648. </ResponseAssertion>
  81649. <hashTree/>
  81650. </hashTree>
  81651. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Save" enabled="true">
  81652. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  81653. <collectionProp name="Arguments.arguments">
  81654. <elementProp name="isAjax " elementType="HTTPArgument">
  81655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81656. <stringProp name="Argument.value">true</stringProp>
  81657. <stringProp name="Argument.metadata">=</stringProp>
  81658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81659. <stringProp name="Argument.name">isAjax </stringProp>
  81660. </elementProp>
  81661. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  81662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81663. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  81664. <stringProp name="Argument.metadata">=</stringProp>
  81665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81666. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  81667. </elementProp>
  81668. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  81669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81670. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  81671. <stringProp name="Argument.metadata">=</stringProp>
  81672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81673. <stringProp name="Argument.name">customer[website_id]</stringProp>
  81674. </elementProp>
  81675. <elementProp name="customer[email]" elementType="HTTPArgument">
  81676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81677. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  81678. <stringProp name="Argument.metadata">=</stringProp>
  81679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81680. <stringProp name="Argument.name">customer[email]</stringProp>
  81681. </elementProp>
  81682. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  81683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81684. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  81685. <stringProp name="Argument.metadata">=</stringProp>
  81686. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81687. <stringProp name="Argument.name">customer[group_id]</stringProp>
  81688. </elementProp>
  81689. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  81690. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81691. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  81692. <stringProp name="Argument.metadata">=</stringProp>
  81693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81694. <stringProp name="Argument.name">customer[store_id]</stringProp>
  81695. </elementProp>
  81696. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  81697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81698. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  81699. <stringProp name="Argument.metadata">=</stringProp>
  81700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81701. <stringProp name="Argument.name">customer[created_at]</stringProp>
  81702. </elementProp>
  81703. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  81704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81705. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  81706. <stringProp name="Argument.metadata">=</stringProp>
  81707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81708. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  81709. </elementProp>
  81710. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  81711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81712. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  81713. <stringProp name="Argument.metadata">=</stringProp>
  81714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81715. <stringProp name="Argument.name">customer[is_active]</stringProp>
  81716. </elementProp>
  81717. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  81718. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81719. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  81720. <stringProp name="Argument.metadata">=</stringProp>
  81721. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81722. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  81723. </elementProp>
  81724. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  81725. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81726. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  81727. <stringProp name="Argument.metadata">=</stringProp>
  81728. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81729. <stringProp name="Argument.name">customer[created_in]</stringProp>
  81730. </elementProp>
  81731. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  81732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81733. <stringProp name="Argument.value"/>
  81734. <stringProp name="Argument.metadata">=</stringProp>
  81735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81736. <stringProp name="Argument.name">customer[prefix]</stringProp>
  81737. </elementProp>
  81738. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  81739. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81740. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  81741. <stringProp name="Argument.metadata">=</stringProp>
  81742. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81743. <stringProp name="Argument.name">customer[firstname]</stringProp>
  81744. </elementProp>
  81745. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  81746. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81747. <stringProp name="Argument.value"/>
  81748. <stringProp name="Argument.metadata">=</stringProp>
  81749. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81750. <stringProp name="Argument.name">customer[middlename]</stringProp>
  81751. </elementProp>
  81752. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  81753. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81754. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  81755. <stringProp name="Argument.metadata">=</stringProp>
  81756. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81757. <stringProp name="Argument.name">customer[lastname]</stringProp>
  81758. </elementProp>
  81759. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  81760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81761. <stringProp name="Argument.value"/>
  81762. <stringProp name="Argument.metadata">=</stringProp>
  81763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81764. <stringProp name="Argument.name">customer[suffix]</stringProp>
  81765. </elementProp>
  81766. <elementProp name="customer[dob]" elementType="HTTPArgument">
  81767. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81768. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  81769. <stringProp name="Argument.metadata">=</stringProp>
  81770. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81771. <stringProp name="Argument.name">customer[dob]</stringProp>
  81772. </elementProp>
  81773. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  81774. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81775. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  81776. <stringProp name="Argument.metadata">=</stringProp>
  81777. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81778. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  81779. </elementProp>
  81780. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  81781. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81782. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  81783. <stringProp name="Argument.metadata">=</stringProp>
  81784. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81785. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  81786. </elementProp>
  81787. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  81788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81789. <stringProp name="Argument.value"/>
  81790. <stringProp name="Argument.metadata">=</stringProp>
  81791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81792. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  81793. </elementProp>
  81794. <elementProp name="customer[gender]" elementType="HTTPArgument">
  81795. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81796. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  81797. <stringProp name="Argument.metadata">=</stringProp>
  81798. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81799. <stringProp name="Argument.name">customer[gender]</stringProp>
  81800. </elementProp>
  81801. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  81802. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81803. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  81804. <stringProp name="Argument.metadata">=</stringProp>
  81805. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81806. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  81807. </elementProp>
  81808. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  81809. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81810. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  81811. <stringProp name="Argument.metadata">=</stringProp>
  81812. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81813. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  81814. </elementProp>
  81815. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  81816. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81817. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  81818. <stringProp name="Argument.metadata">=</stringProp>
  81819. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81820. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  81821. </elementProp>
  81822. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  81823. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81824. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  81825. <stringProp name="Argument.metadata">=</stringProp>
  81826. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81827. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  81828. </elementProp>
  81829. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  81830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81831. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  81832. <stringProp name="Argument.metadata">=</stringProp>
  81833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81834. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  81835. </elementProp>
  81836. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  81837. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81838. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  81839. <stringProp name="Argument.metadata">=</stringProp>
  81840. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81841. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  81842. </elementProp>
  81843. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  81844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81845. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  81846. <stringProp name="Argument.metadata">=</stringProp>
  81847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81848. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  81849. </elementProp>
  81850. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  81851. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81852. <stringProp name="Argument.value"/>
  81853. <stringProp name="Argument.metadata">=</stringProp>
  81854. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81855. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  81856. </elementProp>
  81857. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  81858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81859. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  81860. <stringProp name="Argument.metadata">=</stringProp>
  81861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81862. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  81863. </elementProp>
  81864. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  81865. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81866. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  81867. <stringProp name="Argument.metadata">=</stringProp>
  81868. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81869. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  81870. </elementProp>
  81871. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  81872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81873. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  81874. <stringProp name="Argument.metadata">=</stringProp>
  81875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81876. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  81877. </elementProp>
  81878. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  81879. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81880. <stringProp name="Argument.value"/>
  81881. <stringProp name="Argument.metadata">=</stringProp>
  81882. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81883. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  81884. </elementProp>
  81885. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  81886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81887. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  81888. <stringProp name="Argument.metadata">=</stringProp>
  81889. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81890. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  81891. </elementProp>
  81892. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  81893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81894. <stringProp name="Argument.value"/>
  81895. <stringProp name="Argument.metadata">=</stringProp>
  81896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81897. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  81898. </elementProp>
  81899. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  81900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81901. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  81902. <stringProp name="Argument.metadata">=</stringProp>
  81903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81904. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  81905. </elementProp>
  81906. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  81907. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81908. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  81909. <stringProp name="Argument.metadata">=</stringProp>
  81910. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81911. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  81912. </elementProp>
  81913. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  81914. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81915. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  81916. <stringProp name="Argument.metadata">=</stringProp>
  81917. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81918. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  81919. </elementProp>
  81920. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  81921. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81922. <stringProp name="Argument.value"/>
  81923. <stringProp name="Argument.metadata">=</stringProp>
  81924. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81925. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  81926. </elementProp>
  81927. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  81928. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81929. <stringProp name="Argument.value"/>
  81930. <stringProp name="Argument.metadata">=</stringProp>
  81931. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81932. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  81933. </elementProp>
  81934. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  81935. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81936. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  81937. <stringProp name="Argument.metadata">=</stringProp>
  81938. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81939. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  81940. </elementProp>
  81941. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  81942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81943. <stringProp name="Argument.value"/>
  81944. <stringProp name="Argument.metadata">=</stringProp>
  81945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81946. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  81947. </elementProp>
  81948. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  81949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81950. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  81951. <stringProp name="Argument.metadata">=</stringProp>
  81952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81953. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  81954. </elementProp>
  81955. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  81956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81957. <stringProp name="Argument.value">true</stringProp>
  81958. <stringProp name="Argument.metadata">=</stringProp>
  81959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81960. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  81961. </elementProp>
  81962. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  81963. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81964. <stringProp name="Argument.value">true</stringProp>
  81965. <stringProp name="Argument.metadata">=</stringProp>
  81966. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81967. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  81968. </elementProp>
  81969. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  81970. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81971. <stringProp name="Argument.value"/>
  81972. <stringProp name="Argument.metadata">=</stringProp>
  81973. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81974. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  81975. </elementProp>
  81976. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  81977. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81978. <stringProp name="Argument.value">John</stringProp>
  81979. <stringProp name="Argument.metadata">=</stringProp>
  81980. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81981. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  81982. </elementProp>
  81983. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  81984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81985. <stringProp name="Argument.value"/>
  81986. <stringProp name="Argument.metadata">=</stringProp>
  81987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81988. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  81989. </elementProp>
  81990. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  81991. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81992. <stringProp name="Argument.value">Doe</stringProp>
  81993. <stringProp name="Argument.metadata">=</stringProp>
  81994. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  81995. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  81996. </elementProp>
  81997. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  81998. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  81999. <stringProp name="Argument.value"/>
  82000. <stringProp name="Argument.metadata">=</stringProp>
  82001. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82002. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  82003. </elementProp>
  82004. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  82005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82006. <stringProp name="Argument.value">Test Company</stringProp>
  82007. <stringProp name="Argument.metadata">=</stringProp>
  82008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82009. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  82010. </elementProp>
  82011. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  82012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82013. <stringProp name="Argument.value">Folsom</stringProp>
  82014. <stringProp name="Argument.metadata">=</stringProp>
  82015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82016. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  82017. </elementProp>
  82018. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  82019. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82020. <stringProp name="Argument.value">95630</stringProp>
  82021. <stringProp name="Argument.metadata">=</stringProp>
  82022. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82023. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  82024. </elementProp>
  82025. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  82026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82027. <stringProp name="Argument.value">1234567890</stringProp>
  82028. <stringProp name="Argument.metadata">=</stringProp>
  82029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82030. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  82031. </elementProp>
  82032. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  82033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82034. <stringProp name="Argument.value"/>
  82035. <stringProp name="Argument.metadata">=</stringProp>
  82036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82037. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  82038. </elementProp>
  82039. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  82040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82041. <stringProp name="Argument.value">false</stringProp>
  82042. <stringProp name="Argument.metadata">=</stringProp>
  82043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82044. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  82045. </elementProp>
  82046. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  82047. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82048. <stringProp name="Argument.value">false</stringProp>
  82049. <stringProp name="Argument.metadata">=</stringProp>
  82050. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82051. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  82052. </elementProp>
  82053. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  82054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82055. <stringProp name="Argument.value">123 Main</stringProp>
  82056. <stringProp name="Argument.metadata">=</stringProp>
  82057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82058. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  82059. </elementProp>
  82060. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  82061. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82062. <stringProp name="Argument.value"/>
  82063. <stringProp name="Argument.metadata">=</stringProp>
  82064. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82065. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  82066. </elementProp>
  82067. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  82068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82069. <stringProp name="Argument.value"/>
  82070. <stringProp name="Argument.metadata">=</stringProp>
  82071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82072. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  82073. </elementProp>
  82074. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  82075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82076. <stringProp name="Argument.value">US</stringProp>
  82077. <stringProp name="Argument.metadata">=</stringProp>
  82078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82079. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  82080. </elementProp>
  82081. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  82082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82083. <stringProp name="Argument.value">12</stringProp>
  82084. <stringProp name="Argument.metadata">=</stringProp>
  82085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82086. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  82087. </elementProp>
  82088. <elementProp name="form_key" elementType="HTTPArgument">
  82089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82090. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  82091. <stringProp name="Argument.metadata">=</stringProp>
  82092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82093. <stringProp name="Argument.name">form_key</stringProp>
  82094. </elementProp>
  82095. </collectionProp>
  82096. </elementProp>
  82097. <stringProp name="HTTPSampler.domain"/>
  82098. <stringProp name="HTTPSampler.port"/>
  82099. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82100. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82101. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82102. <stringProp name="HTTPSampler.contentEncoding"/>
  82103. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/save/</stringProp>
  82104. <stringProp name="HTTPSampler.method">POST</stringProp>
  82105. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82106. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82107. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82108. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  82109. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82110. <stringProp name="HTTPSampler.embedded_url_re"/>
  82111. </HTTPSamplerProxy>
  82112. <hashTree>
  82113. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer saved" enabled="true">
  82114. <collectionProp name="Asserion.test_strings">
  82115. <stringProp name="292987815">You saved the customer.</stringProp>
  82116. </collectionProp>
  82117. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82118. <boolProp name="Assertion.assume_success">false</boolProp>
  82119. <intProp name="Assertion.test_type">2</intProp>
  82120. </ResponseAssertion>
  82121. <hashTree/>
  82122. </hashTree>
  82123. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  82124. <intProp name="ActionProcessor.action">1</intProp>
  82125. <intProp name="ActionProcessor.target">0</intProp>
  82126. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))}</stringProp>
  82127. </TestAction>
  82128. <hashTree/>
  82129. </hashTree>
  82130. </hashTree>
  82131. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  82132. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82133. <collectionProp name="Arguments.arguments"/>
  82134. </elementProp>
  82135. <stringProp name="HTTPSampler.domain"/>
  82136. <stringProp name="HTTPSampler.port"/>
  82137. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82138. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82139. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82140. <stringProp name="HTTPSampler.contentEncoding"/>
  82141. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  82142. <stringProp name="HTTPSampler.method">GET</stringProp>
  82143. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82144. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82145. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82146. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82147. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82148. <stringProp name="HTTPSampler.embedded_url_re"/>
  82149. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  82150. <hashTree>
  82151. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  82152. <boolProp name="resetInterpreter">false</boolProp>
  82153. <stringProp name="parameters"/>
  82154. <stringProp name="filename"/>
  82155. <stringProp name="script">
  82156. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  82157. if (adminUsersDistribution == 1) {
  82158. adminUserList = props.get("adminUserList");
  82159. adminUserList.add(vars.get("admin_user"));
  82160. }
  82161. </stringProp>
  82162. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  82163. <hashTree/>
  82164. </hashTree>
  82165. </hashTree>
  82166. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[GraphQL C] Admin Edit Order" enabled="true">
  82167. <intProp name="ThroughputController.style">1</intProp>
  82168. <boolProp name="ThroughputController.perThread">false</boolProp>
  82169. <intProp name="ThroughputController.maxThroughput">1</intProp>
  82170. <stringProp name="ThroughputController.percentThroughput">${cAdminEditOrderPercentage}</stringProp>
  82171. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  82172. <hashTree>
  82173. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  82174. <stringProp name="script">
  82175. var tmpLabel = vars.get("testLabel")
  82176. if (tmpLabel) {
  82177. var testLabel = " (" + tmpLabel + ")"
  82178. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  82179. if (sampler.getName().indexOf(testLabel) == -1) {
  82180. sampler.setName(sampler.getName() + testLabel);
  82181. }
  82182. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  82183. sampler.setName("SetUp - " + sampler.getName());
  82184. }
  82185. } else {
  82186. testLabel = ""
  82187. }
  82188. </stringProp>
  82189. <stringProp name="scriptLanguage">javascript</stringProp>
  82190. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  82191. <hashTree/>
  82192. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  82193. <stringProp name="BeanShellSampler.query">
  82194. vars.put("testLabel", "[GraphQL C] Admin Edit Order");
  82195. </stringProp>
  82196. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  82197. </BeanShellSampler>
  82198. <hashTree/>
  82199. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  82200. <stringProp name="script">
  82201. function getFormKeyFromResponse()
  82202. {
  82203. var url = prev.getUrlAsString(),
  82204. responseCode = prev.getResponseCode(),
  82205. formKey = null;
  82206. searchPattern = /var FORM_KEY = '(.+)'/;
  82207. if (responseCode == "200" &amp;&amp; url) {
  82208. response = prev.getResponseDataAsString();
  82209. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  82210. }
  82211. return formKey;
  82212. }
  82213. formKey = vars.get("form_key_storage");
  82214. currentFormKey = getFormKeyFromResponse();
  82215. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  82216. vars.put("form_key_storage", currentFormKey);
  82217. }
  82218. </stringProp>
  82219. <stringProp name="scriptLanguage">javascript</stringProp>
  82220. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  82221. <hashTree/>
  82222. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  82223. <stringProp name="script">
  82224. formKey = vars.get("form_key_storage");
  82225. if (formKey
  82226. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  82227. &amp;&amp; sampler.getMethod() == "POST")
  82228. {
  82229. arguments = sampler.getArguments();
  82230. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  82231. {
  82232. argument = arguments.getArgument(i);
  82233. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  82234. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  82235. argument.setValue(formKey);
  82236. }
  82237. }
  82238. }
  82239. </stringProp>
  82240. <stringProp name="scriptLanguage">javascript</stringProp>
  82241. </JSR223PreProcessor>
  82242. <hashTree/>
  82243. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  82244. <collectionProp name="CookieManager.cookies"/>
  82245. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  82246. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  82247. <hashTree/>
  82248. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  82249. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  82250. </GenericController>
  82251. <hashTree>
  82252. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  82253. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  82254. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  82255. <hashTree>
  82256. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  82257. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  82258. <stringProp name="BeanShellSampler.query">
  82259. adminUser = "none";
  82260. adminUserList = props.get("adminUserList");
  82261. adminUserListIterator = props.get("adminUserListIterator");
  82262. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  82263. if (adminUsersDistribution == 1) {
  82264. adminUser = adminUserList.poll();
  82265. } else {
  82266. if (!adminUserListIterator.hasNext()) {
  82267. adminUserListIterator = adminUserList.descendingIterator();
  82268. }
  82269. adminUser = adminUserListIterator.next();
  82270. }
  82271. if (adminUser == "none") {
  82272. SampleResult.setResponseMessage("adminUser list is empty");
  82273. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  82274. IsSuccess=false;
  82275. SampleResult.setSuccessful(false);
  82276. SampleResult.setStopThread(true);
  82277. }
  82278. vars.put("admin_user", adminUser);
  82279. </stringProp>
  82280. <stringProp name="BeanShellSampler.filename"/>
  82281. <stringProp name="BeanShellSampler.parameters"/>
  82282. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  82283. </BeanShellSampler>
  82284. <hashTree/>
  82285. </hashTree>
  82286. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  82287. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82288. <collectionProp name="Arguments.arguments"/>
  82289. </elementProp>
  82290. <stringProp name="HTTPSampler.domain"/>
  82291. <stringProp name="HTTPSampler.port"/>
  82292. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82293. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82294. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82295. <stringProp name="HTTPSampler.contentEncoding"/>
  82296. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  82297. <stringProp name="HTTPSampler.method">GET</stringProp>
  82298. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82299. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82300. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82301. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82302. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82303. <stringProp name="HTTPSampler.embedded_url_re"/>
  82304. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  82305. <hashTree>
  82306. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  82307. <collectionProp name="Asserion.test_strings">
  82308. <stringProp name="-1397214398">Welcome</stringProp>
  82309. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  82310. </collectionProp>
  82311. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82312. <boolProp name="Assertion.assume_success">false</boolProp>
  82313. <intProp name="Assertion.test_type">2</intProp>
  82314. </ResponseAssertion>
  82315. <hashTree/>
  82316. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  82317. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  82318. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  82319. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  82320. <stringProp name="RegexExtractor.template">$1$</stringProp>
  82321. <stringProp name="RegexExtractor.default"/>
  82322. <stringProp name="RegexExtractor.match_number">1</stringProp>
  82323. </RegexExtractor>
  82324. <hashTree/>
  82325. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  82326. <collectionProp name="Asserion.test_strings">
  82327. <stringProp name="2845929">^.+$</stringProp>
  82328. </collectionProp>
  82329. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82330. <boolProp name="Assertion.assume_success">false</boolProp>
  82331. <intProp name="Assertion.test_type">1</intProp>
  82332. <stringProp name="Assertion.scope">variable</stringProp>
  82333. <stringProp name="Scope.variable">admin_form_key</stringProp>
  82334. </ResponseAssertion>
  82335. <hashTree/>
  82336. </hashTree>
  82337. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  82338. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82339. <collectionProp name="Arguments.arguments">
  82340. <elementProp name="dummy" elementType="HTTPArgument">
  82341. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82342. <stringProp name="Argument.value"/>
  82343. <stringProp name="Argument.metadata">=</stringProp>
  82344. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82345. <stringProp name="Argument.name">dummy</stringProp>
  82346. </elementProp>
  82347. <elementProp name="form_key" elementType="HTTPArgument">
  82348. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82349. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  82350. <stringProp name="Argument.metadata">=</stringProp>
  82351. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82352. <stringProp name="Argument.name">form_key</stringProp>
  82353. </elementProp>
  82354. <elementProp name="login[password]" elementType="HTTPArgument">
  82355. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82356. <stringProp name="Argument.value">${admin_password}</stringProp>
  82357. <stringProp name="Argument.metadata">=</stringProp>
  82358. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82359. <stringProp name="Argument.name">login[password]</stringProp>
  82360. </elementProp>
  82361. <elementProp name="login[username]" elementType="HTTPArgument">
  82362. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82363. <stringProp name="Argument.value">${admin_user}</stringProp>
  82364. <stringProp name="Argument.metadata">=</stringProp>
  82365. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82366. <stringProp name="Argument.name">login[username]</stringProp>
  82367. </elementProp>
  82368. </collectionProp>
  82369. </elementProp>
  82370. <stringProp name="HTTPSampler.domain"/>
  82371. <stringProp name="HTTPSampler.port"/>
  82372. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82373. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82374. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82375. <stringProp name="HTTPSampler.contentEncoding"/>
  82376. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  82377. <stringProp name="HTTPSampler.method">POST</stringProp>
  82378. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82379. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82380. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82381. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82382. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  82383. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82384. <stringProp name="HTTPSampler.embedded_url_re"/>
  82385. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  82386. </HTTPSamplerProxy>
  82387. <hashTree>
  82388. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  82389. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  82390. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  82391. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  82392. <stringProp name="RegexExtractor.template">$1$</stringProp>
  82393. <stringProp name="RegexExtractor.default"/>
  82394. <stringProp name="RegexExtractor.match_number">1</stringProp>
  82395. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  82396. <hashTree/>
  82397. </hashTree>
  82398. </hashTree>
  82399. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  82400. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  82401. </GenericController>
  82402. <hashTree>
  82403. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  82404. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82405. <collectionProp name="Arguments.arguments"/>
  82406. </elementProp>
  82407. <stringProp name="HTTPSampler.domain"/>
  82408. <stringProp name="HTTPSampler.port"/>
  82409. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82410. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82411. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82412. <stringProp name="HTTPSampler.contentEncoding"/>
  82413. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  82414. <stringProp name="HTTPSampler.method">GET</stringProp>
  82415. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82416. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82417. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82418. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82419. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82420. <stringProp name="HTTPSampler.embedded_url_re"/>
  82421. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  82422. <hashTree>
  82423. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82424. <collectionProp name="Asserion.test_strings">
  82425. <stringProp name="1204796042">Create New Order</stringProp>
  82426. </collectionProp>
  82427. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82428. <boolProp name="Assertion.assume_success">false</boolProp>
  82429. <intProp name="Assertion.test_type">2</intProp>
  82430. </ResponseAssertion>
  82431. <hashTree/>
  82432. </hashTree>
  82433. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  82434. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82435. <collectionProp name="Arguments.arguments">
  82436. <elementProp name="namespace" elementType="HTTPArgument">
  82437. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82438. <stringProp name="Argument.value">sales_order_grid</stringProp>
  82439. <stringProp name="Argument.metadata">=</stringProp>
  82440. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82441. <stringProp name="Argument.name">namespace</stringProp>
  82442. </elementProp>
  82443. <elementProp name="search" elementType="HTTPArgument">
  82444. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82445. <stringProp name="Argument.value"/>
  82446. <stringProp name="Argument.metadata">=</stringProp>
  82447. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82448. <stringProp name="Argument.name">search</stringProp>
  82449. </elementProp>
  82450. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  82451. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82452. <stringProp name="Argument.value">true</stringProp>
  82453. <stringProp name="Argument.metadata">=</stringProp>
  82454. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82455. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  82456. </elementProp>
  82457. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  82458. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82459. <stringProp name="Argument.value">200</stringProp>
  82460. <stringProp name="Argument.metadata">=</stringProp>
  82461. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82462. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  82463. </elementProp>
  82464. <elementProp name="paging[current]" elementType="HTTPArgument">
  82465. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82466. <stringProp name="Argument.value">1</stringProp>
  82467. <stringProp name="Argument.metadata">=</stringProp>
  82468. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82469. <stringProp name="Argument.name">paging[current]</stringProp>
  82470. </elementProp>
  82471. <elementProp name="sorting[field]" elementType="HTTPArgument">
  82472. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82473. <stringProp name="Argument.value">increment_id</stringProp>
  82474. <stringProp name="Argument.metadata">=</stringProp>
  82475. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82476. <stringProp name="Argument.name">sorting[field]</stringProp>
  82477. </elementProp>
  82478. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  82479. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82480. <stringProp name="Argument.value">desc</stringProp>
  82481. <stringProp name="Argument.metadata">=</stringProp>
  82482. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82483. <stringProp name="Argument.name">sorting[direction]</stringProp>
  82484. </elementProp>
  82485. <elementProp name="isAjax" elementType="HTTPArgument">
  82486. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82487. <stringProp name="Argument.value">true</stringProp>
  82488. <stringProp name="Argument.metadata">=</stringProp>
  82489. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82490. <stringProp name="Argument.name">isAjax</stringProp>
  82491. </elementProp>
  82492. <elementProp name="form_key" elementType="HTTPArgument">
  82493. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82494. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  82495. <stringProp name="Argument.metadata">=</stringProp>
  82496. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82497. <stringProp name="Argument.name">form_key</stringProp>
  82498. <stringProp name="Argument.desc">false</stringProp>
  82499. </elementProp>
  82500. <elementProp name="filters[status]" elementType="HTTPArgument">
  82501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82502. <stringProp name="Argument.value">pending</stringProp>
  82503. <stringProp name="Argument.metadata">=</stringProp>
  82504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82505. <stringProp name="Argument.name">filters[status]</stringProp>
  82506. <stringProp name="Argument.desc">true</stringProp>
  82507. </elementProp>
  82508. <elementProp name="_" elementType="HTTPArgument">
  82509. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82510. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  82511. <stringProp name="Argument.metadata">=</stringProp>
  82512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82513. <stringProp name="Argument.name">_</stringProp>
  82514. </elementProp>
  82515. </collectionProp>
  82516. </elementProp>
  82517. <stringProp name="HTTPSampler.domain"/>
  82518. <stringProp name="HTTPSampler.port"/>
  82519. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82520. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82521. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82522. <stringProp name="HTTPSampler.contentEncoding"/>
  82523. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  82524. <stringProp name="HTTPSampler.method">GET</stringProp>
  82525. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82526. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82527. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82528. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82529. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82530. <stringProp name="HTTPSampler.embedded_url_re"/>
  82531. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  82532. <hashTree>
  82533. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82534. <collectionProp name="Asserion.test_strings">
  82535. <stringProp name="1637639774">totalRecords</stringProp>
  82536. </collectionProp>
  82537. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82538. <boolProp name="Assertion.assume_success">false</boolProp>
  82539. <intProp name="Assertion.test_type">2</intProp>
  82540. </ResponseAssertion>
  82541. <hashTree/>
  82542. </hashTree>
  82543. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  82544. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82545. <collectionProp name="Arguments.arguments">
  82546. <elementProp name="form_key" elementType="HTTPArgument">
  82547. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82548. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  82549. <stringProp name="Argument.metadata">=</stringProp>
  82550. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82551. <stringProp name="Argument.name">form_key</stringProp>
  82552. </elementProp>
  82553. <elementProp name="namespace" elementType="HTTPArgument">
  82554. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82555. <stringProp name="Argument.value">sales_order_grid</stringProp>
  82556. <stringProp name="Argument.metadata">=</stringProp>
  82557. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82558. <stringProp name="Argument.name">namespace</stringProp>
  82559. <stringProp name="Argument.desc">true</stringProp>
  82560. </elementProp>
  82561. <elementProp name="search" elementType="HTTPArgument">
  82562. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82563. <stringProp name="Argument.value"/>
  82564. <stringProp name="Argument.metadata">=</stringProp>
  82565. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82566. <stringProp name="Argument.name">search</stringProp>
  82567. <stringProp name="Argument.desc">true</stringProp>
  82568. </elementProp>
  82569. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  82570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82571. <stringProp name="Argument.value">true</stringProp>
  82572. <stringProp name="Argument.metadata">=</stringProp>
  82573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82574. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  82575. <stringProp name="Argument.desc">true</stringProp>
  82576. </elementProp>
  82577. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  82578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82579. <stringProp name="Argument.value">200</stringProp>
  82580. <stringProp name="Argument.metadata">=</stringProp>
  82581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82582. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  82583. <stringProp name="Argument.desc">true</stringProp>
  82584. </elementProp>
  82585. <elementProp name="paging[current]" elementType="HTTPArgument">
  82586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82587. <stringProp name="Argument.value">1</stringProp>
  82588. <stringProp name="Argument.metadata">=</stringProp>
  82589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82590. <stringProp name="Argument.name">paging[current]</stringProp>
  82591. <stringProp name="Argument.desc">true</stringProp>
  82592. </elementProp>
  82593. <elementProp name="sorting[field]" elementType="HTTPArgument">
  82594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82595. <stringProp name="Argument.value">increment_id</stringProp>
  82596. <stringProp name="Argument.metadata">=</stringProp>
  82597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82598. <stringProp name="Argument.name">sorting[field]</stringProp>
  82599. <stringProp name="Argument.desc">true</stringProp>
  82600. </elementProp>
  82601. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  82602. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82603. <stringProp name="Argument.value">asc</stringProp>
  82604. <stringProp name="Argument.metadata">=</stringProp>
  82605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82606. <stringProp name="Argument.name">sorting[direction]</stringProp>
  82607. <stringProp name="Argument.desc">true</stringProp>
  82608. </elementProp>
  82609. <elementProp name="isAjax" elementType="HTTPArgument">
  82610. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82611. <stringProp name="Argument.value">true</stringProp>
  82612. <stringProp name="Argument.metadata">=</stringProp>
  82613. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82614. <stringProp name="Argument.name">isAjax</stringProp>
  82615. <stringProp name="Argument.desc">true</stringProp>
  82616. </elementProp>
  82617. <elementProp name="filters[status]" elementType="HTTPArgument">
  82618. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82619. <stringProp name="Argument.value">pending</stringProp>
  82620. <stringProp name="Argument.metadata">=</stringProp>
  82621. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82622. <stringProp name="Argument.name">filters[status]</stringProp>
  82623. </elementProp>
  82624. <elementProp name="_" elementType="HTTPArgument">
  82625. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82626. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  82627. <stringProp name="Argument.metadata">=</stringProp>
  82628. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82629. <stringProp name="Argument.name">_</stringProp>
  82630. </elementProp>
  82631. </collectionProp>
  82632. </elementProp>
  82633. <stringProp name="HTTPSampler.domain"/>
  82634. <stringProp name="HTTPSampler.port"/>
  82635. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82636. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82637. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82638. <stringProp name="HTTPSampler.contentEncoding"/>
  82639. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  82640. <stringProp name="HTTPSampler.method">GET</stringProp>
  82641. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82642. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82643. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82644. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82645. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82646. <stringProp name="HTTPSampler.embedded_url_re"/>
  82647. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  82648. <hashTree>
  82649. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82650. <collectionProp name="Asserion.test_strings">
  82651. <stringProp name="1637639774">totalRecords</stringProp>
  82652. </collectionProp>
  82653. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82654. <boolProp name="Assertion.assume_success">false</boolProp>
  82655. <intProp name="Assertion.test_type">2</intProp>
  82656. </ResponseAssertion>
  82657. <hashTree/>
  82658. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  82659. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  82660. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  82661. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  82662. <stringProp name="RegexExtractor.template">$1$</stringProp>
  82663. <stringProp name="RegexExtractor.default"/>
  82664. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  82665. <stringProp name="Scope.variable">simple_products</stringProp>
  82666. </RegexExtractor>
  82667. <hashTree/>
  82668. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  82669. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  82670. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  82671. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  82672. <stringProp name="RegexExtractor.template">$1$</stringProp>
  82673. <stringProp name="RegexExtractor.default"/>
  82674. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  82675. <stringProp name="Scope.variable">simple_products</stringProp>
  82676. </RegexExtractor>
  82677. <hashTree/>
  82678. </hashTree>
  82679. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  82680. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  82681. <stringProp name="BeanShellSampler.query">
  82682. import java.util.ArrayList;
  82683. import java.util.HashMap;
  82684. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  82685. import java.util.Random;
  82686. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  82687. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  82688. int clusterLength;
  82689. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  82690. if (threadsNumber == 0) {
  82691. //Number of orders for one thread
  82692. clusterLength = ordersCount;
  82693. } else {
  82694. clusterLength = Math.round(ordersCount / threadsNumber);
  82695. if (clusterLength == 0) {
  82696. clusterLength = 1;
  82697. }
  82698. }
  82699. //Current thread number starts from 0
  82700. int currentThreadNum = ctx.getThreadNum();
  82701. //Index of the current product from the cluster
  82702. Random random = new Random();
  82703. if (${seedForRandom} &gt; 0) {
  82704. random.setSeed(${seedForRandom} + ${__threadNum});
  82705. }
  82706. int iterator = random.nextInt(clusterLength);
  82707. if (iterator == 0) {
  82708. iterator = 1;
  82709. }
  82710. int i = clusterLength * currentThreadNum + iterator;
  82711. orderNumber = vars.get("order_numbers_" + i.toString());
  82712. orderId = vars.get("order_ids_" + i.toString());
  82713. vars.put("order_number", orderNumber);
  82714. vars.put("order_id", orderId);
  82715. </stringProp>
  82716. <stringProp name="BeanShellSampler.filename"/>
  82717. <stringProp name="BeanShellSampler.parameters"/>
  82718. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  82719. </BeanShellSampler>
  82720. <hashTree/>
  82721. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  82722. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82723. <collectionProp name="Arguments.arguments"/>
  82724. </elementProp>
  82725. <stringProp name="HTTPSampler.domain"/>
  82726. <stringProp name="HTTPSampler.port"/>
  82727. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82728. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82729. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82730. <stringProp name="HTTPSampler.contentEncoding"/>
  82731. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  82732. <stringProp name="HTTPSampler.method">GET</stringProp>
  82733. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82734. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82735. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82736. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82737. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82738. <stringProp name="HTTPSampler.embedded_url_re"/>
  82739. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  82740. <hashTree>
  82741. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82742. <collectionProp name="Asserion.test_strings">
  82743. <stringProp name="2103620713">#${order_number}</stringProp>
  82744. </collectionProp>
  82745. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82746. <boolProp name="Assertion.assume_success">false</boolProp>
  82747. <intProp name="Assertion.test_type">2</intProp>
  82748. </ResponseAssertion>
  82749. <hashTree/>
  82750. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  82751. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  82752. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  82753. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  82754. <stringProp name="RegexExtractor.template">$1$</stringProp>
  82755. <stringProp name="RegexExtractor.default"/>
  82756. <stringProp name="RegexExtractor.match_number">1</stringProp>
  82757. <stringProp name="Scope.variable">simple_products</stringProp>
  82758. </RegexExtractor>
  82759. <hashTree/>
  82760. </hashTree>
  82761. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  82762. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  82763. <boolProp name="IfController.evaluateAll">false</boolProp>
  82764. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  82765. <hashTree>
  82766. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Comment" enabled="true">
  82767. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82768. <collectionProp name="Arguments.arguments">
  82769. <elementProp name="history[status]" elementType="HTTPArgument">
  82770. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82771. <stringProp name="Argument.value">pending</stringProp>
  82772. <stringProp name="Argument.metadata">=</stringProp>
  82773. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82774. <stringProp name="Argument.name">history[status]</stringProp>
  82775. <stringProp name="Argument.desc">false</stringProp>
  82776. </elementProp>
  82777. <elementProp name="history[comment]" elementType="HTTPArgument">
  82778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82779. <stringProp name="Argument.value">Some text</stringProp>
  82780. <stringProp name="Argument.metadata">=</stringProp>
  82781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82782. <stringProp name="Argument.name">history[comment]</stringProp>
  82783. </elementProp>
  82784. <elementProp name="form_key" elementType="HTTPArgument">
  82785. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82786. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  82787. <stringProp name="Argument.metadata">=</stringProp>
  82788. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82789. <stringProp name="Argument.name">form_key</stringProp>
  82790. <stringProp name="Argument.desc">false</stringProp>
  82791. </elementProp>
  82792. </collectionProp>
  82793. </elementProp>
  82794. <stringProp name="HTTPSampler.domain"/>
  82795. <stringProp name="HTTPSampler.port"/>
  82796. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82797. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82798. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82799. <stringProp name="HTTPSampler.contentEncoding"/>
  82800. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true</stringProp>
  82801. <stringProp name="HTTPSampler.method">POST</stringProp>
  82802. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82803. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82804. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82805. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82806. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82807. <stringProp name="HTTPSampler.embedded_url_re"/>
  82808. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/add_comment.jmx</stringProp></HTTPSamplerProxy>
  82809. <hashTree>
  82810. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82811. <collectionProp name="Asserion.test_strings">
  82812. <stringProp name="-2089278331">Not Notified</stringProp>
  82813. </collectionProp>
  82814. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82815. <boolProp name="Assertion.assume_success">false</boolProp>
  82816. <intProp name="Assertion.test_type">2</intProp>
  82817. </ResponseAssertion>
  82818. <hashTree/>
  82819. </hashTree>
  82820. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  82821. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82822. <collectionProp name="Arguments.arguments"/>
  82823. </elementProp>
  82824. <stringProp name="HTTPSampler.domain"/>
  82825. <stringProp name="HTTPSampler.port"/>
  82826. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82827. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82828. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82829. <stringProp name="HTTPSampler.contentEncoding"/>
  82830. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  82831. <stringProp name="HTTPSampler.method">GET</stringProp>
  82832. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82833. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82834. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82835. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82836. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82837. <stringProp name="HTTPSampler.embedded_url_re"/>
  82838. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  82839. <hashTree>
  82840. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82841. <collectionProp name="Asserion.test_strings">
  82842. <stringProp name="-1233850814">Invoice Totals</stringProp>
  82843. </collectionProp>
  82844. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82845. <boolProp name="Assertion.assume_success">false</boolProp>
  82846. <intProp name="Assertion.test_type">2</intProp>
  82847. </ResponseAssertion>
  82848. <hashTree/>
  82849. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  82850. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  82851. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  82852. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  82853. <stringProp name="RegexExtractor.template">$1$</stringProp>
  82854. <stringProp name="RegexExtractor.default"/>
  82855. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  82856. <stringProp name="Scope.variable">simple_products</stringProp>
  82857. </RegexExtractor>
  82858. <hashTree/>
  82859. </hashTree>
  82860. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  82861. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82862. <collectionProp name="Arguments.arguments">
  82863. <elementProp name="form_key" elementType="HTTPArgument">
  82864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82865. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  82866. <stringProp name="Argument.metadata">=</stringProp>
  82867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82868. <stringProp name="Argument.name">form_key</stringProp>
  82869. <stringProp name="Argument.desc">false</stringProp>
  82870. </elementProp>
  82871. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  82872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82873. <stringProp name="Argument.value">1</stringProp>
  82874. <stringProp name="Argument.metadata">=</stringProp>
  82875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82876. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  82877. </elementProp>
  82878. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  82879. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82880. <stringProp name="Argument.value">1</stringProp>
  82881. <stringProp name="Argument.metadata">=</stringProp>
  82882. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82883. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  82884. </elementProp>
  82885. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  82886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82887. <stringProp name="Argument.value">Invoiced</stringProp>
  82888. <stringProp name="Argument.metadata">=</stringProp>
  82889. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82890. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  82891. </elementProp>
  82892. </collectionProp>
  82893. </elementProp>
  82894. <stringProp name="HTTPSampler.domain"/>
  82895. <stringProp name="HTTPSampler.port"/>
  82896. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82897. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82898. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82899. <stringProp name="HTTPSampler.contentEncoding"/>
  82900. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  82901. <stringProp name="HTTPSampler.method">POST</stringProp>
  82902. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82903. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82904. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82905. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82906. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82907. <stringProp name="HTTPSampler.embedded_url_re"/>
  82908. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  82909. <hashTree>
  82910. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82911. <collectionProp name="Asserion.test_strings">
  82912. <stringProp name="1740524604">The invoice has been created</stringProp>
  82913. </collectionProp>
  82914. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82915. <boolProp name="Assertion.assume_success">false</boolProp>
  82916. <intProp name="Assertion.test_type">2</intProp>
  82917. </ResponseAssertion>
  82918. <hashTree/>
  82919. </hashTree>
  82920. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Start" enabled="true">
  82921. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82922. <collectionProp name="Arguments.arguments"/>
  82923. </elementProp>
  82924. <stringProp name="HTTPSampler.domain"/>
  82925. <stringProp name="HTTPSampler.port"/>
  82926. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82927. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82928. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82929. <stringProp name="HTTPSampler.contentEncoding"/>
  82930. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/</stringProp>
  82931. <stringProp name="HTTPSampler.method">GET</stringProp>
  82932. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82933. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82934. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82935. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82936. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82937. <stringProp name="HTTPSampler.embedded_url_re"/>
  82938. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_start.jmx</stringProp></HTTPSamplerProxy>
  82939. <hashTree>
  82940. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  82941. <collectionProp name="Asserion.test_strings">
  82942. <stringProp name="304100442">New Shipment</stringProp>
  82943. </collectionProp>
  82944. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  82945. <boolProp name="Assertion.assume_success">false</boolProp>
  82946. <intProp name="Assertion.test_type">2</intProp>
  82947. </ResponseAssertion>
  82948. <hashTree/>
  82949. </hashTree>
  82950. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Submit" enabled="true">
  82951. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  82952. <collectionProp name="Arguments.arguments">
  82953. <elementProp name="form_key" elementType="HTTPArgument">
  82954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82955. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  82956. <stringProp name="Argument.metadata">=</stringProp>
  82957. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82958. <stringProp name="Argument.name">form_key</stringProp>
  82959. <stringProp name="Argument.desc">false</stringProp>
  82960. </elementProp>
  82961. <elementProp name="shipment[items][${item_ids_1}]" elementType="HTTPArgument">
  82962. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82963. <stringProp name="Argument.value">1</stringProp>
  82964. <stringProp name="Argument.metadata">=</stringProp>
  82965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82966. <stringProp name="Argument.name">shipment[items][${item_ids_1}]</stringProp>
  82967. </elementProp>
  82968. <elementProp name="shipment[items][${item_ids_2}]" elementType="HTTPArgument">
  82969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82970. <stringProp name="Argument.value">1</stringProp>
  82971. <stringProp name="Argument.metadata">=</stringProp>
  82972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82973. <stringProp name="Argument.name">shipment[items][${item_ids_2}]</stringProp>
  82974. </elementProp>
  82975. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  82976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  82977. <stringProp name="Argument.value">Shipped</stringProp>
  82978. <stringProp name="Argument.metadata">=</stringProp>
  82979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  82980. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  82981. </elementProp>
  82982. </collectionProp>
  82983. </elementProp>
  82984. <stringProp name="HTTPSampler.domain"/>
  82985. <stringProp name="HTTPSampler.port"/>
  82986. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  82987. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  82988. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  82989. <stringProp name="HTTPSampler.contentEncoding"/>
  82990. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  82991. <stringProp name="HTTPSampler.method">POST</stringProp>
  82992. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  82993. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  82994. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  82995. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  82996. <boolProp name="HTTPSampler.monitor">false</boolProp>
  82997. <stringProp name="HTTPSampler.embedded_url_re"/>
  82998. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_submit.jmx</stringProp></HTTPSamplerProxy>
  82999. <hashTree>
  83000. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  83001. <collectionProp name="Asserion.test_strings">
  83002. <stringProp name="-2089453199">The shipment has been created</stringProp>
  83003. </collectionProp>
  83004. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83005. <boolProp name="Assertion.assume_success">false</boolProp>
  83006. <intProp name="Assertion.test_type">2</intProp>
  83007. </ResponseAssertion>
  83008. <hashTree/>
  83009. </hashTree>
  83010. </hashTree>
  83011. </hashTree>
  83012. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  83013. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  83014. <collectionProp name="Arguments.arguments"/>
  83015. </elementProp>
  83016. <stringProp name="HTTPSampler.domain"/>
  83017. <stringProp name="HTTPSampler.port"/>
  83018. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83019. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83020. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83021. <stringProp name="HTTPSampler.contentEncoding"/>
  83022. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  83023. <stringProp name="HTTPSampler.method">GET</stringProp>
  83024. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83025. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83026. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83027. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83028. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83029. <stringProp name="HTTPSampler.embedded_url_re"/>
  83030. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  83031. <hashTree>
  83032. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  83033. <boolProp name="resetInterpreter">false</boolProp>
  83034. <stringProp name="parameters"/>
  83035. <stringProp name="filename"/>
  83036. <stringProp name="script">
  83037. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  83038. if (adminUsersDistribution == 1) {
  83039. adminUserList = props.get("adminUserList");
  83040. adminUserList.add(vars.get("admin_user"));
  83041. }
  83042. </stringProp>
  83043. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  83044. <hashTree/>
  83045. </hashTree>
  83046. </hashTree>
  83047. </hashTree>
  83048. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="REST API Combined Benchmark Pool" enabled="true">
  83049. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  83050. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  83051. <boolProp name="LoopController.continue_forever">false</boolProp>
  83052. <stringProp name="LoopController.loops">${loops}</stringProp>
  83053. </elementProp>
  83054. <stringProp name="ThreadGroup.num_threads">${restAPIcombinedBenchmarkPoolUsers}</stringProp>
  83055. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  83056. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  83057. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  83058. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  83059. <stringProp name="ThreadGroup.duration"/>
  83060. <stringProp name="ThreadGroup.delay"/>
  83061. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  83062. <hashTree>
  83063. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Cache hit miss" enabled="true">
  83064. <stringProp name="scriptLanguage">javascript</stringProp>
  83065. <stringProp name="parameters"/>
  83066. <stringProp name="filename"/>
  83067. <stringProp name="cacheKey"/>
  83068. <stringProp name="script">var cacheHitPercent = vars.get("cache_hits_percentage");
  83069. if (
  83070. cacheHitPercent &lt; 100 &amp;&amp;
  83071. sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  83072. ) {
  83073. doCache();
  83074. }
  83075. function doCache(){
  83076. var random = Math.random() * 100;
  83077. if (cacheHitPercent &lt; random) {
  83078. sampler.setPath(sampler.getPath() + "?cacheModifier=" + Math.random().toString(36).substring(2, 13));
  83079. }
  83080. }
  83081. </stringProp>
  83082. <stringProp name="TestPlan.comments">tool/fragments/ce/common/cache_hit_miss.jmx</stringProp></JSR223PreProcessor>
  83083. <hashTree/>
  83084. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Catalog Browsing By Guest" enabled="true">
  83085. <intProp name="ThroughputController.style">1</intProp>
  83086. <boolProp name="ThroughputController.perThread">false</boolProp>
  83087. <intProp name="ThroughputController.maxThroughput">1</intProp>
  83088. <stringProp name="ThroughputController.percentThroughput">${cBrowseCatalogByGuestPercentage}</stringProp>
  83089. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  83090. <hashTree>
  83091. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  83092. <stringProp name="script">
  83093. var tmpLabel = vars.get("testLabel")
  83094. if (tmpLabel) {
  83095. var testLabel = " (" + tmpLabel + ")"
  83096. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  83097. if (sampler.getName().indexOf(testLabel) == -1) {
  83098. sampler.setName(sampler.getName() + testLabel);
  83099. }
  83100. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  83101. sampler.setName("SetUp - " + sampler.getName());
  83102. }
  83103. } else {
  83104. testLabel = ""
  83105. }
  83106. </stringProp>
  83107. <stringProp name="scriptLanguage">javascript</stringProp>
  83108. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  83109. <hashTree/>
  83110. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  83111. <stringProp name="BeanShellSampler.query">
  83112. vars.put("testLabel", "[REST API C] Catalog Browsing By Guest");
  83113. </stringProp>
  83114. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83115. </BeanShellSampler>
  83116. <hashTree/>
  83117. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  83118. <collectionProp name="HeaderManager.headers">
  83119. <elementProp name="" elementType="Header">
  83120. <stringProp name="Header.name">Content-Type</stringProp>
  83121. <stringProp name="Header.value">application/json</stringProp>
  83122. </elementProp>
  83123. <elementProp name="" elementType="Header">
  83124. <stringProp name="Header.name">Accept</stringProp>
  83125. <stringProp name="Header.value">*/*</stringProp>
  83126. </elementProp>
  83127. </collectionProp>
  83128. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  83129. <hashTree/>
  83130. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  83131. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  83132. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  83133. <collectionProp name="Arguments.arguments">
  83134. <elementProp name="" elementType="HTTPArgument">
  83135. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83136. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  83137. <stringProp name="Argument.metadata">=</stringProp>
  83138. </elementProp>
  83139. </collectionProp>
  83140. </elementProp>
  83141. <stringProp name="HTTPSampler.domain"/>
  83142. <stringProp name="HTTPSampler.port"/>
  83143. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83144. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83145. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83146. <stringProp name="HTTPSampler.contentEncoding"/>
  83147. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  83148. <stringProp name="HTTPSampler.method">POST</stringProp>
  83149. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83150. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83151. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83152. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83153. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83154. <stringProp name="HTTPSampler.embedded_url_re"/>
  83155. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  83156. <hashTree>
  83157. <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">
  83158. <stringProp name="VAR">admin_token</stringProp>
  83159. <stringProp name="JSONPATH">$</stringProp>
  83160. <stringProp name="DEFAULT"/>
  83161. <stringProp name="VARIABLE"/>
  83162. <stringProp name="SUBJECT">BODY</stringProp>
  83163. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  83164. <hashTree/>
  83165. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  83166. <collectionProp name="Asserion.test_strings">
  83167. <stringProp name="484395188">^.{10,}$</stringProp>
  83168. </collectionProp>
  83169. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83170. <boolProp name="Assertion.assume_success">false</boolProp>
  83171. <intProp name="Assertion.test_type">1</intProp>
  83172. <stringProp name="Assertion.scope">variable</stringProp>
  83173. <stringProp name="Scope.variable">admin_token</stringProp>
  83174. </ResponseAssertion>
  83175. <hashTree/>
  83176. </hashTree>
  83177. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  83178. <collectionProp name="HeaderManager.headers">
  83179. <elementProp name="" elementType="Header">
  83180. <stringProp name="Header.name">Authorization</stringProp>
  83181. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  83182. </elementProp>
  83183. </collectionProp>
  83184. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  83185. <hashTree/>
  83186. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  83187. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  83188. <stringProp name="BeanShellSampler.query">
  83189. import java.util.Random;
  83190. Random random = new Random();
  83191. if (${seedForRandom} &gt; 0) {
  83192. random.setSeed(${seedForRandom} + ${__threadNum});
  83193. }
  83194. vars.putObject("randomIntGenerator", random);
  83195. </stringProp>
  83196. <stringProp name="BeanShellSampler.filename"/>
  83197. <stringProp name="BeanShellSampler.parameters"/>
  83198. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83199. </BeanShellSampler>
  83200. <hashTree/>
  83201. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  83202. <stringProp name="scriptLanguage">javascript</stringProp>
  83203. <stringProp name="parameters"/>
  83204. <stringProp name="filename"/>
  83205. <stringProp name="cacheKey"/>
  83206. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  83207. var categories = props.get("categories");
  83208. number = random.nextInt(categories.length);
  83209. vars.put("category_url_key", categories[number].url_key);
  83210. vars.put("category_name", categories[number].name);
  83211. vars.put("category_id", categories[number].id);
  83212. vars.putObject("category", categories[number]);
  83213. </stringProp>
  83214. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  83215. <hashTree/>
  83216. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  83217. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  83218. <collectionProp name="Arguments.arguments">
  83219. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  83220. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83221. <stringProp name="Argument.value">identifier</stringProp>
  83222. <stringProp name="Argument.metadata">=</stringProp>
  83223. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83224. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  83225. </elementProp>
  83226. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83228. <stringProp name="Argument.value">home</stringProp>
  83229. <stringProp name="Argument.metadata">=</stringProp>
  83230. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83231. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  83232. </elementProp>
  83233. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83235. <stringProp name="Argument.value">eq</stringProp>
  83236. <stringProp name="Argument.metadata">=</stringProp>
  83237. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83238. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  83239. </elementProp>
  83240. </collectionProp>
  83241. </elementProp>
  83242. <stringProp name="HTTPSampler.domain"/>
  83243. <stringProp name="HTTPSampler.port"/>
  83244. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83245. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83246. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83247. <stringProp name="HTTPSampler.contentEncoding"/>
  83248. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  83249. <stringProp name="HTTPSampler.method">GET</stringProp>
  83250. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83251. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83252. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83253. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83254. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83255. <stringProp name="HTTPSampler.embedded_url_re"/>
  83256. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  83257. </HTTPSamplerProxy>
  83258. <hashTree>
  83259. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  83260. <collectionProp name="Asserion.test_strings">
  83261. <stringProp name="-1294635157">errors</stringProp>
  83262. </collectionProp>
  83263. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83264. <boolProp name="Assertion.assume_success">false</boolProp>
  83265. <intProp name="Assertion.test_type">6</intProp>
  83266. <stringProp name="Assertion.scope">variable</stringProp>
  83267. <stringProp name="Scope.variable"/>
  83268. </ResponseAssertion>
  83269. <hashTree/>
  83270. </hashTree>
  83271. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  83272. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  83273. <collectionProp name="Arguments.arguments">
  83274. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  83275. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83276. <stringProp name="Argument.value">1</stringProp>
  83277. <stringProp name="Argument.metadata">=</stringProp>
  83278. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83279. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  83280. <stringProp name="Argument.desc">true</stringProp>
  83281. </elementProp>
  83282. </collectionProp>
  83283. </elementProp>
  83284. <stringProp name="HTTPSampler.domain"/>
  83285. <stringProp name="HTTPSampler.port"/>
  83286. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83287. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83288. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83289. <stringProp name="HTTPSampler.contentEncoding"/>
  83290. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
  83291. <stringProp name="HTTPSampler.method">GET</stringProp>
  83292. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83293. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83294. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83295. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83296. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83297. <stringProp name="HTTPSampler.embedded_url_re"/>
  83298. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_categories.jmx</stringProp>
  83299. </HTTPSamplerProxy>
  83300. <hashTree>
  83301. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  83302. <collectionProp name="Asserion.test_strings">
  83303. <stringProp name="-1294635157">errors</stringProp>
  83304. </collectionProp>
  83305. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83306. <boolProp name="Assertion.assume_success">false</boolProp>
  83307. <intProp name="Assertion.test_type">6</intProp>
  83308. <stringProp name="Assertion.scope">variable</stringProp>
  83309. <stringProp name="Scope.variable"/>
  83310. </ResponseAssertion>
  83311. <hashTree/>
  83312. </hashTree>
  83313. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  83314. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  83315. <collectionProp name="Arguments.arguments">
  83316. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  83317. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83318. <stringProp name="Argument.value">category_id</stringProp>
  83319. <stringProp name="Argument.metadata">=</stringProp>
  83320. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83321. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  83322. </elementProp>
  83323. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83324. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83325. <stringProp name="Argument.value">${category_id}</stringProp>
  83326. <stringProp name="Argument.metadata">=</stringProp>
  83327. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83328. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  83329. </elementProp>
  83330. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83331. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83332. <stringProp name="Argument.value">eq</stringProp>
  83333. <stringProp name="Argument.metadata">=</stringProp>
  83334. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83335. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  83336. </elementProp>
  83337. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  83338. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83339. <stringProp name="Argument.value">12</stringProp>
  83340. <stringProp name="Argument.metadata">=</stringProp>
  83341. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83342. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  83343. <stringProp name="Argument.desc">true</stringProp>
  83344. </elementProp>
  83345. </collectionProp>
  83346. </elementProp>
  83347. <stringProp name="HTTPSampler.domain"/>
  83348. <stringProp name="HTTPSampler.port"/>
  83349. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83350. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83351. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83352. <stringProp name="HTTPSampler.contentEncoding"/>
  83353. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  83354. <stringProp name="HTTPSampler.method">GET</stringProp>
  83355. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83356. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83357. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83358. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83359. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83360. <stringProp name="HTTPSampler.embedded_url_re"/>
  83361. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_products_by_category_id.jmx</stringProp>
  83362. </HTTPSamplerProxy>
  83363. <hashTree>
  83364. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  83365. <collectionProp name="Asserion.test_strings">
  83366. <stringProp name="-1294635157">errors</stringProp>
  83367. </collectionProp>
  83368. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83369. <boolProp name="Assertion.assume_success">false</boolProp>
  83370. <intProp name="Assertion.test_type">6</intProp>
  83371. <stringProp name="Assertion.scope">variable</stringProp>
  83372. <stringProp name="Scope.variable"/>
  83373. </ResponseAssertion>
  83374. <hashTree/>
  83375. </hashTree>
  83376. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  83377. <boolProp name="LoopController.continue_forever">true</boolProp>
  83378. <stringProp name="LoopController.loops">2</stringProp>
  83379. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  83380. <hashTree>
  83381. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  83382. <stringProp name="CounterConfig.start">1</stringProp>
  83383. <stringProp name="CounterConfig.end"/>
  83384. <stringProp name="CounterConfig.incr">1</stringProp>
  83385. <stringProp name="CounterConfig.name">_counter</stringProp>
  83386. <stringProp name="CounterConfig.format"/>
  83387. <boolProp name="CounterConfig.per_user">true</boolProp>
  83388. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  83389. </CounterConfig>
  83390. <hashTree/>
  83391. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  83392. <stringProp name="BeanShellSampler.query">
  83393. import java.util.Random;
  83394. Random random = vars.getObject("randomIntGenerator");
  83395. number = random.nextInt(props.get("simple_products_list").size());
  83396. product = props.get("simple_products_list").get(number);
  83397. vars.put("product_url_key", product.get("url_key"));
  83398. vars.put("product_id", product.get("id"));
  83399. vars.put("product_name", product.get("title"));
  83400. vars.put("product_uenc", product.get("uenc"));
  83401. vars.put("product_sku", product.get("sku"));
  83402. </stringProp>
  83403. <stringProp name="BeanShellSampler.filename"/>
  83404. <stringProp name="BeanShellSampler.parameters"/>
  83405. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83406. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  83407. <hashTree/>
  83408. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  83409. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  83410. <collectionProp name="Arguments.arguments">
  83411. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  83412. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83413. <stringProp name="Argument.value">url_key</stringProp>
  83414. <stringProp name="Argument.metadata">=</stringProp>
  83415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83416. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  83417. </elementProp>
  83418. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83419. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83420. <stringProp name="Argument.value">${product_url_key}</stringProp>
  83421. <stringProp name="Argument.metadata">=</stringProp>
  83422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83423. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  83424. </elementProp>
  83425. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  83426. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83427. <stringProp name="Argument.value">eq</stringProp>
  83428. <stringProp name="Argument.metadata">=</stringProp>
  83429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83430. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  83431. </elementProp>
  83432. </collectionProp>
  83433. </elementProp>
  83434. <stringProp name="HTTPSampler.domain"/>
  83435. <stringProp name="HTTPSampler.port"/>
  83436. <stringProp name="HTTPSampler.connect_timeout"/>
  83437. <stringProp name="HTTPSampler.response_timeout"/>
  83438. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83439. <stringProp name="HTTPSampler.contentEncoding"/>
  83440. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  83441. <stringProp name="HTTPSampler.method">GET</stringProp>
  83442. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83443. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83444. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83445. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83446. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83447. <stringProp name="HTTPSampler.embedded_url_re"/>
  83448. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_url_key.jmx</stringProp>
  83449. </HTTPSamplerProxy>
  83450. <hashTree>
  83451. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  83452. <collectionProp name="Asserion.test_strings">
  83453. <stringProp name="-1294635157">errors</stringProp>
  83454. </collectionProp>
  83455. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83456. <boolProp name="Assertion.assume_success">false</boolProp>
  83457. <intProp name="Assertion.test_type">6</intProp>
  83458. <stringProp name="Assertion.scope">variable</stringProp>
  83459. <stringProp name="Scope.variable"/>
  83460. </ResponseAssertion>
  83461. <hashTree/>
  83462. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  83463. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  83464. <stringProp name="EXPECTED_VALUE"/>
  83465. <boolProp name="JSONVALIDATION">false</boolProp>
  83466. <boolProp name="EXPECT_NULL">false</boolProp>
  83467. <boolProp name="INVERT">false</boolProp>
  83468. <boolProp name="ISREGEX">false</boolProp>
  83469. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  83470. <hashTree/>
  83471. </hashTree>
  83472. </hashTree>
  83473. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  83474. <boolProp name="LoopController.continue_forever">true</boolProp>
  83475. <stringProp name="LoopController.loops">1</stringProp>
  83476. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  83477. <hashTree>
  83478. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  83479. <stringProp name="CounterConfig.start">1</stringProp>
  83480. <stringProp name="CounterConfig.end"/>
  83481. <stringProp name="CounterConfig.incr">1</stringProp>
  83482. <stringProp name="CounterConfig.name">_counter</stringProp>
  83483. <stringProp name="CounterConfig.format"/>
  83484. <boolProp name="CounterConfig.per_user">true</boolProp>
  83485. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  83486. </CounterConfig>
  83487. <hashTree/>
  83488. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  83489. <stringProp name="BeanShellSampler.query">
  83490. import java.util.Random;
  83491. Random random = vars.getObject("randomIntGenerator");
  83492. number = random.nextInt(props.get("configurable_products_list").size());
  83493. product = props.get("configurable_products_list").get(number);
  83494. vars.put("product_url_key", product.get("url_key"));
  83495. vars.put("product_id", product.get("id"));
  83496. vars.put("product_name", product.get("title"));
  83497. vars.put("product_uenc", product.get("uenc"));
  83498. vars.put("product_sku", product.get("sku"));
  83499. </stringProp>
  83500. <stringProp name="BeanShellSampler.filename"/>
  83501. <stringProp name="BeanShellSampler.parameters"/>
  83502. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83503. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  83504. <hashTree/>
  83505. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  83506. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  83507. <collectionProp name="Arguments.arguments">
  83508. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  83509. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83510. <stringProp name="Argument.value">url_key</stringProp>
  83511. <stringProp name="Argument.metadata">=</stringProp>
  83512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83513. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  83514. </elementProp>
  83515. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83516. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83517. <stringProp name="Argument.value">${product_url_key}</stringProp>
  83518. <stringProp name="Argument.metadata">=</stringProp>
  83519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83520. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  83521. </elementProp>
  83522. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  83523. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83524. <stringProp name="Argument.value">eq</stringProp>
  83525. <stringProp name="Argument.metadata">=</stringProp>
  83526. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83527. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  83528. </elementProp>
  83529. </collectionProp>
  83530. </elementProp>
  83531. <stringProp name="HTTPSampler.domain"/>
  83532. <stringProp name="HTTPSampler.port"/>
  83533. <stringProp name="HTTPSampler.connect_timeout"/>
  83534. <stringProp name="HTTPSampler.response_timeout"/>
  83535. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83536. <stringProp name="HTTPSampler.contentEncoding"/>
  83537. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  83538. <stringProp name="HTTPSampler.method">GET</stringProp>
  83539. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83540. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83541. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83542. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83543. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83544. <stringProp name="HTTPSampler.embedded_url_re"/>
  83545. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  83546. </HTTPSamplerProxy>
  83547. <hashTree>
  83548. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  83549. <collectionProp name="Asserion.test_strings">
  83550. <stringProp name="-1294635157">errors</stringProp>
  83551. </collectionProp>
  83552. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83553. <boolProp name="Assertion.assume_success">false</boolProp>
  83554. <intProp name="Assertion.test_type">6</intProp>
  83555. <stringProp name="Assertion.scope">variable</stringProp>
  83556. <stringProp name="Scope.variable"/>
  83557. </ResponseAssertion>
  83558. <hashTree/>
  83559. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  83560. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  83561. <stringProp name="EXPECTED_VALUE"/>
  83562. <boolProp name="JSONVALIDATION">false</boolProp>
  83563. <boolProp name="EXPECT_NULL">false</boolProp>
  83564. <boolProp name="INVERT">false</boolProp>
  83565. <boolProp name="ISREGEX">false</boolProp>
  83566. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  83567. <hashTree/>
  83568. </hashTree>
  83569. </hashTree>
  83570. </hashTree>
  83571. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Site Search" enabled="true">
  83572. <intProp name="ThroughputController.style">1</intProp>
  83573. <boolProp name="ThroughputController.perThread">false</boolProp>
  83574. <intProp name="ThroughputController.maxThroughput">1</intProp>
  83575. <stringProp name="ThroughputController.percentThroughput">${cSiteSearchPercentage}</stringProp>
  83576. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  83577. <hashTree>
  83578. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  83579. <stringProp name="script">
  83580. var tmpLabel = vars.get("testLabel")
  83581. if (tmpLabel) {
  83582. var testLabel = " (" + tmpLabel + ")"
  83583. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  83584. if (sampler.getName().indexOf(testLabel) == -1) {
  83585. sampler.setName(sampler.getName() + testLabel);
  83586. }
  83587. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  83588. sampler.setName("SetUp - " + sampler.getName());
  83589. }
  83590. } else {
  83591. testLabel = ""
  83592. }
  83593. </stringProp>
  83594. <stringProp name="scriptLanguage">javascript</stringProp>
  83595. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  83596. <hashTree/>
  83597. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  83598. <stringProp name="BeanShellSampler.query">
  83599. vars.put("testLabel", "[REST API C] Site Search");
  83600. </stringProp>
  83601. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83602. </BeanShellSampler>
  83603. <hashTree/>
  83604. <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Search Terms" enabled="true">
  83605. <stringProp name="filename">${files_folder}search_terms.csv</stringProp>
  83606. <stringProp name="fileEncoding">UTF-8</stringProp>
  83607. <stringProp name="variableNames"/>
  83608. <stringProp name="delimiter">,</stringProp>
  83609. <boolProp name="quotedData">false</boolProp>
  83610. <boolProp name="recycle">true</boolProp>
  83611. <boolProp name="stopThread">false</boolProp>
  83612. <stringProp name="shareMode">shareMode.thread</stringProp>
  83613. <stringProp name="TestPlan.comments">tool/fragments/ce/search/search_terms.jmx</stringProp></CSVDataSet>
  83614. <hashTree/>
  83615. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  83616. <collectionProp name="HeaderManager.headers">
  83617. <elementProp name="" elementType="Header">
  83618. <stringProp name="Header.name">Content-Type</stringProp>
  83619. <stringProp name="Header.value">application/json</stringProp>
  83620. </elementProp>
  83621. <elementProp name="" elementType="Header">
  83622. <stringProp name="Header.name">Accept</stringProp>
  83623. <stringProp name="Header.value">*/*</stringProp>
  83624. </elementProp>
  83625. </collectionProp>
  83626. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  83627. <hashTree/>
  83628. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  83629. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  83630. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  83631. <collectionProp name="Arguments.arguments">
  83632. <elementProp name="" elementType="HTTPArgument">
  83633. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83634. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  83635. <stringProp name="Argument.metadata">=</stringProp>
  83636. </elementProp>
  83637. </collectionProp>
  83638. </elementProp>
  83639. <stringProp name="HTTPSampler.domain"/>
  83640. <stringProp name="HTTPSampler.port"/>
  83641. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83642. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83643. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83644. <stringProp name="HTTPSampler.contentEncoding"/>
  83645. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  83646. <stringProp name="HTTPSampler.method">POST</stringProp>
  83647. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83648. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83649. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83650. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83651. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83652. <stringProp name="HTTPSampler.embedded_url_re"/>
  83653. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  83654. <hashTree>
  83655. <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">
  83656. <stringProp name="VAR">admin_token</stringProp>
  83657. <stringProp name="JSONPATH">$</stringProp>
  83658. <stringProp name="DEFAULT"/>
  83659. <stringProp name="VARIABLE"/>
  83660. <stringProp name="SUBJECT">BODY</stringProp>
  83661. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  83662. <hashTree/>
  83663. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  83664. <collectionProp name="Asserion.test_strings">
  83665. <stringProp name="484395188">^.{10,}$</stringProp>
  83666. </collectionProp>
  83667. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83668. <boolProp name="Assertion.assume_success">false</boolProp>
  83669. <intProp name="Assertion.test_type">1</intProp>
  83670. <stringProp name="Assertion.scope">variable</stringProp>
  83671. <stringProp name="Scope.variable">admin_token</stringProp>
  83672. </ResponseAssertion>
  83673. <hashTree/>
  83674. </hashTree>
  83675. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  83676. <collectionProp name="HeaderManager.headers">
  83677. <elementProp name="" elementType="Header">
  83678. <stringProp name="Header.name">Authorization</stringProp>
  83679. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  83680. </elementProp>
  83681. </collectionProp>
  83682. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  83683. <hashTree/>
  83684. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  83685. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  83686. <stringProp name="BeanShellSampler.query">
  83687. import java.util.Random;
  83688. Random random = new Random();
  83689. if (${seedForRandom} &gt; 0) {
  83690. random.setSeed(${seedForRandom} + ${__threadNum});
  83691. }
  83692. vars.putObject("randomIntGenerator", random);
  83693. </stringProp>
  83694. <stringProp name="BeanShellSampler.filename"/>
  83695. <stringProp name="BeanShellSampler.parameters"/>
  83696. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83697. </BeanShellSampler>
  83698. <hashTree/>
  83699. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search" enabled="true">
  83700. <intProp name="ThroughputController.style">1</intProp>
  83701. <boolProp name="ThroughputController.perThread">false</boolProp>
  83702. <intProp name="ThroughputController.maxThroughput">1</intProp>
  83703. <stringProp name="ThroughputController.percentThroughput">${searchQuickPercentage}</stringProp>
  83704. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  83705. <hashTree>
  83706. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  83707. <stringProp name="script">
  83708. var tmpLabel = vars.get("testLabel")
  83709. if (tmpLabel) {
  83710. var testLabel = " (" + tmpLabel + ")"
  83711. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  83712. if (sampler.getName().indexOf(testLabel) == -1) {
  83713. sampler.setName(sampler.getName() + testLabel);
  83714. }
  83715. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  83716. sampler.setName("SetUp - " + sampler.getName());
  83717. }
  83718. } else {
  83719. testLabel = ""
  83720. }
  83721. </stringProp>
  83722. <stringProp name="scriptLanguage">javascript</stringProp>
  83723. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  83724. <hashTree/>
  83725. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  83726. <stringProp name="BeanShellSampler.query">
  83727. vars.put("testLabel", "Quick Search");
  83728. </stringProp>
  83729. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83730. </BeanShellSampler>
  83731. <hashTree/>
  83732. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  83733. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  83734. <collectionProp name="Arguments.arguments">
  83735. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  83736. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83737. <stringProp name="Argument.value">identifier</stringProp>
  83738. <stringProp name="Argument.metadata">=</stringProp>
  83739. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83740. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  83741. </elementProp>
  83742. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83743. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83744. <stringProp name="Argument.value">home</stringProp>
  83745. <stringProp name="Argument.metadata">=</stringProp>
  83746. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83747. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  83748. </elementProp>
  83749. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83750. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83751. <stringProp name="Argument.value">eq</stringProp>
  83752. <stringProp name="Argument.metadata">=</stringProp>
  83753. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83754. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  83755. </elementProp>
  83756. </collectionProp>
  83757. </elementProp>
  83758. <stringProp name="HTTPSampler.domain"/>
  83759. <stringProp name="HTTPSampler.port"/>
  83760. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83761. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83762. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83763. <stringProp name="HTTPSampler.contentEncoding"/>
  83764. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  83765. <stringProp name="HTTPSampler.method">GET</stringProp>
  83766. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83767. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83768. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83769. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83770. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83771. <stringProp name="HTTPSampler.embedded_url_re"/>
  83772. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  83773. </HTTPSamplerProxy>
  83774. <hashTree>
  83775. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  83776. <collectionProp name="Asserion.test_strings">
  83777. <stringProp name="-1294635157">errors</stringProp>
  83778. </collectionProp>
  83779. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83780. <boolProp name="Assertion.assume_success">false</boolProp>
  83781. <intProp name="Assertion.test_type">6</intProp>
  83782. <stringProp name="Assertion.scope">variable</stringProp>
  83783. <stringProp name="Scope.variable"/>
  83784. </ResponseAssertion>
  83785. <hashTree/>
  83786. </hashTree>
  83787. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  83788. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  83789. <collectionProp name="Arguments.arguments">
  83790. <elementProp name="searchCriteria[request_name]" elementType="HTTPArgument">
  83791. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83792. <stringProp name="Argument.value">quick_search_container</stringProp>
  83793. <stringProp name="Argument.metadata">=</stringProp>
  83794. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83795. <stringProp name="Argument.name">searchCriteria[request_name]</stringProp>
  83796. </elementProp>
  83797. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  83798. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83799. <stringProp name="Argument.value">search_term</stringProp>
  83800. <stringProp name="Argument.metadata">=</stringProp>
  83801. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83802. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  83803. </elementProp>
  83804. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83805. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83806. <stringProp name="Argument.value">${searchTerm}</stringProp>
  83807. <stringProp name="Argument.metadata">=</stringProp>
  83808. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83809. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  83810. </elementProp>
  83811. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  83812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  83813. <stringProp name="Argument.value">20</stringProp>
  83814. <stringProp name="Argument.metadata">=</stringProp>
  83815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83816. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  83817. </elementProp>
  83818. </collectionProp>
  83819. </elementProp>
  83820. <stringProp name="HTTPSampler.domain"/>
  83821. <stringProp name="HTTPSampler.port"/>
  83822. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  83823. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  83824. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83825. <stringProp name="HTTPSampler.contentEncoding"/>
  83826. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/search</stringProp>
  83827. <stringProp name="HTTPSampler.method">GET</stringProp>
  83828. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83829. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83830. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83831. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83832. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83833. <stringProp name="HTTPSampler.embedded_url_re"/>
  83834. <stringProp name="TestPlan.comments">tool/fragments/ce/api/search_quick.jmx</stringProp>
  83835. </HTTPSamplerProxy>
  83836. <hashTree>
  83837. <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 total_count" enabled="true">
  83838. <stringProp name="VAR">api_search_products_query_total_count</stringProp>
  83839. <stringProp name="JSONPATH">$.total_count</stringProp>
  83840. <stringProp name="DEFAULT"/>
  83841. <stringProp name="VARIABLE"/>
  83842. <stringProp name="SUBJECT">BODY</stringProp>
  83843. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  83844. <hashTree/>
  83845. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  83846. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("api_search_products_query_total_count");
  83847. if (totalCount == null) {
  83848. Failure = true;
  83849. FailureMessage = "Not Expected \"totalCount\" to be null";
  83850. } else {
  83851. if (Integer.parseInt(totalCount) &lt; 1) {
  83852. Failure = true;
  83853. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  83854. } else {
  83855. Failure = false;
  83856. }
  83857. }
  83858. </stringProp>
  83859. <stringProp name="BeanShellAssertion.filename"/>
  83860. <stringProp name="BeanShellAssertion.parameters"/>
  83861. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  83862. </BeanShellAssertion>
  83863. <hashTree/>
  83864. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
  83865. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  83866. <stringProp name="RegexExtractor.refname">product_ids</stringProp>
  83867. <stringProp name="RegexExtractor.regex">"id":([^',]+)</stringProp>
  83868. <stringProp name="RegexExtractor.template">$1$</stringProp>
  83869. <stringProp name="RegexExtractor.default"/>
  83870. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  83871. </RegexExtractor>
  83872. <hashTree/>
  83873. <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 attribute code 1" enabled="true">
  83874. <stringProp name="VAR">attribute_code_1</stringProp>
  83875. <stringProp name="JSONPATH">$.aggregations.buckets[1].name</stringProp>
  83876. <stringProp name="DEFAULT"/>
  83877. <stringProp name="VARIABLE"/>
  83878. <stringProp name="SUBJECT">BODY</stringProp>
  83879. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  83880. <hashTree/>
  83881. <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 attribute value 1" enabled="true">
  83882. <stringProp name="VAR">attribute_value_1</stringProp>
  83883. <stringProp name="JSONPATH">$.aggregations.buckets[1].values[0].value</stringProp>
  83884. <stringProp name="DEFAULT"/>
  83885. <stringProp name="VARIABLE"/>
  83886. <stringProp name="SUBJECT">BODY</stringProp>
  83887. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  83888. <hashTree/>
  83889. <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 attribute code 2" enabled="true">
  83890. <stringProp name="VAR">attribute_code_2</stringProp>
  83891. <stringProp name="JSONPATH">$.aggregations.buckets[2].name</stringProp>
  83892. <stringProp name="DEFAULT"/>
  83893. <stringProp name="VARIABLE"/>
  83894. <stringProp name="SUBJECT">BODY</stringProp>
  83895. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  83896. <hashTree/>
  83897. <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 attribute value 2" enabled="true">
  83898. <stringProp name="VAR">attribute_value_2</stringProp>
  83899. <stringProp name="JSONPATH">$.aggregations.buckets[2].values[0].value</stringProp>
  83900. <stringProp name="DEFAULT"/>
  83901. <stringProp name="VARIABLE"/>
  83902. <stringProp name="SUBJECT">BODY</stringProp>
  83903. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  83904. <hashTree/>
  83905. </hashTree>
  83906. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  83907. <stringProp name="BeanShellSampler.query">
  83908. foundProducts = Integer.parseInt(vars.get("product_ids_matchNr"));
  83909. if (foundProducts &gt; 3) {
  83910. foundProducts = 3;
  83911. }
  83912. vars.put("foundProducts", String.valueOf(foundProducts));
  83913. </stringProp>
  83914. <stringProp name="BeanShellSampler.filename"/>
  83915. <stringProp name="BeanShellSampler.parameters"/>
  83916. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83917. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items_by_id.jmx</stringProp></BeanShellSampler>
  83918. <hashTree/>
  83919. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  83920. <boolProp name="LoopController.continue_forever">true</boolProp>
  83921. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  83922. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  83923. <hashTree>
  83924. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  83925. <stringProp name="CounterConfig.start">1</stringProp>
  83926. <stringProp name="CounterConfig.end"/>
  83927. <stringProp name="CounterConfig.incr">1</stringProp>
  83928. <stringProp name="CounterConfig.name">_counter</stringProp>
  83929. <stringProp name="CounterConfig.format"/>
  83930. <boolProp name="CounterConfig.per_user">true</boolProp>
  83931. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  83932. </CounterConfig>
  83933. <hashTree/>
  83934. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  83935. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup_by_id.jmx</stringProp>
  83936. <stringProp name="BeanShellSampler.query">
  83937. number = vars.get("_counter");
  83938. product = vars.get("product_ids_"+number);
  83939. vars.put("product_id", product);
  83940. </stringProp>
  83941. <stringProp name="BeanShellSampler.filename"/>
  83942. <stringProp name="BeanShellSampler.parameters"/>
  83943. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  83944. </BeanShellSampler>
  83945. <hashTree/>
  83946. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  83947. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  83948. <collectionProp name="Arguments.arguments">
  83949. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  83950. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83951. <stringProp name="Argument.value">entity_id</stringProp>
  83952. <stringProp name="Argument.metadata">=</stringProp>
  83953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83954. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  83955. </elementProp>
  83956. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  83957. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83958. <stringProp name="Argument.value">${product_id}</stringProp>
  83959. <stringProp name="Argument.metadata">=</stringProp>
  83960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83961. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  83962. </elementProp>
  83963. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  83964. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  83965. <stringProp name="Argument.value">eq</stringProp>
  83966. <stringProp name="Argument.metadata">=</stringProp>
  83967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  83968. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  83969. </elementProp>
  83970. </collectionProp>
  83971. </elementProp>
  83972. <stringProp name="HTTPSampler.domain"/>
  83973. <stringProp name="HTTPSampler.port"/>
  83974. <stringProp name="HTTPSampler.connect_timeout"/>
  83975. <stringProp name="HTTPSampler.response_timeout"/>
  83976. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  83977. <stringProp name="HTTPSampler.contentEncoding"/>
  83978. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  83979. <stringProp name="HTTPSampler.method">GET</stringProp>
  83980. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  83981. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  83982. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  83983. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  83984. <boolProp name="HTTPSampler.monitor">false</boolProp>
  83985. <stringProp name="HTTPSampler.embedded_url_re"/>
  83986. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_id.jmx</stringProp>
  83987. </HTTPSamplerProxy>
  83988. <hashTree>
  83989. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  83990. <collectionProp name="Asserion.test_strings">
  83991. <stringProp name="-1294635157">errors</stringProp>
  83992. </collectionProp>
  83993. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  83994. <boolProp name="Assertion.assume_success">false</boolProp>
  83995. <intProp name="Assertion.test_type">6</intProp>
  83996. <stringProp name="Assertion.scope">variable</stringProp>
  83997. <stringProp name="Scope.variable"/>
  83998. </ResponseAssertion>
  83999. <hashTree/>
  84000. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  84001. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  84002. <stringProp name="EXPECTED_VALUE"/>
  84003. <boolProp name="JSONVALIDATION">false</boolProp>
  84004. <boolProp name="EXPECT_NULL">false</boolProp>
  84005. <boolProp name="INVERT">false</boolProp>
  84006. <boolProp name="ISREGEX">false</boolProp>
  84007. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  84008. <hashTree/>
  84009. </hashTree>
  84010. </hashTree>
  84011. </hashTree>
  84012. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Quick Search With Filtration" enabled="true">
  84013. <intProp name="ThroughputController.style">1</intProp>
  84014. <boolProp name="ThroughputController.perThread">false</boolProp>
  84015. <intProp name="ThroughputController.maxThroughput">1</intProp>
  84016. <stringProp name="ThroughputController.percentThroughput">${searchQuickFilterPercentage}</stringProp>
  84017. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  84018. <hashTree>
  84019. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  84020. <stringProp name="script">
  84021. var tmpLabel = vars.get("testLabel")
  84022. if (tmpLabel) {
  84023. var testLabel = " (" + tmpLabel + ")"
  84024. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  84025. if (sampler.getName().indexOf(testLabel) == -1) {
  84026. sampler.setName(sampler.getName() + testLabel);
  84027. }
  84028. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  84029. sampler.setName("SetUp - " + sampler.getName());
  84030. }
  84031. } else {
  84032. testLabel = ""
  84033. }
  84034. </stringProp>
  84035. <stringProp name="scriptLanguage">javascript</stringProp>
  84036. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  84037. <hashTree/>
  84038. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  84039. <stringProp name="BeanShellSampler.query">
  84040. vars.put("testLabel", "Quick Search With Filtration");
  84041. </stringProp>
  84042. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84043. </BeanShellSampler>
  84044. <hashTree/>
  84045. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  84046. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84047. <collectionProp name="Arguments.arguments">
  84048. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84050. <stringProp name="Argument.value">identifier</stringProp>
  84051. <stringProp name="Argument.metadata">=</stringProp>
  84052. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84053. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84054. </elementProp>
  84055. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84057. <stringProp name="Argument.value">home</stringProp>
  84058. <stringProp name="Argument.metadata">=</stringProp>
  84059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84060. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84061. </elementProp>
  84062. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84063. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84064. <stringProp name="Argument.value">eq</stringProp>
  84065. <stringProp name="Argument.metadata">=</stringProp>
  84066. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84067. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  84068. </elementProp>
  84069. </collectionProp>
  84070. </elementProp>
  84071. <stringProp name="HTTPSampler.domain"/>
  84072. <stringProp name="HTTPSampler.port"/>
  84073. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84074. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84075. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84076. <stringProp name="HTTPSampler.contentEncoding"/>
  84077. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  84078. <stringProp name="HTTPSampler.method">GET</stringProp>
  84079. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84080. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84081. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84082. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84083. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84084. <stringProp name="HTTPSampler.embedded_url_re"/>
  84085. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  84086. </HTTPSamplerProxy>
  84087. <hashTree>
  84088. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  84089. <collectionProp name="Asserion.test_strings">
  84090. <stringProp name="-1294635157">errors</stringProp>
  84091. </collectionProp>
  84092. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  84093. <boolProp name="Assertion.assume_success">false</boolProp>
  84094. <intProp name="Assertion.test_type">6</intProp>
  84095. <stringProp name="Assertion.scope">variable</stringProp>
  84096. <stringProp name="Scope.variable"/>
  84097. </ResponseAssertion>
  84098. <hashTree/>
  84099. </hashTree>
  84100. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search" enabled="true">
  84101. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84102. <collectionProp name="Arguments.arguments">
  84103. <elementProp name="searchCriteria[request_name]" elementType="HTTPArgument">
  84104. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84105. <stringProp name="Argument.value">quick_search_container</stringProp>
  84106. <stringProp name="Argument.metadata">=</stringProp>
  84107. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84108. <stringProp name="Argument.name">searchCriteria[request_name]</stringProp>
  84109. </elementProp>
  84110. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84111. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84112. <stringProp name="Argument.value">search_term</stringProp>
  84113. <stringProp name="Argument.metadata">=</stringProp>
  84114. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84115. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84116. </elementProp>
  84117. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84118. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84119. <stringProp name="Argument.value">${searchTerm}</stringProp>
  84120. <stringProp name="Argument.metadata">=</stringProp>
  84121. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84122. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84123. </elementProp>
  84124. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  84125. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84126. <stringProp name="Argument.value">20</stringProp>
  84127. <stringProp name="Argument.metadata">=</stringProp>
  84128. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84129. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  84130. </elementProp>
  84131. </collectionProp>
  84132. </elementProp>
  84133. <stringProp name="HTTPSampler.domain"/>
  84134. <stringProp name="HTTPSampler.port"/>
  84135. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84136. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84137. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84138. <stringProp name="HTTPSampler.contentEncoding"/>
  84139. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/search</stringProp>
  84140. <stringProp name="HTTPSampler.method">GET</stringProp>
  84141. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84142. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84143. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84144. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84145. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84146. <stringProp name="HTTPSampler.embedded_url_re"/>
  84147. <stringProp name="TestPlan.comments">tool/fragments/ce/api/search_quick.jmx</stringProp>
  84148. </HTTPSamplerProxy>
  84149. <hashTree>
  84150. <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 total_count" enabled="true">
  84151. <stringProp name="VAR">api_search_products_query_total_count</stringProp>
  84152. <stringProp name="JSONPATH">$.total_count</stringProp>
  84153. <stringProp name="DEFAULT"/>
  84154. <stringProp name="VARIABLE"/>
  84155. <stringProp name="SUBJECT">BODY</stringProp>
  84156. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84157. <hashTree/>
  84158. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  84159. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("api_search_products_query_total_count");
  84160. if (totalCount == null) {
  84161. Failure = true;
  84162. FailureMessage = "Not Expected \"totalCount\" to be null";
  84163. } else {
  84164. if (Integer.parseInt(totalCount) &lt; 1) {
  84165. Failure = true;
  84166. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  84167. } else {
  84168. Failure = false;
  84169. }
  84170. }
  84171. </stringProp>
  84172. <stringProp name="BeanShellAssertion.filename"/>
  84173. <stringProp name="BeanShellAssertion.parameters"/>
  84174. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  84175. </BeanShellAssertion>
  84176. <hashTree/>
  84177. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
  84178. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  84179. <stringProp name="RegexExtractor.refname">product_ids</stringProp>
  84180. <stringProp name="RegexExtractor.regex">"id":([^',]+)</stringProp>
  84181. <stringProp name="RegexExtractor.template">$1$</stringProp>
  84182. <stringProp name="RegexExtractor.default"/>
  84183. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  84184. </RegexExtractor>
  84185. <hashTree/>
  84186. <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 attribute code 1" enabled="true">
  84187. <stringProp name="VAR">attribute_code_1</stringProp>
  84188. <stringProp name="JSONPATH">$.aggregations.buckets[1].name</stringProp>
  84189. <stringProp name="DEFAULT"/>
  84190. <stringProp name="VARIABLE"/>
  84191. <stringProp name="SUBJECT">BODY</stringProp>
  84192. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84193. <hashTree/>
  84194. <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 attribute value 1" enabled="true">
  84195. <stringProp name="VAR">attribute_value_1</stringProp>
  84196. <stringProp name="JSONPATH">$.aggregations.buckets[1].values[0].value</stringProp>
  84197. <stringProp name="DEFAULT"/>
  84198. <stringProp name="VARIABLE"/>
  84199. <stringProp name="SUBJECT">BODY</stringProp>
  84200. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84201. <hashTree/>
  84202. <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 attribute code 2" enabled="true">
  84203. <stringProp name="VAR">attribute_code_2</stringProp>
  84204. <stringProp name="JSONPATH">$.aggregations.buckets[2].name</stringProp>
  84205. <stringProp name="DEFAULT"/>
  84206. <stringProp name="VARIABLE"/>
  84207. <stringProp name="SUBJECT">BODY</stringProp>
  84208. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84209. <hashTree/>
  84210. <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 attribute value 2" enabled="true">
  84211. <stringProp name="VAR">attribute_value_2</stringProp>
  84212. <stringProp name="JSONPATH">$.aggregations.buckets[2].values[0].value</stringProp>
  84213. <stringProp name="DEFAULT"/>
  84214. <stringProp name="VARIABLE"/>
  84215. <stringProp name="SUBJECT">BODY</stringProp>
  84216. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84217. <hashTree/>
  84218. </hashTree>
  84219. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Filter by Attribute" enabled="true">
  84220. <boolProp name="LoopController.continue_forever">true</boolProp>
  84221. <stringProp name="LoopController.loops">2</stringProp>
  84222. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  84223. <hashTree>
  84224. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  84225. <stringProp name="CounterConfig.start">1</stringProp>
  84226. <stringProp name="CounterConfig.end"/>
  84227. <stringProp name="CounterConfig.incr">1</stringProp>
  84228. <stringProp name="CounterConfig.name">_counter</stringProp>
  84229. <stringProp name="CounterConfig.format"/>
  84230. <boolProp name="CounterConfig.per_user">true</boolProp>
  84231. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  84232. </CounterConfig>
  84233. <hashTree/>
  84234. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Attributes Data" enabled="true">
  84235. <stringProp name="TestPlan.comments">tool/fragments/ce/api/searched_attributes_setup.jmx</stringProp>
  84236. <stringProp name="BeanShellSampler.query">
  84237. number = vars.get("_counter");
  84238. attribute_code = vars.get("attribute_code_"+number);
  84239. attribute_code = attribute_code.replace("_bucket", "");
  84240. vars.put("attribute_code", attribute_code);
  84241. attribute_value = vars.get("attribute_value_"+number);
  84242. vars.put("attribute_value", attribute_value);
  84243. </stringProp>
  84244. <stringProp name="BeanShellSampler.filename"/>
  84245. <stringProp name="BeanShellSampler.parameters"/>
  84246. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84247. </BeanShellSampler>
  84248. <hashTree/>
  84249. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filter by Attribute ${_counter}" enabled="true">
  84250. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84251. <collectionProp name="Arguments.arguments">
  84252. <elementProp name="searchCriteria[request_name]" elementType="HTTPArgument">
  84253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84254. <stringProp name="Argument.value">quick_search_container</stringProp>
  84255. <stringProp name="Argument.metadata">=</stringProp>
  84256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84257. <stringProp name="Argument.name">searchCriteria[request_name]</stringProp>
  84258. </elementProp>
  84259. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84260. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84261. <stringProp name="Argument.value">search_term</stringProp>
  84262. <stringProp name="Argument.metadata">=</stringProp>
  84263. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84264. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84265. </elementProp>
  84266. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84267. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84268. <stringProp name="Argument.value">${searchTerm}</stringProp>
  84269. <stringProp name="Argument.metadata">=</stringProp>
  84270. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84271. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84272. </elementProp>
  84273. <elementProp name="searchCriteria[filter_groups][1][filters][0][field]" elementType="HTTPArgument">
  84274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84275. <stringProp name="Argument.value">${attribute_code}</stringProp>
  84276. <stringProp name="Argument.metadata">=</stringProp>
  84277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84278. <stringProp name="Argument.name">searchCriteria[filter_groups][1][filters][0][field]</stringProp>
  84279. </elementProp>
  84280. <elementProp name="searchCriteria[filter_groups][1][filters][0][value]" elementType="HTTPArgument">
  84281. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84282. <stringProp name="Argument.value">${attribute_value}</stringProp>
  84283. <stringProp name="Argument.metadata">=</stringProp>
  84284. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84285. <stringProp name="Argument.name">searchCriteria[filter_groups][1][filters][0][value]</stringProp>
  84286. </elementProp>
  84287. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  84288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84289. <stringProp name="Argument.value">20</stringProp>
  84290. <stringProp name="Argument.metadata">=</stringProp>
  84291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84292. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  84293. </elementProp>
  84294. </collectionProp>
  84295. </elementProp>
  84296. <stringProp name="HTTPSampler.domain"/>
  84297. <stringProp name="HTTPSampler.port"/>
  84298. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84299. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84300. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84301. <stringProp name="HTTPSampler.contentEncoding"/>
  84302. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/search</stringProp>
  84303. <stringProp name="HTTPSampler.method">GET</stringProp>
  84304. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84305. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84306. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84307. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84308. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84309. <stringProp name="HTTPSampler.embedded_url_re"/>
  84310. <stringProp name="TestPlan.comments">tool/fragments/ce/api/search_quick_filter_attribute.jmx</stringProp>
  84311. </HTTPSamplerProxy>
  84312. <hashTree>
  84313. <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 total_count" enabled="true">
  84314. <stringProp name="VAR">api_search_products_query_total_count</stringProp>
  84315. <stringProp name="JSONPATH">$.total_count</stringProp>
  84316. <stringProp name="DEFAULT"/>
  84317. <stringProp name="VARIABLE"/>
  84318. <stringProp name="SUBJECT">BODY</stringProp>
  84319. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84320. <hashTree/>
  84321. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  84322. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("api_search_products_query_total_count");
  84323. if (totalCount == null) {
  84324. Failure = true;
  84325. FailureMessage = "Not Expected \"totalCount\" to be null";
  84326. } else {
  84327. if (Integer.parseInt(totalCount) &lt; 1) {
  84328. Failure = true;
  84329. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  84330. } else {
  84331. Failure = false;
  84332. }
  84333. }
  84334. </stringProp>
  84335. <stringProp name="BeanShellAssertion.filename"/>
  84336. <stringProp name="BeanShellAssertion.parameters"/>
  84337. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  84338. </BeanShellAssertion>
  84339. <hashTree/>
  84340. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
  84341. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  84342. <stringProp name="RegexExtractor.refname">product_ids</stringProp>
  84343. <stringProp name="RegexExtractor.regex">"id":([^',]+)</stringProp>
  84344. <stringProp name="RegexExtractor.template">$1$</stringProp>
  84345. <stringProp name="RegexExtractor.default"/>
  84346. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  84347. </RegexExtractor>
  84348. <hashTree/>
  84349. </hashTree>
  84350. </hashTree>
  84351. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  84352. <stringProp name="BeanShellSampler.query">
  84353. foundProducts = Integer.parseInt(vars.get("product_ids_matchNr"));
  84354. if (foundProducts &gt; 3) {
  84355. foundProducts = 3;
  84356. }
  84357. vars.put("foundProducts", String.valueOf(foundProducts));
  84358. </stringProp>
  84359. <stringProp name="BeanShellSampler.filename"/>
  84360. <stringProp name="BeanShellSampler.parameters"/>
  84361. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84362. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items_by_id.jmx</stringProp></BeanShellSampler>
  84363. <hashTree/>
  84364. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  84365. <boolProp name="LoopController.continue_forever">true</boolProp>
  84366. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  84367. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  84368. <hashTree>
  84369. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  84370. <stringProp name="CounterConfig.start">1</stringProp>
  84371. <stringProp name="CounterConfig.end"/>
  84372. <stringProp name="CounterConfig.incr">1</stringProp>
  84373. <stringProp name="CounterConfig.name">_counter</stringProp>
  84374. <stringProp name="CounterConfig.format"/>
  84375. <boolProp name="CounterConfig.per_user">true</boolProp>
  84376. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  84377. </CounterConfig>
  84378. <hashTree/>
  84379. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  84380. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup_by_id.jmx</stringProp>
  84381. <stringProp name="BeanShellSampler.query">
  84382. number = vars.get("_counter");
  84383. product = vars.get("product_ids_"+number);
  84384. vars.put("product_id", product);
  84385. </stringProp>
  84386. <stringProp name="BeanShellSampler.filename"/>
  84387. <stringProp name="BeanShellSampler.parameters"/>
  84388. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84389. </BeanShellSampler>
  84390. <hashTree/>
  84391. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  84392. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84393. <collectionProp name="Arguments.arguments">
  84394. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84395. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84396. <stringProp name="Argument.value">entity_id</stringProp>
  84397. <stringProp name="Argument.metadata">=</stringProp>
  84398. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84399. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84400. </elementProp>
  84401. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84402. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84403. <stringProp name="Argument.value">${product_id}</stringProp>
  84404. <stringProp name="Argument.metadata">=</stringProp>
  84405. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84406. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84407. </elementProp>
  84408. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  84409. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84410. <stringProp name="Argument.value">eq</stringProp>
  84411. <stringProp name="Argument.metadata">=</stringProp>
  84412. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84413. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  84414. </elementProp>
  84415. </collectionProp>
  84416. </elementProp>
  84417. <stringProp name="HTTPSampler.domain"/>
  84418. <stringProp name="HTTPSampler.port"/>
  84419. <stringProp name="HTTPSampler.connect_timeout"/>
  84420. <stringProp name="HTTPSampler.response_timeout"/>
  84421. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84422. <stringProp name="HTTPSampler.contentEncoding"/>
  84423. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  84424. <stringProp name="HTTPSampler.method">GET</stringProp>
  84425. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84426. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84427. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84428. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84429. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84430. <stringProp name="HTTPSampler.embedded_url_re"/>
  84431. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_id.jmx</stringProp>
  84432. </HTTPSamplerProxy>
  84433. <hashTree>
  84434. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  84435. <collectionProp name="Asserion.test_strings">
  84436. <stringProp name="-1294635157">errors</stringProp>
  84437. </collectionProp>
  84438. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  84439. <boolProp name="Assertion.assume_success">false</boolProp>
  84440. <intProp name="Assertion.test_type">6</intProp>
  84441. <stringProp name="Assertion.scope">variable</stringProp>
  84442. <stringProp name="Scope.variable"/>
  84443. </ResponseAssertion>
  84444. <hashTree/>
  84445. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  84446. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  84447. <stringProp name="EXPECTED_VALUE"/>
  84448. <boolProp name="JSONVALIDATION">false</boolProp>
  84449. <boolProp name="EXPECT_NULL">false</boolProp>
  84450. <boolProp name="INVERT">false</boolProp>
  84451. <boolProp name="ISREGEX">false</boolProp>
  84452. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  84453. <hashTree/>
  84454. </hashTree>
  84455. </hashTree>
  84456. </hashTree>
  84457. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Advanced Search" enabled="true">
  84458. <intProp name="ThroughputController.style">1</intProp>
  84459. <boolProp name="ThroughputController.perThread">false</boolProp>
  84460. <intProp name="ThroughputController.maxThroughput">1</intProp>
  84461. <stringProp name="ThroughputController.percentThroughput">${searchAdvancedPercentage}</stringProp>
  84462. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  84463. <hashTree>
  84464. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  84465. <stringProp name="script">
  84466. var tmpLabel = vars.get("testLabel")
  84467. if (tmpLabel) {
  84468. var testLabel = " (" + tmpLabel + ")"
  84469. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  84470. if (sampler.getName().indexOf(testLabel) == -1) {
  84471. sampler.setName(sampler.getName() + testLabel);
  84472. }
  84473. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  84474. sampler.setName("SetUp - " + sampler.getName());
  84475. }
  84476. } else {
  84477. testLabel = ""
  84478. }
  84479. </stringProp>
  84480. <stringProp name="scriptLanguage">javascript</stringProp>
  84481. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  84482. <hashTree/>
  84483. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  84484. <stringProp name="BeanShellSampler.query">
  84485. vars.put("testLabel", "Advanced Search");
  84486. </stringProp>
  84487. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84488. </BeanShellSampler>
  84489. <hashTree/>
  84490. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  84491. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84492. <collectionProp name="Arguments.arguments">
  84493. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84495. <stringProp name="Argument.value">identifier</stringProp>
  84496. <stringProp name="Argument.metadata">=</stringProp>
  84497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84498. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84499. </elementProp>
  84500. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84502. <stringProp name="Argument.value">home</stringProp>
  84503. <stringProp name="Argument.metadata">=</stringProp>
  84504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84505. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84506. </elementProp>
  84507. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84509. <stringProp name="Argument.value">eq</stringProp>
  84510. <stringProp name="Argument.metadata">=</stringProp>
  84511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84512. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  84513. </elementProp>
  84514. </collectionProp>
  84515. </elementProp>
  84516. <stringProp name="HTTPSampler.domain"/>
  84517. <stringProp name="HTTPSampler.port"/>
  84518. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84519. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84520. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84521. <stringProp name="HTTPSampler.contentEncoding"/>
  84522. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  84523. <stringProp name="HTTPSampler.method">GET</stringProp>
  84524. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84525. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84526. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84527. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84528. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84529. <stringProp name="HTTPSampler.embedded_url_re"/>
  84530. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  84531. </HTTPSamplerProxy>
  84532. <hashTree>
  84533. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  84534. <collectionProp name="Asserion.test_strings">
  84535. <stringProp name="-1294635157">errors</stringProp>
  84536. </collectionProp>
  84537. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  84538. <boolProp name="Assertion.assume_success">false</boolProp>
  84539. <intProp name="Assertion.test_type">6</intProp>
  84540. <stringProp name="Assertion.scope">variable</stringProp>
  84541. <stringProp name="Scope.variable"/>
  84542. </ResponseAssertion>
  84543. <hashTree/>
  84544. </hashTree>
  84545. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Advanced" enabled="true">
  84546. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84547. <collectionProp name="Arguments.arguments">
  84548. <elementProp name="searchCriteria[request_name]" elementType="HTTPArgument">
  84549. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84550. <stringProp name="Argument.value">quick_search_container</stringProp>
  84551. <stringProp name="Argument.metadata">=</stringProp>
  84552. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84553. <stringProp name="Argument.name">searchCriteria[request_name]</stringProp>
  84554. </elementProp>
  84555. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84556. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84557. <stringProp name="Argument.value">search_term</stringProp>
  84558. <stringProp name="Argument.metadata">=</stringProp>
  84559. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84560. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84561. </elementProp>
  84562. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84563. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84564. <stringProp name="Argument.value">${searchTerm}</stringProp>
  84565. <stringProp name="Argument.metadata">=</stringProp>
  84566. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84567. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84568. </elementProp>
  84569. <elementProp name="searchCriteria[filter_groups][1][filters][0][field]" elementType="HTTPArgument">
  84570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84571. <stringProp name="Argument.value">price.to</stringProp>
  84572. <stringProp name="Argument.metadata">=</stringProp>
  84573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84574. <stringProp name="Argument.name">searchCriteria[filter_groups][1][filters][0][field]</stringProp>
  84575. </elementProp>
  84576. <elementProp name="searchCriteria[filter_groups][1][filters][0][value]" elementType="HTTPArgument">
  84577. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84578. <stringProp name="Argument.value">${priceTo}</stringProp>
  84579. <stringProp name="Argument.metadata">=</stringProp>
  84580. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84581. <stringProp name="Argument.name">searchCriteria[filter_groups][1][filters][0][value]</stringProp>
  84582. </elementProp>
  84583. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  84584. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84585. <stringProp name="Argument.value">20</stringProp>
  84586. <stringProp name="Argument.metadata">=</stringProp>
  84587. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84588. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  84589. </elementProp>
  84590. </collectionProp>
  84591. </elementProp>
  84592. <stringProp name="HTTPSampler.domain"/>
  84593. <stringProp name="HTTPSampler.port"/>
  84594. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84595. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84596. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84597. <stringProp name="HTTPSampler.contentEncoding"/>
  84598. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/search</stringProp>
  84599. <stringProp name="HTTPSampler.method">GET</stringProp>
  84600. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84601. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84602. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84603. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84604. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84605. <stringProp name="HTTPSampler.embedded_url_re"/>
  84606. <stringProp name="TestPlan.comments">tool/fragments/ce/api/search_advanced.jmx</stringProp>
  84607. </HTTPSamplerProxy>
  84608. <hashTree>
  84609. <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 total_count" enabled="true">
  84610. <stringProp name="VAR">api_search_products_query_total_count</stringProp>
  84611. <stringProp name="JSONPATH">$.total_count</stringProp>
  84612. <stringProp name="DEFAULT"/>
  84613. <stringProp name="VARIABLE"/>
  84614. <stringProp name="SUBJECT">BODY</stringProp>
  84615. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84616. <hashTree/>
  84617. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  84618. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("api_search_products_query_total_count");
  84619. if (totalCount == null) {
  84620. Failure = true;
  84621. FailureMessage = "Not Expected \"totalCount\" to be null";
  84622. } else {
  84623. if (Integer.parseInt(totalCount) &lt; 1) {
  84624. Failure = true;
  84625. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  84626. } else {
  84627. Failure = false;
  84628. }
  84629. }
  84630. </stringProp>
  84631. <stringProp name="BeanShellAssertion.filename"/>
  84632. <stringProp name="BeanShellAssertion.parameters"/>
  84633. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  84634. </BeanShellAssertion>
  84635. <hashTree/>
  84636. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor: Extract product ids" enabled="true">
  84637. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  84638. <stringProp name="RegexExtractor.refname">product_ids</stringProp>
  84639. <stringProp name="RegexExtractor.regex">"id":([^',]+)</stringProp>
  84640. <stringProp name="RegexExtractor.template">$1$</stringProp>
  84641. <stringProp name="RegexExtractor.default"/>
  84642. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  84643. </RegexExtractor>
  84644. <hashTree/>
  84645. </hashTree>
  84646. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  84647. <stringProp name="BeanShellSampler.query">
  84648. foundProducts = Integer.parseInt(vars.get("product_ids_matchNr"));
  84649. if (foundProducts &gt; 3) {
  84650. foundProducts = 3;
  84651. }
  84652. vars.put("foundProducts", String.valueOf(foundProducts));
  84653. </stringProp>
  84654. <stringProp name="BeanShellSampler.filename"/>
  84655. <stringProp name="BeanShellSampler.parameters"/>
  84656. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84657. <stringProp name="TestPlan.comments">tool/fragments/ce/search/set_found_items_by_id.jmx</stringProp></BeanShellSampler>
  84658. <hashTree/>
  84659. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Searched Products" enabled="true">
  84660. <boolProp name="LoopController.continue_forever">true</boolProp>
  84661. <stringProp name="LoopController.loops">${foundProducts}</stringProp>
  84662. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  84663. <hashTree>
  84664. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  84665. <stringProp name="CounterConfig.start">1</stringProp>
  84666. <stringProp name="CounterConfig.end"/>
  84667. <stringProp name="CounterConfig.incr">1</stringProp>
  84668. <stringProp name="CounterConfig.name">_counter</stringProp>
  84669. <stringProp name="CounterConfig.format"/>
  84670. <boolProp name="CounterConfig.per_user">true</boolProp>
  84671. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  84672. </CounterConfig>
  84673. <hashTree/>
  84674. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Product Data" enabled="true">
  84675. <stringProp name="TestPlan.comments">tool/fragments/ce/search/searched_products_setup_by_id.jmx</stringProp>
  84676. <stringProp name="BeanShellSampler.query">
  84677. number = vars.get("_counter");
  84678. product = vars.get("product_ids_"+number);
  84679. vars.put("product_id", product);
  84680. </stringProp>
  84681. <stringProp name="BeanShellSampler.filename"/>
  84682. <stringProp name="BeanShellSampler.parameters"/>
  84683. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84684. </BeanShellSampler>
  84685. <hashTree/>
  84686. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Product ${_counter} View" enabled="true">
  84687. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84688. <collectionProp name="Arguments.arguments">
  84689. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84690. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84691. <stringProp name="Argument.value">entity_id</stringProp>
  84692. <stringProp name="Argument.metadata">=</stringProp>
  84693. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84694. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84695. </elementProp>
  84696. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84697. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84698. <stringProp name="Argument.value">${product_id}</stringProp>
  84699. <stringProp name="Argument.metadata">=</stringProp>
  84700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84701. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84702. </elementProp>
  84703. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  84704. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84705. <stringProp name="Argument.value">eq</stringProp>
  84706. <stringProp name="Argument.metadata">=</stringProp>
  84707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84708. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  84709. </elementProp>
  84710. </collectionProp>
  84711. </elementProp>
  84712. <stringProp name="HTTPSampler.domain"/>
  84713. <stringProp name="HTTPSampler.port"/>
  84714. <stringProp name="HTTPSampler.connect_timeout"/>
  84715. <stringProp name="HTTPSampler.response_timeout"/>
  84716. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84717. <stringProp name="HTTPSampler.contentEncoding"/>
  84718. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  84719. <stringProp name="HTTPSampler.method">GET</stringProp>
  84720. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84721. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84722. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84723. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84724. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84725. <stringProp name="HTTPSampler.embedded_url_re"/>
  84726. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_id.jmx</stringProp>
  84727. </HTTPSamplerProxy>
  84728. <hashTree>
  84729. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  84730. <collectionProp name="Asserion.test_strings">
  84731. <stringProp name="-1294635157">errors</stringProp>
  84732. </collectionProp>
  84733. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  84734. <boolProp name="Assertion.assume_success">false</boolProp>
  84735. <intProp name="Assertion.test_type">6</intProp>
  84736. <stringProp name="Assertion.scope">variable</stringProp>
  84737. <stringProp name="Scope.variable"/>
  84738. </ResponseAssertion>
  84739. <hashTree/>
  84740. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  84741. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  84742. <stringProp name="EXPECTED_VALUE"/>
  84743. <boolProp name="JSONVALIDATION">false</boolProp>
  84744. <boolProp name="EXPECT_NULL">false</boolProp>
  84745. <boolProp name="INVERT">false</boolProp>
  84746. <boolProp name="ISREGEX">false</boolProp>
  84747. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  84748. <hashTree/>
  84749. </hashTree>
  84750. </hashTree>
  84751. </hashTree>
  84752. </hashTree>
  84753. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Add To Cart By Guest" enabled="true">
  84754. <intProp name="ThroughputController.style">1</intProp>
  84755. <boolProp name="ThroughputController.perThread">false</boolProp>
  84756. <intProp name="ThroughputController.maxThroughput">1</intProp>
  84757. <stringProp name="ThroughputController.percentThroughput">${cAddToCartByGuestPercentage}</stringProp>
  84758. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  84759. <hashTree>
  84760. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  84761. <stringProp name="script">
  84762. var tmpLabel = vars.get("testLabel")
  84763. if (tmpLabel) {
  84764. var testLabel = " (" + tmpLabel + ")"
  84765. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  84766. if (sampler.getName().indexOf(testLabel) == -1) {
  84767. sampler.setName(sampler.getName() + testLabel);
  84768. }
  84769. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  84770. sampler.setName("SetUp - " + sampler.getName());
  84771. }
  84772. } else {
  84773. testLabel = ""
  84774. }
  84775. </stringProp>
  84776. <stringProp name="scriptLanguage">javascript</stringProp>
  84777. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  84778. <hashTree/>
  84779. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  84780. <stringProp name="BeanShellSampler.query">
  84781. vars.put("testLabel", "[REST API C] Add To Cart By Guest");
  84782. </stringProp>
  84783. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84784. </BeanShellSampler>
  84785. <hashTree/>
  84786. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  84787. <collectionProp name="HeaderManager.headers">
  84788. <elementProp name="" elementType="Header">
  84789. <stringProp name="Header.name">Content-Type</stringProp>
  84790. <stringProp name="Header.value">application/json</stringProp>
  84791. </elementProp>
  84792. <elementProp name="" elementType="Header">
  84793. <stringProp name="Header.name">Accept</stringProp>
  84794. <stringProp name="Header.value">*/*</stringProp>
  84795. </elementProp>
  84796. </collectionProp>
  84797. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  84798. <hashTree/>
  84799. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  84800. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  84801. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  84802. <collectionProp name="Arguments.arguments">
  84803. <elementProp name="" elementType="HTTPArgument">
  84804. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84805. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  84806. <stringProp name="Argument.metadata">=</stringProp>
  84807. </elementProp>
  84808. </collectionProp>
  84809. </elementProp>
  84810. <stringProp name="HTTPSampler.domain"/>
  84811. <stringProp name="HTTPSampler.port"/>
  84812. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84813. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84814. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84815. <stringProp name="HTTPSampler.contentEncoding"/>
  84816. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  84817. <stringProp name="HTTPSampler.method">POST</stringProp>
  84818. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84819. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84820. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84821. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84822. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84823. <stringProp name="HTTPSampler.embedded_url_re"/>
  84824. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  84825. <hashTree>
  84826. <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">
  84827. <stringProp name="VAR">admin_token</stringProp>
  84828. <stringProp name="JSONPATH">$</stringProp>
  84829. <stringProp name="DEFAULT"/>
  84830. <stringProp name="VARIABLE"/>
  84831. <stringProp name="SUBJECT">BODY</stringProp>
  84832. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84833. <hashTree/>
  84834. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  84835. <collectionProp name="Asserion.test_strings">
  84836. <stringProp name="484395188">^.{10,}$</stringProp>
  84837. </collectionProp>
  84838. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  84839. <boolProp name="Assertion.assume_success">false</boolProp>
  84840. <intProp name="Assertion.test_type">1</intProp>
  84841. <stringProp name="Assertion.scope">variable</stringProp>
  84842. <stringProp name="Scope.variable">admin_token</stringProp>
  84843. </ResponseAssertion>
  84844. <hashTree/>
  84845. </hashTree>
  84846. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  84847. <collectionProp name="HeaderManager.headers">
  84848. <elementProp name="" elementType="Header">
  84849. <stringProp name="Header.name">Authorization</stringProp>
  84850. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  84851. </elementProp>
  84852. </collectionProp>
  84853. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  84854. <hashTree/>
  84855. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  84856. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  84857. <stringProp name="BeanShellSampler.query">
  84858. import java.util.Random;
  84859. Random random = new Random();
  84860. if (${seedForRandom} &gt; 0) {
  84861. random.setSeed(${seedForRandom} + ${__threadNum});
  84862. }
  84863. vars.putObject("randomIntGenerator", random);
  84864. </stringProp>
  84865. <stringProp name="BeanShellSampler.filename"/>
  84866. <stringProp name="BeanShellSampler.parameters"/>
  84867. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  84868. </BeanShellSampler>
  84869. <hashTree/>
  84870. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  84871. <stringProp name="scriptLanguage">javascript</stringProp>
  84872. <stringProp name="parameters"/>
  84873. <stringProp name="filename"/>
  84874. <stringProp name="cacheKey"/>
  84875. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  84876. var categories = props.get("categories");
  84877. number = random.nextInt(categories.length);
  84878. vars.put("category_url_key", categories[number].url_key);
  84879. vars.put("category_name", categories[number].name);
  84880. vars.put("category_id", categories[number].id);
  84881. vars.putObject("category", categories[number]);
  84882. </stringProp>
  84883. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  84884. <hashTree/>
  84885. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guest Cart" enabled="true">
  84886. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  84887. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  84888. <collectionProp name="Arguments.arguments">
  84889. <elementProp name="" elementType="HTTPArgument">
  84890. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  84891. <stringProp name="Argument.value"/>
  84892. <stringProp name="Argument.metadata">=</stringProp>
  84893. </elementProp>
  84894. </collectionProp>
  84895. </elementProp>
  84896. <stringProp name="HTTPSampler.domain"/>
  84897. <stringProp name="HTTPSampler.port"/>
  84898. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84899. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84900. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84901. <stringProp name="HTTPSampler.contentEncoding"/>
  84902. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/</stringProp>
  84903. <stringProp name="HTTPSampler.method">POST</stringProp>
  84904. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84905. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84906. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84907. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84908. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84909. <stringProp name="HTTPSampler.embedded_url_re"/>
  84910. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_guest_cart.jmx</stringProp></HTTPSamplerProxy>
  84911. <hashTree>
  84912. <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">
  84913. <stringProp name="VAR">cart_id</stringProp>
  84914. <stringProp name="JSONPATH">$</stringProp>
  84915. <stringProp name="DEFAULT"/>
  84916. <stringProp name="VARIABLE"/>
  84917. <stringProp name="SUBJECT">BODY</stringProp>
  84918. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  84919. <hashTree/>
  84920. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Guest Cart Id extracted" enabled="true">
  84921. <collectionProp name="Asserion.test_strings">
  84922. <stringProp name="2845929">^.+$</stringProp>
  84923. </collectionProp>
  84924. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  84925. <boolProp name="Assertion.assume_success">false</boolProp>
  84926. <intProp name="Assertion.test_type">1</intProp>
  84927. <stringProp name="Assertion.scope">variable</stringProp>
  84928. <stringProp name="Scope.variable">cart_id</stringProp>
  84929. </ResponseAssertion>
  84930. <hashTree/>
  84931. </hashTree>
  84932. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  84933. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  84934. <collectionProp name="Arguments.arguments">
  84935. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  84936. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84937. <stringProp name="Argument.value">identifier</stringProp>
  84938. <stringProp name="Argument.metadata">=</stringProp>
  84939. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84940. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  84941. </elementProp>
  84942. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84944. <stringProp name="Argument.value">home</stringProp>
  84945. <stringProp name="Argument.metadata">=</stringProp>
  84946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84947. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  84948. </elementProp>
  84949. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  84950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84951. <stringProp name="Argument.value">eq</stringProp>
  84952. <stringProp name="Argument.metadata">=</stringProp>
  84953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84954. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  84955. </elementProp>
  84956. </collectionProp>
  84957. </elementProp>
  84958. <stringProp name="HTTPSampler.domain"/>
  84959. <stringProp name="HTTPSampler.port"/>
  84960. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  84961. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  84962. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  84963. <stringProp name="HTTPSampler.contentEncoding"/>
  84964. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  84965. <stringProp name="HTTPSampler.method">GET</stringProp>
  84966. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  84967. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  84968. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  84969. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  84970. <boolProp name="HTTPSampler.monitor">false</boolProp>
  84971. <stringProp name="HTTPSampler.embedded_url_re"/>
  84972. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  84973. </HTTPSamplerProxy>
  84974. <hashTree>
  84975. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  84976. <collectionProp name="Asserion.test_strings">
  84977. <stringProp name="-1294635157">errors</stringProp>
  84978. </collectionProp>
  84979. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  84980. <boolProp name="Assertion.assume_success">false</boolProp>
  84981. <intProp name="Assertion.test_type">6</intProp>
  84982. <stringProp name="Assertion.scope">variable</stringProp>
  84983. <stringProp name="Scope.variable"/>
  84984. </ResponseAssertion>
  84985. <hashTree/>
  84986. </hashTree>
  84987. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  84988. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  84989. <collectionProp name="Arguments.arguments">
  84990. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  84991. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  84992. <stringProp name="Argument.value">1</stringProp>
  84993. <stringProp name="Argument.metadata">=</stringProp>
  84994. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  84995. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  84996. <stringProp name="Argument.desc">true</stringProp>
  84997. </elementProp>
  84998. </collectionProp>
  84999. </elementProp>
  85000. <stringProp name="HTTPSampler.domain"/>
  85001. <stringProp name="HTTPSampler.port"/>
  85002. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85003. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85004. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85005. <stringProp name="HTTPSampler.contentEncoding"/>
  85006. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
  85007. <stringProp name="HTTPSampler.method">GET</stringProp>
  85008. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85009. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85010. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85011. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85012. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85013. <stringProp name="HTTPSampler.embedded_url_re"/>
  85014. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_categories.jmx</stringProp>
  85015. </HTTPSamplerProxy>
  85016. <hashTree>
  85017. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85018. <collectionProp name="Asserion.test_strings">
  85019. <stringProp name="-1294635157">errors</stringProp>
  85020. </collectionProp>
  85021. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85022. <boolProp name="Assertion.assume_success">false</boolProp>
  85023. <intProp name="Assertion.test_type">6</intProp>
  85024. <stringProp name="Assertion.scope">variable</stringProp>
  85025. <stringProp name="Scope.variable"/>
  85026. </ResponseAssertion>
  85027. <hashTree/>
  85028. </hashTree>
  85029. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  85030. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  85031. <collectionProp name="Arguments.arguments">
  85032. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  85033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85034. <stringProp name="Argument.value">category_id</stringProp>
  85035. <stringProp name="Argument.metadata">=</stringProp>
  85036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85037. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  85038. </elementProp>
  85039. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85041. <stringProp name="Argument.value">${category_id}</stringProp>
  85042. <stringProp name="Argument.metadata">=</stringProp>
  85043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85044. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  85045. </elementProp>
  85046. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85047. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85048. <stringProp name="Argument.value">eq</stringProp>
  85049. <stringProp name="Argument.metadata">=</stringProp>
  85050. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85051. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  85052. </elementProp>
  85053. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  85054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85055. <stringProp name="Argument.value">12</stringProp>
  85056. <stringProp name="Argument.metadata">=</stringProp>
  85057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85058. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  85059. <stringProp name="Argument.desc">true</stringProp>
  85060. </elementProp>
  85061. </collectionProp>
  85062. </elementProp>
  85063. <stringProp name="HTTPSampler.domain"/>
  85064. <stringProp name="HTTPSampler.port"/>
  85065. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85066. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85067. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85068. <stringProp name="HTTPSampler.contentEncoding"/>
  85069. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  85070. <stringProp name="HTTPSampler.method">GET</stringProp>
  85071. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85072. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85073. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85074. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85075. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85076. <stringProp name="HTTPSampler.embedded_url_re"/>
  85077. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_products_by_category_id.jmx</stringProp>
  85078. </HTTPSamplerProxy>
  85079. <hashTree>
  85080. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85081. <collectionProp name="Asserion.test_strings">
  85082. <stringProp name="-1294635157">errors</stringProp>
  85083. </collectionProp>
  85084. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85085. <boolProp name="Assertion.assume_success">false</boolProp>
  85086. <intProp name="Assertion.test_type">6</intProp>
  85087. <stringProp name="Assertion.scope">variable</stringProp>
  85088. <stringProp name="Scope.variable"/>
  85089. </ResponseAssertion>
  85090. <hashTree/>
  85091. </hashTree>
  85092. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  85093. <boolProp name="LoopController.continue_forever">true</boolProp>
  85094. <stringProp name="LoopController.loops">2</stringProp>
  85095. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  85096. <hashTree>
  85097. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  85098. <stringProp name="CounterConfig.start">1</stringProp>
  85099. <stringProp name="CounterConfig.end"/>
  85100. <stringProp name="CounterConfig.incr">1</stringProp>
  85101. <stringProp name="CounterConfig.name">_counter</stringProp>
  85102. <stringProp name="CounterConfig.format"/>
  85103. <boolProp name="CounterConfig.per_user">true</boolProp>
  85104. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  85105. </CounterConfig>
  85106. <hashTree/>
  85107. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  85108. <stringProp name="BeanShellSampler.query">
  85109. import java.util.Random;
  85110. Random random = vars.getObject("randomIntGenerator");
  85111. number = random.nextInt(props.get("simple_products_list").size());
  85112. product = props.get("simple_products_list").get(number);
  85113. vars.put("product_url_key", product.get("url_key"));
  85114. vars.put("product_id", product.get("id"));
  85115. vars.put("product_name", product.get("title"));
  85116. vars.put("product_uenc", product.get("uenc"));
  85117. vars.put("product_sku", product.get("sku"));
  85118. </stringProp>
  85119. <stringProp name="BeanShellSampler.filename"/>
  85120. <stringProp name="BeanShellSampler.parameters"/>
  85121. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85122. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  85123. <hashTree/>
  85124. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  85125. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  85126. <collectionProp name="Arguments.arguments">
  85127. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  85128. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85129. <stringProp name="Argument.value">url_key</stringProp>
  85130. <stringProp name="Argument.metadata">=</stringProp>
  85131. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85132. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  85133. </elementProp>
  85134. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85135. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85136. <stringProp name="Argument.value">${product_url_key}</stringProp>
  85137. <stringProp name="Argument.metadata">=</stringProp>
  85138. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85139. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  85140. </elementProp>
  85141. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  85142. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85143. <stringProp name="Argument.value">eq</stringProp>
  85144. <stringProp name="Argument.metadata">=</stringProp>
  85145. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85146. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  85147. </elementProp>
  85148. </collectionProp>
  85149. </elementProp>
  85150. <stringProp name="HTTPSampler.domain"/>
  85151. <stringProp name="HTTPSampler.port"/>
  85152. <stringProp name="HTTPSampler.connect_timeout"/>
  85153. <stringProp name="HTTPSampler.response_timeout"/>
  85154. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85155. <stringProp name="HTTPSampler.contentEncoding"/>
  85156. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  85157. <stringProp name="HTTPSampler.method">GET</stringProp>
  85158. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85159. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85160. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85161. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85162. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85163. <stringProp name="HTTPSampler.embedded_url_re"/>
  85164. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_url_key.jmx</stringProp>
  85165. </HTTPSamplerProxy>
  85166. <hashTree>
  85167. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85168. <collectionProp name="Asserion.test_strings">
  85169. <stringProp name="-1294635157">errors</stringProp>
  85170. </collectionProp>
  85171. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85172. <boolProp name="Assertion.assume_success">false</boolProp>
  85173. <intProp name="Assertion.test_type">6</intProp>
  85174. <stringProp name="Assertion.scope">variable</stringProp>
  85175. <stringProp name="Scope.variable"/>
  85176. </ResponseAssertion>
  85177. <hashTree/>
  85178. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  85179. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  85180. <stringProp name="EXPECTED_VALUE"/>
  85181. <boolProp name="JSONVALIDATION">false</boolProp>
  85182. <boolProp name="EXPECT_NULL">false</boolProp>
  85183. <boolProp name="INVERT">false</boolProp>
  85184. <boolProp name="ISREGEX">false</boolProp>
  85185. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  85186. <hashTree/>
  85187. </hashTree>
  85188. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  85189. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  85190. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  85191. <collectionProp name="Arguments.arguments">
  85192. <elementProp name="" elementType="HTTPArgument">
  85193. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85194. <stringProp name="Argument.value">{&#xD;
  85195. "cartItem": {&#xD;
  85196. "sku": "${product_sku}",&#xD;
  85197. "qty":"1",&#xD;
  85198. "quote_id":"${cart_id}"&#xD;
  85199. }&#xD;
  85200. }&#xD;
  85201. </stringProp>
  85202. <stringProp name="Argument.metadata">=</stringProp>
  85203. </elementProp>
  85204. </collectionProp>
  85205. </elementProp>
  85206. <stringProp name="HTTPSampler.domain"/>
  85207. <stringProp name="HTTPSampler.port"/>
  85208. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85209. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85210. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85211. <stringProp name="HTTPSampler.contentEncoding"/>
  85212. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/items</stringProp>
  85213. <stringProp name="HTTPSampler.method">POST</stringProp>
  85214. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85215. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85216. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85217. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85218. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85219. <stringProp name="HTTPSampler.embedded_url_re"/>
  85220. <stringProp name="TestPlan.comments">tool/fragments/ce/api/guest_checkout/add_simple_product_to_cart.jmx</stringProp>
  85221. </HTTPSamplerProxy>
  85222. <hashTree>
  85223. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  85224. <stringProp name="JSON_PATH">$.quote_id</stringProp>
  85225. <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
  85226. <boolProp name="JSONVALIDATION">true</boolProp>
  85227. <boolProp name="EXPECT_NULL">false</boolProp>
  85228. <boolProp name="INVERT">false</boolProp>
  85229. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  85230. <hashTree/>
  85231. </hashTree>
  85232. </hashTree>
  85233. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  85234. <boolProp name="LoopController.continue_forever">true</boolProp>
  85235. <stringProp name="LoopController.loops">1</stringProp>
  85236. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  85237. <hashTree>
  85238. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  85239. <stringProp name="CounterConfig.start">1</stringProp>
  85240. <stringProp name="CounterConfig.end"/>
  85241. <stringProp name="CounterConfig.incr">1</stringProp>
  85242. <stringProp name="CounterConfig.name">_counter</stringProp>
  85243. <stringProp name="CounterConfig.format"/>
  85244. <boolProp name="CounterConfig.per_user">true</boolProp>
  85245. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  85246. </CounterConfig>
  85247. <hashTree/>
  85248. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  85249. <stringProp name="BeanShellSampler.query">
  85250. import java.util.Random;
  85251. Random random = vars.getObject("randomIntGenerator");
  85252. number = random.nextInt(props.get("configurable_products_list").size());
  85253. product = props.get("configurable_products_list").get(number);
  85254. vars.put("product_url_key", product.get("url_key"));
  85255. vars.put("product_id", product.get("id"));
  85256. vars.put("product_name", product.get("title"));
  85257. vars.put("product_uenc", product.get("uenc"));
  85258. vars.put("product_sku", product.get("sku"));
  85259. </stringProp>
  85260. <stringProp name="BeanShellSampler.filename"/>
  85261. <stringProp name="BeanShellSampler.parameters"/>
  85262. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85263. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  85264. <hashTree/>
  85265. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  85266. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  85267. <collectionProp name="Arguments.arguments">
  85268. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  85269. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85270. <stringProp name="Argument.value">url_key</stringProp>
  85271. <stringProp name="Argument.metadata">=</stringProp>
  85272. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85273. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  85274. </elementProp>
  85275. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85276. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85277. <stringProp name="Argument.value">${product_url_key}</stringProp>
  85278. <stringProp name="Argument.metadata">=</stringProp>
  85279. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85280. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  85281. </elementProp>
  85282. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  85283. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85284. <stringProp name="Argument.value">eq</stringProp>
  85285. <stringProp name="Argument.metadata">=</stringProp>
  85286. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85287. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  85288. </elementProp>
  85289. </collectionProp>
  85290. </elementProp>
  85291. <stringProp name="HTTPSampler.domain"/>
  85292. <stringProp name="HTTPSampler.port"/>
  85293. <stringProp name="HTTPSampler.connect_timeout"/>
  85294. <stringProp name="HTTPSampler.response_timeout"/>
  85295. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85296. <stringProp name="HTTPSampler.contentEncoding"/>
  85297. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  85298. <stringProp name="HTTPSampler.method">GET</stringProp>
  85299. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85300. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85301. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85302. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85303. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85304. <stringProp name="HTTPSampler.embedded_url_re"/>
  85305. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  85306. </HTTPSamplerProxy>
  85307. <hashTree>
  85308. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85309. <collectionProp name="Asserion.test_strings">
  85310. <stringProp name="-1294635157">errors</stringProp>
  85311. </collectionProp>
  85312. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85313. <boolProp name="Assertion.assume_success">false</boolProp>
  85314. <intProp name="Assertion.test_type">6</intProp>
  85315. <stringProp name="Assertion.scope">variable</stringProp>
  85316. <stringProp name="Scope.variable"/>
  85317. </ResponseAssertion>
  85318. <hashTree/>
  85319. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  85320. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  85321. <stringProp name="EXPECTED_VALUE"/>
  85322. <boolProp name="JSONVALIDATION">false</boolProp>
  85323. <boolProp name="EXPECT_NULL">false</boolProp>
  85324. <boolProp name="INVERT">false</boolProp>
  85325. <boolProp name="ISREGEX">false</boolProp>
  85326. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  85327. <hashTree/>
  85328. </hashTree>
  85329. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Options" enabled="true">
  85330. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  85331. </elementProp>
  85332. <stringProp name="HTTPSampler.domain"/>
  85333. <stringProp name="HTTPSampler.port"/>
  85334. <stringProp name="HTTPSampler.connect_timeout"/>
  85335. <stringProp name="HTTPSampler.response_timeout"/>
  85336. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85337. <stringProp name="HTTPSampler.contentEncoding"/>
  85338. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/configurable-products/${product_sku}/children</stringProp>
  85339. <stringProp name="HTTPSampler.method">GET</stringProp>
  85340. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85341. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85342. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85343. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85344. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85345. <stringProp name="HTTPSampler.embedded_url_re"/>
  85346. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_options_by_product_sku.jmx</stringProp>
  85347. </HTTPSamplerProxy>
  85348. <hashTree>
  85349. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85350. <collectionProp name="Asserion.test_strings">
  85351. <stringProp name="-1294635157">errors</stringProp>
  85352. </collectionProp>
  85353. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85354. <boolProp name="Assertion.assume_success">false</boolProp>
  85355. <intProp name="Assertion.test_type">6</intProp>
  85356. <stringProp name="Assertion.scope">variable</stringProp>
  85357. <stringProp name="Scope.variable"/>
  85358. </ResponseAssertion>
  85359. <hashTree/>
  85360. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  85361. <stringProp name="JSON_PATH">$[0].sku</stringProp>
  85362. <stringProp name="EXPECTED_VALUE"/>
  85363. <boolProp name="JSONVALIDATION">false</boolProp>
  85364. <boolProp name="EXPECT_NULL">false</boolProp>
  85365. <boolProp name="INVERT">false</boolProp>
  85366. <boolProp name="ISREGEX">false</boolProp>
  85367. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  85368. <hashTree/>
  85369. <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 Configurable Product option" enabled="true">
  85370. <stringProp name="VAR">product_option</stringProp>
  85371. <stringProp name="JSONPATH">$[0].sku</stringProp>
  85372. <stringProp name="DEFAULT"/>
  85373. <stringProp name="VARIABLE"/>
  85374. <stringProp name="SUBJECT">BODY</stringProp>
  85375. <stringProp name="TestPlan.comments">tool/fragments/ce/api/extract_configurable_product_option_from_product_detail.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  85376. <hashTree/>
  85377. </hashTree>
  85378. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  85379. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  85380. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  85381. <collectionProp name="Arguments.arguments">
  85382. <elementProp name="" elementType="HTTPArgument">
  85383. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85384. <stringProp name="Argument.value">{&#xD;
  85385. "cartItem": {&#xD;
  85386. "sku": "${product_option}",&#xD;
  85387. "qty":"1",&#xD;
  85388. "quote_id":"${cart_id}"&#xD;
  85389. }&#xD;
  85390. }&#xD;
  85391. </stringProp>
  85392. <stringProp name="Argument.metadata">=</stringProp>
  85393. </elementProp>
  85394. </collectionProp>
  85395. </elementProp>
  85396. <stringProp name="HTTPSampler.domain"/>
  85397. <stringProp name="HTTPSampler.port"/>
  85398. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85399. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85400. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85401. <stringProp name="HTTPSampler.contentEncoding"/>
  85402. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/items</stringProp>
  85403. <stringProp name="HTTPSampler.method">POST</stringProp>
  85404. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85405. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85406. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85407. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85408. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85409. <stringProp name="HTTPSampler.embedded_url_re"/>
  85410. <stringProp name="TestPlan.comments">tool/fragments/ce/api/guest_checkout/add_configurable_product_to_cart.jmx</stringProp>
  85411. </HTTPSamplerProxy>
  85412. <hashTree>
  85413. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  85414. <stringProp name="JSON_PATH">$.quote_id</stringProp>
  85415. <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
  85416. <boolProp name="JSONVALIDATION">true</boolProp>
  85417. <boolProp name="EXPECT_NULL">false</boolProp>
  85418. <boolProp name="INVERT">false</boolProp>
  85419. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  85420. <hashTree/>
  85421. </hashTree>
  85422. </hashTree>
  85423. </hashTree>
  85424. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Add to Wishlist" enabled="true">
  85425. <intProp name="ThroughputController.style">1</intProp>
  85426. <boolProp name="ThroughputController.perThread">false</boolProp>
  85427. <intProp name="ThroughputController.maxThroughput">1</intProp>
  85428. <stringProp name="ThroughputController.percentThroughput">${cAddToWishlistPercentage}</stringProp>
  85429. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  85430. <hashTree>
  85431. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  85432. <stringProp name="script">
  85433. var tmpLabel = vars.get("testLabel")
  85434. if (tmpLabel) {
  85435. var testLabel = " (" + tmpLabel + ")"
  85436. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  85437. if (sampler.getName().indexOf(testLabel) == -1) {
  85438. sampler.setName(sampler.getName() + testLabel);
  85439. }
  85440. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  85441. sampler.setName("SetUp - " + sampler.getName());
  85442. }
  85443. } else {
  85444. testLabel = ""
  85445. }
  85446. </stringProp>
  85447. <stringProp name="scriptLanguage">javascript</stringProp>
  85448. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  85449. <hashTree/>
  85450. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  85451. <stringProp name="BeanShellSampler.query">
  85452. vars.put("testLabel", "[REST API C] Add to Wishlist");
  85453. </stringProp>
  85454. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85455. </BeanShellSampler>
  85456. <hashTree/>
  85457. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  85458. <collectionProp name="HeaderManager.headers">
  85459. <elementProp name="" elementType="Header">
  85460. <stringProp name="Header.name">Content-Type</stringProp>
  85461. <stringProp name="Header.value">application/json</stringProp>
  85462. </elementProp>
  85463. <elementProp name="" elementType="Header">
  85464. <stringProp name="Header.name">Accept</stringProp>
  85465. <stringProp name="Header.value">*/*</stringProp>
  85466. </elementProp>
  85467. </collectionProp>
  85468. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  85469. <hashTree/>
  85470. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  85471. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  85472. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  85473. <collectionProp name="Arguments.arguments">
  85474. <elementProp name="" elementType="HTTPArgument">
  85475. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85476. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  85477. <stringProp name="Argument.metadata">=</stringProp>
  85478. </elementProp>
  85479. </collectionProp>
  85480. </elementProp>
  85481. <stringProp name="HTTPSampler.domain"/>
  85482. <stringProp name="HTTPSampler.port"/>
  85483. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85484. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85485. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85486. <stringProp name="HTTPSampler.contentEncoding"/>
  85487. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  85488. <stringProp name="HTTPSampler.method">POST</stringProp>
  85489. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85490. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85491. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85492. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85493. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85494. <stringProp name="HTTPSampler.embedded_url_re"/>
  85495. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  85496. <hashTree>
  85497. <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">
  85498. <stringProp name="VAR">admin_token</stringProp>
  85499. <stringProp name="JSONPATH">$</stringProp>
  85500. <stringProp name="DEFAULT"/>
  85501. <stringProp name="VARIABLE"/>
  85502. <stringProp name="SUBJECT">BODY</stringProp>
  85503. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  85504. <hashTree/>
  85505. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  85506. <collectionProp name="Asserion.test_strings">
  85507. <stringProp name="484395188">^.{10,}$</stringProp>
  85508. </collectionProp>
  85509. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85510. <boolProp name="Assertion.assume_success">false</boolProp>
  85511. <intProp name="Assertion.test_type">1</intProp>
  85512. <stringProp name="Assertion.scope">variable</stringProp>
  85513. <stringProp name="Scope.variable">admin_token</stringProp>
  85514. </ResponseAssertion>
  85515. <hashTree/>
  85516. </hashTree>
  85517. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  85518. <collectionProp name="HeaderManager.headers">
  85519. <elementProp name="" elementType="Header">
  85520. <stringProp name="Header.name">Authorization</stringProp>
  85521. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  85522. </elementProp>
  85523. </collectionProp>
  85524. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  85525. <hashTree/>
  85526. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  85527. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  85528. <stringProp name="BeanShellSampler.query">
  85529. import java.util.Random;
  85530. Random random = new Random();
  85531. if (${seedForRandom} &gt; 0) {
  85532. random.setSeed(${seedForRandom} + ${__threadNum});
  85533. }
  85534. vars.putObject("randomIntGenerator", random);
  85535. </stringProp>
  85536. <stringProp name="BeanShellSampler.filename"/>
  85537. <stringProp name="BeanShellSampler.parameters"/>
  85538. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85539. </BeanShellSampler>
  85540. <hashTree/>
  85541. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Add Products to Wishlist" enabled="true">
  85542. <boolProp name="LoopController.continue_forever">true</boolProp>
  85543. <stringProp name="LoopController.loops">5</stringProp>
  85544. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  85545. <hashTree>
  85546. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  85547. <stringProp name="CounterConfig.start">1</stringProp>
  85548. <stringProp name="CounterConfig.end"/>
  85549. <stringProp name="CounterConfig.incr">1</stringProp>
  85550. <stringProp name="CounterConfig.name">_counter</stringProp>
  85551. <stringProp name="CounterConfig.format"/>
  85552. <boolProp name="CounterConfig.per_user">true</boolProp>
  85553. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  85554. </CounterConfig>
  85555. <hashTree/>
  85556. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  85557. <stringProp name="BeanShellSampler.query">
  85558. import java.util.Random;
  85559. Random random = vars.getObject("randomIntGenerator");
  85560. number = random.nextInt(props.get("simple_products_list").size());
  85561. product = props.get("simple_products_list").get(number);
  85562. vars.put("product_url_key", product.get("url_key"));
  85563. vars.put("product_id", product.get("id"));
  85564. vars.put("product_name", product.get("title"));
  85565. vars.put("product_uenc", product.get("uenc"));
  85566. vars.put("product_sku", product.get("sku"));
  85567. </stringProp>
  85568. <stringProp name="BeanShellSampler.filename"/>
  85569. <stringProp name="BeanShellSampler.parameters"/>
  85570. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85571. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  85572. <hashTree/>
  85573. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  85574. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  85575. <collectionProp name="Arguments.arguments">
  85576. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  85577. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85578. <stringProp name="Argument.value">url_key</stringProp>
  85579. <stringProp name="Argument.metadata">=</stringProp>
  85580. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85581. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  85582. </elementProp>
  85583. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85584. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85585. <stringProp name="Argument.value">${product_url_key}</stringProp>
  85586. <stringProp name="Argument.metadata">=</stringProp>
  85587. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85588. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  85589. </elementProp>
  85590. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  85591. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85592. <stringProp name="Argument.value">eq</stringProp>
  85593. <stringProp name="Argument.metadata">=</stringProp>
  85594. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85595. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  85596. </elementProp>
  85597. </collectionProp>
  85598. </elementProp>
  85599. <stringProp name="HTTPSampler.domain"/>
  85600. <stringProp name="HTTPSampler.port"/>
  85601. <stringProp name="HTTPSampler.connect_timeout"/>
  85602. <stringProp name="HTTPSampler.response_timeout"/>
  85603. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85604. <stringProp name="HTTPSampler.contentEncoding"/>
  85605. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  85606. <stringProp name="HTTPSampler.method">GET</stringProp>
  85607. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85608. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85609. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85610. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85611. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85612. <stringProp name="HTTPSampler.embedded_url_re"/>
  85613. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_url_key.jmx</stringProp>
  85614. </HTTPSamplerProxy>
  85615. <hashTree>
  85616. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85617. <collectionProp name="Asserion.test_strings">
  85618. <stringProp name="-1294635157">errors</stringProp>
  85619. </collectionProp>
  85620. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85621. <boolProp name="Assertion.assume_success">false</boolProp>
  85622. <intProp name="Assertion.test_type">6</intProp>
  85623. <stringProp name="Assertion.scope">variable</stringProp>
  85624. <stringProp name="Scope.variable"/>
  85625. </ResponseAssertion>
  85626. <hashTree/>
  85627. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  85628. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  85629. <stringProp name="EXPECTED_VALUE"/>
  85630. <boolProp name="JSONVALIDATION">false</boolProp>
  85631. <boolProp name="EXPECT_NULL">false</boolProp>
  85632. <boolProp name="INVERT">false</boolProp>
  85633. <boolProp name="ISREGEX">false</boolProp>
  85634. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  85635. <hashTree/>
  85636. </hashTree>
  85637. </hashTree>
  85638. </hashTree>
  85639. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Compare Products" enabled="true">
  85640. <intProp name="ThroughputController.style">1</intProp>
  85641. <boolProp name="ThroughputController.perThread">false</boolProp>
  85642. <intProp name="ThroughputController.maxThroughput">1</intProp>
  85643. <stringProp name="ThroughputController.percentThroughput">${cCompareProductsPercentage}</stringProp>
  85644. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  85645. <hashTree>
  85646. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  85647. <stringProp name="script">
  85648. var tmpLabel = vars.get("testLabel")
  85649. if (tmpLabel) {
  85650. var testLabel = " (" + tmpLabel + ")"
  85651. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  85652. if (sampler.getName().indexOf(testLabel) == -1) {
  85653. sampler.setName(sampler.getName() + testLabel);
  85654. }
  85655. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  85656. sampler.setName("SetUp - " + sampler.getName());
  85657. }
  85658. } else {
  85659. testLabel = ""
  85660. }
  85661. </stringProp>
  85662. <stringProp name="scriptLanguage">javascript</stringProp>
  85663. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  85664. <hashTree/>
  85665. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  85666. <stringProp name="BeanShellSampler.query">
  85667. vars.put("testLabel", "[REST API C] Compare Products");
  85668. </stringProp>
  85669. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85670. </BeanShellSampler>
  85671. <hashTree/>
  85672. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  85673. <collectionProp name="HeaderManager.headers">
  85674. <elementProp name="" elementType="Header">
  85675. <stringProp name="Header.name">Content-Type</stringProp>
  85676. <stringProp name="Header.value">application/json</stringProp>
  85677. </elementProp>
  85678. <elementProp name="" elementType="Header">
  85679. <stringProp name="Header.name">Accept</stringProp>
  85680. <stringProp name="Header.value">*/*</stringProp>
  85681. </elementProp>
  85682. </collectionProp>
  85683. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  85684. <hashTree/>
  85685. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  85686. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  85687. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  85688. <collectionProp name="Arguments.arguments">
  85689. <elementProp name="" elementType="HTTPArgument">
  85690. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85691. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  85692. <stringProp name="Argument.metadata">=</stringProp>
  85693. </elementProp>
  85694. </collectionProp>
  85695. </elementProp>
  85696. <stringProp name="HTTPSampler.domain"/>
  85697. <stringProp name="HTTPSampler.port"/>
  85698. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85699. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85700. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85701. <stringProp name="HTTPSampler.contentEncoding"/>
  85702. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  85703. <stringProp name="HTTPSampler.method">POST</stringProp>
  85704. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85705. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85706. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85707. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85708. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85709. <stringProp name="HTTPSampler.embedded_url_re"/>
  85710. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  85711. <hashTree>
  85712. <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">
  85713. <stringProp name="VAR">admin_token</stringProp>
  85714. <stringProp name="JSONPATH">$</stringProp>
  85715. <stringProp name="DEFAULT"/>
  85716. <stringProp name="VARIABLE"/>
  85717. <stringProp name="SUBJECT">BODY</stringProp>
  85718. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  85719. <hashTree/>
  85720. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  85721. <collectionProp name="Asserion.test_strings">
  85722. <stringProp name="484395188">^.{10,}$</stringProp>
  85723. </collectionProp>
  85724. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85725. <boolProp name="Assertion.assume_success">false</boolProp>
  85726. <intProp name="Assertion.test_type">1</intProp>
  85727. <stringProp name="Assertion.scope">variable</stringProp>
  85728. <stringProp name="Scope.variable">admin_token</stringProp>
  85729. </ResponseAssertion>
  85730. <hashTree/>
  85731. </hashTree>
  85732. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  85733. <collectionProp name="HeaderManager.headers">
  85734. <elementProp name="" elementType="Header">
  85735. <stringProp name="Header.name">Authorization</stringProp>
  85736. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  85737. </elementProp>
  85738. </collectionProp>
  85739. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  85740. <hashTree/>
  85741. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  85742. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  85743. <stringProp name="BeanShellSampler.query">
  85744. import java.util.Random;
  85745. Random random = new Random();
  85746. if (${seedForRandom} &gt; 0) {
  85747. random.setSeed(${seedForRandom} + ${__threadNum});
  85748. }
  85749. vars.putObject("randomIntGenerator", random);
  85750. </stringProp>
  85751. <stringProp name="BeanShellSampler.filename"/>
  85752. <stringProp name="BeanShellSampler.parameters"/>
  85753. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85754. </BeanShellSampler>
  85755. <hashTree/>
  85756. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  85757. <stringProp name="scriptLanguage">javascript</stringProp>
  85758. <stringProp name="parameters"/>
  85759. <stringProp name="filename"/>
  85760. <stringProp name="cacheKey"/>
  85761. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  85762. var categories = props.get("categories");
  85763. number = random.nextInt(categories.length);
  85764. vars.put("category_url_key", categories[number].url_key);
  85765. vars.put("category_name", categories[number].name);
  85766. vars.put("category_id", categories[number].id);
  85767. vars.putObject("category", categories[number]);
  85768. </stringProp>
  85769. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  85770. <hashTree/>
  85771. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  85772. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  85773. <collectionProp name="Arguments.arguments">
  85774. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  85775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85776. <stringProp name="Argument.value">identifier</stringProp>
  85777. <stringProp name="Argument.metadata">=</stringProp>
  85778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85779. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  85780. </elementProp>
  85781. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85783. <stringProp name="Argument.value">home</stringProp>
  85784. <stringProp name="Argument.metadata">=</stringProp>
  85785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85786. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  85787. </elementProp>
  85788. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85789. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85790. <stringProp name="Argument.value">eq</stringProp>
  85791. <stringProp name="Argument.metadata">=</stringProp>
  85792. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85793. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  85794. </elementProp>
  85795. </collectionProp>
  85796. </elementProp>
  85797. <stringProp name="HTTPSampler.domain"/>
  85798. <stringProp name="HTTPSampler.port"/>
  85799. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85800. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85801. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85802. <stringProp name="HTTPSampler.contentEncoding"/>
  85803. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  85804. <stringProp name="HTTPSampler.method">GET</stringProp>
  85805. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85806. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85807. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85808. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85809. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85810. <stringProp name="HTTPSampler.embedded_url_re"/>
  85811. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  85812. </HTTPSamplerProxy>
  85813. <hashTree>
  85814. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85815. <collectionProp name="Asserion.test_strings">
  85816. <stringProp name="-1294635157">errors</stringProp>
  85817. </collectionProp>
  85818. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85819. <boolProp name="Assertion.assume_success">false</boolProp>
  85820. <intProp name="Assertion.test_type">6</intProp>
  85821. <stringProp name="Assertion.scope">variable</stringProp>
  85822. <stringProp name="Scope.variable"/>
  85823. </ResponseAssertion>
  85824. <hashTree/>
  85825. </hashTree>
  85826. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  85827. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  85828. <collectionProp name="Arguments.arguments">
  85829. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  85830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85831. <stringProp name="Argument.value">1</stringProp>
  85832. <stringProp name="Argument.metadata">=</stringProp>
  85833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85834. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  85835. <stringProp name="Argument.desc">true</stringProp>
  85836. </elementProp>
  85837. </collectionProp>
  85838. </elementProp>
  85839. <stringProp name="HTTPSampler.domain"/>
  85840. <stringProp name="HTTPSampler.port"/>
  85841. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85842. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85843. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85844. <stringProp name="HTTPSampler.contentEncoding"/>
  85845. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
  85846. <stringProp name="HTTPSampler.method">GET</stringProp>
  85847. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85848. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85849. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85850. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85851. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85852. <stringProp name="HTTPSampler.embedded_url_re"/>
  85853. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_categories.jmx</stringProp>
  85854. </HTTPSamplerProxy>
  85855. <hashTree>
  85856. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85857. <collectionProp name="Asserion.test_strings">
  85858. <stringProp name="-1294635157">errors</stringProp>
  85859. </collectionProp>
  85860. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85861. <boolProp name="Assertion.assume_success">false</boolProp>
  85862. <intProp name="Assertion.test_type">6</intProp>
  85863. <stringProp name="Assertion.scope">variable</stringProp>
  85864. <stringProp name="Scope.variable"/>
  85865. </ResponseAssertion>
  85866. <hashTree/>
  85867. </hashTree>
  85868. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  85869. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  85870. <collectionProp name="Arguments.arguments">
  85871. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  85872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85873. <stringProp name="Argument.value">category_id</stringProp>
  85874. <stringProp name="Argument.metadata">=</stringProp>
  85875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85876. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  85877. </elementProp>
  85878. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85879. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85880. <stringProp name="Argument.value">${category_id}</stringProp>
  85881. <stringProp name="Argument.metadata">=</stringProp>
  85882. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85883. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  85884. </elementProp>
  85885. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85887. <stringProp name="Argument.value">eq</stringProp>
  85888. <stringProp name="Argument.metadata">=</stringProp>
  85889. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85890. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  85891. </elementProp>
  85892. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  85893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  85894. <stringProp name="Argument.value">12</stringProp>
  85895. <stringProp name="Argument.metadata">=</stringProp>
  85896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85897. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  85898. <stringProp name="Argument.desc">true</stringProp>
  85899. </elementProp>
  85900. </collectionProp>
  85901. </elementProp>
  85902. <stringProp name="HTTPSampler.domain"/>
  85903. <stringProp name="HTTPSampler.port"/>
  85904. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  85905. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  85906. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85907. <stringProp name="HTTPSampler.contentEncoding"/>
  85908. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  85909. <stringProp name="HTTPSampler.method">GET</stringProp>
  85910. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85911. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85912. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  85913. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  85914. <boolProp name="HTTPSampler.monitor">false</boolProp>
  85915. <stringProp name="HTTPSampler.embedded_url_re"/>
  85916. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_products_by_category_id.jmx</stringProp>
  85917. </HTTPSamplerProxy>
  85918. <hashTree>
  85919. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  85920. <collectionProp name="Asserion.test_strings">
  85921. <stringProp name="-1294635157">errors</stringProp>
  85922. </collectionProp>
  85923. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  85924. <boolProp name="Assertion.assume_success">false</boolProp>
  85925. <intProp name="Assertion.test_type">6</intProp>
  85926. <stringProp name="Assertion.scope">variable</stringProp>
  85927. <stringProp name="Scope.variable"/>
  85928. </ResponseAssertion>
  85929. <hashTree/>
  85930. </hashTree>
  85931. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  85932. <boolProp name="LoopController.continue_forever">true</boolProp>
  85933. <stringProp name="LoopController.loops">2</stringProp>
  85934. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  85935. <hashTree>
  85936. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  85937. <stringProp name="CounterConfig.start">1</stringProp>
  85938. <stringProp name="CounterConfig.end"/>
  85939. <stringProp name="CounterConfig.incr">1</stringProp>
  85940. <stringProp name="CounterConfig.name">_counter</stringProp>
  85941. <stringProp name="CounterConfig.format"/>
  85942. <boolProp name="CounterConfig.per_user">true</boolProp>
  85943. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  85944. </CounterConfig>
  85945. <hashTree/>
  85946. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  85947. <stringProp name="BeanShellSampler.query">
  85948. import java.util.Random;
  85949. Random random = vars.getObject("randomIntGenerator");
  85950. number = random.nextInt(props.get("simple_products_list").size());
  85951. product = props.get("simple_products_list").get(number);
  85952. vars.put("product_url_key", product.get("url_key"));
  85953. vars.put("product_id", product.get("id"));
  85954. vars.put("product_name", product.get("title"));
  85955. vars.put("product_uenc", product.get("uenc"));
  85956. vars.put("product_sku", product.get("sku"));
  85957. </stringProp>
  85958. <stringProp name="BeanShellSampler.filename"/>
  85959. <stringProp name="BeanShellSampler.parameters"/>
  85960. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  85961. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  85962. <hashTree/>
  85963. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  85964. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  85965. <collectionProp name="Arguments.arguments">
  85966. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  85967. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85968. <stringProp name="Argument.value">url_key</stringProp>
  85969. <stringProp name="Argument.metadata">=</stringProp>
  85970. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85971. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  85972. </elementProp>
  85973. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  85974. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85975. <stringProp name="Argument.value">${product_url_key}</stringProp>
  85976. <stringProp name="Argument.metadata">=</stringProp>
  85977. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85978. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  85979. </elementProp>
  85980. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  85981. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  85982. <stringProp name="Argument.value">eq</stringProp>
  85983. <stringProp name="Argument.metadata">=</stringProp>
  85984. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  85985. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  85986. </elementProp>
  85987. </collectionProp>
  85988. </elementProp>
  85989. <stringProp name="HTTPSampler.domain"/>
  85990. <stringProp name="HTTPSampler.port"/>
  85991. <stringProp name="HTTPSampler.connect_timeout"/>
  85992. <stringProp name="HTTPSampler.response_timeout"/>
  85993. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  85994. <stringProp name="HTTPSampler.contentEncoding"/>
  85995. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  85996. <stringProp name="HTTPSampler.method">GET</stringProp>
  85997. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  85998. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  85999. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86000. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86001. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86002. <stringProp name="HTTPSampler.embedded_url_re"/>
  86003. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_url_key.jmx</stringProp>
  86004. </HTTPSamplerProxy>
  86005. <hashTree>
  86006. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86007. <collectionProp name="Asserion.test_strings">
  86008. <stringProp name="-1294635157">errors</stringProp>
  86009. </collectionProp>
  86010. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86011. <boolProp name="Assertion.assume_success">false</boolProp>
  86012. <intProp name="Assertion.test_type">6</intProp>
  86013. <stringProp name="Assertion.scope">variable</stringProp>
  86014. <stringProp name="Scope.variable"/>
  86015. </ResponseAssertion>
  86016. <hashTree/>
  86017. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  86018. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  86019. <stringProp name="EXPECTED_VALUE"/>
  86020. <boolProp name="JSONVALIDATION">false</boolProp>
  86021. <boolProp name="EXPECT_NULL">false</boolProp>
  86022. <boolProp name="INVERT">false</boolProp>
  86023. <boolProp name="ISREGEX">false</boolProp>
  86024. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  86025. <hashTree/>
  86026. </hashTree>
  86027. </hashTree>
  86028. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  86029. <boolProp name="LoopController.continue_forever">true</boolProp>
  86030. <stringProp name="LoopController.loops">1</stringProp>
  86031. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  86032. <hashTree>
  86033. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  86034. <stringProp name="CounterConfig.start">1</stringProp>
  86035. <stringProp name="CounterConfig.end"/>
  86036. <stringProp name="CounterConfig.incr">1</stringProp>
  86037. <stringProp name="CounterConfig.name">_counter</stringProp>
  86038. <stringProp name="CounterConfig.format"/>
  86039. <boolProp name="CounterConfig.per_user">true</boolProp>
  86040. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  86041. </CounterConfig>
  86042. <hashTree/>
  86043. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  86044. <stringProp name="BeanShellSampler.query">
  86045. import java.util.Random;
  86046. Random random = vars.getObject("randomIntGenerator");
  86047. number = random.nextInt(props.get("configurable_products_list").size());
  86048. product = props.get("configurable_products_list").get(number);
  86049. vars.put("product_url_key", product.get("url_key"));
  86050. vars.put("product_id", product.get("id"));
  86051. vars.put("product_name", product.get("title"));
  86052. vars.put("product_uenc", product.get("uenc"));
  86053. vars.put("product_sku", product.get("sku"));
  86054. </stringProp>
  86055. <stringProp name="BeanShellSampler.filename"/>
  86056. <stringProp name="BeanShellSampler.parameters"/>
  86057. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  86058. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  86059. <hashTree/>
  86060. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  86061. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  86062. <collectionProp name="Arguments.arguments">
  86063. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  86064. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86065. <stringProp name="Argument.value">url_key</stringProp>
  86066. <stringProp name="Argument.metadata">=</stringProp>
  86067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86068. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  86069. </elementProp>
  86070. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  86071. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86072. <stringProp name="Argument.value">${product_url_key}</stringProp>
  86073. <stringProp name="Argument.metadata">=</stringProp>
  86074. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86075. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  86076. </elementProp>
  86077. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  86078. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86079. <stringProp name="Argument.value">eq</stringProp>
  86080. <stringProp name="Argument.metadata">=</stringProp>
  86081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86082. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  86083. </elementProp>
  86084. </collectionProp>
  86085. </elementProp>
  86086. <stringProp name="HTTPSampler.domain"/>
  86087. <stringProp name="HTTPSampler.port"/>
  86088. <stringProp name="HTTPSampler.connect_timeout"/>
  86089. <stringProp name="HTTPSampler.response_timeout"/>
  86090. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86091. <stringProp name="HTTPSampler.contentEncoding"/>
  86092. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  86093. <stringProp name="HTTPSampler.method">GET</stringProp>
  86094. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86095. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86096. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86097. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86098. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86099. <stringProp name="HTTPSampler.embedded_url_re"/>
  86100. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  86101. </HTTPSamplerProxy>
  86102. <hashTree>
  86103. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86104. <collectionProp name="Asserion.test_strings">
  86105. <stringProp name="-1294635157">errors</stringProp>
  86106. </collectionProp>
  86107. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86108. <boolProp name="Assertion.assume_success">false</boolProp>
  86109. <intProp name="Assertion.test_type">6</intProp>
  86110. <stringProp name="Assertion.scope">variable</stringProp>
  86111. <stringProp name="Scope.variable"/>
  86112. </ResponseAssertion>
  86113. <hashTree/>
  86114. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  86115. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  86116. <stringProp name="EXPECTED_VALUE"/>
  86117. <boolProp name="JSONVALIDATION">false</boolProp>
  86118. <boolProp name="EXPECT_NULL">false</boolProp>
  86119. <boolProp name="INVERT">false</boolProp>
  86120. <boolProp name="ISREGEX">false</boolProp>
  86121. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  86122. <hashTree/>
  86123. </hashTree>
  86124. </hashTree>
  86125. </hashTree>
  86126. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Checkout By Guest" enabled="true">
  86127. <intProp name="ThroughputController.style">1</intProp>
  86128. <boolProp name="ThroughputController.perThread">false</boolProp>
  86129. <intProp name="ThroughputController.maxThroughput">1</intProp>
  86130. <stringProp name="ThroughputController.percentThroughput">${cCheckoutByGuestPercentage}</stringProp>
  86131. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  86132. <hashTree>
  86133. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  86134. <stringProp name="script">
  86135. var tmpLabel = vars.get("testLabel")
  86136. if (tmpLabel) {
  86137. var testLabel = " (" + tmpLabel + ")"
  86138. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  86139. if (sampler.getName().indexOf(testLabel) == -1) {
  86140. sampler.setName(sampler.getName() + testLabel);
  86141. }
  86142. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  86143. sampler.setName("SetUp - " + sampler.getName());
  86144. }
  86145. } else {
  86146. testLabel = ""
  86147. }
  86148. </stringProp>
  86149. <stringProp name="scriptLanguage">javascript</stringProp>
  86150. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  86151. <hashTree/>
  86152. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  86153. <stringProp name="BeanShellSampler.query">
  86154. vars.put("testLabel", "[REST API C] Checkout By Guest");
  86155. </stringProp>
  86156. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  86157. </BeanShellSampler>
  86158. <hashTree/>
  86159. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  86160. <collectionProp name="HeaderManager.headers">
  86161. <elementProp name="" elementType="Header">
  86162. <stringProp name="Header.name">Content-Type</stringProp>
  86163. <stringProp name="Header.value">application/json</stringProp>
  86164. </elementProp>
  86165. <elementProp name="" elementType="Header">
  86166. <stringProp name="Header.name">Accept</stringProp>
  86167. <stringProp name="Header.value">*/*</stringProp>
  86168. </elementProp>
  86169. </collectionProp>
  86170. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  86171. <hashTree/>
  86172. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  86173. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86174. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86175. <collectionProp name="Arguments.arguments">
  86176. <elementProp name="" elementType="HTTPArgument">
  86177. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86178. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  86179. <stringProp name="Argument.metadata">=</stringProp>
  86180. </elementProp>
  86181. </collectionProp>
  86182. </elementProp>
  86183. <stringProp name="HTTPSampler.domain"/>
  86184. <stringProp name="HTTPSampler.port"/>
  86185. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86186. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86187. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86188. <stringProp name="HTTPSampler.contentEncoding"/>
  86189. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  86190. <stringProp name="HTTPSampler.method">POST</stringProp>
  86191. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86192. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86193. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86194. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86195. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86196. <stringProp name="HTTPSampler.embedded_url_re"/>
  86197. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  86198. <hashTree>
  86199. <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">
  86200. <stringProp name="VAR">admin_token</stringProp>
  86201. <stringProp name="JSONPATH">$</stringProp>
  86202. <stringProp name="DEFAULT"/>
  86203. <stringProp name="VARIABLE"/>
  86204. <stringProp name="SUBJECT">BODY</stringProp>
  86205. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  86206. <hashTree/>
  86207. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  86208. <collectionProp name="Asserion.test_strings">
  86209. <stringProp name="484395188">^.{10,}$</stringProp>
  86210. </collectionProp>
  86211. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86212. <boolProp name="Assertion.assume_success">false</boolProp>
  86213. <intProp name="Assertion.test_type">1</intProp>
  86214. <stringProp name="Assertion.scope">variable</stringProp>
  86215. <stringProp name="Scope.variable">admin_token</stringProp>
  86216. </ResponseAssertion>
  86217. <hashTree/>
  86218. </hashTree>
  86219. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  86220. <collectionProp name="HeaderManager.headers">
  86221. <elementProp name="" elementType="Header">
  86222. <stringProp name="Header.name">Authorization</stringProp>
  86223. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  86224. </elementProp>
  86225. </collectionProp>
  86226. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  86227. <hashTree/>
  86228. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  86229. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  86230. <stringProp name="BeanShellSampler.query">
  86231. import java.util.Random;
  86232. Random random = new Random();
  86233. if (${seedForRandom} &gt; 0) {
  86234. random.setSeed(${seedForRandom} + ${__threadNum});
  86235. }
  86236. vars.putObject("randomIntGenerator", random);
  86237. </stringProp>
  86238. <stringProp name="BeanShellSampler.filename"/>
  86239. <stringProp name="BeanShellSampler.parameters"/>
  86240. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  86241. </BeanShellSampler>
  86242. <hashTree/>
  86243. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  86244. <stringProp name="scriptLanguage">javascript</stringProp>
  86245. <stringProp name="parameters"/>
  86246. <stringProp name="filename"/>
  86247. <stringProp name="cacheKey"/>
  86248. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  86249. var categories = props.get("categories");
  86250. number = random.nextInt(categories.length);
  86251. vars.put("category_url_key", categories[number].url_key);
  86252. vars.put("category_name", categories[number].name);
  86253. vars.put("category_id", categories[number].id);
  86254. vars.putObject("category", categories[number]);
  86255. </stringProp>
  86256. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  86257. <hashTree/>
  86258. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Guest Cart" enabled="true">
  86259. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86260. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86261. <collectionProp name="Arguments.arguments">
  86262. <elementProp name="" elementType="HTTPArgument">
  86263. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86264. <stringProp name="Argument.value"/>
  86265. <stringProp name="Argument.metadata">=</stringProp>
  86266. </elementProp>
  86267. </collectionProp>
  86268. </elementProp>
  86269. <stringProp name="HTTPSampler.domain"/>
  86270. <stringProp name="HTTPSampler.port"/>
  86271. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86272. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86273. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86274. <stringProp name="HTTPSampler.contentEncoding"/>
  86275. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/</stringProp>
  86276. <stringProp name="HTTPSampler.method">POST</stringProp>
  86277. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86278. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86279. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86280. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86281. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86282. <stringProp name="HTTPSampler.embedded_url_re"/>
  86283. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_guest_cart.jmx</stringProp></HTTPSamplerProxy>
  86284. <hashTree>
  86285. <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">
  86286. <stringProp name="VAR">cart_id</stringProp>
  86287. <stringProp name="JSONPATH">$</stringProp>
  86288. <stringProp name="DEFAULT"/>
  86289. <stringProp name="VARIABLE"/>
  86290. <stringProp name="SUBJECT">BODY</stringProp>
  86291. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  86292. <hashTree/>
  86293. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Guest Cart Id extracted" enabled="true">
  86294. <collectionProp name="Asserion.test_strings">
  86295. <stringProp name="2845929">^.+$</stringProp>
  86296. </collectionProp>
  86297. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86298. <boolProp name="Assertion.assume_success">false</boolProp>
  86299. <intProp name="Assertion.test_type">1</intProp>
  86300. <stringProp name="Assertion.scope">variable</stringProp>
  86301. <stringProp name="Scope.variable">cart_id</stringProp>
  86302. </ResponseAssertion>
  86303. <hashTree/>
  86304. </hashTree>
  86305. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  86306. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  86307. <collectionProp name="Arguments.arguments">
  86308. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  86309. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86310. <stringProp name="Argument.value">identifier</stringProp>
  86311. <stringProp name="Argument.metadata">=</stringProp>
  86312. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86313. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  86314. </elementProp>
  86315. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  86316. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86317. <stringProp name="Argument.value">home</stringProp>
  86318. <stringProp name="Argument.metadata">=</stringProp>
  86319. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86320. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  86321. </elementProp>
  86322. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  86323. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86324. <stringProp name="Argument.value">eq</stringProp>
  86325. <stringProp name="Argument.metadata">=</stringProp>
  86326. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86327. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  86328. </elementProp>
  86329. </collectionProp>
  86330. </elementProp>
  86331. <stringProp name="HTTPSampler.domain"/>
  86332. <stringProp name="HTTPSampler.port"/>
  86333. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86334. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86335. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86336. <stringProp name="HTTPSampler.contentEncoding"/>
  86337. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  86338. <stringProp name="HTTPSampler.method">GET</stringProp>
  86339. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86340. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86341. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86342. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86343. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86344. <stringProp name="HTTPSampler.embedded_url_re"/>
  86345. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  86346. </HTTPSamplerProxy>
  86347. <hashTree>
  86348. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86349. <collectionProp name="Asserion.test_strings">
  86350. <stringProp name="-1294635157">errors</stringProp>
  86351. </collectionProp>
  86352. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86353. <boolProp name="Assertion.assume_success">false</boolProp>
  86354. <intProp name="Assertion.test_type">6</intProp>
  86355. <stringProp name="Assertion.scope">variable</stringProp>
  86356. <stringProp name="Scope.variable"/>
  86357. </ResponseAssertion>
  86358. <hashTree/>
  86359. </hashTree>
  86360. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  86361. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  86362. <collectionProp name="Arguments.arguments">
  86363. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  86364. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86365. <stringProp name="Argument.value">1</stringProp>
  86366. <stringProp name="Argument.metadata">=</stringProp>
  86367. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86368. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  86369. <stringProp name="Argument.desc">true</stringProp>
  86370. </elementProp>
  86371. </collectionProp>
  86372. </elementProp>
  86373. <stringProp name="HTTPSampler.domain"/>
  86374. <stringProp name="HTTPSampler.port"/>
  86375. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86376. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86377. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86378. <stringProp name="HTTPSampler.contentEncoding"/>
  86379. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
  86380. <stringProp name="HTTPSampler.method">GET</stringProp>
  86381. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86382. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86383. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86384. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86385. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86386. <stringProp name="HTTPSampler.embedded_url_re"/>
  86387. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_categories.jmx</stringProp>
  86388. </HTTPSamplerProxy>
  86389. <hashTree>
  86390. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86391. <collectionProp name="Asserion.test_strings">
  86392. <stringProp name="-1294635157">errors</stringProp>
  86393. </collectionProp>
  86394. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86395. <boolProp name="Assertion.assume_success">false</boolProp>
  86396. <intProp name="Assertion.test_type">6</intProp>
  86397. <stringProp name="Assertion.scope">variable</stringProp>
  86398. <stringProp name="Scope.variable"/>
  86399. </ResponseAssertion>
  86400. <hashTree/>
  86401. </hashTree>
  86402. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  86403. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  86404. <collectionProp name="Arguments.arguments">
  86405. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  86406. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86407. <stringProp name="Argument.value">category_id</stringProp>
  86408. <stringProp name="Argument.metadata">=</stringProp>
  86409. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86410. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  86411. </elementProp>
  86412. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  86413. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86414. <stringProp name="Argument.value">${category_id}</stringProp>
  86415. <stringProp name="Argument.metadata">=</stringProp>
  86416. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86417. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  86418. </elementProp>
  86419. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  86420. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86421. <stringProp name="Argument.value">eq</stringProp>
  86422. <stringProp name="Argument.metadata">=</stringProp>
  86423. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86424. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  86425. </elementProp>
  86426. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  86427. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  86428. <stringProp name="Argument.value">12</stringProp>
  86429. <stringProp name="Argument.metadata">=</stringProp>
  86430. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86431. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  86432. <stringProp name="Argument.desc">true</stringProp>
  86433. </elementProp>
  86434. </collectionProp>
  86435. </elementProp>
  86436. <stringProp name="HTTPSampler.domain"/>
  86437. <stringProp name="HTTPSampler.port"/>
  86438. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86439. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86440. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86441. <stringProp name="HTTPSampler.contentEncoding"/>
  86442. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  86443. <stringProp name="HTTPSampler.method">GET</stringProp>
  86444. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86445. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86446. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86447. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86448. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86449. <stringProp name="HTTPSampler.embedded_url_re"/>
  86450. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_products_by_category_id.jmx</stringProp>
  86451. </HTTPSamplerProxy>
  86452. <hashTree>
  86453. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86454. <collectionProp name="Asserion.test_strings">
  86455. <stringProp name="-1294635157">errors</stringProp>
  86456. </collectionProp>
  86457. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86458. <boolProp name="Assertion.assume_success">false</boolProp>
  86459. <intProp name="Assertion.test_type">6</intProp>
  86460. <stringProp name="Assertion.scope">variable</stringProp>
  86461. <stringProp name="Scope.variable"/>
  86462. </ResponseAssertion>
  86463. <hashTree/>
  86464. </hashTree>
  86465. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  86466. <boolProp name="LoopController.continue_forever">true</boolProp>
  86467. <stringProp name="LoopController.loops">2</stringProp>
  86468. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  86469. <hashTree>
  86470. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  86471. <stringProp name="CounterConfig.start">1</stringProp>
  86472. <stringProp name="CounterConfig.end"/>
  86473. <stringProp name="CounterConfig.incr">1</stringProp>
  86474. <stringProp name="CounterConfig.name">_counter</stringProp>
  86475. <stringProp name="CounterConfig.format"/>
  86476. <boolProp name="CounterConfig.per_user">true</boolProp>
  86477. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  86478. </CounterConfig>
  86479. <hashTree/>
  86480. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  86481. <stringProp name="BeanShellSampler.query">
  86482. import java.util.Random;
  86483. Random random = vars.getObject("randomIntGenerator");
  86484. number = random.nextInt(props.get("simple_products_list").size());
  86485. product = props.get("simple_products_list").get(number);
  86486. vars.put("product_url_key", product.get("url_key"));
  86487. vars.put("product_id", product.get("id"));
  86488. vars.put("product_name", product.get("title"));
  86489. vars.put("product_uenc", product.get("uenc"));
  86490. vars.put("product_sku", product.get("sku"));
  86491. </stringProp>
  86492. <stringProp name="BeanShellSampler.filename"/>
  86493. <stringProp name="BeanShellSampler.parameters"/>
  86494. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  86495. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  86496. <hashTree/>
  86497. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  86498. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  86499. <collectionProp name="Arguments.arguments">
  86500. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  86501. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86502. <stringProp name="Argument.value">url_key</stringProp>
  86503. <stringProp name="Argument.metadata">=</stringProp>
  86504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86505. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  86506. </elementProp>
  86507. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  86508. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86509. <stringProp name="Argument.value">${product_url_key}</stringProp>
  86510. <stringProp name="Argument.metadata">=</stringProp>
  86511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86512. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  86513. </elementProp>
  86514. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  86515. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86516. <stringProp name="Argument.value">eq</stringProp>
  86517. <stringProp name="Argument.metadata">=</stringProp>
  86518. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86519. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  86520. </elementProp>
  86521. </collectionProp>
  86522. </elementProp>
  86523. <stringProp name="HTTPSampler.domain"/>
  86524. <stringProp name="HTTPSampler.port"/>
  86525. <stringProp name="HTTPSampler.connect_timeout"/>
  86526. <stringProp name="HTTPSampler.response_timeout"/>
  86527. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86528. <stringProp name="HTTPSampler.contentEncoding"/>
  86529. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  86530. <stringProp name="HTTPSampler.method">GET</stringProp>
  86531. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86532. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86533. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86534. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86535. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86536. <stringProp name="HTTPSampler.embedded_url_re"/>
  86537. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_url_key.jmx</stringProp>
  86538. </HTTPSamplerProxy>
  86539. <hashTree>
  86540. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86541. <collectionProp name="Asserion.test_strings">
  86542. <stringProp name="-1294635157">errors</stringProp>
  86543. </collectionProp>
  86544. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86545. <boolProp name="Assertion.assume_success">false</boolProp>
  86546. <intProp name="Assertion.test_type">6</intProp>
  86547. <stringProp name="Assertion.scope">variable</stringProp>
  86548. <stringProp name="Scope.variable"/>
  86549. </ResponseAssertion>
  86550. <hashTree/>
  86551. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  86552. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  86553. <stringProp name="EXPECTED_VALUE"/>
  86554. <boolProp name="JSONVALIDATION">false</boolProp>
  86555. <boolProp name="EXPECT_NULL">false</boolProp>
  86556. <boolProp name="INVERT">false</boolProp>
  86557. <boolProp name="ISREGEX">false</boolProp>
  86558. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  86559. <hashTree/>
  86560. </hashTree>
  86561. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  86562. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86563. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86564. <collectionProp name="Arguments.arguments">
  86565. <elementProp name="" elementType="HTTPArgument">
  86566. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86567. <stringProp name="Argument.value">{&#xD;
  86568. "cartItem": {&#xD;
  86569. "sku": "${product_sku}",&#xD;
  86570. "qty":"1",&#xD;
  86571. "quote_id":"${cart_id}"&#xD;
  86572. }&#xD;
  86573. }&#xD;
  86574. </stringProp>
  86575. <stringProp name="Argument.metadata">=</stringProp>
  86576. </elementProp>
  86577. </collectionProp>
  86578. </elementProp>
  86579. <stringProp name="HTTPSampler.domain"/>
  86580. <stringProp name="HTTPSampler.port"/>
  86581. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86582. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86583. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86584. <stringProp name="HTTPSampler.contentEncoding"/>
  86585. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/items</stringProp>
  86586. <stringProp name="HTTPSampler.method">POST</stringProp>
  86587. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86588. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86589. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86590. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86591. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86592. <stringProp name="HTTPSampler.embedded_url_re"/>
  86593. <stringProp name="TestPlan.comments">tool/fragments/ce/api/guest_checkout/add_simple_product_to_cart.jmx</stringProp>
  86594. </HTTPSamplerProxy>
  86595. <hashTree>
  86596. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  86597. <stringProp name="JSON_PATH">$.quote_id</stringProp>
  86598. <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
  86599. <boolProp name="JSONVALIDATION">true</boolProp>
  86600. <boolProp name="EXPECT_NULL">false</boolProp>
  86601. <boolProp name="INVERT">false</boolProp>
  86602. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  86603. <hashTree/>
  86604. </hashTree>
  86605. </hashTree>
  86606. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  86607. <boolProp name="LoopController.continue_forever">true</boolProp>
  86608. <stringProp name="LoopController.loops">1</stringProp>
  86609. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  86610. <hashTree>
  86611. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  86612. <stringProp name="CounterConfig.start">1</stringProp>
  86613. <stringProp name="CounterConfig.end"/>
  86614. <stringProp name="CounterConfig.incr">1</stringProp>
  86615. <stringProp name="CounterConfig.name">_counter</stringProp>
  86616. <stringProp name="CounterConfig.format"/>
  86617. <boolProp name="CounterConfig.per_user">true</boolProp>
  86618. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  86619. </CounterConfig>
  86620. <hashTree/>
  86621. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  86622. <stringProp name="BeanShellSampler.query">
  86623. import java.util.Random;
  86624. Random random = vars.getObject("randomIntGenerator");
  86625. number = random.nextInt(props.get("configurable_products_list").size());
  86626. product = props.get("configurable_products_list").get(number);
  86627. vars.put("product_url_key", product.get("url_key"));
  86628. vars.put("product_id", product.get("id"));
  86629. vars.put("product_name", product.get("title"));
  86630. vars.put("product_uenc", product.get("uenc"));
  86631. vars.put("product_sku", product.get("sku"));
  86632. </stringProp>
  86633. <stringProp name="BeanShellSampler.filename"/>
  86634. <stringProp name="BeanShellSampler.parameters"/>
  86635. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  86636. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  86637. <hashTree/>
  86638. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  86639. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  86640. <collectionProp name="Arguments.arguments">
  86641. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  86642. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86643. <stringProp name="Argument.value">url_key</stringProp>
  86644. <stringProp name="Argument.metadata">=</stringProp>
  86645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86646. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  86647. </elementProp>
  86648. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  86649. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86650. <stringProp name="Argument.value">${product_url_key}</stringProp>
  86651. <stringProp name="Argument.metadata">=</stringProp>
  86652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86653. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  86654. </elementProp>
  86655. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  86656. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86657. <stringProp name="Argument.value">eq</stringProp>
  86658. <stringProp name="Argument.metadata">=</stringProp>
  86659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  86660. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  86661. </elementProp>
  86662. </collectionProp>
  86663. </elementProp>
  86664. <stringProp name="HTTPSampler.domain"/>
  86665. <stringProp name="HTTPSampler.port"/>
  86666. <stringProp name="HTTPSampler.connect_timeout"/>
  86667. <stringProp name="HTTPSampler.response_timeout"/>
  86668. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86669. <stringProp name="HTTPSampler.contentEncoding"/>
  86670. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  86671. <stringProp name="HTTPSampler.method">GET</stringProp>
  86672. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86673. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86674. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86675. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86676. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86677. <stringProp name="HTTPSampler.embedded_url_re"/>
  86678. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  86679. </HTTPSamplerProxy>
  86680. <hashTree>
  86681. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86682. <collectionProp name="Asserion.test_strings">
  86683. <stringProp name="-1294635157">errors</stringProp>
  86684. </collectionProp>
  86685. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86686. <boolProp name="Assertion.assume_success">false</boolProp>
  86687. <intProp name="Assertion.test_type">6</intProp>
  86688. <stringProp name="Assertion.scope">variable</stringProp>
  86689. <stringProp name="Scope.variable"/>
  86690. </ResponseAssertion>
  86691. <hashTree/>
  86692. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  86693. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  86694. <stringProp name="EXPECTED_VALUE"/>
  86695. <boolProp name="JSONVALIDATION">false</boolProp>
  86696. <boolProp name="EXPECT_NULL">false</boolProp>
  86697. <boolProp name="INVERT">false</boolProp>
  86698. <boolProp name="ISREGEX">false</boolProp>
  86699. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  86700. <hashTree/>
  86701. </hashTree>
  86702. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Options" enabled="true">
  86703. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  86704. </elementProp>
  86705. <stringProp name="HTTPSampler.domain"/>
  86706. <stringProp name="HTTPSampler.port"/>
  86707. <stringProp name="HTTPSampler.connect_timeout"/>
  86708. <stringProp name="HTTPSampler.response_timeout"/>
  86709. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86710. <stringProp name="HTTPSampler.contentEncoding"/>
  86711. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/configurable-products/${product_sku}/children</stringProp>
  86712. <stringProp name="HTTPSampler.method">GET</stringProp>
  86713. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86714. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86715. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86716. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86717. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86718. <stringProp name="HTTPSampler.embedded_url_re"/>
  86719. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_options_by_product_sku.jmx</stringProp>
  86720. </HTTPSamplerProxy>
  86721. <hashTree>
  86722. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  86723. <collectionProp name="Asserion.test_strings">
  86724. <stringProp name="-1294635157">errors</stringProp>
  86725. </collectionProp>
  86726. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86727. <boolProp name="Assertion.assume_success">false</boolProp>
  86728. <intProp name="Assertion.test_type">6</intProp>
  86729. <stringProp name="Assertion.scope">variable</stringProp>
  86730. <stringProp name="Scope.variable"/>
  86731. </ResponseAssertion>
  86732. <hashTree/>
  86733. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  86734. <stringProp name="JSON_PATH">$[0].sku</stringProp>
  86735. <stringProp name="EXPECTED_VALUE"/>
  86736. <boolProp name="JSONVALIDATION">false</boolProp>
  86737. <boolProp name="EXPECT_NULL">false</boolProp>
  86738. <boolProp name="INVERT">false</boolProp>
  86739. <boolProp name="ISREGEX">false</boolProp>
  86740. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  86741. <hashTree/>
  86742. <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 Configurable Product option" enabled="true">
  86743. <stringProp name="VAR">product_option</stringProp>
  86744. <stringProp name="JSONPATH">$[0].sku</stringProp>
  86745. <stringProp name="DEFAULT"/>
  86746. <stringProp name="VARIABLE"/>
  86747. <stringProp name="SUBJECT">BODY</stringProp>
  86748. <stringProp name="TestPlan.comments">tool/fragments/ce/api/extract_configurable_product_option_from_product_detail.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  86749. <hashTree/>
  86750. </hashTree>
  86751. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  86752. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86753. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86754. <collectionProp name="Arguments.arguments">
  86755. <elementProp name="" elementType="HTTPArgument">
  86756. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86757. <stringProp name="Argument.value">{&#xD;
  86758. "cartItem": {&#xD;
  86759. "sku": "${product_option}",&#xD;
  86760. "qty":"1",&#xD;
  86761. "quote_id":"${cart_id}"&#xD;
  86762. }&#xD;
  86763. }&#xD;
  86764. </stringProp>
  86765. <stringProp name="Argument.metadata">=</stringProp>
  86766. </elementProp>
  86767. </collectionProp>
  86768. </elementProp>
  86769. <stringProp name="HTTPSampler.domain"/>
  86770. <stringProp name="HTTPSampler.port"/>
  86771. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86772. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86773. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86774. <stringProp name="HTTPSampler.contentEncoding"/>
  86775. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/items</stringProp>
  86776. <stringProp name="HTTPSampler.method">POST</stringProp>
  86777. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86778. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86779. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86780. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86781. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86782. <stringProp name="HTTPSampler.embedded_url_re"/>
  86783. <stringProp name="TestPlan.comments">tool/fragments/ce/api/guest_checkout/add_configurable_product_to_cart.jmx</stringProp>
  86784. </HTTPSamplerProxy>
  86785. <hashTree>
  86786. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  86787. <stringProp name="JSON_PATH">$.quote_id</stringProp>
  86788. <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
  86789. <boolProp name="JSONVALIDATION">true</boolProp>
  86790. <boolProp name="EXPECT_NULL">false</boolProp>
  86791. <boolProp name="INVERT">false</boolProp>
  86792. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  86793. <hashTree/>
  86794. </hashTree>
  86795. </hashTree>
  86796. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  86797. <stringProp name="scriptLanguage">javascript</stringProp>
  86798. <stringProp name="parameters"/>
  86799. <stringProp name="filename"/>
  86800. <stringProp name="cacheKey"/>
  86801. <stringProp name="script">
  86802. vars.put("alabama_region_id", props.get("alabama_region_id"));
  86803. vars.put("california_region_id", props.get("california_region_id"));
  86804. </stringProp>
  86805. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  86806. <hashTree/>
  86807. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  86808. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86809. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86810. <collectionProp name="Arguments.arguments">
  86811. <elementProp name="" elementType="HTTPArgument">
  86812. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86813. <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
  86814. <stringProp name="Argument.metadata">=</stringProp>
  86815. </elementProp>
  86816. </collectionProp>
  86817. </elementProp>
  86818. <stringProp name="HTTPSampler.domain"/>
  86819. <stringProp name="HTTPSampler.port"/>
  86820. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86821. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86822. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86823. <stringProp name="HTTPSampler.contentEncoding"/>
  86824. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/estimate-shipping-methods</stringProp>
  86825. <stringProp name="HTTPSampler.method">POST</stringProp>
  86826. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86827. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86828. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86829. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86830. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86831. <stringProp name="HTTPSampler.embedded_url_re"/>
  86832. <stringProp name="TestPlan.comments">tool/fragments/ce/api/guest_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp>
  86833. </HTTPSamplerProxy>
  86834. <hashTree>
  86835. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  86836. <collectionProp name="Asserion.test_strings">
  86837. <stringProp name="-1224567411">"available":true</stringProp>
  86838. </collectionProp>
  86839. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86840. <boolProp name="Assertion.assume_success">false</boolProp>
  86841. <intProp name="Assertion.test_type">2</intProp>
  86842. </ResponseAssertion>
  86843. <hashTree/>
  86844. </hashTree>
  86845. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  86846. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86847. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86848. <collectionProp name="Arguments.arguments">
  86849. <elementProp name="" elementType="HTTPArgument">
  86850. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86851. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","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>
  86852. <stringProp name="Argument.metadata">=</stringProp>
  86853. </elementProp>
  86854. </collectionProp>
  86855. </elementProp>
  86856. <stringProp name="HTTPSampler.domain"/>
  86857. <stringProp name="HTTPSampler.port"/>
  86858. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86859. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86860. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86861. <stringProp name="HTTPSampler.contentEncoding"/>
  86862. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/shipping-information</stringProp>
  86863. <stringProp name="HTTPSampler.method">POST</stringProp>
  86864. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86865. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86866. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86867. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86868. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86869. <stringProp name="HTTPSampler.embedded_url_re"/>
  86870. <stringProp name="TestPlan.comments">tool/fragments/ce/api/guest_checkout/checkout_billing_shipping_information.jmx</stringProp>
  86871. </HTTPSamplerProxy>
  86872. <hashTree>
  86873. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  86874. <collectionProp name="Asserion.test_strings">
  86875. <stringProp name="-1494218646">{"payment_methods":</stringProp>
  86876. </collectionProp>
  86877. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86878. <boolProp name="Assertion.assume_success">false</boolProp>
  86879. <intProp name="Assertion.test_type">2</intProp>
  86880. </ResponseAssertion>
  86881. <hashTree/>
  86882. </hashTree>
  86883. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  86884. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86885. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86886. <collectionProp name="Arguments.arguments">
  86887. <elementProp name="" elementType="HTTPArgument">
  86888. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86889. <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname","save_in_address_book":0}}</stringProp>
  86890. <stringProp name="Argument.metadata">=</stringProp>
  86891. </elementProp>
  86892. </collectionProp>
  86893. </elementProp>
  86894. <stringProp name="HTTPSampler.domain"/>
  86895. <stringProp name="HTTPSampler.port"/>
  86896. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  86897. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  86898. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  86899. <stringProp name="HTTPSampler.contentEncoding"/>
  86900. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/guest-carts/${cart_id}/payment-information</stringProp>
  86901. <stringProp name="HTTPSampler.method">POST</stringProp>
  86902. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  86903. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  86904. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  86905. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  86906. <boolProp name="HTTPSampler.monitor">false</boolProp>
  86907. <stringProp name="HTTPSampler.embedded_url_re"/>
  86908. <stringProp name="TestPlan.comments">tool/fragments/ce/api/guest_checkout/checkout_payment_info_place_order.jmx</stringProp>
  86909. </HTTPSamplerProxy>
  86910. <hashTree>
  86911. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  86912. <collectionProp name="Asserion.test_strings">
  86913. <stringProp name="-297987887">"[0-9]+"</stringProp>
  86914. </collectionProp>
  86915. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86916. <boolProp name="Assertion.assume_success">false</boolProp>
  86917. <intProp name="Assertion.test_type">2</intProp>
  86918. </ResponseAssertion>
  86919. <hashTree/>
  86920. <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">
  86921. <stringProp name="VAR">order_id</stringProp>
  86922. <stringProp name="JSONPATH">$</stringProp>
  86923. <stringProp name="DEFAULT"/>
  86924. <stringProp name="VARIABLE"/>
  86925. <stringProp name="SUBJECT">BODY</stringProp>
  86926. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  86927. <hashTree/>
  86928. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  86929. <collectionProp name="Asserion.test_strings">
  86930. <stringProp name="89649215">^\d+$</stringProp>
  86931. </collectionProp>
  86932. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  86933. <boolProp name="Assertion.assume_success">false</boolProp>
  86934. <intProp name="Assertion.test_type">1</intProp>
  86935. <stringProp name="Assertion.scope">variable</stringProp>
  86936. <stringProp name="Scope.variable">order_id</stringProp>
  86937. </ResponseAssertion>
  86938. <hashTree/>
  86939. </hashTree>
  86940. </hashTree>
  86941. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Checkout By Customer" enabled="true">
  86942. <intProp name="ThroughputController.style">1</intProp>
  86943. <boolProp name="ThroughputController.perThread">false</boolProp>
  86944. <intProp name="ThroughputController.maxThroughput">1</intProp>
  86945. <stringProp name="ThroughputController.percentThroughput">${cCheckoutByCustomerPercentage}</stringProp>
  86946. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  86947. <hashTree>
  86948. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  86949. <stringProp name="script">
  86950. var tmpLabel = vars.get("testLabel")
  86951. if (tmpLabel) {
  86952. var testLabel = " (" + tmpLabel + ")"
  86953. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  86954. if (sampler.getName().indexOf(testLabel) == -1) {
  86955. sampler.setName(sampler.getName() + testLabel);
  86956. }
  86957. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  86958. sampler.setName("SetUp - " + sampler.getName());
  86959. }
  86960. } else {
  86961. testLabel = ""
  86962. }
  86963. </stringProp>
  86964. <stringProp name="scriptLanguage">javascript</stringProp>
  86965. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  86966. <hashTree/>
  86967. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  86968. <stringProp name="BeanShellSampler.query">
  86969. vars.put("testLabel", "[REST API C] Checkout By Customer");
  86970. </stringProp>
  86971. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  86972. </BeanShellSampler>
  86973. <hashTree/>
  86974. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  86975. <collectionProp name="HeaderManager.headers">
  86976. <elementProp name="" elementType="Header">
  86977. <stringProp name="Header.name">Content-Type</stringProp>
  86978. <stringProp name="Header.value">application/json</stringProp>
  86979. </elementProp>
  86980. <elementProp name="" elementType="Header">
  86981. <stringProp name="Header.name">Accept</stringProp>
  86982. <stringProp name="Header.value">*/*</stringProp>
  86983. </elementProp>
  86984. </collectionProp>
  86985. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  86986. <hashTree/>
  86987. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  86988. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  86989. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  86990. <collectionProp name="Arguments.arguments">
  86991. <elementProp name="" elementType="HTTPArgument">
  86992. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  86993. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  86994. <stringProp name="Argument.metadata">=</stringProp>
  86995. </elementProp>
  86996. </collectionProp>
  86997. </elementProp>
  86998. <stringProp name="HTTPSampler.domain"/>
  86999. <stringProp name="HTTPSampler.port"/>
  87000. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87001. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87002. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87003. <stringProp name="HTTPSampler.contentEncoding"/>
  87004. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  87005. <stringProp name="HTTPSampler.method">POST</stringProp>
  87006. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87007. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87008. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87009. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87010. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87011. <stringProp name="HTTPSampler.embedded_url_re"/>
  87012. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  87013. <hashTree>
  87014. <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">
  87015. <stringProp name="VAR">admin_token</stringProp>
  87016. <stringProp name="JSONPATH">$</stringProp>
  87017. <stringProp name="DEFAULT"/>
  87018. <stringProp name="VARIABLE"/>
  87019. <stringProp name="SUBJECT">BODY</stringProp>
  87020. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  87021. <hashTree/>
  87022. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  87023. <collectionProp name="Asserion.test_strings">
  87024. <stringProp name="484395188">^.{10,}$</stringProp>
  87025. </collectionProp>
  87026. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87027. <boolProp name="Assertion.assume_success">false</boolProp>
  87028. <intProp name="Assertion.test_type">1</intProp>
  87029. <stringProp name="Assertion.scope">variable</stringProp>
  87030. <stringProp name="Scope.variable">admin_token</stringProp>
  87031. </ResponseAssertion>
  87032. <hashTree/>
  87033. </hashTree>
  87034. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  87035. <collectionProp name="HeaderManager.headers">
  87036. <elementProp name="" elementType="Header">
  87037. <stringProp name="Header.name">Authorization</stringProp>
  87038. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  87039. </elementProp>
  87040. </collectionProp>
  87041. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  87042. <hashTree/>
  87043. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  87044. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  87045. <stringProp name="BeanShellSampler.query">
  87046. import java.util.Random;
  87047. Random random = new Random();
  87048. if (${seedForRandom} &gt; 0) {
  87049. random.setSeed(${seedForRandom} + ${__threadNum});
  87050. }
  87051. vars.putObject("randomIntGenerator", random);
  87052. </stringProp>
  87053. <stringProp name="BeanShellSampler.filename"/>
  87054. <stringProp name="BeanShellSampler.parameters"/>
  87055. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  87056. </BeanShellSampler>
  87057. <hashTree/>
  87058. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
  87059. <stringProp name="scriptLanguage">javascript</stringProp>
  87060. <stringProp name="parameters"/>
  87061. <stringProp name="filename"/>
  87062. <stringProp name="cacheKey"/>
  87063. <stringProp name="script">random = vars.getObject("randomIntGenerator");
  87064. var categories = props.get("categories");
  87065. number = random.nextInt(categories.length);
  87066. vars.put("category_url_key", categories[number].url_key);
  87067. vars.put("category_name", categories[number].name);
  87068. vars.put("category_id", categories[number].id);
  87069. vars.putObject("category", categories[number]);
  87070. </stringProp>
  87071. <stringProp name="TestPlan.comments">tool/fragments/ce/common/extract_category_setup.jmx</stringProp></JSR223Sampler>
  87072. <hashTree/>
  87073. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  87074. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  87075. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  87076. <hashTree>
  87077. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  87078. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  87079. <stringProp name="BeanShellSampler.query">
  87080. customerUserList = props.get("customer_emails_list");
  87081. customerUser = customerUserList.poll();
  87082. if (customerUser == null) {
  87083. SampleResult.setResponseMessage("customerUser list is empty");
  87084. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  87085. IsSuccess=false;
  87086. SampleResult.setSuccessful(false);
  87087. SampleResult.setStopThread(true);
  87088. }
  87089. vars.put("customer_email", customerUser);
  87090. </stringProp>
  87091. <stringProp name="BeanShellSampler.filename"/>
  87092. <stringProp name="BeanShellSampler.parameters"/>
  87093. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  87094. </BeanShellSampler>
  87095. <hashTree/>
  87096. </hashTree>
  87097. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
  87098. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87099. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87100. <collectionProp name="Arguments.arguments">
  87101. <elementProp name="" elementType="HTTPArgument">
  87102. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87103. <stringProp name="Argument.value">{&#xD;
  87104. "username": "${customer_email}",&#xD;
  87105. "password": "${customer_password}"&#xD;
  87106. }&#xD;
  87107. </stringProp>
  87108. <stringProp name="Argument.metadata">=</stringProp>
  87109. </elementProp>
  87110. </collectionProp>
  87111. </elementProp>
  87112. <stringProp name="HTTPSampler.domain"/>
  87113. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  87114. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87115. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87116. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87117. <stringProp name="HTTPSampler.contentEncoding"/>
  87118. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/integration/customer/token</stringProp>
  87119. <stringProp name="HTTPSampler.method">POST</stringProp>
  87120. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87121. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87122. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87123. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87124. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87125. <stringProp name="HTTPSampler.embedded_url_re"/>
  87126. <stringProp name="TestPlan.comments">tool/fragments/ce/api/login.jmx</stringProp>
  87127. </HTTPSamplerProxy>
  87128. <hashTree>
  87129. <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 customer token" enabled="true">
  87130. <stringProp name="VAR">customer_token</stringProp>
  87131. <stringProp name="JSONPATH">$</stringProp>
  87132. <stringProp name="DEFAULT"/>
  87133. <stringProp name="VARIABLE"/>
  87134. <stringProp name="SUBJECT">BODY</stringProp>
  87135. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  87136. <hashTree/>
  87137. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  87138. <stringProp name="JSON_PATH">$</stringProp>
  87139. <stringProp name="EXPECTED_VALUE"/>
  87140. <boolProp name="JSONVALIDATION">false</boolProp>
  87141. <boolProp name="EXPECT_NULL">false</boolProp>
  87142. <boolProp name="INVERT">false</boolProp>
  87143. <boolProp name="ISREGEX">false</boolProp>
  87144. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  87145. <hashTree/>
  87146. </hashTree>
  87147. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Customer Cart" enabled="true">
  87148. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87149. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87150. <collectionProp name="Arguments.arguments">
  87151. <elementProp name="" elementType="HTTPArgument">
  87152. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87153. <stringProp name="Argument.value"/>
  87154. <stringProp name="Argument.metadata">=</stringProp>
  87155. </elementProp>
  87156. </collectionProp>
  87157. </elementProp>
  87158. <stringProp name="HTTPSampler.domain"/>
  87159. <stringProp name="HTTPSampler.port"/>
  87160. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87161. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87162. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87163. <stringProp name="HTTPSampler.contentEncoding"/>
  87164. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine</stringProp>
  87165. <stringProp name="HTTPSampler.method">POST</stringProp>
  87166. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87167. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87168. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87169. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87170. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87171. <stringProp name="HTTPSampler.embedded_url_re"/>
  87172. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_customer_cart.jmx</stringProp>
  87173. </HTTPSamplerProxy>
  87174. <hashTree>
  87175. <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">
  87176. <stringProp name="VAR">cart_id</stringProp>
  87177. <stringProp name="JSONPATH">$</stringProp>
  87178. <stringProp name="DEFAULT"/>
  87179. <stringProp name="VARIABLE"/>
  87180. <stringProp name="SUBJECT">BODY</stringProp>
  87181. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  87182. <hashTree/>
  87183. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Guest Cart Id extracted" enabled="true">
  87184. <collectionProp name="Asserion.test_strings">
  87185. <stringProp name="2845929">^.+$</stringProp>
  87186. </collectionProp>
  87187. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87188. <boolProp name="Assertion.assume_success">false</boolProp>
  87189. <intProp name="Assertion.test_type">1</intProp>
  87190. <stringProp name="Assertion.scope">variable</stringProp>
  87191. <stringProp name="Scope.variable">cart_id</stringProp>
  87192. </ResponseAssertion>
  87193. <hashTree/>
  87194. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  87195. <boolProp name="resetInterpreter">false</boolProp>
  87196. <stringProp name="parameters"/>
  87197. <stringProp name="filename"/>
  87198. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  87199. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  87200. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  87201. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/set_customer_token.jmx</stringProp>
  87202. </BeanShellPreProcessor>
  87203. <hashTree/>
  87204. </hashTree>
  87205. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Home Page" enabled="true">
  87206. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  87207. <collectionProp name="Arguments.arguments">
  87208. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  87209. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87210. <stringProp name="Argument.value">identifier</stringProp>
  87211. <stringProp name="Argument.metadata">=</stringProp>
  87212. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87213. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  87214. </elementProp>
  87215. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  87216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87217. <stringProp name="Argument.value">home</stringProp>
  87218. <stringProp name="Argument.metadata">=</stringProp>
  87219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87220. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  87221. </elementProp>
  87222. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  87223. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87224. <stringProp name="Argument.value">eq</stringProp>
  87225. <stringProp name="Argument.metadata">=</stringProp>
  87226. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87227. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  87228. </elementProp>
  87229. </collectionProp>
  87230. </elementProp>
  87231. <stringProp name="HTTPSampler.domain"/>
  87232. <stringProp name="HTTPSampler.port"/>
  87233. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87234. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87235. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87236. <stringProp name="HTTPSampler.contentEncoding"/>
  87237. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/cmsPage/search</stringProp>
  87238. <stringProp name="HTTPSampler.method">GET</stringProp>
  87239. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87240. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87241. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87242. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87243. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87244. <stringProp name="HTTPSampler.embedded_url_re"/>
  87245. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_home_page.jmx</stringProp>
  87246. </HTTPSamplerProxy>
  87247. <hashTree>
  87248. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  87249. <collectionProp name="Asserion.test_strings">
  87250. <stringProp name="-1294635157">errors</stringProp>
  87251. </collectionProp>
  87252. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87253. <boolProp name="Assertion.assume_success">false</boolProp>
  87254. <intProp name="Assertion.test_type">6</intProp>
  87255. <stringProp name="Assertion.scope">variable</stringProp>
  87256. <stringProp name="Scope.variable"/>
  87257. </ResponseAssertion>
  87258. <hashTree/>
  87259. </hashTree>
  87260. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Category List" enabled="true">
  87261. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  87262. <collectionProp name="Arguments.arguments">
  87263. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  87264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87265. <stringProp name="Argument.value">1</stringProp>
  87266. <stringProp name="Argument.metadata">=</stringProp>
  87267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87268. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  87269. <stringProp name="Argument.desc">true</stringProp>
  87270. </elementProp>
  87271. </collectionProp>
  87272. </elementProp>
  87273. <stringProp name="HTTPSampler.domain"/>
  87274. <stringProp name="HTTPSampler.port"/>
  87275. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87276. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87277. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87278. <stringProp name="HTTPSampler.contentEncoding"/>
  87279. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/categories</stringProp>
  87280. <stringProp name="HTTPSampler.method">GET</stringProp>
  87281. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87282. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87283. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87284. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87285. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87286. <stringProp name="HTTPSampler.embedded_url_re"/>
  87287. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_categories.jmx</stringProp>
  87288. </HTTPSamplerProxy>
  87289. <hashTree>
  87290. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  87291. <collectionProp name="Asserion.test_strings">
  87292. <stringProp name="-1294635157">errors</stringProp>
  87293. </collectionProp>
  87294. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87295. <boolProp name="Assertion.assume_success">false</boolProp>
  87296. <intProp name="Assertion.test_type">6</intProp>
  87297. <stringProp name="Assertion.scope">variable</stringProp>
  87298. <stringProp name="Scope.variable"/>
  87299. </ResponseAssertion>
  87300. <hashTree/>
  87301. </hashTree>
  87302. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get List of Products by category_id" enabled="true">
  87303. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
  87304. <collectionProp name="Arguments.arguments">
  87305. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  87306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87307. <stringProp name="Argument.value">category_id</stringProp>
  87308. <stringProp name="Argument.metadata">=</stringProp>
  87309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87310. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  87311. </elementProp>
  87312. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  87313. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87314. <stringProp name="Argument.value">${category_id}</stringProp>
  87315. <stringProp name="Argument.metadata">=</stringProp>
  87316. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87317. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  87318. </elementProp>
  87319. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  87320. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87321. <stringProp name="Argument.value">eq</stringProp>
  87322. <stringProp name="Argument.metadata">=</stringProp>
  87323. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87324. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  87325. </elementProp>
  87326. <elementProp name="searchCriteria[page_size]" elementType="HTTPArgument">
  87327. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  87328. <stringProp name="Argument.value">12</stringProp>
  87329. <stringProp name="Argument.metadata">=</stringProp>
  87330. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87331. <stringProp name="Argument.name">searchCriteria[page_size]</stringProp>
  87332. <stringProp name="Argument.desc">true</stringProp>
  87333. </elementProp>
  87334. </collectionProp>
  87335. </elementProp>
  87336. <stringProp name="HTTPSampler.domain"/>
  87337. <stringProp name="HTTPSampler.port"/>
  87338. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87339. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87340. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87341. <stringProp name="HTTPSampler.contentEncoding"/>
  87342. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  87343. <stringProp name="HTTPSampler.method">GET</stringProp>
  87344. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87345. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87346. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87347. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87348. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87349. <stringProp name="HTTPSampler.embedded_url_re"/>
  87350. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_list_of_products_by_category_id.jmx</stringProp>
  87351. </HTTPSamplerProxy>
  87352. <hashTree>
  87353. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  87354. <collectionProp name="Asserion.test_strings">
  87355. <stringProp name="-1294635157">errors</stringProp>
  87356. </collectionProp>
  87357. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87358. <boolProp name="Assertion.assume_success">false</boolProp>
  87359. <intProp name="Assertion.test_type">6</intProp>
  87360. <stringProp name="Assertion.scope">variable</stringProp>
  87361. <stringProp name="Scope.variable"/>
  87362. </ResponseAssertion>
  87363. <hashTree/>
  87364. </hashTree>
  87365. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Simple Products" enabled="true">
  87366. <boolProp name="LoopController.continue_forever">true</boolProp>
  87367. <stringProp name="LoopController.loops">2</stringProp>
  87368. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  87369. <hashTree>
  87370. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  87371. <stringProp name="CounterConfig.start">1</stringProp>
  87372. <stringProp name="CounterConfig.end"/>
  87373. <stringProp name="CounterConfig.incr">1</stringProp>
  87374. <stringProp name="CounterConfig.name">_counter</stringProp>
  87375. <stringProp name="CounterConfig.format"/>
  87376. <boolProp name="CounterConfig.per_user">true</boolProp>
  87377. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  87378. </CounterConfig>
  87379. <hashTree/>
  87380. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Simple Product Data" enabled="true">
  87381. <stringProp name="BeanShellSampler.query">
  87382. import java.util.Random;
  87383. Random random = vars.getObject("randomIntGenerator");
  87384. number = random.nextInt(props.get("simple_products_list").size());
  87385. product = props.get("simple_products_list").get(number);
  87386. vars.put("product_url_key", product.get("url_key"));
  87387. vars.put("product_id", product.get("id"));
  87388. vars.put("product_name", product.get("title"));
  87389. vars.put("product_uenc", product.get("uenc"));
  87390. vars.put("product_sku", product.get("sku"));
  87391. </stringProp>
  87392. <stringProp name="BeanShellSampler.filename"/>
  87393. <stringProp name="BeanShellSampler.parameters"/>
  87394. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  87395. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/simple_products_setup.jmx</stringProp></BeanShellSampler>
  87396. <hashTree/>
  87397. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} View" enabled="true">
  87398. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  87399. <collectionProp name="Arguments.arguments">
  87400. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  87401. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87402. <stringProp name="Argument.value">url_key</stringProp>
  87403. <stringProp name="Argument.metadata">=</stringProp>
  87404. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87405. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  87406. </elementProp>
  87407. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  87408. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87409. <stringProp name="Argument.value">${product_url_key}</stringProp>
  87410. <stringProp name="Argument.metadata">=</stringProp>
  87411. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87412. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  87413. </elementProp>
  87414. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  87415. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87416. <stringProp name="Argument.value">eq</stringProp>
  87417. <stringProp name="Argument.metadata">=</stringProp>
  87418. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87419. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  87420. </elementProp>
  87421. </collectionProp>
  87422. </elementProp>
  87423. <stringProp name="HTTPSampler.domain"/>
  87424. <stringProp name="HTTPSampler.port"/>
  87425. <stringProp name="HTTPSampler.connect_timeout"/>
  87426. <stringProp name="HTTPSampler.response_timeout"/>
  87427. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87428. <stringProp name="HTTPSampler.contentEncoding"/>
  87429. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  87430. <stringProp name="HTTPSampler.method">GET</stringProp>
  87431. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87432. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87433. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87434. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87435. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87436. <stringProp name="HTTPSampler.embedded_url_re"/>
  87437. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_simple_product_details_by_product_url_key.jmx</stringProp>
  87438. </HTTPSamplerProxy>
  87439. <hashTree>
  87440. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  87441. <collectionProp name="Asserion.test_strings">
  87442. <stringProp name="-1294635157">errors</stringProp>
  87443. </collectionProp>
  87444. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87445. <boolProp name="Assertion.assume_success">false</boolProp>
  87446. <intProp name="Assertion.test_type">6</intProp>
  87447. <stringProp name="Assertion.scope">variable</stringProp>
  87448. <stringProp name="Scope.variable"/>
  87449. </ResponseAssertion>
  87450. <hashTree/>
  87451. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  87452. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  87453. <stringProp name="EXPECTED_VALUE"/>
  87454. <boolProp name="JSONVALIDATION">false</boolProp>
  87455. <boolProp name="EXPECT_NULL">false</boolProp>
  87456. <boolProp name="INVERT">false</boolProp>
  87457. <boolProp name="ISREGEX">false</boolProp>
  87458. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  87459. <hashTree/>
  87460. </hashTree>
  87461. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Simple Product ${_counter} Add To Cart" enabled="true">
  87462. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87463. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87464. <collectionProp name="Arguments.arguments">
  87465. <elementProp name="" elementType="HTTPArgument">
  87466. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87467. <stringProp name="Argument.value">{&#xD;
  87468. "cartItem": {&#xD;
  87469. "sku": "${product_sku}",&#xD;
  87470. "qty":"1",&#xD;
  87471. "quote_id":"${cart_id}"&#xD;
  87472. }&#xD;
  87473. }&#xD;
  87474. </stringProp>
  87475. <stringProp name="Argument.metadata">=</stringProp>
  87476. </elementProp>
  87477. </collectionProp>
  87478. </elementProp>
  87479. <stringProp name="HTTPSampler.domain"/>
  87480. <stringProp name="HTTPSampler.port"/>
  87481. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87482. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87483. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87484. <stringProp name="HTTPSampler.contentEncoding"/>
  87485. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/items</stringProp>
  87486. <stringProp name="HTTPSampler.method">POST</stringProp>
  87487. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87488. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87489. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87490. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87491. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87492. <stringProp name="HTTPSampler.embedded_url_re"/>
  87493. <stringProp name="TestPlan.comments">tool/fragments/ce/api/customer_checkout/add_simple_product_to_cart.jmx</stringProp>
  87494. </HTTPSamplerProxy>
  87495. <hashTree>
  87496. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  87497. <stringProp name="JSON_PATH">$.quote_id</stringProp>
  87498. <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
  87499. <boolProp name="JSONVALIDATION">true</boolProp>
  87500. <boolProp name="EXPECT_NULL">false</boolProp>
  87501. <boolProp name="INVERT">false</boolProp>
  87502. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  87503. <hashTree/>
  87504. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  87505. <boolProp name="resetInterpreter">false</boolProp>
  87506. <stringProp name="parameters"/>
  87507. <stringProp name="filename"/>
  87508. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  87509. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  87510. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  87511. <stringProp name="TestPlan.comments">tool/fragments/ce/api/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  87512. </hashTree>
  87513. </hashTree>
  87514. <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="View Configurable Products" enabled="true">
  87515. <boolProp name="LoopController.continue_forever">true</boolProp>
  87516. <stringProp name="LoopController.loops">1</stringProp>
  87517. <stringProp name="TestPlan.comments">tool/fragments/ce/loop_controller.jmx</stringProp></LoopController>
  87518. <hashTree>
  87519. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  87520. <stringProp name="CounterConfig.start">1</stringProp>
  87521. <stringProp name="CounterConfig.end"/>
  87522. <stringProp name="CounterConfig.incr">1</stringProp>
  87523. <stringProp name="CounterConfig.name">_counter</stringProp>
  87524. <stringProp name="CounterConfig.format"/>
  87525. <boolProp name="CounterConfig.per_user">true</boolProp>
  87526. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  87527. </CounterConfig>
  87528. <hashTree/>
  87529. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Prepare Configurable Product Data" enabled="true">
  87530. <stringProp name="BeanShellSampler.query">
  87531. import java.util.Random;
  87532. Random random = vars.getObject("randomIntGenerator");
  87533. number = random.nextInt(props.get("configurable_products_list").size());
  87534. product = props.get("configurable_products_list").get(number);
  87535. vars.put("product_url_key", product.get("url_key"));
  87536. vars.put("product_id", product.get("id"));
  87537. vars.put("product_name", product.get("title"));
  87538. vars.put("product_uenc", product.get("uenc"));
  87539. vars.put("product_sku", product.get("sku"));
  87540. </stringProp>
  87541. <stringProp name="BeanShellSampler.filename"/>
  87542. <stringProp name="BeanShellSampler.parameters"/>
  87543. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  87544. <stringProp name="TestPlan.comments">tool/fragments/ce/product_browsing_and_adding_items_to_the_cart/configurable_products_setup.jmx</stringProp></BeanShellSampler>
  87545. <hashTree/>
  87546. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} View" enabled="true">
  87547. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  87548. <collectionProp name="Arguments.arguments">
  87549. <elementProp name="searchCriteria[filter_groups][0][filters][0][field]" elementType="HTTPArgument">
  87550. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87551. <stringProp name="Argument.value">url_key</stringProp>
  87552. <stringProp name="Argument.metadata">=</stringProp>
  87553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87554. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][field]</stringProp>
  87555. </elementProp>
  87556. <elementProp name="searchCriteria[filter_groups][0][filters][0][value]" elementType="HTTPArgument">
  87557. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87558. <stringProp name="Argument.value">${product_url_key}</stringProp>
  87559. <stringProp name="Argument.metadata">=</stringProp>
  87560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87561. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][value]</stringProp>
  87562. </elementProp>
  87563. <elementProp name="searchCriteria[filter_groups][0][filters][0][condition_type]" elementType="HTTPArgument">
  87564. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87565. <stringProp name="Argument.value">eq</stringProp>
  87566. <stringProp name="Argument.metadata">=</stringProp>
  87567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  87568. <stringProp name="Argument.name">searchCriteria[filter_groups][0][filters][0][condition_type]</stringProp>
  87569. </elementProp>
  87570. </collectionProp>
  87571. </elementProp>
  87572. <stringProp name="HTTPSampler.domain"/>
  87573. <stringProp name="HTTPSampler.port"/>
  87574. <stringProp name="HTTPSampler.connect_timeout"/>
  87575. <stringProp name="HTTPSampler.response_timeout"/>
  87576. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87577. <stringProp name="HTTPSampler.contentEncoding"/>
  87578. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products</stringProp>
  87579. <stringProp name="HTTPSampler.method">GET</stringProp>
  87580. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87581. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87582. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87583. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87584. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87585. <stringProp name="HTTPSampler.embedded_url_re"/>
  87586. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_details_by_product_url_key.jmx</stringProp>
  87587. </HTTPSamplerProxy>
  87588. <hashTree>
  87589. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  87590. <collectionProp name="Asserion.test_strings">
  87591. <stringProp name="-1294635157">errors</stringProp>
  87592. </collectionProp>
  87593. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87594. <boolProp name="Assertion.assume_success">false</boolProp>
  87595. <intProp name="Assertion.test_type">6</intProp>
  87596. <stringProp name="Assertion.scope">variable</stringProp>
  87597. <stringProp name="Scope.variable"/>
  87598. </ResponseAssertion>
  87599. <hashTree/>
  87600. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  87601. <stringProp name="JSON_PATH">$.items[0].sku</stringProp>
  87602. <stringProp name="EXPECTED_VALUE"/>
  87603. <boolProp name="JSONVALIDATION">false</boolProp>
  87604. <boolProp name="EXPECT_NULL">false</boolProp>
  87605. <boolProp name="INVERT">false</boolProp>
  87606. <boolProp name="ISREGEX">false</boolProp>
  87607. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  87608. <hashTree/>
  87609. </hashTree>
  87610. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Options" enabled="true">
  87611. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  87612. </elementProp>
  87613. <stringProp name="HTTPSampler.domain"/>
  87614. <stringProp name="HTTPSampler.port"/>
  87615. <stringProp name="HTTPSampler.connect_timeout"/>
  87616. <stringProp name="HTTPSampler.response_timeout"/>
  87617. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87618. <stringProp name="HTTPSampler.contentEncoding"/>
  87619. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/configurable-products/${product_sku}/children</stringProp>
  87620. <stringProp name="HTTPSampler.method">GET</stringProp>
  87621. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87622. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87623. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87624. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87625. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87626. <stringProp name="HTTPSampler.embedded_url_re"/>
  87627. <stringProp name="TestPlan.comments">tool/fragments/ce/api/get_configurable_product_options_by_product_sku.jmx</stringProp>
  87628. </HTTPSamplerProxy>
  87629. <hashTree>
  87630. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert results are present" enabled="true">
  87631. <collectionProp name="Asserion.test_strings">
  87632. <stringProp name="-1294635157">errors</stringProp>
  87633. </collectionProp>
  87634. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87635. <boolProp name="Assertion.assume_success">false</boolProp>
  87636. <intProp name="Assertion.test_type">6</intProp>
  87637. <stringProp name="Assertion.scope">variable</stringProp>
  87638. <stringProp name="Scope.variable"/>
  87639. </ResponseAssertion>
  87640. <hashTree/>
  87641. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  87642. <stringProp name="JSON_PATH">$[0].sku</stringProp>
  87643. <stringProp name="EXPECTED_VALUE"/>
  87644. <boolProp name="JSONVALIDATION">false</boolProp>
  87645. <boolProp name="EXPECT_NULL">false</boolProp>
  87646. <boolProp name="INVERT">false</boolProp>
  87647. <boolProp name="ISREGEX">false</boolProp>
  87648. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  87649. <hashTree/>
  87650. <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 Configurable Product option" enabled="true">
  87651. <stringProp name="VAR">product_option</stringProp>
  87652. <stringProp name="JSONPATH">$[0].sku</stringProp>
  87653. <stringProp name="DEFAULT"/>
  87654. <stringProp name="VARIABLE"/>
  87655. <stringProp name="SUBJECT">BODY</stringProp>
  87656. <stringProp name="TestPlan.comments">tool/fragments/ce/api/extract_configurable_product_option_from_product_detail.jmx</stringProp></com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  87657. <hashTree/>
  87658. </hashTree>
  87659. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Configurable Product ${_counter} Add To Cart" enabled="true">
  87660. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87661. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87662. <collectionProp name="Arguments.arguments">
  87663. <elementProp name="" elementType="HTTPArgument">
  87664. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87665. <stringProp name="Argument.value">{&#xD;
  87666. "cartItem": {&#xD;
  87667. "sku": "${product_option}",&#xD;
  87668. "qty":"1",&#xD;
  87669. "quote_id":"${cart_id}"&#xD;
  87670. }&#xD;
  87671. }&#xD;
  87672. </stringProp>
  87673. <stringProp name="Argument.metadata">=</stringProp>
  87674. </elementProp>
  87675. </collectionProp>
  87676. </elementProp>
  87677. <stringProp name="HTTPSampler.domain"/>
  87678. <stringProp name="HTTPSampler.port"/>
  87679. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87680. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87681. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87682. <stringProp name="HTTPSampler.contentEncoding"/>
  87683. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/items</stringProp>
  87684. <stringProp name="HTTPSampler.method">POST</stringProp>
  87685. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87686. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87687. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87688. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87689. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87690. <stringProp name="HTTPSampler.embedded_url_re"/>
  87691. <stringProp name="TestPlan.comments">tool/fragments/ce/api/customer_checkout/add_configurable_product_to_cart.jmx</stringProp>
  87692. </HTTPSamplerProxy>
  87693. <hashTree>
  87694. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  87695. <stringProp name="JSON_PATH">$.quote_id</stringProp>
  87696. <stringProp name="EXPECTED_VALUE">^[a-z0-9-]+$</stringProp>
  87697. <boolProp name="JSONVALIDATION">true</boolProp>
  87698. <boolProp name="EXPECT_NULL">false</boolProp>
  87699. <boolProp name="INVERT">false</boolProp>
  87700. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  87701. <hashTree/>
  87702. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  87703. <boolProp name="resetInterpreter">false</boolProp>
  87704. <stringProp name="parameters"/>
  87705. <stringProp name="filename"/>
  87706. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  87707. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  87708. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  87709. <stringProp name="TestPlan.comments">tool/fragments/ce/api/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  87710. </hashTree>
  87711. </hashTree>
  87712. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  87713. <stringProp name="scriptLanguage">javascript</stringProp>
  87714. <stringProp name="parameters"/>
  87715. <stringProp name="filename"/>
  87716. <stringProp name="cacheKey"/>
  87717. <stringProp name="script">
  87718. vars.put("alabama_region_id", props.get("alabama_region_id"));
  87719. vars.put("california_region_id", props.get("california_region_id"));
  87720. </stringProp>
  87721. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  87722. <hashTree/>
  87723. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Estimate Shipping Methods" enabled="true">
  87724. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87725. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87726. <collectionProp name="Arguments.arguments">
  87727. <elementProp name="" elementType="HTTPArgument">
  87728. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87729. <stringProp name="Argument.value">{"address":{"country_id":"US","postcode":"95630"}}</stringProp>
  87730. <stringProp name="Argument.metadata">=</stringProp>
  87731. </elementProp>
  87732. </collectionProp>
  87733. </elementProp>
  87734. <stringProp name="HTTPSampler.domain"/>
  87735. <stringProp name="HTTPSampler.port"/>
  87736. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87737. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87738. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87739. <stringProp name="HTTPSampler.contentEncoding"/>
  87740. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/estimate-shipping-methods</stringProp>
  87741. <stringProp name="HTTPSampler.method">POST</stringProp>
  87742. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87743. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87744. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87745. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87746. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87747. <stringProp name="HTTPSampler.embedded_url_re"/>
  87748. <stringProp name="TestPlan.comments">tool/fragments/ce/api/customer_checkout/checkout_estimate_shipping_methods_with_postal_code.jmx</stringProp>
  87749. </HTTPSamplerProxy>
  87750. <hashTree>
  87751. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  87752. <collectionProp name="Asserion.test_strings">
  87753. <stringProp name="-1224567411">"available":true</stringProp>
  87754. </collectionProp>
  87755. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87756. <boolProp name="Assertion.assume_success">false</boolProp>
  87757. <intProp name="Assertion.test_type">2</intProp>
  87758. </ResponseAssertion>
  87759. <hashTree/>
  87760. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  87761. <boolProp name="resetInterpreter">false</boolProp>
  87762. <stringProp name="parameters"/>
  87763. <stringProp name="filename"/>
  87764. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  87765. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  87766. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  87767. <stringProp name="TestPlan.comments">tool/fragments/ce/api/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  87768. </hashTree>
  87769. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Billing/Shipping Information" enabled="true">
  87770. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87771. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87772. <collectionProp name="Arguments.arguments">
  87773. <elementProp name="" elementType="HTTPArgument">
  87774. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87775. <stringProp name="Argument.value">{"addressInformation":{"shipping_address":{"countryId":"US","regionId":"${california_region_id}","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>
  87776. <stringProp name="Argument.metadata">=</stringProp>
  87777. </elementProp>
  87778. </collectionProp>
  87779. </elementProp>
  87780. <stringProp name="HTTPSampler.domain"/>
  87781. <stringProp name="HTTPSampler.port"/>
  87782. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87783. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87784. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87785. <stringProp name="HTTPSampler.contentEncoding"/>
  87786. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/shipping-information</stringProp>
  87787. <stringProp name="HTTPSampler.method">POST</stringProp>
  87788. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87789. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87790. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87791. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87792. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87793. <stringProp name="HTTPSampler.embedded_url_re"/>
  87794. <stringProp name="TestPlan.comments">tool/fragments/ce/api/customer_checkout/checkout_billing_shipping_information.jmx</stringProp>
  87795. </HTTPSamplerProxy>
  87796. <hashTree>
  87797. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  87798. <collectionProp name="Asserion.test_strings">
  87799. <stringProp name="-1494218646">{"payment_methods":</stringProp>
  87800. </collectionProp>
  87801. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87802. <boolProp name="Assertion.assume_success">false</boolProp>
  87803. <intProp name="Assertion.test_type">2</intProp>
  87804. </ResponseAssertion>
  87805. <hashTree/>
  87806. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  87807. <boolProp name="resetInterpreter">false</boolProp>
  87808. <stringProp name="parameters"/>
  87809. <stringProp name="filename"/>
  87810. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  87811. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  87812. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  87813. <stringProp name="TestPlan.comments">tool/fragments/ce/api/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  87814. </hashTree>
  87815. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkout Payment Info/Place Order" enabled="true">
  87816. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87817. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87818. <collectionProp name="Arguments.arguments">
  87819. <elementProp name="" elementType="HTTPArgument">
  87820. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87821. <stringProp name="Argument.value">{"cartId":"${cart_id}","email":"test@example.com","paymentMethod":{"method":"checkmo","po_number":null,"additional_data":null},"billingAddress":{"countryId":"US","regionId":"${california_region_id}","regionCode":"CA","region":"California","street":["10441 Jefferson Blvd ste 200"],"company":"","telephone":"3109450345","fax":"","postcode":"90232","city":"Culver City","firstname":"Name","lastname":"Lastname","save_in_address_book":0}}</stringProp>
  87822. <stringProp name="Argument.metadata">=</stringProp>
  87823. </elementProp>
  87824. </collectionProp>
  87825. </elementProp>
  87826. <stringProp name="HTTPSampler.domain"/>
  87827. <stringProp name="HTTPSampler.port"/>
  87828. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87829. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87830. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87831. <stringProp name="HTTPSampler.contentEncoding"/>
  87832. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/carts/mine/payment-information</stringProp>
  87833. <stringProp name="HTTPSampler.method">POST</stringProp>
  87834. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87835. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87836. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87837. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87838. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87839. <stringProp name="HTTPSampler.embedded_url_re"/>
  87840. <stringProp name="TestPlan.comments">tool/fragments/ce/api/customer_checkout/checkout_payment_info_place_order.jmx</stringProp>
  87841. </HTTPSamplerProxy>
  87842. <hashTree>
  87843. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  87844. <collectionProp name="Asserion.test_strings">
  87845. <stringProp name="-297987887">"[0-9]+"</stringProp>
  87846. </collectionProp>
  87847. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87848. <boolProp name="Assertion.assume_success">false</boolProp>
  87849. <intProp name="Assertion.test_type">2</intProp>
  87850. </ResponseAssertion>
  87851. <hashTree/>
  87852. <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">
  87853. <stringProp name="VAR">order_id</stringProp>
  87854. <stringProp name="JSONPATH">$</stringProp>
  87855. <stringProp name="DEFAULT"/>
  87856. <stringProp name="VARIABLE"/>
  87857. <stringProp name="SUBJECT">BODY</stringProp>
  87858. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  87859. <hashTree/>
  87860. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  87861. <collectionProp name="Asserion.test_strings">
  87862. <stringProp name="89649215">^\d+$</stringProp>
  87863. </collectionProp>
  87864. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87865. <boolProp name="Assertion.assume_success">false</boolProp>
  87866. <intProp name="Assertion.test_type">1</intProp>
  87867. <stringProp name="Assertion.scope">variable</stringProp>
  87868. <stringProp name="Scope.variable">order_id</stringProp>
  87869. </ResponseAssertion>
  87870. <hashTree/>
  87871. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  87872. <boolProp name="resetInterpreter">false</boolProp>
  87873. <stringProp name="parameters"/>
  87874. <stringProp name="filename"/>
  87875. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  87876. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  87877. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  87878. <stringProp name="TestPlan.comments">tool/fragments/ce/api/set_customer_token.jmx</stringProp></BeanShellPreProcessor>
  87879. </hashTree>
  87880. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Return Customer Email" enabled="true">
  87881. <stringProp name="CriticalSectionController.lockName">return-email</stringProp>
  87882. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  87883. <hashTree>
  87884. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Return Customer Email" enabled="true">
  87885. <stringProp name="TestPlan.comments">tool/fragments/ce/return_customer_email.jmx</stringProp>
  87886. <stringProp name="BeanShellSampler.query">
  87887. customerUserList = props.get("customer_emails_list");
  87888. customerUserList.add(vars.get("customer_email"));
  87889. </stringProp>
  87890. <stringProp name="BeanShellSampler.filename"/>
  87891. <stringProp name="BeanShellSampler.parameters"/>
  87892. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  87893. </BeanShellSampler>
  87894. <hashTree/>
  87895. </hashTree>
  87896. </hashTree>
  87897. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Account management" enabled="true">
  87898. <intProp name="ThroughputController.style">1</intProp>
  87899. <boolProp name="ThroughputController.perThread">false</boolProp>
  87900. <intProp name="ThroughputController.maxThroughput">1</intProp>
  87901. <stringProp name="ThroughputController.percentThroughput">${cAccountManagementPercentage}</stringProp>
  87902. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  87903. <hashTree>
  87904. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  87905. <stringProp name="script">
  87906. var tmpLabel = vars.get("testLabel")
  87907. if (tmpLabel) {
  87908. var testLabel = " (" + tmpLabel + ")"
  87909. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  87910. if (sampler.getName().indexOf(testLabel) == -1) {
  87911. sampler.setName(sampler.getName() + testLabel);
  87912. }
  87913. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  87914. sampler.setName("SetUp - " + sampler.getName());
  87915. }
  87916. } else {
  87917. testLabel = ""
  87918. }
  87919. </stringProp>
  87920. <stringProp name="scriptLanguage">javascript</stringProp>
  87921. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  87922. <hashTree/>
  87923. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  87924. <stringProp name="BeanShellSampler.query">
  87925. vars.put("testLabel", "[REST API C] Account management");
  87926. </stringProp>
  87927. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  87928. </BeanShellSampler>
  87929. <hashTree/>
  87930. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  87931. <collectionProp name="HeaderManager.headers">
  87932. <elementProp name="" elementType="Header">
  87933. <stringProp name="Header.name">Content-Type</stringProp>
  87934. <stringProp name="Header.value">application/json</stringProp>
  87935. </elementProp>
  87936. <elementProp name="" elementType="Header">
  87937. <stringProp name="Header.name">Accept</stringProp>
  87938. <stringProp name="Header.value">*/*</stringProp>
  87939. </elementProp>
  87940. </collectionProp>
  87941. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  87942. <hashTree/>
  87943. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  87944. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  87945. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  87946. <collectionProp name="Arguments.arguments">
  87947. <elementProp name="" elementType="HTTPArgument">
  87948. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  87949. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  87950. <stringProp name="Argument.metadata">=</stringProp>
  87951. </elementProp>
  87952. </collectionProp>
  87953. </elementProp>
  87954. <stringProp name="HTTPSampler.domain"/>
  87955. <stringProp name="HTTPSampler.port"/>
  87956. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  87957. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  87958. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  87959. <stringProp name="HTTPSampler.contentEncoding"/>
  87960. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  87961. <stringProp name="HTTPSampler.method">POST</stringProp>
  87962. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  87963. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  87964. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  87965. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  87966. <boolProp name="HTTPSampler.monitor">false</boolProp>
  87967. <stringProp name="HTTPSampler.embedded_url_re"/>
  87968. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  87969. <hashTree>
  87970. <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">
  87971. <stringProp name="VAR">admin_token</stringProp>
  87972. <stringProp name="JSONPATH">$</stringProp>
  87973. <stringProp name="DEFAULT"/>
  87974. <stringProp name="VARIABLE"/>
  87975. <stringProp name="SUBJECT">BODY</stringProp>
  87976. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  87977. <hashTree/>
  87978. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  87979. <collectionProp name="Asserion.test_strings">
  87980. <stringProp name="484395188">^.{10,}$</stringProp>
  87981. </collectionProp>
  87982. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  87983. <boolProp name="Assertion.assume_success">false</boolProp>
  87984. <intProp name="Assertion.test_type">1</intProp>
  87985. <stringProp name="Assertion.scope">variable</stringProp>
  87986. <stringProp name="Scope.variable">admin_token</stringProp>
  87987. </ResponseAssertion>
  87988. <hashTree/>
  87989. </hashTree>
  87990. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  87991. <collectionProp name="HeaderManager.headers">
  87992. <elementProp name="" elementType="Header">
  87993. <stringProp name="Header.name">Authorization</stringProp>
  87994. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  87995. </elementProp>
  87996. </collectionProp>
  87997. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  87998. <hashTree/>
  87999. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  88000. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  88001. <stringProp name="BeanShellSampler.query">
  88002. import java.util.Random;
  88003. Random random = new Random();
  88004. if (${seedForRandom} &gt; 0) {
  88005. random.setSeed(${seedForRandom} + ${__threadNum});
  88006. }
  88007. vars.putObject("randomIntGenerator", random);
  88008. </stringProp>
  88009. <stringProp name="BeanShellSampler.filename"/>
  88010. <stringProp name="BeanShellSampler.parameters"/>
  88011. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  88012. </BeanShellSampler>
  88013. <hashTree/>
  88014. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Get Customer Email" enabled="true">
  88015. <stringProp name="CriticalSectionController.lockName">get-email</stringProp>
  88016. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  88017. <hashTree>
  88018. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Customer Email" enabled="true">
  88019. <stringProp name="TestPlan.comments">tool/fragments/ce/get_customer_email.jmx</stringProp>
  88020. <stringProp name="BeanShellSampler.query">
  88021. customerUserList = props.get("customer_emails_list");
  88022. customerUser = customerUserList.poll();
  88023. if (customerUser == null) {
  88024. SampleResult.setResponseMessage("customerUser list is empty");
  88025. SampleResult.setResponseData("customerUser list is empty","UTF-8");
  88026. IsSuccess=false;
  88027. SampleResult.setSuccessful(false);
  88028. SampleResult.setStopThread(true);
  88029. }
  88030. vars.put("customer_email", customerUser);
  88031. </stringProp>
  88032. <stringProp name="BeanShellSampler.filename"/>
  88033. <stringProp name="BeanShellSampler.parameters"/>
  88034. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  88035. </BeanShellSampler>
  88036. <hashTree/>
  88037. </hashTree>
  88038. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Orders" enabled="true">
  88039. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88040. <collectionProp name="Arguments.arguments">
  88041. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  88042. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88043. <stringProp name="Argument.value">customer_email</stringProp>
  88044. <stringProp name="Argument.metadata">=</stringProp>
  88045. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88046. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  88047. </elementProp>
  88048. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  88049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88050. <stringProp name="Argument.value">${customer_email}</stringProp>
  88051. <stringProp name="Argument.metadata">=</stringProp>
  88052. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88053. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  88054. </elementProp>
  88055. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  88056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88057. <stringProp name="Argument.value">20</stringProp>
  88058. <stringProp name="Argument.metadata">=</stringProp>
  88059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88060. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  88061. </elementProp>
  88062. </collectionProp>
  88063. </elementProp>
  88064. <stringProp name="HTTPSampler.domain"/>
  88065. <stringProp name="HTTPSampler.port"/>
  88066. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88067. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88068. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88069. <stringProp name="HTTPSampler.contentEncoding"/>
  88070. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/orders</stringProp>
  88071. <stringProp name="HTTPSampler.method">GET</stringProp>
  88072. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88073. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88074. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88075. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88076. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88077. <stringProp name="HTTPSampler.embedded_url_re"/>
  88078. <stringProp name="TestPlan.comments">tool/fragments/ce/api/customer_orders.jmx</stringProp>
  88079. </HTTPSamplerProxy>
  88080. <hashTree>
  88081. <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 entity ids" enabled="true">
  88082. <stringProp name="VAR">order_number</stringProp>
  88083. <stringProp name="JSONPATH">$.items[0].increment_id</stringProp>
  88084. <stringProp name="DEFAULT">NOT_FOUND</stringProp>
  88085. <stringProp name="VARIABLE"/>
  88086. <stringProp name="SUBJECT">BODY</stringProp>
  88087. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  88088. <hashTree/>
  88089. </hashTree>
  88090. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Orders Controller" enabled="true">
  88091. <stringProp name="TestPlan.comments">tool/fragments/ce/api/if_orders.jmx</stringProp>
  88092. <stringProp name="IfController.condition">"${order_number}" != "NOT_FOUND"</stringProp>
  88093. <boolProp name="IfController.evaluateAll">false</boolProp>
  88094. </IfController>
  88095. <hashTree>
  88096. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View Orders" enabled="true">
  88097. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88098. <collectionProp name="Arguments.arguments">
  88099. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  88100. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88101. <stringProp name="Argument.value">increment_id</stringProp>
  88102. <stringProp name="Argument.metadata">=</stringProp>
  88103. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88104. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  88105. </elementProp>
  88106. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  88107. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88108. <stringProp name="Argument.value">${order_number}</stringProp>
  88109. <stringProp name="Argument.metadata">=</stringProp>
  88110. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88111. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  88112. </elementProp>
  88113. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  88114. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88115. <stringProp name="Argument.value">20</stringProp>
  88116. <stringProp name="Argument.metadata">=</stringProp>
  88117. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88118. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  88119. </elementProp>
  88120. </collectionProp>
  88121. </elementProp>
  88122. <stringProp name="HTTPSampler.domain"/>
  88123. <stringProp name="HTTPSampler.port"/>
  88124. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88125. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88126. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88127. <stringProp name="HTTPSampler.contentEncoding"/>
  88128. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/orders</stringProp>
  88129. <stringProp name="HTTPSampler.method">GET</stringProp>
  88130. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88131. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88132. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88133. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88134. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88135. <stringProp name="HTTPSampler.embedded_url_re"/>
  88136. <stringProp name="TestPlan.comments">tool/fragments/ce/api/if_orders.jmx</stringProp>
  88137. </HTTPSamplerProxy>
  88138. <hashTree>
  88139. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  88140. <stringProp name="JSON_PATH">$.items[0].increment_id</stringProp>
  88141. <stringProp name="EXPECTED_VALUE"/>
  88142. <boolProp name="JSONVALIDATION">false</boolProp>
  88143. <boolProp name="EXPECT_NULL">false</boolProp>
  88144. <boolProp name="INVERT">false</boolProp>
  88145. <boolProp name="ISREGEX">false</boolProp>
  88146. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  88147. <hashTree/>
  88148. </hashTree>
  88149. </hashTree>
  88150. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Return Customer Email" enabled="true">
  88151. <stringProp name="CriticalSectionController.lockName">return-email</stringProp>
  88152. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  88153. <hashTree>
  88154. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Return Customer Email" enabled="true">
  88155. <stringProp name="TestPlan.comments">tool/fragments/ce/return_customer_email.jmx</stringProp>
  88156. <stringProp name="BeanShellSampler.query">
  88157. customerUserList = props.get("customer_emails_list");
  88158. customerUserList.add(vars.get("customer_email"));
  88159. </stringProp>
  88160. <stringProp name="BeanShellSampler.filename"/>
  88161. <stringProp name="BeanShellSampler.parameters"/>
  88162. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  88163. </BeanShellSampler>
  88164. <hashTree/>
  88165. </hashTree>
  88166. </hashTree>
  88167. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin CMS Management" enabled="true">
  88168. <intProp name="ThroughputController.style">1</intProp>
  88169. <boolProp name="ThroughputController.perThread">false</boolProp>
  88170. <intProp name="ThroughputController.maxThroughput">1</intProp>
  88171. <stringProp name="ThroughputController.percentThroughput">${cAdminCMSManagementPercentage}</stringProp>
  88172. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  88173. <hashTree>
  88174. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  88175. <stringProp name="script">
  88176. var tmpLabel = vars.get("testLabel")
  88177. if (tmpLabel) {
  88178. var testLabel = " (" + tmpLabel + ")"
  88179. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  88180. if (sampler.getName().indexOf(testLabel) == -1) {
  88181. sampler.setName(sampler.getName() + testLabel);
  88182. }
  88183. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  88184. sampler.setName("SetUp - " + sampler.getName());
  88185. }
  88186. } else {
  88187. testLabel = ""
  88188. }
  88189. </stringProp>
  88190. <stringProp name="scriptLanguage">javascript</stringProp>
  88191. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  88192. <hashTree/>
  88193. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  88194. <stringProp name="BeanShellSampler.query">
  88195. vars.put("testLabel", "[REST API C] Admin CMS Management");
  88196. </stringProp>
  88197. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  88198. </BeanShellSampler>
  88199. <hashTree/>
  88200. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  88201. <stringProp name="script">
  88202. function getFormKeyFromResponse()
  88203. {
  88204. var url = prev.getUrlAsString(),
  88205. responseCode = prev.getResponseCode(),
  88206. formKey = null;
  88207. searchPattern = /var FORM_KEY = '(.+)'/;
  88208. if (responseCode == "200" &amp;&amp; url) {
  88209. response = prev.getResponseDataAsString();
  88210. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  88211. }
  88212. return formKey;
  88213. }
  88214. formKey = vars.get("form_key_storage");
  88215. currentFormKey = getFormKeyFromResponse();
  88216. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  88217. vars.put("form_key_storage", currentFormKey);
  88218. }
  88219. </stringProp>
  88220. <stringProp name="scriptLanguage">javascript</stringProp>
  88221. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  88222. <hashTree/>
  88223. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  88224. <stringProp name="script">
  88225. formKey = vars.get("form_key_storage");
  88226. if (formKey
  88227. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  88228. &amp;&amp; sampler.getMethod() == "POST")
  88229. {
  88230. arguments = sampler.getArguments();
  88231. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  88232. {
  88233. argument = arguments.getArgument(i);
  88234. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  88235. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  88236. argument.setValue(formKey);
  88237. }
  88238. }
  88239. }
  88240. </stringProp>
  88241. <stringProp name="scriptLanguage">javascript</stringProp>
  88242. </JSR223PreProcessor>
  88243. <hashTree/>
  88244. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  88245. <collectionProp name="CookieManager.cookies"/>
  88246. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  88247. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  88248. <hashTree/>
  88249. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  88250. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  88251. </GenericController>
  88252. <hashTree>
  88253. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  88254. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  88255. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  88256. <hashTree>
  88257. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  88258. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  88259. <stringProp name="BeanShellSampler.query">
  88260. adminUser = "none";
  88261. adminUserList = props.get("adminUserList");
  88262. adminUserListIterator = props.get("adminUserListIterator");
  88263. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  88264. if (adminUsersDistribution == 1) {
  88265. adminUser = adminUserList.poll();
  88266. } else {
  88267. if (!adminUserListIterator.hasNext()) {
  88268. adminUserListIterator = adminUserList.descendingIterator();
  88269. }
  88270. adminUser = adminUserListIterator.next();
  88271. }
  88272. if (adminUser == "none") {
  88273. SampleResult.setResponseMessage("adminUser list is empty");
  88274. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  88275. IsSuccess=false;
  88276. SampleResult.setSuccessful(false);
  88277. SampleResult.setStopThread(true);
  88278. }
  88279. vars.put("admin_user", adminUser);
  88280. </stringProp>
  88281. <stringProp name="BeanShellSampler.filename"/>
  88282. <stringProp name="BeanShellSampler.parameters"/>
  88283. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  88284. </BeanShellSampler>
  88285. <hashTree/>
  88286. </hashTree>
  88287. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  88288. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88289. <collectionProp name="Arguments.arguments"/>
  88290. </elementProp>
  88291. <stringProp name="HTTPSampler.domain"/>
  88292. <stringProp name="HTTPSampler.port"/>
  88293. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88294. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88295. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88296. <stringProp name="HTTPSampler.contentEncoding"/>
  88297. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  88298. <stringProp name="HTTPSampler.method">GET</stringProp>
  88299. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88300. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88301. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88302. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88303. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88304. <stringProp name="HTTPSampler.embedded_url_re"/>
  88305. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  88306. <hashTree>
  88307. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  88308. <collectionProp name="Asserion.test_strings">
  88309. <stringProp name="-1397214398">Welcome</stringProp>
  88310. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  88311. </collectionProp>
  88312. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  88313. <boolProp name="Assertion.assume_success">false</boolProp>
  88314. <intProp name="Assertion.test_type">2</intProp>
  88315. </ResponseAssertion>
  88316. <hashTree/>
  88317. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  88318. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  88319. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  88320. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  88321. <stringProp name="RegexExtractor.template">$1$</stringProp>
  88322. <stringProp name="RegexExtractor.default"/>
  88323. <stringProp name="RegexExtractor.match_number">1</stringProp>
  88324. </RegexExtractor>
  88325. <hashTree/>
  88326. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  88327. <collectionProp name="Asserion.test_strings">
  88328. <stringProp name="2845929">^.+$</stringProp>
  88329. </collectionProp>
  88330. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  88331. <boolProp name="Assertion.assume_success">false</boolProp>
  88332. <intProp name="Assertion.test_type">1</intProp>
  88333. <stringProp name="Assertion.scope">variable</stringProp>
  88334. <stringProp name="Scope.variable">admin_form_key</stringProp>
  88335. </ResponseAssertion>
  88336. <hashTree/>
  88337. </hashTree>
  88338. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  88339. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88340. <collectionProp name="Arguments.arguments">
  88341. <elementProp name="dummy" elementType="HTTPArgument">
  88342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88343. <stringProp name="Argument.value"/>
  88344. <stringProp name="Argument.metadata">=</stringProp>
  88345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88346. <stringProp name="Argument.name">dummy</stringProp>
  88347. </elementProp>
  88348. <elementProp name="form_key" elementType="HTTPArgument">
  88349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88350. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  88351. <stringProp name="Argument.metadata">=</stringProp>
  88352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88353. <stringProp name="Argument.name">form_key</stringProp>
  88354. </elementProp>
  88355. <elementProp name="login[password]" elementType="HTTPArgument">
  88356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88357. <stringProp name="Argument.value">${admin_password}</stringProp>
  88358. <stringProp name="Argument.metadata">=</stringProp>
  88359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88360. <stringProp name="Argument.name">login[password]</stringProp>
  88361. </elementProp>
  88362. <elementProp name="login[username]" elementType="HTTPArgument">
  88363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88364. <stringProp name="Argument.value">${admin_user}</stringProp>
  88365. <stringProp name="Argument.metadata">=</stringProp>
  88366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88367. <stringProp name="Argument.name">login[username]</stringProp>
  88368. </elementProp>
  88369. </collectionProp>
  88370. </elementProp>
  88371. <stringProp name="HTTPSampler.domain"/>
  88372. <stringProp name="HTTPSampler.port"/>
  88373. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88374. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88375. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88376. <stringProp name="HTTPSampler.contentEncoding"/>
  88377. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  88378. <stringProp name="HTTPSampler.method">POST</stringProp>
  88379. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88380. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88381. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88382. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88383. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  88384. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88385. <stringProp name="HTTPSampler.embedded_url_re"/>
  88386. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  88387. </HTTPSamplerProxy>
  88388. <hashTree>
  88389. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  88390. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  88391. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  88392. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  88393. <stringProp name="RegexExtractor.template">$1$</stringProp>
  88394. <stringProp name="RegexExtractor.default"/>
  88395. <stringProp name="RegexExtractor.match_number">1</stringProp>
  88396. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  88397. <hashTree/>
  88398. </hashTree>
  88399. </hashTree>
  88400. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  88401. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  88402. </GenericController>
  88403. <hashTree>
  88404. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin CMS Management" enabled="true">
  88405. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_cms_management/admin_cms_management.jmx</stringProp>
  88406. </TestFragmentController>
  88407. <hashTree>
  88408. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  88409. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88410. <collectionProp name="Arguments.arguments"/>
  88411. </elementProp>
  88412. <stringProp name="HTTPSampler.domain"/>
  88413. <stringProp name="HTTPSampler.port"/>
  88414. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88415. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88416. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88417. <stringProp name="HTTPSampler.contentEncoding"/>
  88418. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/</stringProp>
  88419. <stringProp name="HTTPSampler.method">GET</stringProp>
  88420. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88421. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88422. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88423. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88424. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88425. <stringProp name="HTTPSampler.embedded_url_re"/>
  88426. </HTTPSamplerProxy>
  88427. <hashTree/>
  88428. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  88429. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88430. <collectionProp name="Arguments.arguments"/>
  88431. </elementProp>
  88432. <stringProp name="HTTPSampler.domain"/>
  88433. <stringProp name="HTTPSampler.port"/>
  88434. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88435. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88436. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88437. <stringProp name="HTTPSampler.contentEncoding"/>
  88438. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/new</stringProp>
  88439. <stringProp name="HTTPSampler.method">GET</stringProp>
  88440. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88441. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88442. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88443. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88444. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88445. <stringProp name="HTTPSampler.embedded_url_re"/>
  88446. </HTTPSamplerProxy>
  88447. <hashTree/>
  88448. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  88449. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88450. <collectionProp name="Arguments.arguments">
  88451. <elementProp name="content" elementType="HTTPArgument">
  88452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88453. <stringProp name="Argument.value">&lt;p&gt;CMS Content ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  88454. <stringProp name="Argument.metadata">=</stringProp>
  88455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88456. <stringProp name="Argument.name">content</stringProp>
  88457. </elementProp>
  88458. <elementProp name="content_heading" elementType="HTTPArgument">
  88459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88460. <stringProp name="Argument.value"/>
  88461. <stringProp name="Argument.metadata">=</stringProp>
  88462. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88463. <stringProp name="Argument.name">content_heading</stringProp>
  88464. </elementProp>
  88465. <elementProp name="form_key" elementType="HTTPArgument">
  88466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88467. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  88468. <stringProp name="Argument.metadata">=</stringProp>
  88469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88470. <stringProp name="Argument.name">form_key</stringProp>
  88471. </elementProp>
  88472. <elementProp name="identifier" elementType="HTTPArgument">
  88473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88474. <stringProp name="Argument.value"/>
  88475. <stringProp name="Argument.metadata">=</stringProp>
  88476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88477. <stringProp name="Argument.name">identifier</stringProp>
  88478. </elementProp>
  88479. <elementProp name="is_active" elementType="HTTPArgument">
  88480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88481. <stringProp name="Argument.value">1</stringProp>
  88482. <stringProp name="Argument.metadata">=</stringProp>
  88483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88484. <stringProp name="Argument.name">is_active</stringProp>
  88485. </elementProp>
  88486. <elementProp name="layout_update_xml" elementType="HTTPArgument">
  88487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88488. <stringProp name="Argument.value"/>
  88489. <stringProp name="Argument.metadata">=</stringProp>
  88490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88491. <stringProp name="Argument.name">layout_update_xml</stringProp>
  88492. </elementProp>
  88493. <elementProp name="meta_description" elementType="HTTPArgument">
  88494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88495. <stringProp name="Argument.value"/>
  88496. <stringProp name="Argument.metadata">=</stringProp>
  88497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88498. <stringProp name="Argument.name">meta_description</stringProp>
  88499. </elementProp>
  88500. <elementProp name="meta_keywords" elementType="HTTPArgument">
  88501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88502. <stringProp name="Argument.value"/>
  88503. <stringProp name="Argument.metadata">=</stringProp>
  88504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88505. <stringProp name="Argument.name">meta_keywords</stringProp>
  88506. </elementProp>
  88507. <elementProp name="meta_title" elementType="HTTPArgument">
  88508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88509. <stringProp name="Argument.value"/>
  88510. <stringProp name="Argument.metadata">=</stringProp>
  88511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88512. <stringProp name="Argument.name">meta_title</stringProp>
  88513. </elementProp>
  88514. <elementProp name="nodes_data" elementType="HTTPArgument">
  88515. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  88516. <stringProp name="Argument.value">{}</stringProp>
  88517. <stringProp name="Argument.metadata">=</stringProp>
  88518. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88519. <stringProp name="Argument.name">nodes_data</stringProp>
  88520. </elementProp>
  88521. <elementProp name="node_ids" elementType="HTTPArgument">
  88522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88523. <stringProp name="Argument.value"/>
  88524. <stringProp name="Argument.metadata">=</stringProp>
  88525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88526. <stringProp name="Argument.name">node_ids</stringProp>
  88527. </elementProp>
  88528. <elementProp name="page_id" elementType="HTTPArgument">
  88529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88530. <stringProp name="Argument.value"/>
  88531. <stringProp name="Argument.metadata">=</stringProp>
  88532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88533. <stringProp name="Argument.name">page_id</stringProp>
  88534. </elementProp>
  88535. <elementProp name="page_layout" elementType="HTTPArgument">
  88536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88537. <stringProp name="Argument.value">1column</stringProp>
  88538. <stringProp name="Argument.metadata">=</stringProp>
  88539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88540. <stringProp name="Argument.name">page_layout</stringProp>
  88541. </elementProp>
  88542. <elementProp name="store_id[0]" elementType="HTTPArgument">
  88543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88544. <stringProp name="Argument.value">0</stringProp>
  88545. <stringProp name="Argument.metadata">=</stringProp>
  88546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88547. <stringProp name="Argument.name">store_id[0]</stringProp>
  88548. </elementProp>
  88549. <elementProp name="title" elementType="HTTPArgument">
  88550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88551. <stringProp name="Argument.value">CMS Title ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  88552. <stringProp name="Argument.metadata">=</stringProp>
  88553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88554. <stringProp name="Argument.name">title</stringProp>
  88555. </elementProp>
  88556. <elementProp name="website_root" elementType="HTTPArgument">
  88557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88558. <stringProp name="Argument.value">0</stringProp>
  88559. <stringProp name="Argument.metadata">=</stringProp>
  88560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88561. <stringProp name="Argument.name">website_root</stringProp>
  88562. </elementProp>
  88563. </collectionProp>
  88564. </elementProp>
  88565. <stringProp name="HTTPSampler.domain"/>
  88566. <stringProp name="HTTPSampler.port"/>
  88567. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88568. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88569. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88570. <stringProp name="HTTPSampler.contentEncoding"/>
  88571. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/save/</stringProp>
  88572. <stringProp name="HTTPSampler.method">POST</stringProp>
  88573. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88574. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88575. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88576. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88577. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88578. <stringProp name="HTTPSampler.embedded_url_re"/>
  88579. </HTTPSamplerProxy>
  88580. <hashTree>
  88581. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  88582. <collectionProp name="Asserion.test_strings">
  88583. <stringProp name="-398886250">You saved the page.</stringProp>
  88584. </collectionProp>
  88585. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  88586. <boolProp name="Assertion.assume_success">false</boolProp>
  88587. <intProp name="Assertion.test_type">16</intProp>
  88588. </ResponseAssertion>
  88589. <hashTree/>
  88590. </hashTree>
  88591. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  88592. <intProp name="ActionProcessor.action">1</intProp>
  88593. <intProp name="ActionProcessor.target">0</intProp>
  88594. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCMSManagementDelay}*1000))}</stringProp>
  88595. </TestAction>
  88596. <hashTree/>
  88597. </hashTree>
  88598. </hashTree>
  88599. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  88600. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88601. <collectionProp name="Arguments.arguments"/>
  88602. </elementProp>
  88603. <stringProp name="HTTPSampler.domain"/>
  88604. <stringProp name="HTTPSampler.port"/>
  88605. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88606. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88607. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88608. <stringProp name="HTTPSampler.contentEncoding"/>
  88609. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  88610. <stringProp name="HTTPSampler.method">GET</stringProp>
  88611. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88612. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88613. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88614. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88615. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88616. <stringProp name="HTTPSampler.embedded_url_re"/>
  88617. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  88618. <hashTree>
  88619. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  88620. <boolProp name="resetInterpreter">false</boolProp>
  88621. <stringProp name="parameters"/>
  88622. <stringProp name="filename"/>
  88623. <stringProp name="script">
  88624. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  88625. if (adminUsersDistribution == 1) {
  88626. adminUserList = props.get("adminUserList");
  88627. adminUserList.add(vars.get("admin_user"));
  88628. }
  88629. </stringProp>
  88630. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  88631. <hashTree/>
  88632. </hashTree>
  88633. </hashTree>
  88634. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Browse Product Grid" enabled="true">
  88635. <intProp name="ThroughputController.style">1</intProp>
  88636. <boolProp name="ThroughputController.perThread">false</boolProp>
  88637. <intProp name="ThroughputController.maxThroughput">1</intProp>
  88638. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseProductGridPercentage}</stringProp>
  88639. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  88640. <hashTree>
  88641. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  88642. <stringProp name="script">
  88643. var tmpLabel = vars.get("testLabel")
  88644. if (tmpLabel) {
  88645. var testLabel = " (" + tmpLabel + ")"
  88646. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  88647. if (sampler.getName().indexOf(testLabel) == -1) {
  88648. sampler.setName(sampler.getName() + testLabel);
  88649. }
  88650. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  88651. sampler.setName("SetUp - " + sampler.getName());
  88652. }
  88653. } else {
  88654. testLabel = ""
  88655. }
  88656. </stringProp>
  88657. <stringProp name="scriptLanguage">javascript</stringProp>
  88658. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  88659. <hashTree/>
  88660. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  88661. <stringProp name="BeanShellSampler.query">
  88662. vars.put("testLabel", "[REST API C] Admin Browse Product Grid");
  88663. </stringProp>
  88664. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  88665. </BeanShellSampler>
  88666. <hashTree/>
  88667. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  88668. <stringProp name="script">
  88669. function getFormKeyFromResponse()
  88670. {
  88671. var url = prev.getUrlAsString(),
  88672. responseCode = prev.getResponseCode(),
  88673. formKey = null;
  88674. searchPattern = /var FORM_KEY = '(.+)'/;
  88675. if (responseCode == "200" &amp;&amp; url) {
  88676. response = prev.getResponseDataAsString();
  88677. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  88678. }
  88679. return formKey;
  88680. }
  88681. formKey = vars.get("form_key_storage");
  88682. currentFormKey = getFormKeyFromResponse();
  88683. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  88684. vars.put("form_key_storage", currentFormKey);
  88685. }
  88686. </stringProp>
  88687. <stringProp name="scriptLanguage">javascript</stringProp>
  88688. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  88689. <hashTree/>
  88690. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  88691. <stringProp name="script">
  88692. formKey = vars.get("form_key_storage");
  88693. if (formKey
  88694. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  88695. &amp;&amp; sampler.getMethod() == "POST")
  88696. {
  88697. arguments = sampler.getArguments();
  88698. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  88699. {
  88700. argument = arguments.getArgument(i);
  88701. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  88702. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  88703. argument.setValue(formKey);
  88704. }
  88705. }
  88706. }
  88707. </stringProp>
  88708. <stringProp name="scriptLanguage">javascript</stringProp>
  88709. </JSR223PreProcessor>
  88710. <hashTree/>
  88711. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  88712. <collectionProp name="CookieManager.cookies"/>
  88713. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  88714. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  88715. <hashTree/>
  88716. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  88717. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  88718. </GenericController>
  88719. <hashTree>
  88720. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  88721. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  88722. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  88723. <hashTree>
  88724. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  88725. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  88726. <stringProp name="BeanShellSampler.query">
  88727. adminUser = "none";
  88728. adminUserList = props.get("adminUserList");
  88729. adminUserListIterator = props.get("adminUserListIterator");
  88730. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  88731. if (adminUsersDistribution == 1) {
  88732. adminUser = adminUserList.poll();
  88733. } else {
  88734. if (!adminUserListIterator.hasNext()) {
  88735. adminUserListIterator = adminUserList.descendingIterator();
  88736. }
  88737. adminUser = adminUserListIterator.next();
  88738. }
  88739. if (adminUser == "none") {
  88740. SampleResult.setResponseMessage("adminUser list is empty");
  88741. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  88742. IsSuccess=false;
  88743. SampleResult.setSuccessful(false);
  88744. SampleResult.setStopThread(true);
  88745. }
  88746. vars.put("admin_user", adminUser);
  88747. </stringProp>
  88748. <stringProp name="BeanShellSampler.filename"/>
  88749. <stringProp name="BeanShellSampler.parameters"/>
  88750. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  88751. </BeanShellSampler>
  88752. <hashTree/>
  88753. </hashTree>
  88754. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  88755. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88756. <collectionProp name="Arguments.arguments"/>
  88757. </elementProp>
  88758. <stringProp name="HTTPSampler.domain"/>
  88759. <stringProp name="HTTPSampler.port"/>
  88760. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88761. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88762. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88763. <stringProp name="HTTPSampler.contentEncoding"/>
  88764. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  88765. <stringProp name="HTTPSampler.method">GET</stringProp>
  88766. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88767. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88768. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88769. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88770. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88771. <stringProp name="HTTPSampler.embedded_url_re"/>
  88772. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  88773. <hashTree>
  88774. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  88775. <collectionProp name="Asserion.test_strings">
  88776. <stringProp name="-1397214398">Welcome</stringProp>
  88777. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  88778. </collectionProp>
  88779. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  88780. <boolProp name="Assertion.assume_success">false</boolProp>
  88781. <intProp name="Assertion.test_type">2</intProp>
  88782. </ResponseAssertion>
  88783. <hashTree/>
  88784. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  88785. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  88786. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  88787. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  88788. <stringProp name="RegexExtractor.template">$1$</stringProp>
  88789. <stringProp name="RegexExtractor.default"/>
  88790. <stringProp name="RegexExtractor.match_number">1</stringProp>
  88791. </RegexExtractor>
  88792. <hashTree/>
  88793. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  88794. <collectionProp name="Asserion.test_strings">
  88795. <stringProp name="2845929">^.+$</stringProp>
  88796. </collectionProp>
  88797. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  88798. <boolProp name="Assertion.assume_success">false</boolProp>
  88799. <intProp name="Assertion.test_type">1</intProp>
  88800. <stringProp name="Assertion.scope">variable</stringProp>
  88801. <stringProp name="Scope.variable">admin_form_key</stringProp>
  88802. </ResponseAssertion>
  88803. <hashTree/>
  88804. </hashTree>
  88805. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  88806. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88807. <collectionProp name="Arguments.arguments">
  88808. <elementProp name="dummy" elementType="HTTPArgument">
  88809. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88810. <stringProp name="Argument.value"/>
  88811. <stringProp name="Argument.metadata">=</stringProp>
  88812. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88813. <stringProp name="Argument.name">dummy</stringProp>
  88814. </elementProp>
  88815. <elementProp name="form_key" elementType="HTTPArgument">
  88816. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88817. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  88818. <stringProp name="Argument.metadata">=</stringProp>
  88819. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88820. <stringProp name="Argument.name">form_key</stringProp>
  88821. </elementProp>
  88822. <elementProp name="login[password]" elementType="HTTPArgument">
  88823. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88824. <stringProp name="Argument.value">${admin_password}</stringProp>
  88825. <stringProp name="Argument.metadata">=</stringProp>
  88826. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88827. <stringProp name="Argument.name">login[password]</stringProp>
  88828. </elementProp>
  88829. <elementProp name="login[username]" elementType="HTTPArgument">
  88830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88831. <stringProp name="Argument.value">${admin_user}</stringProp>
  88832. <stringProp name="Argument.metadata">=</stringProp>
  88833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88834. <stringProp name="Argument.name">login[username]</stringProp>
  88835. </elementProp>
  88836. </collectionProp>
  88837. </elementProp>
  88838. <stringProp name="HTTPSampler.domain"/>
  88839. <stringProp name="HTTPSampler.port"/>
  88840. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88841. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88842. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88843. <stringProp name="HTTPSampler.contentEncoding"/>
  88844. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  88845. <stringProp name="HTTPSampler.method">POST</stringProp>
  88846. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88847. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88848. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88849. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88850. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  88851. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88852. <stringProp name="HTTPSampler.embedded_url_re"/>
  88853. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  88854. </HTTPSamplerProxy>
  88855. <hashTree>
  88856. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  88857. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  88858. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  88859. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  88860. <stringProp name="RegexExtractor.template">$1$</stringProp>
  88861. <stringProp name="RegexExtractor.default"/>
  88862. <stringProp name="RegexExtractor.match_number">1</stringProp>
  88863. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  88864. <hashTree/>
  88865. </hashTree>
  88866. </hashTree>
  88867. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  88868. <stringProp name="script">
  88869. vars.put("gridEntityType" , "Product");
  88870. pagesCount = parseInt(vars.get("products_page_size")) || 20;
  88871. vars.put("grid_entity_page_size" , pagesCount);
  88872. vars.put("grid_namespace" , "product_listing");
  88873. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_product_filter_text"));
  88874. vars.put("grid_filter_field", "name");
  88875. // set sort fields and sort directions
  88876. vars.put("grid_sort_field_1", "name");
  88877. vars.put("grid_sort_field_2", "price");
  88878. vars.put("grid_sort_field_3", "attribute_set_id");
  88879. vars.put("grid_sort_order_1", "asc");
  88880. vars.put("grid_sort_order_2", "desc");
  88881. </stringProp>
  88882. <stringProp name="scriptLanguage">javascript</stringProp>
  88883. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_products_grid/setup.jmx</stringProp></JSR223PostProcessor>
  88884. <hashTree/>
  88885. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  88886. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  88887. </GenericController>
  88888. <hashTree>
  88889. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  88890. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  88891. <collectionProp name="Arguments.arguments">
  88892. <elementProp name="namespace" elementType="HTTPArgument">
  88893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88894. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  88895. <stringProp name="Argument.metadata">=</stringProp>
  88896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88897. <stringProp name="Argument.name">namespace</stringProp>
  88898. <stringProp name="Argument.desc">true</stringProp>
  88899. </elementProp>
  88900. <elementProp name="search" elementType="HTTPArgument">
  88901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88902. <stringProp name="Argument.value"/>
  88903. <stringProp name="Argument.metadata">=</stringProp>
  88904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88905. <stringProp name="Argument.name">search</stringProp>
  88906. <stringProp name="Argument.desc">true</stringProp>
  88907. </elementProp>
  88908. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  88909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88910. <stringProp name="Argument.value">true</stringProp>
  88911. <stringProp name="Argument.metadata">=</stringProp>
  88912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88913. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  88914. <stringProp name="Argument.desc">true</stringProp>
  88915. </elementProp>
  88916. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  88917. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88918. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  88919. <stringProp name="Argument.metadata">=</stringProp>
  88920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88921. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  88922. <stringProp name="Argument.desc">true</stringProp>
  88923. </elementProp>
  88924. <elementProp name="paging[current]" elementType="HTTPArgument">
  88925. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88926. <stringProp name="Argument.value">1</stringProp>
  88927. <stringProp name="Argument.metadata">=</stringProp>
  88928. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88929. <stringProp name="Argument.name">paging[current]</stringProp>
  88930. <stringProp name="Argument.desc">true</stringProp>
  88931. </elementProp>
  88932. <elementProp name="sorting[field]" elementType="HTTPArgument">
  88933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88934. <stringProp name="Argument.value">entity_id</stringProp>
  88935. <stringProp name="Argument.metadata">=</stringProp>
  88936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88937. <stringProp name="Argument.name">sorting[field]</stringProp>
  88938. <stringProp name="Argument.desc">true</stringProp>
  88939. </elementProp>
  88940. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  88941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88942. <stringProp name="Argument.value">asc</stringProp>
  88943. <stringProp name="Argument.metadata">=</stringProp>
  88944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88945. <stringProp name="Argument.name">sorting[direction]</stringProp>
  88946. <stringProp name="Argument.desc">true</stringProp>
  88947. </elementProp>
  88948. <elementProp name="isAjax" elementType="HTTPArgument">
  88949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  88950. <stringProp name="Argument.value">true</stringProp>
  88951. <stringProp name="Argument.metadata">=</stringProp>
  88952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  88953. <stringProp name="Argument.name">isAjax</stringProp>
  88954. <stringProp name="Argument.desc">true</stringProp>
  88955. </elementProp>
  88956. </collectionProp>
  88957. </elementProp>
  88958. <stringProp name="HTTPSampler.domain"/>
  88959. <stringProp name="HTTPSampler.port"/>
  88960. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  88961. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  88962. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  88963. <stringProp name="HTTPSampler.contentEncoding"/>
  88964. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  88965. <stringProp name="HTTPSampler.method">GET</stringProp>
  88966. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  88967. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  88968. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  88969. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  88970. <boolProp name="HTTPSampler.monitor">false</boolProp>
  88971. <stringProp name="HTTPSampler.embedded_url_re"/>
  88972. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  88973. <hashTree>
  88974. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  88975. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  88976. <stringProp name="EXPECTED_VALUE">0</stringProp>
  88977. <boolProp name="JSONVALIDATION">true</boolProp>
  88978. <boolProp name="EXPECT_NULL">false</boolProp>
  88979. <boolProp name="INVERT">true</boolProp>
  88980. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  88981. <hashTree/>
  88982. <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 total records" enabled="true">
  88983. <stringProp name="VAR">entity_total_records</stringProp>
  88984. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  88985. <stringProp name="DEFAULT"/>
  88986. <stringProp name="VARIABLE"/>
  88987. <stringProp name="SUBJECT">BODY</stringProp>
  88988. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  88989. <hashTree/>
  88990. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  88991. <stringProp name="cacheKey"/>
  88992. <stringProp name="filename"/>
  88993. <stringProp name="parameters"/>
  88994. <stringProp name="script">
  88995. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  88996. var totalsRecord = parseInt(vars.get("entity_total_records"));
  88997. var pageCount = Math.round(totalsRecord/pageSize);
  88998. vars.put("grid_pages_count", pageCount);
  88999. </stringProp>
  89000. <stringProp name="scriptLanguage">javascript</stringProp>
  89001. </JSR223PostProcessor>
  89002. <hashTree/>
  89003. </hashTree>
  89004. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  89005. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89006. <collectionProp name="Arguments.arguments">
  89007. <elementProp name="namespace" elementType="HTTPArgument">
  89008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89009. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  89010. <stringProp name="Argument.metadata">=</stringProp>
  89011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89012. <stringProp name="Argument.name">namespace</stringProp>
  89013. <stringProp name="Argument.desc">true</stringProp>
  89014. </elementProp>
  89015. <elementProp name="search" elementType="HTTPArgument">
  89016. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89017. <stringProp name="Argument.value"/>
  89018. <stringProp name="Argument.metadata">=</stringProp>
  89019. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89020. <stringProp name="Argument.name">search</stringProp>
  89021. <stringProp name="Argument.desc">true</stringProp>
  89022. </elementProp>
  89023. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  89024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89025. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  89026. <stringProp name="Argument.metadata">=</stringProp>
  89027. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89028. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  89029. <stringProp name="Argument.desc">true</stringProp>
  89030. </elementProp>
  89031. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  89032. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89033. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  89034. <stringProp name="Argument.metadata">=</stringProp>
  89035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89036. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  89037. <stringProp name="Argument.desc">true</stringProp>
  89038. </elementProp>
  89039. <elementProp name="paging[current]" elementType="HTTPArgument">
  89040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89041. <stringProp name="Argument.value">1</stringProp>
  89042. <stringProp name="Argument.metadata">=</stringProp>
  89043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89044. <stringProp name="Argument.name">paging[current]</stringProp>
  89045. <stringProp name="Argument.desc">true</stringProp>
  89046. </elementProp>
  89047. <elementProp name="sorting[field]" elementType="HTTPArgument">
  89048. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89049. <stringProp name="Argument.value">entity_id</stringProp>
  89050. <stringProp name="Argument.metadata">=</stringProp>
  89051. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89052. <stringProp name="Argument.name">sorting[field]</stringProp>
  89053. <stringProp name="Argument.desc">true</stringProp>
  89054. </elementProp>
  89055. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  89056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89057. <stringProp name="Argument.value">asc</stringProp>
  89058. <stringProp name="Argument.metadata">=</stringProp>
  89059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89060. <stringProp name="Argument.name">sorting[direction]</stringProp>
  89061. <stringProp name="Argument.desc">true</stringProp>
  89062. </elementProp>
  89063. <elementProp name="isAjax" elementType="HTTPArgument">
  89064. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89065. <stringProp name="Argument.value">true</stringProp>
  89066. <stringProp name="Argument.metadata">=</stringProp>
  89067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89068. <stringProp name="Argument.name">isAjax</stringProp>
  89069. <stringProp name="Argument.desc">true</stringProp>
  89070. </elementProp>
  89071. </collectionProp>
  89072. </elementProp>
  89073. <stringProp name="HTTPSampler.domain"/>
  89074. <stringProp name="HTTPSampler.port"/>
  89075. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89076. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89077. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89078. <stringProp name="HTTPSampler.contentEncoding"/>
  89079. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  89080. <stringProp name="HTTPSampler.method">GET</stringProp>
  89081. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89082. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89083. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89084. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89085. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89086. <stringProp name="HTTPSampler.embedded_url_re"/>
  89087. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  89088. <hashTree>
  89089. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  89090. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  89091. <stringProp name="EXPECTED_VALUE">0</stringProp>
  89092. <boolProp name="JSONVALIDATION">true</boolProp>
  89093. <boolProp name="EXPECT_NULL">false</boolProp>
  89094. <boolProp name="INVERT">true</boolProp>
  89095. <boolProp name="ISREGEX">true</boolProp>
  89096. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  89097. <hashTree/>
  89098. <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 total records" enabled="true">
  89099. <stringProp name="VAR">entity_total_records</stringProp>
  89100. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  89101. <stringProp name="DEFAULT"/>
  89102. <stringProp name="VARIABLE"/>
  89103. <stringProp name="SUBJECT">BODY</stringProp>
  89104. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  89105. <hashTree/>
  89106. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  89107. <stringProp name="parameters"/>
  89108. <stringProp name="filename"/>
  89109. <stringProp name="script">
  89110. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  89111. var totalsRecord = parseInt(vars.get("entity_total_records"));
  89112. var pageCount = Math.round(totalsRecord/pageSize);
  89113. vars.put("grid_pages_count_filtered", pageCount);
  89114. </stringProp>
  89115. <stringProp name="scriptLanguage">javascript</stringProp>
  89116. </JSR223PostProcessor>
  89117. <hashTree/>
  89118. </hashTree>
  89119. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  89120. <stringProp name="CounterConfig.start">1</stringProp>
  89121. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  89122. <stringProp name="CounterConfig.incr">1</stringProp>
  89123. <stringProp name="CounterConfig.name">page_number</stringProp>
  89124. <stringProp name="CounterConfig.format"/>
  89125. <boolProp name="CounterConfig.per_user">true</boolProp>
  89126. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  89127. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  89128. <hashTree/>
  89129. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  89130. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89131. <collectionProp name="Arguments.arguments">
  89132. <elementProp name="namespace" elementType="HTTPArgument">
  89133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89134. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  89135. <stringProp name="Argument.metadata">=</stringProp>
  89136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89137. <stringProp name="Argument.name">namespace</stringProp>
  89138. <stringProp name="Argument.desc">true</stringProp>
  89139. </elementProp>
  89140. <elementProp name="search" elementType="HTTPArgument">
  89141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89142. <stringProp name="Argument.value"/>
  89143. <stringProp name="Argument.metadata">=</stringProp>
  89144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89145. <stringProp name="Argument.name">search</stringProp>
  89146. <stringProp name="Argument.desc">true</stringProp>
  89147. </elementProp>
  89148. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  89149. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89150. <stringProp name="Argument.value">true</stringProp>
  89151. <stringProp name="Argument.metadata">=</stringProp>
  89152. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89153. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  89154. <stringProp name="Argument.desc">true</stringProp>
  89155. </elementProp>
  89156. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  89157. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89158. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  89159. <stringProp name="Argument.metadata">=</stringProp>
  89160. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89161. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  89162. <stringProp name="Argument.desc">true</stringProp>
  89163. </elementProp>
  89164. <elementProp name="paging[current]" elementType="HTTPArgument">
  89165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89166. <stringProp name="Argument.value">${page_number}</stringProp>
  89167. <stringProp name="Argument.metadata">=</stringProp>
  89168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89169. <stringProp name="Argument.name">paging[current]</stringProp>
  89170. <stringProp name="Argument.desc">true</stringProp>
  89171. </elementProp>
  89172. <elementProp name="sorting[field]" elementType="HTTPArgument">
  89173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89174. <stringProp name="Argument.value">entity_id</stringProp>
  89175. <stringProp name="Argument.metadata">=</stringProp>
  89176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89177. <stringProp name="Argument.name">sorting[field]</stringProp>
  89178. <stringProp name="Argument.desc">true</stringProp>
  89179. </elementProp>
  89180. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  89181. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89182. <stringProp name="Argument.value">asc</stringProp>
  89183. <stringProp name="Argument.metadata">=</stringProp>
  89184. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89185. <stringProp name="Argument.name">sorting[direction]</stringProp>
  89186. <stringProp name="Argument.desc">true</stringProp>
  89187. </elementProp>
  89188. <elementProp name="isAjax" elementType="HTTPArgument">
  89189. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89190. <stringProp name="Argument.value">true</stringProp>
  89191. <stringProp name="Argument.metadata">=</stringProp>
  89192. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89193. <stringProp name="Argument.name">isAjax</stringProp>
  89194. <stringProp name="Argument.desc">true</stringProp>
  89195. </elementProp>
  89196. </collectionProp>
  89197. </elementProp>
  89198. <stringProp name="HTTPSampler.domain"/>
  89199. <stringProp name="HTTPSampler.port"/>
  89200. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89201. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89202. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89203. <stringProp name="HTTPSampler.contentEncoding"/>
  89204. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  89205. <stringProp name="HTTPSampler.method">GET</stringProp>
  89206. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89207. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89208. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89209. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89210. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89211. <stringProp name="HTTPSampler.embedded_url_re"/>
  89212. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  89213. <hashTree>
  89214. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  89215. <collectionProp name="Asserion.test_strings">
  89216. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  89217. </collectionProp>
  89218. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  89219. <boolProp name="Assertion.assume_success">false</boolProp>
  89220. <intProp name="Assertion.test_type">2</intProp>
  89221. </ResponseAssertion>
  89222. <hashTree/>
  89223. </hashTree>
  89224. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  89225. <stringProp name="CounterConfig.start">1</stringProp>
  89226. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  89227. <stringProp name="CounterConfig.incr">1</stringProp>
  89228. <stringProp name="CounterConfig.name">page_number</stringProp>
  89229. <stringProp name="CounterConfig.format"/>
  89230. <boolProp name="CounterConfig.per_user">true</boolProp>
  89231. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  89232. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  89233. <hashTree/>
  89234. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  89235. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  89236. </TestFragmentController>
  89237. <hashTree>
  89238. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  89239. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  89240. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  89241. <boolProp name="ForeachController.useSeparator">true</boolProp>
  89242. <stringProp name="ForeachController.startIndex">0</stringProp>
  89243. <stringProp name="ForeachController.endIndex">3</stringProp>
  89244. </ForeachController>
  89245. <hashTree>
  89246. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  89247. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  89248. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  89249. <boolProp name="ForeachController.useSeparator">true</boolProp>
  89250. <stringProp name="ForeachController.startIndex">0</stringProp>
  89251. <stringProp name="ForeachController.endIndex">2</stringProp>
  89252. </ForeachController>
  89253. <hashTree>
  89254. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  89255. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89256. <collectionProp name="Arguments.arguments">
  89257. <elementProp name="namespace" elementType="HTTPArgument">
  89258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89259. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  89260. <stringProp name="Argument.metadata">=</stringProp>
  89261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89262. <stringProp name="Argument.name">namespace</stringProp>
  89263. <stringProp name="Argument.desc">false</stringProp>
  89264. </elementProp>
  89265. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  89266. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89267. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  89268. <stringProp name="Argument.metadata">=</stringProp>
  89269. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89270. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  89271. <stringProp name="Argument.desc">false</stringProp>
  89272. </elementProp>
  89273. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  89274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89275. <stringProp name="Argument.value">true</stringProp>
  89276. <stringProp name="Argument.metadata">=</stringProp>
  89277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89278. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  89279. <stringProp name="Argument.desc">false</stringProp>
  89280. </elementProp>
  89281. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  89282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89283. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  89284. <stringProp name="Argument.metadata">=</stringProp>
  89285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89286. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  89287. <stringProp name="Argument.desc">false</stringProp>
  89288. </elementProp>
  89289. <elementProp name="paging[current]" elementType="HTTPArgument">
  89290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89291. <stringProp name="Argument.value">${page_number}</stringProp>
  89292. <stringProp name="Argument.metadata">=</stringProp>
  89293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89294. <stringProp name="Argument.name">paging[current]</stringProp>
  89295. <stringProp name="Argument.desc">false</stringProp>
  89296. </elementProp>
  89297. <elementProp name="sorting[field]" elementType="HTTPArgument">
  89298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89299. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  89300. <stringProp name="Argument.metadata">=</stringProp>
  89301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89302. <stringProp name="Argument.name">sorting[field]</stringProp>
  89303. <stringProp name="Argument.desc">false</stringProp>
  89304. </elementProp>
  89305. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  89306. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89307. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  89308. <stringProp name="Argument.metadata">=</stringProp>
  89309. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89310. <stringProp name="Argument.name">sorting[direction]</stringProp>
  89311. <stringProp name="Argument.desc">false</stringProp>
  89312. </elementProp>
  89313. <elementProp name="isAjax" elementType="HTTPArgument">
  89314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89315. <stringProp name="Argument.value">true</stringProp>
  89316. <stringProp name="Argument.metadata">=</stringProp>
  89317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89318. <stringProp name="Argument.name">isAjax</stringProp>
  89319. <stringProp name="Argument.desc">false</stringProp>
  89320. </elementProp>
  89321. </collectionProp>
  89322. </elementProp>
  89323. <stringProp name="HTTPSampler.domain"/>
  89324. <stringProp name="HTTPSampler.port"/>
  89325. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89326. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89327. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89328. <stringProp name="HTTPSampler.contentEncoding"/>
  89329. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  89330. <stringProp name="HTTPSampler.method">GET</stringProp>
  89331. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89332. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89333. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89334. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89335. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89336. <stringProp name="HTTPSampler.embedded_url_re"/>
  89337. </HTTPSamplerProxy>
  89338. <hashTree>
  89339. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  89340. <collectionProp name="Asserion.test_strings">
  89341. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  89342. </collectionProp>
  89343. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  89344. <boolProp name="Assertion.assume_success">false</boolProp>
  89345. <intProp name="Assertion.test_type">2</intProp>
  89346. </ResponseAssertion>
  89347. <hashTree/>
  89348. </hashTree>
  89349. </hashTree>
  89350. </hashTree>
  89351. </hashTree>
  89352. </hashTree>
  89353. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  89354. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89355. <collectionProp name="Arguments.arguments"/>
  89356. </elementProp>
  89357. <stringProp name="HTTPSampler.domain"/>
  89358. <stringProp name="HTTPSampler.port"/>
  89359. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89360. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89361. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89362. <stringProp name="HTTPSampler.contentEncoding"/>
  89363. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  89364. <stringProp name="HTTPSampler.method">GET</stringProp>
  89365. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89366. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89367. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89368. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89369. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89370. <stringProp name="HTTPSampler.embedded_url_re"/>
  89371. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  89372. <hashTree>
  89373. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  89374. <boolProp name="resetInterpreter">false</boolProp>
  89375. <stringProp name="parameters"/>
  89376. <stringProp name="filename"/>
  89377. <stringProp name="script">
  89378. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  89379. if (adminUsersDistribution == 1) {
  89380. adminUserList = props.get("adminUserList");
  89381. adminUserList.add(vars.get("admin_user"));
  89382. }
  89383. </stringProp>
  89384. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  89385. <hashTree/>
  89386. </hashTree>
  89387. </hashTree>
  89388. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Browse Order Grid" enabled="true">
  89389. <intProp name="ThroughputController.style">1</intProp>
  89390. <boolProp name="ThroughputController.perThread">false</boolProp>
  89391. <intProp name="ThroughputController.maxThroughput">1</intProp>
  89392. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseOrderGridPercentage}</stringProp>
  89393. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  89394. <hashTree>
  89395. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  89396. <stringProp name="script">
  89397. var tmpLabel = vars.get("testLabel")
  89398. if (tmpLabel) {
  89399. var testLabel = " (" + tmpLabel + ")"
  89400. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  89401. if (sampler.getName().indexOf(testLabel) == -1) {
  89402. sampler.setName(sampler.getName() + testLabel);
  89403. }
  89404. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  89405. sampler.setName("SetUp - " + sampler.getName());
  89406. }
  89407. } else {
  89408. testLabel = ""
  89409. }
  89410. </stringProp>
  89411. <stringProp name="scriptLanguage">javascript</stringProp>
  89412. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  89413. <hashTree/>
  89414. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  89415. <stringProp name="BeanShellSampler.query">
  89416. vars.put("testLabel", "[REST API C] Admin Browse Order Grid");
  89417. </stringProp>
  89418. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  89419. </BeanShellSampler>
  89420. <hashTree/>
  89421. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  89422. <stringProp name="script">
  89423. function getFormKeyFromResponse()
  89424. {
  89425. var url = prev.getUrlAsString(),
  89426. responseCode = prev.getResponseCode(),
  89427. formKey = null;
  89428. searchPattern = /var FORM_KEY = '(.+)'/;
  89429. if (responseCode == "200" &amp;&amp; url) {
  89430. response = prev.getResponseDataAsString();
  89431. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  89432. }
  89433. return formKey;
  89434. }
  89435. formKey = vars.get("form_key_storage");
  89436. currentFormKey = getFormKeyFromResponse();
  89437. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  89438. vars.put("form_key_storage", currentFormKey);
  89439. }
  89440. </stringProp>
  89441. <stringProp name="scriptLanguage">javascript</stringProp>
  89442. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  89443. <hashTree/>
  89444. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  89445. <stringProp name="script">
  89446. formKey = vars.get("form_key_storage");
  89447. if (formKey
  89448. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  89449. &amp;&amp; sampler.getMethod() == "POST")
  89450. {
  89451. arguments = sampler.getArguments();
  89452. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  89453. {
  89454. argument = arguments.getArgument(i);
  89455. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  89456. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  89457. argument.setValue(formKey);
  89458. }
  89459. }
  89460. }
  89461. </stringProp>
  89462. <stringProp name="scriptLanguage">javascript</stringProp>
  89463. </JSR223PreProcessor>
  89464. <hashTree/>
  89465. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  89466. <collectionProp name="CookieManager.cookies"/>
  89467. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  89468. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  89469. <hashTree/>
  89470. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  89471. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  89472. </GenericController>
  89473. <hashTree>
  89474. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  89475. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  89476. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  89477. <hashTree>
  89478. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  89479. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  89480. <stringProp name="BeanShellSampler.query">
  89481. adminUser = "none";
  89482. adminUserList = props.get("adminUserList");
  89483. adminUserListIterator = props.get("adminUserListIterator");
  89484. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  89485. if (adminUsersDistribution == 1) {
  89486. adminUser = adminUserList.poll();
  89487. } else {
  89488. if (!adminUserListIterator.hasNext()) {
  89489. adminUserListIterator = adminUserList.descendingIterator();
  89490. }
  89491. adminUser = adminUserListIterator.next();
  89492. }
  89493. if (adminUser == "none") {
  89494. SampleResult.setResponseMessage("adminUser list is empty");
  89495. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  89496. IsSuccess=false;
  89497. SampleResult.setSuccessful(false);
  89498. SampleResult.setStopThread(true);
  89499. }
  89500. vars.put("admin_user", adminUser);
  89501. </stringProp>
  89502. <stringProp name="BeanShellSampler.filename"/>
  89503. <stringProp name="BeanShellSampler.parameters"/>
  89504. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  89505. </BeanShellSampler>
  89506. <hashTree/>
  89507. </hashTree>
  89508. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  89509. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89510. <collectionProp name="Arguments.arguments"/>
  89511. </elementProp>
  89512. <stringProp name="HTTPSampler.domain"/>
  89513. <stringProp name="HTTPSampler.port"/>
  89514. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89515. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89516. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89517. <stringProp name="HTTPSampler.contentEncoding"/>
  89518. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  89519. <stringProp name="HTTPSampler.method">GET</stringProp>
  89520. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89521. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89522. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89523. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89524. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89525. <stringProp name="HTTPSampler.embedded_url_re"/>
  89526. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  89527. <hashTree>
  89528. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  89529. <collectionProp name="Asserion.test_strings">
  89530. <stringProp name="-1397214398">Welcome</stringProp>
  89531. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  89532. </collectionProp>
  89533. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  89534. <boolProp name="Assertion.assume_success">false</boolProp>
  89535. <intProp name="Assertion.test_type">2</intProp>
  89536. </ResponseAssertion>
  89537. <hashTree/>
  89538. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  89539. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  89540. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  89541. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  89542. <stringProp name="RegexExtractor.template">$1$</stringProp>
  89543. <stringProp name="RegexExtractor.default"/>
  89544. <stringProp name="RegexExtractor.match_number">1</stringProp>
  89545. </RegexExtractor>
  89546. <hashTree/>
  89547. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  89548. <collectionProp name="Asserion.test_strings">
  89549. <stringProp name="2845929">^.+$</stringProp>
  89550. </collectionProp>
  89551. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  89552. <boolProp name="Assertion.assume_success">false</boolProp>
  89553. <intProp name="Assertion.test_type">1</intProp>
  89554. <stringProp name="Assertion.scope">variable</stringProp>
  89555. <stringProp name="Scope.variable">admin_form_key</stringProp>
  89556. </ResponseAssertion>
  89557. <hashTree/>
  89558. </hashTree>
  89559. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  89560. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89561. <collectionProp name="Arguments.arguments">
  89562. <elementProp name="dummy" elementType="HTTPArgument">
  89563. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89564. <stringProp name="Argument.value"/>
  89565. <stringProp name="Argument.metadata">=</stringProp>
  89566. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89567. <stringProp name="Argument.name">dummy</stringProp>
  89568. </elementProp>
  89569. <elementProp name="form_key" elementType="HTTPArgument">
  89570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89571. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  89572. <stringProp name="Argument.metadata">=</stringProp>
  89573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89574. <stringProp name="Argument.name">form_key</stringProp>
  89575. </elementProp>
  89576. <elementProp name="login[password]" elementType="HTTPArgument">
  89577. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89578. <stringProp name="Argument.value">${admin_password}</stringProp>
  89579. <stringProp name="Argument.metadata">=</stringProp>
  89580. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89581. <stringProp name="Argument.name">login[password]</stringProp>
  89582. </elementProp>
  89583. <elementProp name="login[username]" elementType="HTTPArgument">
  89584. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89585. <stringProp name="Argument.value">${admin_user}</stringProp>
  89586. <stringProp name="Argument.metadata">=</stringProp>
  89587. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89588. <stringProp name="Argument.name">login[username]</stringProp>
  89589. </elementProp>
  89590. </collectionProp>
  89591. </elementProp>
  89592. <stringProp name="HTTPSampler.domain"/>
  89593. <stringProp name="HTTPSampler.port"/>
  89594. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89595. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89596. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89597. <stringProp name="HTTPSampler.contentEncoding"/>
  89598. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  89599. <stringProp name="HTTPSampler.method">POST</stringProp>
  89600. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89601. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89602. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89603. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89604. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  89605. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89606. <stringProp name="HTTPSampler.embedded_url_re"/>
  89607. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  89608. </HTTPSamplerProxy>
  89609. <hashTree>
  89610. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  89611. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  89612. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  89613. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  89614. <stringProp name="RegexExtractor.template">$1$</stringProp>
  89615. <stringProp name="RegexExtractor.default"/>
  89616. <stringProp name="RegexExtractor.match_number">1</stringProp>
  89617. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  89618. <hashTree/>
  89619. </hashTree>
  89620. </hashTree>
  89621. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  89622. <stringProp name="script">
  89623. vars.put("gridEntityType" , "Order");
  89624. pagesCount = parseInt(vars.get("orders_page_size")) || 20;
  89625. vars.put("grid_entity_page_size" , pagesCount);
  89626. vars.put("grid_namespace" , "sales_order_grid");
  89627. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_orders_filter_text"));
  89628. vars.put("grid_filter_field", "status");
  89629. // set sort fields and sort directions
  89630. vars.put("grid_sort_field_1", "increment_id");
  89631. vars.put("grid_sort_field_2", "created_at");
  89632. vars.put("grid_sort_field_3", "billing_name");
  89633. vars.put("grid_sort_order_1", "asc");
  89634. vars.put("grid_sort_order_2", "desc");
  89635. </stringProp>
  89636. <stringProp name="scriptLanguage">javascript</stringProp>
  89637. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_orders_grid/setup.jmx</stringProp></JSR223PostProcessor>
  89638. <hashTree/>
  89639. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  89640. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  89641. </GenericController>
  89642. <hashTree>
  89643. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  89644. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89645. <collectionProp name="Arguments.arguments">
  89646. <elementProp name="namespace" elementType="HTTPArgument">
  89647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89648. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  89649. <stringProp name="Argument.metadata">=</stringProp>
  89650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89651. <stringProp name="Argument.name">namespace</stringProp>
  89652. <stringProp name="Argument.desc">true</stringProp>
  89653. </elementProp>
  89654. <elementProp name="search" elementType="HTTPArgument">
  89655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89656. <stringProp name="Argument.value"/>
  89657. <stringProp name="Argument.metadata">=</stringProp>
  89658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89659. <stringProp name="Argument.name">search</stringProp>
  89660. <stringProp name="Argument.desc">true</stringProp>
  89661. </elementProp>
  89662. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  89663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89664. <stringProp name="Argument.value">true</stringProp>
  89665. <stringProp name="Argument.metadata">=</stringProp>
  89666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89667. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  89668. <stringProp name="Argument.desc">true</stringProp>
  89669. </elementProp>
  89670. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  89671. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89672. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  89673. <stringProp name="Argument.metadata">=</stringProp>
  89674. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89675. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  89676. <stringProp name="Argument.desc">true</stringProp>
  89677. </elementProp>
  89678. <elementProp name="paging[current]" elementType="HTTPArgument">
  89679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89680. <stringProp name="Argument.value">1</stringProp>
  89681. <stringProp name="Argument.metadata">=</stringProp>
  89682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89683. <stringProp name="Argument.name">paging[current]</stringProp>
  89684. <stringProp name="Argument.desc">true</stringProp>
  89685. </elementProp>
  89686. <elementProp name="sorting[field]" elementType="HTTPArgument">
  89687. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89688. <stringProp name="Argument.value">entity_id</stringProp>
  89689. <stringProp name="Argument.metadata">=</stringProp>
  89690. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89691. <stringProp name="Argument.name">sorting[field]</stringProp>
  89692. <stringProp name="Argument.desc">true</stringProp>
  89693. </elementProp>
  89694. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  89695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89696. <stringProp name="Argument.value">asc</stringProp>
  89697. <stringProp name="Argument.metadata">=</stringProp>
  89698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89699. <stringProp name="Argument.name">sorting[direction]</stringProp>
  89700. <stringProp name="Argument.desc">true</stringProp>
  89701. </elementProp>
  89702. <elementProp name="isAjax" elementType="HTTPArgument">
  89703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89704. <stringProp name="Argument.value">true</stringProp>
  89705. <stringProp name="Argument.metadata">=</stringProp>
  89706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89707. <stringProp name="Argument.name">isAjax</stringProp>
  89708. <stringProp name="Argument.desc">true</stringProp>
  89709. </elementProp>
  89710. </collectionProp>
  89711. </elementProp>
  89712. <stringProp name="HTTPSampler.domain"/>
  89713. <stringProp name="HTTPSampler.port"/>
  89714. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89715. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89716. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89717. <stringProp name="HTTPSampler.contentEncoding"/>
  89718. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  89719. <stringProp name="HTTPSampler.method">GET</stringProp>
  89720. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89721. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89722. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89723. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89724. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89725. <stringProp name="HTTPSampler.embedded_url_re"/>
  89726. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  89727. <hashTree>
  89728. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  89729. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  89730. <stringProp name="EXPECTED_VALUE">0</stringProp>
  89731. <boolProp name="JSONVALIDATION">true</boolProp>
  89732. <boolProp name="EXPECT_NULL">false</boolProp>
  89733. <boolProp name="INVERT">true</boolProp>
  89734. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  89735. <hashTree/>
  89736. <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 total records" enabled="true">
  89737. <stringProp name="VAR">entity_total_records</stringProp>
  89738. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  89739. <stringProp name="DEFAULT"/>
  89740. <stringProp name="VARIABLE"/>
  89741. <stringProp name="SUBJECT">BODY</stringProp>
  89742. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  89743. <hashTree/>
  89744. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  89745. <stringProp name="cacheKey"/>
  89746. <stringProp name="filename"/>
  89747. <stringProp name="parameters"/>
  89748. <stringProp name="script">
  89749. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  89750. var totalsRecord = parseInt(vars.get("entity_total_records"));
  89751. var pageCount = Math.round(totalsRecord/pageSize);
  89752. vars.put("grid_pages_count", pageCount);
  89753. </stringProp>
  89754. <stringProp name="scriptLanguage">javascript</stringProp>
  89755. </JSR223PostProcessor>
  89756. <hashTree/>
  89757. </hashTree>
  89758. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  89759. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89760. <collectionProp name="Arguments.arguments">
  89761. <elementProp name="namespace" elementType="HTTPArgument">
  89762. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89763. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  89764. <stringProp name="Argument.metadata">=</stringProp>
  89765. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89766. <stringProp name="Argument.name">namespace</stringProp>
  89767. <stringProp name="Argument.desc">true</stringProp>
  89768. </elementProp>
  89769. <elementProp name="search" elementType="HTTPArgument">
  89770. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89771. <stringProp name="Argument.value"/>
  89772. <stringProp name="Argument.metadata">=</stringProp>
  89773. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89774. <stringProp name="Argument.name">search</stringProp>
  89775. <stringProp name="Argument.desc">true</stringProp>
  89776. </elementProp>
  89777. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  89778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89779. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  89780. <stringProp name="Argument.metadata">=</stringProp>
  89781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89782. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  89783. <stringProp name="Argument.desc">true</stringProp>
  89784. </elementProp>
  89785. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  89786. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89787. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  89788. <stringProp name="Argument.metadata">=</stringProp>
  89789. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89790. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  89791. <stringProp name="Argument.desc">true</stringProp>
  89792. </elementProp>
  89793. <elementProp name="paging[current]" elementType="HTTPArgument">
  89794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89795. <stringProp name="Argument.value">1</stringProp>
  89796. <stringProp name="Argument.metadata">=</stringProp>
  89797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89798. <stringProp name="Argument.name">paging[current]</stringProp>
  89799. <stringProp name="Argument.desc">true</stringProp>
  89800. </elementProp>
  89801. <elementProp name="sorting[field]" elementType="HTTPArgument">
  89802. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89803. <stringProp name="Argument.value">entity_id</stringProp>
  89804. <stringProp name="Argument.metadata">=</stringProp>
  89805. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89806. <stringProp name="Argument.name">sorting[field]</stringProp>
  89807. <stringProp name="Argument.desc">true</stringProp>
  89808. </elementProp>
  89809. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  89810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89811. <stringProp name="Argument.value">asc</stringProp>
  89812. <stringProp name="Argument.metadata">=</stringProp>
  89813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89814. <stringProp name="Argument.name">sorting[direction]</stringProp>
  89815. <stringProp name="Argument.desc">true</stringProp>
  89816. </elementProp>
  89817. <elementProp name="isAjax" elementType="HTTPArgument">
  89818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89819. <stringProp name="Argument.value">true</stringProp>
  89820. <stringProp name="Argument.metadata">=</stringProp>
  89821. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89822. <stringProp name="Argument.name">isAjax</stringProp>
  89823. <stringProp name="Argument.desc">true</stringProp>
  89824. </elementProp>
  89825. </collectionProp>
  89826. </elementProp>
  89827. <stringProp name="HTTPSampler.domain"/>
  89828. <stringProp name="HTTPSampler.port"/>
  89829. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89830. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89831. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89832. <stringProp name="HTTPSampler.contentEncoding"/>
  89833. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  89834. <stringProp name="HTTPSampler.method">GET</stringProp>
  89835. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89836. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89837. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89838. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89839. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89840. <stringProp name="HTTPSampler.embedded_url_re"/>
  89841. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  89842. <hashTree>
  89843. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  89844. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  89845. <stringProp name="EXPECTED_VALUE">0</stringProp>
  89846. <boolProp name="JSONVALIDATION">true</boolProp>
  89847. <boolProp name="EXPECT_NULL">false</boolProp>
  89848. <boolProp name="INVERT">true</boolProp>
  89849. <boolProp name="ISREGEX">true</boolProp>
  89850. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  89851. <hashTree/>
  89852. <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 total records" enabled="true">
  89853. <stringProp name="VAR">entity_total_records</stringProp>
  89854. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  89855. <stringProp name="DEFAULT"/>
  89856. <stringProp name="VARIABLE"/>
  89857. <stringProp name="SUBJECT">BODY</stringProp>
  89858. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  89859. <hashTree/>
  89860. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  89861. <stringProp name="parameters"/>
  89862. <stringProp name="filename"/>
  89863. <stringProp name="script">
  89864. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  89865. var totalsRecord = parseInt(vars.get("entity_total_records"));
  89866. var pageCount = Math.round(totalsRecord/pageSize);
  89867. vars.put("grid_pages_count_filtered", pageCount);
  89868. </stringProp>
  89869. <stringProp name="scriptLanguage">javascript</stringProp>
  89870. </JSR223PostProcessor>
  89871. <hashTree/>
  89872. </hashTree>
  89873. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  89874. <stringProp name="CounterConfig.start">1</stringProp>
  89875. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  89876. <stringProp name="CounterConfig.incr">1</stringProp>
  89877. <stringProp name="CounterConfig.name">page_number</stringProp>
  89878. <stringProp name="CounterConfig.format"/>
  89879. <boolProp name="CounterConfig.per_user">true</boolProp>
  89880. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  89881. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  89882. <hashTree/>
  89883. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  89884. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  89885. <collectionProp name="Arguments.arguments">
  89886. <elementProp name="namespace" elementType="HTTPArgument">
  89887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89888. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  89889. <stringProp name="Argument.metadata">=</stringProp>
  89890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89891. <stringProp name="Argument.name">namespace</stringProp>
  89892. <stringProp name="Argument.desc">true</stringProp>
  89893. </elementProp>
  89894. <elementProp name="search" elementType="HTTPArgument">
  89895. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89896. <stringProp name="Argument.value"/>
  89897. <stringProp name="Argument.metadata">=</stringProp>
  89898. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89899. <stringProp name="Argument.name">search</stringProp>
  89900. <stringProp name="Argument.desc">true</stringProp>
  89901. </elementProp>
  89902. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  89903. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89904. <stringProp name="Argument.value">true</stringProp>
  89905. <stringProp name="Argument.metadata">=</stringProp>
  89906. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89907. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  89908. <stringProp name="Argument.desc">true</stringProp>
  89909. </elementProp>
  89910. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  89911. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89912. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  89913. <stringProp name="Argument.metadata">=</stringProp>
  89914. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89915. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  89916. <stringProp name="Argument.desc">true</stringProp>
  89917. </elementProp>
  89918. <elementProp name="paging[current]" elementType="HTTPArgument">
  89919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89920. <stringProp name="Argument.value">${page_number}</stringProp>
  89921. <stringProp name="Argument.metadata">=</stringProp>
  89922. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89923. <stringProp name="Argument.name">paging[current]</stringProp>
  89924. <stringProp name="Argument.desc">true</stringProp>
  89925. </elementProp>
  89926. <elementProp name="sorting[field]" elementType="HTTPArgument">
  89927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89928. <stringProp name="Argument.value">entity_id</stringProp>
  89929. <stringProp name="Argument.metadata">=</stringProp>
  89930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89931. <stringProp name="Argument.name">sorting[field]</stringProp>
  89932. <stringProp name="Argument.desc">true</stringProp>
  89933. </elementProp>
  89934. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  89935. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89936. <stringProp name="Argument.value">asc</stringProp>
  89937. <stringProp name="Argument.metadata">=</stringProp>
  89938. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89939. <stringProp name="Argument.name">sorting[direction]</stringProp>
  89940. <stringProp name="Argument.desc">true</stringProp>
  89941. </elementProp>
  89942. <elementProp name="isAjax" elementType="HTTPArgument">
  89943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  89944. <stringProp name="Argument.value">true</stringProp>
  89945. <stringProp name="Argument.metadata">=</stringProp>
  89946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  89947. <stringProp name="Argument.name">isAjax</stringProp>
  89948. <stringProp name="Argument.desc">true</stringProp>
  89949. </elementProp>
  89950. </collectionProp>
  89951. </elementProp>
  89952. <stringProp name="HTTPSampler.domain"/>
  89953. <stringProp name="HTTPSampler.port"/>
  89954. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  89955. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  89956. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  89957. <stringProp name="HTTPSampler.contentEncoding"/>
  89958. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  89959. <stringProp name="HTTPSampler.method">GET</stringProp>
  89960. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  89961. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  89962. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  89963. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  89964. <boolProp name="HTTPSampler.monitor">false</boolProp>
  89965. <stringProp name="HTTPSampler.embedded_url_re"/>
  89966. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  89967. <hashTree>
  89968. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  89969. <collectionProp name="Asserion.test_strings">
  89970. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  89971. </collectionProp>
  89972. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  89973. <boolProp name="Assertion.assume_success">false</boolProp>
  89974. <intProp name="Assertion.test_type">2</intProp>
  89975. </ResponseAssertion>
  89976. <hashTree/>
  89977. </hashTree>
  89978. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  89979. <stringProp name="CounterConfig.start">1</stringProp>
  89980. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  89981. <stringProp name="CounterConfig.incr">1</stringProp>
  89982. <stringProp name="CounterConfig.name">page_number</stringProp>
  89983. <stringProp name="CounterConfig.format"/>
  89984. <boolProp name="CounterConfig.per_user">true</boolProp>
  89985. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  89986. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  89987. <hashTree/>
  89988. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  89989. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  89990. </TestFragmentController>
  89991. <hashTree>
  89992. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  89993. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  89994. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  89995. <boolProp name="ForeachController.useSeparator">true</boolProp>
  89996. <stringProp name="ForeachController.startIndex">0</stringProp>
  89997. <stringProp name="ForeachController.endIndex">3</stringProp>
  89998. </ForeachController>
  89999. <hashTree>
  90000. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  90001. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  90002. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  90003. <boolProp name="ForeachController.useSeparator">true</boolProp>
  90004. <stringProp name="ForeachController.startIndex">0</stringProp>
  90005. <stringProp name="ForeachController.endIndex">2</stringProp>
  90006. </ForeachController>
  90007. <hashTree>
  90008. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  90009. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90010. <collectionProp name="Arguments.arguments">
  90011. <elementProp name="namespace" elementType="HTTPArgument">
  90012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90013. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  90014. <stringProp name="Argument.metadata">=</stringProp>
  90015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90016. <stringProp name="Argument.name">namespace</stringProp>
  90017. <stringProp name="Argument.desc">false</stringProp>
  90018. </elementProp>
  90019. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  90020. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90021. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  90022. <stringProp name="Argument.metadata">=</stringProp>
  90023. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90024. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  90025. <stringProp name="Argument.desc">false</stringProp>
  90026. </elementProp>
  90027. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  90028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90029. <stringProp name="Argument.value">true</stringProp>
  90030. <stringProp name="Argument.metadata">=</stringProp>
  90031. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90032. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  90033. <stringProp name="Argument.desc">false</stringProp>
  90034. </elementProp>
  90035. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  90036. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90037. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  90038. <stringProp name="Argument.metadata">=</stringProp>
  90039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90040. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  90041. <stringProp name="Argument.desc">false</stringProp>
  90042. </elementProp>
  90043. <elementProp name="paging[current]" elementType="HTTPArgument">
  90044. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90045. <stringProp name="Argument.value">${page_number}</stringProp>
  90046. <stringProp name="Argument.metadata">=</stringProp>
  90047. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90048. <stringProp name="Argument.name">paging[current]</stringProp>
  90049. <stringProp name="Argument.desc">false</stringProp>
  90050. </elementProp>
  90051. <elementProp name="sorting[field]" elementType="HTTPArgument">
  90052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90053. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  90054. <stringProp name="Argument.metadata">=</stringProp>
  90055. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90056. <stringProp name="Argument.name">sorting[field]</stringProp>
  90057. <stringProp name="Argument.desc">false</stringProp>
  90058. </elementProp>
  90059. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  90060. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90061. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  90062. <stringProp name="Argument.metadata">=</stringProp>
  90063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90064. <stringProp name="Argument.name">sorting[direction]</stringProp>
  90065. <stringProp name="Argument.desc">false</stringProp>
  90066. </elementProp>
  90067. <elementProp name="isAjax" elementType="HTTPArgument">
  90068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90069. <stringProp name="Argument.value">true</stringProp>
  90070. <stringProp name="Argument.metadata">=</stringProp>
  90071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90072. <stringProp name="Argument.name">isAjax</stringProp>
  90073. <stringProp name="Argument.desc">false</stringProp>
  90074. </elementProp>
  90075. </collectionProp>
  90076. </elementProp>
  90077. <stringProp name="HTTPSampler.domain"/>
  90078. <stringProp name="HTTPSampler.port"/>
  90079. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90080. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90081. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90082. <stringProp name="HTTPSampler.contentEncoding"/>
  90083. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  90084. <stringProp name="HTTPSampler.method">GET</stringProp>
  90085. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90086. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90087. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90088. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90089. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90090. <stringProp name="HTTPSampler.embedded_url_re"/>
  90091. </HTTPSamplerProxy>
  90092. <hashTree>
  90093. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  90094. <collectionProp name="Asserion.test_strings">
  90095. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  90096. </collectionProp>
  90097. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  90098. <boolProp name="Assertion.assume_success">false</boolProp>
  90099. <intProp name="Assertion.test_type">2</intProp>
  90100. </ResponseAssertion>
  90101. <hashTree/>
  90102. </hashTree>
  90103. </hashTree>
  90104. </hashTree>
  90105. </hashTree>
  90106. </hashTree>
  90107. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  90108. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90109. <collectionProp name="Arguments.arguments"/>
  90110. </elementProp>
  90111. <stringProp name="HTTPSampler.domain"/>
  90112. <stringProp name="HTTPSampler.port"/>
  90113. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90114. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90115. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90116. <stringProp name="HTTPSampler.contentEncoding"/>
  90117. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  90118. <stringProp name="HTTPSampler.method">GET</stringProp>
  90119. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90120. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90121. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90122. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90123. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90124. <stringProp name="HTTPSampler.embedded_url_re"/>
  90125. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  90126. <hashTree>
  90127. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  90128. <boolProp name="resetInterpreter">false</boolProp>
  90129. <stringProp name="parameters"/>
  90130. <stringProp name="filename"/>
  90131. <stringProp name="script">
  90132. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  90133. if (adminUsersDistribution == 1) {
  90134. adminUserList = props.get("adminUserList");
  90135. adminUserList.add(vars.get("admin_user"));
  90136. }
  90137. </stringProp>
  90138. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  90139. <hashTree/>
  90140. </hashTree>
  90141. </hashTree>
  90142. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Create Product" enabled="true">
  90143. <intProp name="ThroughputController.style">1</intProp>
  90144. <boolProp name="ThroughputController.perThread">false</boolProp>
  90145. <intProp name="ThroughputController.maxThroughput">1</intProp>
  90146. <stringProp name="ThroughputController.percentThroughput">${cAdminProductCreationPercentage}</stringProp>
  90147. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  90148. <hashTree>
  90149. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  90150. <stringProp name="script">
  90151. var tmpLabel = vars.get("testLabel")
  90152. if (tmpLabel) {
  90153. var testLabel = " (" + tmpLabel + ")"
  90154. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  90155. if (sampler.getName().indexOf(testLabel) == -1) {
  90156. sampler.setName(sampler.getName() + testLabel);
  90157. }
  90158. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  90159. sampler.setName("SetUp - " + sampler.getName());
  90160. }
  90161. } else {
  90162. testLabel = ""
  90163. }
  90164. </stringProp>
  90165. <stringProp name="scriptLanguage">javascript</stringProp>
  90166. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  90167. <hashTree/>
  90168. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  90169. <stringProp name="BeanShellSampler.query">
  90170. vars.put("testLabel", "[REST API C] Admin Create Product");
  90171. </stringProp>
  90172. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  90173. </BeanShellSampler>
  90174. <hashTree/>
  90175. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  90176. <stringProp name="script">
  90177. function getFormKeyFromResponse()
  90178. {
  90179. var url = prev.getUrlAsString(),
  90180. responseCode = prev.getResponseCode(),
  90181. formKey = null;
  90182. searchPattern = /var FORM_KEY = '(.+)'/;
  90183. if (responseCode == "200" &amp;&amp; url) {
  90184. response = prev.getResponseDataAsString();
  90185. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  90186. }
  90187. return formKey;
  90188. }
  90189. formKey = vars.get("form_key_storage");
  90190. currentFormKey = getFormKeyFromResponse();
  90191. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  90192. vars.put("form_key_storage", currentFormKey);
  90193. }
  90194. </stringProp>
  90195. <stringProp name="scriptLanguage">javascript</stringProp>
  90196. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  90197. <hashTree/>
  90198. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  90199. <stringProp name="script">
  90200. formKey = vars.get("form_key_storage");
  90201. if (formKey
  90202. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  90203. &amp;&amp; sampler.getMethod() == "POST")
  90204. {
  90205. arguments = sampler.getArguments();
  90206. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  90207. {
  90208. argument = arguments.getArgument(i);
  90209. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  90210. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  90211. argument.setValue(formKey);
  90212. }
  90213. }
  90214. }
  90215. </stringProp>
  90216. <stringProp name="scriptLanguage">javascript</stringProp>
  90217. </JSR223PreProcessor>
  90218. <hashTree/>
  90219. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  90220. <collectionProp name="CookieManager.cookies"/>
  90221. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  90222. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  90223. <hashTree/>
  90224. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  90225. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  90226. </GenericController>
  90227. <hashTree>
  90228. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  90229. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  90230. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  90231. <hashTree>
  90232. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  90233. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  90234. <stringProp name="BeanShellSampler.query">
  90235. adminUser = "none";
  90236. adminUserList = props.get("adminUserList");
  90237. adminUserListIterator = props.get("adminUserListIterator");
  90238. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  90239. if (adminUsersDistribution == 1) {
  90240. adminUser = adminUserList.poll();
  90241. } else {
  90242. if (!adminUserListIterator.hasNext()) {
  90243. adminUserListIterator = adminUserList.descendingIterator();
  90244. }
  90245. adminUser = adminUserListIterator.next();
  90246. }
  90247. if (adminUser == "none") {
  90248. SampleResult.setResponseMessage("adminUser list is empty");
  90249. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  90250. IsSuccess=false;
  90251. SampleResult.setSuccessful(false);
  90252. SampleResult.setStopThread(true);
  90253. }
  90254. vars.put("admin_user", adminUser);
  90255. </stringProp>
  90256. <stringProp name="BeanShellSampler.filename"/>
  90257. <stringProp name="BeanShellSampler.parameters"/>
  90258. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  90259. </BeanShellSampler>
  90260. <hashTree/>
  90261. </hashTree>
  90262. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  90263. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90264. <collectionProp name="Arguments.arguments"/>
  90265. </elementProp>
  90266. <stringProp name="HTTPSampler.domain"/>
  90267. <stringProp name="HTTPSampler.port"/>
  90268. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90269. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90270. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90271. <stringProp name="HTTPSampler.contentEncoding"/>
  90272. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  90273. <stringProp name="HTTPSampler.method">GET</stringProp>
  90274. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90275. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90276. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90277. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90278. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90279. <stringProp name="HTTPSampler.embedded_url_re"/>
  90280. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  90281. <hashTree>
  90282. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  90283. <collectionProp name="Asserion.test_strings">
  90284. <stringProp name="-1397214398">Welcome</stringProp>
  90285. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  90286. </collectionProp>
  90287. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  90288. <boolProp name="Assertion.assume_success">false</boolProp>
  90289. <intProp name="Assertion.test_type">2</intProp>
  90290. </ResponseAssertion>
  90291. <hashTree/>
  90292. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  90293. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  90294. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  90295. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  90296. <stringProp name="RegexExtractor.template">$1$</stringProp>
  90297. <stringProp name="RegexExtractor.default"/>
  90298. <stringProp name="RegexExtractor.match_number">1</stringProp>
  90299. </RegexExtractor>
  90300. <hashTree/>
  90301. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  90302. <collectionProp name="Asserion.test_strings">
  90303. <stringProp name="2845929">^.+$</stringProp>
  90304. </collectionProp>
  90305. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  90306. <boolProp name="Assertion.assume_success">false</boolProp>
  90307. <intProp name="Assertion.test_type">1</intProp>
  90308. <stringProp name="Assertion.scope">variable</stringProp>
  90309. <stringProp name="Scope.variable">admin_form_key</stringProp>
  90310. </ResponseAssertion>
  90311. <hashTree/>
  90312. </hashTree>
  90313. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  90314. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90315. <collectionProp name="Arguments.arguments">
  90316. <elementProp name="dummy" elementType="HTTPArgument">
  90317. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90318. <stringProp name="Argument.value"/>
  90319. <stringProp name="Argument.metadata">=</stringProp>
  90320. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90321. <stringProp name="Argument.name">dummy</stringProp>
  90322. </elementProp>
  90323. <elementProp name="form_key" elementType="HTTPArgument">
  90324. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90325. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  90326. <stringProp name="Argument.metadata">=</stringProp>
  90327. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90328. <stringProp name="Argument.name">form_key</stringProp>
  90329. </elementProp>
  90330. <elementProp name="login[password]" elementType="HTTPArgument">
  90331. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90332. <stringProp name="Argument.value">${admin_password}</stringProp>
  90333. <stringProp name="Argument.metadata">=</stringProp>
  90334. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90335. <stringProp name="Argument.name">login[password]</stringProp>
  90336. </elementProp>
  90337. <elementProp name="login[username]" elementType="HTTPArgument">
  90338. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90339. <stringProp name="Argument.value">${admin_user}</stringProp>
  90340. <stringProp name="Argument.metadata">=</stringProp>
  90341. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90342. <stringProp name="Argument.name">login[username]</stringProp>
  90343. </elementProp>
  90344. </collectionProp>
  90345. </elementProp>
  90346. <stringProp name="HTTPSampler.domain"/>
  90347. <stringProp name="HTTPSampler.port"/>
  90348. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90349. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90350. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90351. <stringProp name="HTTPSampler.contentEncoding"/>
  90352. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  90353. <stringProp name="HTTPSampler.method">POST</stringProp>
  90354. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90355. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90356. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90357. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90358. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  90359. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90360. <stringProp name="HTTPSampler.embedded_url_re"/>
  90361. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  90362. </HTTPSamplerProxy>
  90363. <hashTree>
  90364. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  90365. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  90366. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  90367. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  90368. <stringProp name="RegexExtractor.template">$1$</stringProp>
  90369. <stringProp name="RegexExtractor.default"/>
  90370. <stringProp name="RegexExtractor.match_number">1</stringProp>
  90371. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  90372. <hashTree/>
  90373. </hashTree>
  90374. </hashTree>
  90375. <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true">
  90376. <stringProp name="TestPlan.comments">tool/fragments/ce/once_only_controller.jmx</stringProp>
  90377. </OnceOnlyController>
  90378. <hashTree>
  90379. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Related Product Id" enabled="true">
  90380. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_related_product_id.jmx</stringProp>
  90381. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  90382. import java.util.Random;
  90383. Random random = new Random();
  90384. if (${seedForRandom} &gt; 0) {
  90385. random.setSeed(${seedForRandom});
  90386. }
  90387. relatedIndex = random.nextInt(props.get("simple_products_list").size());
  90388. vars.put("related_product_id", props.get("simple_products_list").get(relatedIndex).get("id"));</stringProp>
  90389. <stringProp name="BeanShellSampler.filename"/>
  90390. <stringProp name="BeanShellSampler.parameters"/>
  90391. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  90392. </BeanShellSampler>
  90393. <hashTree/>
  90394. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Product Attributes" enabled="true">
  90395. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  90396. </GenericController>
  90397. <hashTree>
  90398. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  90399. <collectionProp name="HeaderManager.headers">
  90400. <elementProp name="" elementType="Header">
  90401. <stringProp name="Header.name">Content-Type</stringProp>
  90402. <stringProp name="Header.value">application/json</stringProp>
  90403. </elementProp>
  90404. <elementProp name="" elementType="Header">
  90405. <stringProp name="Header.name">Accept</stringProp>
  90406. <stringProp name="Header.value">*/*</stringProp>
  90407. </elementProp>
  90408. </collectionProp>
  90409. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  90410. <hashTree/>
  90411. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  90412. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  90413. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  90414. <collectionProp name="Arguments.arguments">
  90415. <elementProp name="" elementType="HTTPArgument">
  90416. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  90417. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  90418. <stringProp name="Argument.metadata">=</stringProp>
  90419. </elementProp>
  90420. </collectionProp>
  90421. </elementProp>
  90422. <stringProp name="HTTPSampler.domain"/>
  90423. <stringProp name="HTTPSampler.port"/>
  90424. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90425. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90426. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90427. <stringProp name="HTTPSampler.contentEncoding"/>
  90428. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  90429. <stringProp name="HTTPSampler.method">POST</stringProp>
  90430. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90431. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90432. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90433. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90434. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90435. <stringProp name="HTTPSampler.embedded_url_re"/>
  90436. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  90437. <hashTree>
  90438. <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">
  90439. <stringProp name="VAR">admin_token</stringProp>
  90440. <stringProp name="JSONPATH">$</stringProp>
  90441. <stringProp name="DEFAULT"/>
  90442. <stringProp name="VARIABLE"/>
  90443. <stringProp name="SUBJECT">BODY</stringProp>
  90444. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  90445. <hashTree/>
  90446. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  90447. <collectionProp name="Asserion.test_strings">
  90448. <stringProp name="484395188">^.{10,}$</stringProp>
  90449. </collectionProp>
  90450. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  90451. <boolProp name="Assertion.assume_success">false</boolProp>
  90452. <intProp name="Assertion.test_type">1</intProp>
  90453. <stringProp name="Assertion.scope">variable</stringProp>
  90454. <stringProp name="Scope.variable">admin_token</stringProp>
  90455. </ResponseAssertion>
  90456. <hashTree/>
  90457. </hashTree>
  90458. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  90459. <collectionProp name="HeaderManager.headers">
  90460. <elementProp name="" elementType="Header">
  90461. <stringProp name="Header.name">Authorization</stringProp>
  90462. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  90463. </elementProp>
  90464. </collectionProp>
  90465. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  90466. <hashTree/>
  90467. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - API Get product attributes" enabled="true">
  90468. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90469. <collectionProp name="Arguments.arguments">
  90470. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  90471. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  90472. <stringProp name="Argument.value">mycolor</stringProp>
  90473. <stringProp name="Argument.metadata">=</stringProp>
  90474. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90475. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  90476. </elementProp>
  90477. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  90478. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  90479. <stringProp name="Argument.value">attribute_code</stringProp>
  90480. <stringProp name="Argument.metadata">=</stringProp>
  90481. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90482. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  90483. </elementProp>
  90484. <elementProp name="searchCriteria[filterGroups][0][filters][1][value]" elementType="HTTPArgument">
  90485. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  90486. <stringProp name="Argument.value">mysize</stringProp>
  90487. <stringProp name="Argument.metadata">=</stringProp>
  90488. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90489. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][value]</stringProp>
  90490. </elementProp>
  90491. <elementProp name="searchCriteria[filterGroups][0][filters][1][field]" elementType="HTTPArgument">
  90492. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  90493. <stringProp name="Argument.value">attribute_code</stringProp>
  90494. <stringProp name="Argument.metadata">=</stringProp>
  90495. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90496. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][1][field]</stringProp>
  90497. </elementProp>
  90498. </collectionProp>
  90499. </elementProp>
  90500. <stringProp name="HTTPSampler.domain"/>
  90501. <stringProp name="HTTPSampler.port"/>
  90502. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90503. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90504. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90505. <stringProp name="HTTPSampler.contentEncoding"/>
  90506. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes</stringProp>
  90507. <stringProp name="HTTPSampler.method">GET</stringProp>
  90508. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90509. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90510. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90511. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90512. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90513. <stringProp name="HTTPSampler.embedded_url_re"/>
  90514. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/get_product_attributes.jmx</stringProp></HTTPSamplerProxy>
  90515. <hashTree>
  90516. <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 product attributes" enabled="true">
  90517. <stringProp name="VAR">product_attributes</stringProp>
  90518. <stringProp name="JSONPATH">$.items</stringProp>
  90519. <stringProp name="DEFAULT"/>
  90520. <stringProp name="VARIABLE"/>
  90521. <stringProp name="SUBJECT">BODY</stringProp>
  90522. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  90523. <hashTree/>
  90524. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="SetUp - Prepare product attributes" enabled="true">
  90525. <stringProp name="scriptLanguage">javascript</stringProp>
  90526. <stringProp name="parameters"/>
  90527. <stringProp name="filename"/>
  90528. <stringProp name="cacheKey"/>
  90529. <stringProp name="script">
  90530. var attributesData = JSON.parse(vars.get("product_attributes")),
  90531. maxOptions = 2;
  90532. attributes = [];
  90533. for (i in attributesData) {
  90534. if (i &gt;= 2) {
  90535. break;
  90536. }
  90537. var data = attributesData[i],
  90538. attribute = {
  90539. "id": data.attribute_id,
  90540. "code": data.attribute_code,
  90541. "label": data.default_frontend_label,
  90542. "options": []
  90543. };
  90544. var processedOptions = 0;
  90545. for (optionN in data.options) {
  90546. var option = data.options[optionN];
  90547. if (parseInt(option.value) &gt; 0 &amp;&amp; processedOptions &lt; maxOptions) {
  90548. processedOptions++;
  90549. attribute.options.push(option);
  90550. }
  90551. }
  90552. attributes.push(attribute);
  90553. }
  90554. vars.putObject("product_attributes", attributes);
  90555. </stringProp>
  90556. </JSR223PostProcessor>
  90557. <hashTree/>
  90558. </hashTree>
  90559. </hashTree>
  90560. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Attribute Set Id" enabled="true">
  90561. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90562. <collectionProp name="Arguments.arguments"/>
  90563. </elementProp>
  90564. <stringProp name="HTTPSampler.domain"/>
  90565. <stringProp name="HTTPSampler.port"/>
  90566. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90567. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90568. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90569. <stringProp name="HTTPSampler.contentEncoding"/>
  90570. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product_set/index/filter/${attribute_set_filter}</stringProp>
  90571. <stringProp name="HTTPSampler.method">GET</stringProp>
  90572. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90573. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90574. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90575. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90576. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90577. <stringProp name="HTTPSampler.embedded_url_re"/>
  90578. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_setup_attribute_set.jmx</stringProp>
  90579. </HTTPSamplerProxy>
  90580. <hashTree>
  90581. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  90582. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  90583. <stringProp name="RegexExtractor.refname">attribute_set_id</stringProp>
  90584. <stringProp name="RegexExtractor.regex">catalog&amp;#x2F;product_set&amp;#x2F;edit&amp;#x2F;id&amp;#x2F;([\d]+)&amp;#x2F;"[\D\d]*Attribute Set 1</stringProp>
  90585. <stringProp name="RegexExtractor.template">$1$</stringProp>
  90586. <stringProp name="RegexExtractor.default"/>
  90587. <stringProp name="RegexExtractor.match_number">1</stringProp>
  90588. </RegexExtractor>
  90589. <hashTree/>
  90590. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="SetUp - Set Attribute Set Filter" enabled="true">
  90591. <boolProp name="resetInterpreter">false</boolProp>
  90592. <stringProp name="parameters"/>
  90593. <stringProp name="filename"/>
  90594. <stringProp name="script">import org.apache.commons.codec.binary.Base64;
  90595. byte[] encodedBytes = Base64.encodeBase64("set_name=Attribute Set 1".getBytes());
  90596. vars.put("attribute_set_filter", new String(encodedBytes));
  90597. </stringProp>
  90598. </BeanShellPreProcessor>
  90599. <hashTree/>
  90600. </hashTree>
  90601. </hashTree>
  90602. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  90603. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  90604. </GenericController>
  90605. <hashTree>
  90606. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  90607. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  90608. import java.util.Random;
  90609. Random random = new Random();
  90610. int number1;
  90611. if (${seedForRandom} &gt; 0) {
  90612. random.setSeed(${seedForRandom});
  90613. }
  90614. number = random.nextInt(props.get("simple_products_list_for_edit").size());
  90615. simpleList = props.get("simple_products_list_for_edit").get(number);
  90616. vars.put("simple_product_1_id", simpleList.get("id"));
  90617. vars.put("simple_product_1_name", simpleList.get("title"));
  90618. do {
  90619. number1 = random.nextInt(props.get("simple_products_list_for_edit").size());
  90620. } while(number == number1);
  90621. simpleList = props.get("simple_products_list_for_edit").get(number1);
  90622. vars.put("simple_product_2_id", simpleList.get("id"));
  90623. vars.put("simple_product_2_name", simpleList.get("title"));
  90624. number2 = random.nextInt(props.get("configurable_products_list").size());
  90625. configurableList = props.get("configurable_products_list").get(number2);
  90626. vars.put("configurable_product_1_id", configurableList.get("id"));
  90627. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  90628. vars.put("configurable_product_1_name", configurableList.get("title"));
  90629. //Additional category to be added
  90630. //int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  90631. //vars.put("category_additional", (categoryId+1).toString());
  90632. //New price
  90633. vars.put("price_new", "9999");
  90634. //New special price
  90635. vars.put("special_price_new", "8888");
  90636. //New quantity
  90637. vars.put("quantity_new", "100600");
  90638. vars.put("configurable_sku", "Configurable Product - ${__time(YMD)}-${__threadNum}-${__Random(1,1000000)}");
  90639. </stringProp>
  90640. <stringProp name="BeanShellSampler.filename"/>
  90641. <stringProp name="BeanShellSampler.parameters"/>
  90642. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  90643. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/setup.jmx</stringProp></BeanShellSampler>
  90644. <hashTree/>
  90645. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Bundle Product" enabled="true">
  90646. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_bundle_product.jmx</stringProp>
  90647. </TestFragmentController>
  90648. <hashTree>
  90649. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  90650. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90651. <collectionProp name="Arguments.arguments"/>
  90652. </elementProp>
  90653. <stringProp name="HTTPSampler.domain"/>
  90654. <stringProp name="HTTPSampler.port"/>
  90655. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90656. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90657. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90658. <stringProp name="HTTPSampler.contentEncoding"/>
  90659. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  90660. <stringProp name="HTTPSampler.method">GET</stringProp>
  90661. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90662. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90663. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90664. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90665. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90666. <stringProp name="HTTPSampler.embedded_url_re"/>
  90667. </HTTPSamplerProxy>
  90668. <hashTree>
  90669. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  90670. <collectionProp name="Asserion.test_strings">
  90671. <stringProp name="1509986340">records found</stringProp>
  90672. </collectionProp>
  90673. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  90674. <boolProp name="Assertion.assume_success">false</boolProp>
  90675. <intProp name="Assertion.test_type">2</intProp>
  90676. </ResponseAssertion>
  90677. <hashTree/>
  90678. </hashTree>
  90679. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product" enabled="true">
  90680. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90681. <collectionProp name="Arguments.arguments"/>
  90682. </elementProp>
  90683. <stringProp name="HTTPSampler.domain"/>
  90684. <stringProp name="HTTPSampler.port"/>
  90685. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  90686. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  90687. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  90688. <stringProp name="HTTPSampler.contentEncoding"/>
  90689. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/bundle/</stringProp>
  90690. <stringProp name="HTTPSampler.method">GET</stringProp>
  90691. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  90692. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  90693. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  90694. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  90695. <boolProp name="HTTPSampler.monitor">false</boolProp>
  90696. <stringProp name="HTTPSampler.embedded_url_re"/>
  90697. </HTTPSamplerProxy>
  90698. <hashTree>
  90699. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  90700. <collectionProp name="Asserion.test_strings">
  90701. <stringProp name="-144461265">New Product</stringProp>
  90702. </collectionProp>
  90703. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  90704. <boolProp name="Assertion.assume_success">false</boolProp>
  90705. <intProp name="Assertion.test_type">2</intProp>
  90706. </ResponseAssertion>
  90707. <hashTree/>
  90708. </hashTree>
  90709. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Validate" enabled="true">
  90710. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  90711. <collectionProp name="Arguments.arguments">
  90712. <elementProp name="ajax" elementType="HTTPArgument">
  90713. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90714. <stringProp name="Argument.value">true</stringProp>
  90715. <stringProp name="Argument.metadata">=</stringProp>
  90716. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90717. <stringProp name="Argument.name">ajax</stringProp>
  90718. <stringProp name="Argument.desc">false</stringProp>
  90719. </elementProp>
  90720. <elementProp name="isAjax" elementType="HTTPArgument">
  90721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90722. <stringProp name="Argument.value">true</stringProp>
  90723. <stringProp name="Argument.metadata">=</stringProp>
  90724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90725. <stringProp name="Argument.name">isAjax</stringProp>
  90726. <stringProp name="Argument.desc">false</stringProp>
  90727. </elementProp>
  90728. <elementProp name="form_key" elementType="HTTPArgument">
  90729. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90730. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  90731. <stringProp name="Argument.metadata">=</stringProp>
  90732. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90733. <stringProp name="Argument.name">form_key</stringProp>
  90734. <stringProp name="Argument.desc">false</stringProp>
  90735. </elementProp>
  90736. <elementProp name="product[name]" elementType="HTTPArgument">
  90737. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90738. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  90739. <stringProp name="Argument.metadata">=</stringProp>
  90740. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90741. <stringProp name="Argument.name">product[name]</stringProp>
  90742. <stringProp name="Argument.desc">false</stringProp>
  90743. </elementProp>
  90744. <elementProp name="product[sku]" elementType="HTTPArgument">
  90745. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90746. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  90747. <stringProp name="Argument.metadata">=</stringProp>
  90748. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90749. <stringProp name="Argument.name">product[sku]</stringProp>
  90750. <stringProp name="Argument.desc">false</stringProp>
  90751. </elementProp>
  90752. <elementProp name="product[price]" elementType="HTTPArgument">
  90753. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90754. <stringProp name="Argument.value">42</stringProp>
  90755. <stringProp name="Argument.metadata">=</stringProp>
  90756. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90757. <stringProp name="Argument.name">product[price]</stringProp>
  90758. </elementProp>
  90759. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  90760. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90761. <stringProp name="Argument.value">2</stringProp>
  90762. <stringProp name="Argument.metadata">=</stringProp>
  90763. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90764. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  90765. </elementProp>
  90766. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  90767. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90768. <stringProp name="Argument.value">111</stringProp>
  90769. <stringProp name="Argument.metadata">=</stringProp>
  90770. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90771. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  90772. </elementProp>
  90773. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  90774. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90775. <stringProp name="Argument.value">1</stringProp>
  90776. <stringProp name="Argument.metadata">=</stringProp>
  90777. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90778. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  90779. </elementProp>
  90780. <elementProp name="product[weight]" elementType="HTTPArgument">
  90781. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90782. <stringProp name="Argument.value">1.0000</stringProp>
  90783. <stringProp name="Argument.metadata">=</stringProp>
  90784. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90785. <stringProp name="Argument.name">product[weight]</stringProp>
  90786. </elementProp>
  90787. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  90788. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90789. <stringProp name="Argument.value">1</stringProp>
  90790. <stringProp name="Argument.metadata">=</stringProp>
  90791. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90792. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  90793. <stringProp name="Argument.desc">true</stringProp>
  90794. </elementProp>
  90795. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  90796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90797. <stringProp name="Argument.value">2</stringProp>
  90798. <stringProp name="Argument.metadata">=</stringProp>
  90799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90800. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  90801. </elementProp>
  90802. <elementProp name="product[description]" elementType="HTTPArgument">
  90803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90804. <stringProp name="Argument.value">&lt;p&gt;Full bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  90805. <stringProp name="Argument.metadata">=</stringProp>
  90806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90807. <stringProp name="Argument.name">product[description]</stringProp>
  90808. </elementProp>
  90809. <elementProp name="product[short_description]" elementType="HTTPArgument">
  90810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90811. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  90812. <stringProp name="Argument.metadata">=</stringProp>
  90813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90814. <stringProp name="Argument.name">product[short_description]</stringProp>
  90815. </elementProp>
  90816. <elementProp name="product[status]" elementType="HTTPArgument">
  90817. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90818. <stringProp name="Argument.value">1</stringProp>
  90819. <stringProp name="Argument.metadata">=</stringProp>
  90820. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90821. <stringProp name="Argument.name">product[status]</stringProp>
  90822. </elementProp>
  90823. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  90824. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90825. <stringProp name="Argument.value"/>
  90826. <stringProp name="Argument.metadata">=</stringProp>
  90827. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90828. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  90829. </elementProp>
  90830. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  90831. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90832. <stringProp name="Argument.value">1</stringProp>
  90833. <stringProp name="Argument.metadata">=</stringProp>
  90834. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90835. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  90836. </elementProp>
  90837. <elementProp name="product[image]" elementType="HTTPArgument">
  90838. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90839. <stringProp name="Argument.value"/>
  90840. <stringProp name="Argument.metadata">=</stringProp>
  90841. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90842. <stringProp name="Argument.name">product[image]</stringProp>
  90843. </elementProp>
  90844. <elementProp name="product[small_image]" elementType="HTTPArgument">
  90845. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90846. <stringProp name="Argument.value"/>
  90847. <stringProp name="Argument.metadata">=</stringProp>
  90848. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90849. <stringProp name="Argument.name">product[small_image]</stringProp>
  90850. </elementProp>
  90851. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  90852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90853. <stringProp name="Argument.value"/>
  90854. <stringProp name="Argument.metadata">=</stringProp>
  90855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90856. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  90857. </elementProp>
  90858. <elementProp name="product[url_key]" elementType="HTTPArgument">
  90859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90860. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  90861. <stringProp name="Argument.metadata">=</stringProp>
  90862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90863. <stringProp name="Argument.name">product[url_key]</stringProp>
  90864. </elementProp>
  90865. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  90866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90867. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  90868. <stringProp name="Argument.metadata">=</stringProp>
  90869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90870. <stringProp name="Argument.name">product[meta_title]</stringProp>
  90871. </elementProp>
  90872. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  90873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90874. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  90875. <stringProp name="Argument.metadata">=</stringProp>
  90876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90877. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  90878. </elementProp>
  90879. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  90880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90881. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  90882. <stringProp name="Argument.metadata">=</stringProp>
  90883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90884. <stringProp name="Argument.name">product[meta_description]</stringProp>
  90885. </elementProp>
  90886. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  90887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90888. <stringProp name="Argument.value">1</stringProp>
  90889. <stringProp name="Argument.metadata">=</stringProp>
  90890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90891. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  90892. </elementProp>
  90893. <elementProp name="product[special_price]" elementType="HTTPArgument">
  90894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90895. <stringProp name="Argument.value">99</stringProp>
  90896. <stringProp name="Argument.metadata">=</stringProp>
  90897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90898. <stringProp name="Argument.name">product[special_price]</stringProp>
  90899. </elementProp>
  90900. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  90901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90902. <stringProp name="Argument.value">1</stringProp>
  90903. <stringProp name="Argument.metadata">=</stringProp>
  90904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90905. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  90906. </elementProp>
  90907. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  90908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90909. <stringProp name="Argument.value"/>
  90910. <stringProp name="Argument.metadata">=</stringProp>
  90911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90912. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  90913. </elementProp>
  90914. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  90915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90916. <stringProp name="Argument.value"/>
  90917. <stringProp name="Argument.metadata">=</stringProp>
  90918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90919. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  90920. </elementProp>
  90921. <elementProp name="product[cost]" elementType="HTTPArgument">
  90922. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90923. <stringProp name="Argument.value"/>
  90924. <stringProp name="Argument.metadata">=</stringProp>
  90925. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90926. <stringProp name="Argument.name">product[cost]</stringProp>
  90927. </elementProp>
  90928. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  90929. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90930. <stringProp name="Argument.value">0</stringProp>
  90931. <stringProp name="Argument.metadata">=</stringProp>
  90932. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90933. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  90934. </elementProp>
  90935. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  90936. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90937. <stringProp name="Argument.value">32000</stringProp>
  90938. <stringProp name="Argument.metadata">=</stringProp>
  90939. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90940. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  90941. </elementProp>
  90942. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  90943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90944. <stringProp name="Argument.value">100</stringProp>
  90945. <stringProp name="Argument.metadata">=</stringProp>
  90946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90947. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  90948. </elementProp>
  90949. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  90950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90951. <stringProp name="Argument.value">90</stringProp>
  90952. <stringProp name="Argument.metadata">=</stringProp>
  90953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90954. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  90955. </elementProp>
  90956. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  90957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90958. <stringProp name="Argument.value"/>
  90959. <stringProp name="Argument.metadata">=</stringProp>
  90960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90961. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  90962. </elementProp>
  90963. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  90964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90965. <stringProp name="Argument.value">0</stringProp>
  90966. <stringProp name="Argument.metadata">=</stringProp>
  90967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90968. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  90969. </elementProp>
  90970. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  90971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90972. <stringProp name="Argument.value">1</stringProp>
  90973. <stringProp name="Argument.metadata">=</stringProp>
  90974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90975. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  90976. </elementProp>
  90977. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  90978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90979. <stringProp name="Argument.value">101</stringProp>
  90980. <stringProp name="Argument.metadata">=</stringProp>
  90981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90982. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  90983. </elementProp>
  90984. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  90985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90986. <stringProp name="Argument.value">99</stringProp>
  90987. <stringProp name="Argument.metadata">=</stringProp>
  90988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90989. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  90990. </elementProp>
  90991. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  90992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  90993. <stringProp name="Argument.value"/>
  90994. <stringProp name="Argument.metadata">=</stringProp>
  90995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  90996. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  90997. </elementProp>
  90998. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  90999. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91000. <stringProp name="Argument.value">1</stringProp>
  91001. <stringProp name="Argument.metadata">=</stringProp>
  91002. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91003. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  91004. </elementProp>
  91005. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  91006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91007. <stringProp name="Argument.value">100500</stringProp>
  91008. <stringProp name="Argument.metadata">=</stringProp>
  91009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91010. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  91011. </elementProp>
  91012. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  91013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91014. <stringProp name="Argument.value">100500</stringProp>
  91015. <stringProp name="Argument.metadata">=</stringProp>
  91016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91017. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  91018. </elementProp>
  91019. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  91020. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91021. <stringProp name="Argument.value">0</stringProp>
  91022. <stringProp name="Argument.metadata">=</stringProp>
  91023. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91024. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  91025. </elementProp>
  91026. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  91027. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91028. <stringProp name="Argument.value">1</stringProp>
  91029. <stringProp name="Argument.metadata">=</stringProp>
  91030. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91031. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  91032. </elementProp>
  91033. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  91034. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91035. <stringProp name="Argument.value">1</stringProp>
  91036. <stringProp name="Argument.metadata">=</stringProp>
  91037. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91038. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  91039. </elementProp>
  91040. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  91041. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91042. <stringProp name="Argument.value">1</stringProp>
  91043. <stringProp name="Argument.metadata">=</stringProp>
  91044. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91045. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  91046. </elementProp>
  91047. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  91048. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91049. <stringProp name="Argument.value">10000</stringProp>
  91050. <stringProp name="Argument.metadata">=</stringProp>
  91051. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91052. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  91053. </elementProp>
  91054. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  91055. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91056. <stringProp name="Argument.value">1</stringProp>
  91057. <stringProp name="Argument.metadata">=</stringProp>
  91058. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91059. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  91060. </elementProp>
  91061. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  91062. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91063. <stringProp name="Argument.value">0</stringProp>
  91064. <stringProp name="Argument.metadata">=</stringProp>
  91065. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91066. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  91067. </elementProp>
  91068. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  91069. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91070. <stringProp name="Argument.value">0</stringProp>
  91071. <stringProp name="Argument.metadata">=</stringProp>
  91072. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91073. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  91074. </elementProp>
  91075. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  91076. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91077. <stringProp name="Argument.value">0</stringProp>
  91078. <stringProp name="Argument.metadata">=</stringProp>
  91079. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91080. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  91081. </elementProp>
  91082. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  91083. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91084. <stringProp name="Argument.value">1</stringProp>
  91085. <stringProp name="Argument.metadata">=</stringProp>
  91086. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91087. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  91088. </elementProp>
  91089. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  91090. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91091. <stringProp name="Argument.value">1</stringProp>
  91092. <stringProp name="Argument.metadata">=</stringProp>
  91093. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91094. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  91095. </elementProp>
  91096. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  91097. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91098. <stringProp name="Argument.value">0</stringProp>
  91099. <stringProp name="Argument.metadata">=</stringProp>
  91100. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91101. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  91102. </elementProp>
  91103. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  91104. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91105. <stringProp name="Argument.value">0</stringProp>
  91106. <stringProp name="Argument.metadata">=</stringProp>
  91107. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91108. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  91109. </elementProp>
  91110. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  91111. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91112. <stringProp name="Argument.value">1</stringProp>
  91113. <stringProp name="Argument.metadata">=</stringProp>
  91114. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91115. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  91116. </elementProp>
  91117. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  91118. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91119. <stringProp name="Argument.value">1</stringProp>
  91120. <stringProp name="Argument.metadata">=</stringProp>
  91121. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91122. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  91123. </elementProp>
  91124. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  91125. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91126. <stringProp name="Argument.value"/>
  91127. <stringProp name="Argument.metadata">=</stringProp>
  91128. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91129. <stringProp name="Argument.name">product[custom_design]</stringProp>
  91130. </elementProp>
  91131. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  91132. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91133. <stringProp name="Argument.value"/>
  91134. <stringProp name="Argument.metadata">=</stringProp>
  91135. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91136. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  91137. </elementProp>
  91138. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  91139. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91140. <stringProp name="Argument.value"/>
  91141. <stringProp name="Argument.metadata">=</stringProp>
  91142. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91143. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  91144. </elementProp>
  91145. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  91146. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91147. <stringProp name="Argument.value"/>
  91148. <stringProp name="Argument.metadata">=</stringProp>
  91149. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91150. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  91151. </elementProp>
  91152. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  91153. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91154. <stringProp name="Argument.value"/>
  91155. <stringProp name="Argument.metadata">=</stringProp>
  91156. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91157. <stringProp name="Argument.name">product[page_layout]</stringProp>
  91158. </elementProp>
  91159. <elementProp name="product[options_container]" elementType="HTTPArgument">
  91160. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91161. <stringProp name="Argument.value">container2</stringProp>
  91162. <stringProp name="Argument.metadata">=</stringProp>
  91163. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91164. <stringProp name="Argument.name">product[options_container]</stringProp>
  91165. </elementProp>
  91166. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  91167. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91168. <stringProp name="Argument.value"/>
  91169. <stringProp name="Argument.metadata">=</stringProp>
  91170. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91171. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  91172. </elementProp>
  91173. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  91174. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91175. <stringProp name="Argument.value">0</stringProp>
  91176. <stringProp name="Argument.metadata">=</stringProp>
  91177. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91178. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  91179. </elementProp>
  91180. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  91181. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91182. <stringProp name="Argument.value">option title one</stringProp>
  91183. <stringProp name="Argument.metadata">=</stringProp>
  91184. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91185. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  91186. </elementProp>
  91187. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  91188. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91189. <stringProp name="Argument.value"/>
  91190. <stringProp name="Argument.metadata">=</stringProp>
  91191. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91192. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  91193. </elementProp>
  91194. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  91195. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91196. <stringProp name="Argument.value"/>
  91197. <stringProp name="Argument.metadata">=</stringProp>
  91198. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91199. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  91200. </elementProp>
  91201. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  91202. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91203. <stringProp name="Argument.value">select</stringProp>
  91204. <stringProp name="Argument.metadata">=</stringProp>
  91205. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91206. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  91207. </elementProp>
  91208. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  91209. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91210. <stringProp name="Argument.value">1</stringProp>
  91211. <stringProp name="Argument.metadata">=</stringProp>
  91212. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91213. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  91214. </elementProp>
  91215. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  91216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91217. <stringProp name="Argument.value">0</stringProp>
  91218. <stringProp name="Argument.metadata">=</stringProp>
  91219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91220. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  91221. </elementProp>
  91222. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  91223. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91224. <stringProp name="Argument.value"/>
  91225. <stringProp name="Argument.metadata">=</stringProp>
  91226. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91227. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  91228. </elementProp>
  91229. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  91230. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91231. <stringProp name="Argument.value"/>
  91232. <stringProp name="Argument.metadata">=</stringProp>
  91233. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91234. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  91235. </elementProp>
  91236. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  91237. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91238. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  91239. <stringProp name="Argument.metadata">=</stringProp>
  91240. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91241. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  91242. </elementProp>
  91243. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  91244. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91245. <stringProp name="Argument.value"/>
  91246. <stringProp name="Argument.metadata">=</stringProp>
  91247. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91248. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  91249. </elementProp>
  91250. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  91251. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91252. <stringProp name="Argument.value">25</stringProp>
  91253. <stringProp name="Argument.metadata">=</stringProp>
  91254. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91255. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  91256. </elementProp>
  91257. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  91258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91259. <stringProp name="Argument.value">1</stringProp>
  91260. <stringProp name="Argument.metadata">=</stringProp>
  91261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91262. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  91263. </elementProp>
  91264. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  91265. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91266. <stringProp name="Argument.value">1</stringProp>
  91267. <stringProp name="Argument.metadata">=</stringProp>
  91268. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91269. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  91270. </elementProp>
  91271. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  91272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91273. <stringProp name="Argument.value">1</stringProp>
  91274. <stringProp name="Argument.metadata">=</stringProp>
  91275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91276. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  91277. </elementProp>
  91278. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  91279. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91280. <stringProp name="Argument.value">0</stringProp>
  91281. <stringProp name="Argument.metadata">=</stringProp>
  91282. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91283. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  91284. </elementProp>
  91285. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  91286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91287. <stringProp name="Argument.value"/>
  91288. <stringProp name="Argument.metadata">=</stringProp>
  91289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91290. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  91291. </elementProp>
  91292. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  91293. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91294. <stringProp name="Argument.value"/>
  91295. <stringProp name="Argument.metadata">=</stringProp>
  91296. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91297. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  91298. </elementProp>
  91299. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  91300. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91301. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  91302. <stringProp name="Argument.metadata">=</stringProp>
  91303. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91304. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  91305. </elementProp>
  91306. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  91307. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91308. <stringProp name="Argument.value"/>
  91309. <stringProp name="Argument.metadata">=</stringProp>
  91310. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91311. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  91312. </elementProp>
  91313. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  91314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91315. <stringProp name="Argument.value">10.99</stringProp>
  91316. <stringProp name="Argument.metadata">=</stringProp>
  91317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91318. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  91319. </elementProp>
  91320. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  91321. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91322. <stringProp name="Argument.value">0</stringProp>
  91323. <stringProp name="Argument.metadata">=</stringProp>
  91324. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91325. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  91326. </elementProp>
  91327. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  91328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91329. <stringProp name="Argument.value">1</stringProp>
  91330. <stringProp name="Argument.metadata">=</stringProp>
  91331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91332. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  91333. </elementProp>
  91334. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  91335. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91336. <stringProp name="Argument.value">1</stringProp>
  91337. <stringProp name="Argument.metadata">=</stringProp>
  91338. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91339. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  91340. </elementProp>
  91341. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  91342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91343. <stringProp name="Argument.value">1</stringProp>
  91344. <stringProp name="Argument.metadata">=</stringProp>
  91345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91346. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  91347. </elementProp>
  91348. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  91349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91350. <stringProp name="Argument.value">option title two</stringProp>
  91351. <stringProp name="Argument.metadata">=</stringProp>
  91352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91353. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  91354. </elementProp>
  91355. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  91356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91357. <stringProp name="Argument.value"/>
  91358. <stringProp name="Argument.metadata">=</stringProp>
  91359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91360. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  91361. </elementProp>
  91362. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  91363. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91364. <stringProp name="Argument.value"/>
  91365. <stringProp name="Argument.metadata">=</stringProp>
  91366. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91367. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  91368. </elementProp>
  91369. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  91370. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91371. <stringProp name="Argument.value">select</stringProp>
  91372. <stringProp name="Argument.metadata">=</stringProp>
  91373. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91374. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  91375. </elementProp>
  91376. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  91377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91378. <stringProp name="Argument.value">1</stringProp>
  91379. <stringProp name="Argument.metadata">=</stringProp>
  91380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91381. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  91382. </elementProp>
  91383. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  91384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91385. <stringProp name="Argument.value">1</stringProp>
  91386. <stringProp name="Argument.metadata">=</stringProp>
  91387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91388. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  91389. </elementProp>
  91390. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  91391. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91392. <stringProp name="Argument.value"/>
  91393. <stringProp name="Argument.metadata">=</stringProp>
  91394. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91395. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  91396. <stringProp name="Argument.desc">true</stringProp>
  91397. </elementProp>
  91398. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  91399. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91400. <stringProp name="Argument.value"/>
  91401. <stringProp name="Argument.metadata">=</stringProp>
  91402. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91403. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  91404. <stringProp name="Argument.desc">true</stringProp>
  91405. </elementProp>
  91406. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  91407. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91408. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  91409. <stringProp name="Argument.metadata">=</stringProp>
  91410. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91411. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  91412. <stringProp name="Argument.desc">true</stringProp>
  91413. </elementProp>
  91414. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  91415. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91416. <stringProp name="Argument.value"/>
  91417. <stringProp name="Argument.metadata">=</stringProp>
  91418. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91419. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  91420. <stringProp name="Argument.desc">true</stringProp>
  91421. </elementProp>
  91422. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  91423. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91424. <stringProp name="Argument.value">5.00</stringProp>
  91425. <stringProp name="Argument.metadata">=</stringProp>
  91426. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91427. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  91428. <stringProp name="Argument.desc">true</stringProp>
  91429. </elementProp>
  91430. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  91431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91432. <stringProp name="Argument.value">0</stringProp>
  91433. <stringProp name="Argument.metadata">=</stringProp>
  91434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91435. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  91436. <stringProp name="Argument.desc">true</stringProp>
  91437. </elementProp>
  91438. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  91439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91440. <stringProp name="Argument.value">1</stringProp>
  91441. <stringProp name="Argument.metadata">=</stringProp>
  91442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91443. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  91444. <stringProp name="Argument.desc">true</stringProp>
  91445. </elementProp>
  91446. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  91447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91448. <stringProp name="Argument.value">1</stringProp>
  91449. <stringProp name="Argument.metadata">=</stringProp>
  91450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91451. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  91452. <stringProp name="Argument.desc">true</stringProp>
  91453. </elementProp>
  91454. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  91455. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91456. <stringProp name="Argument.value">0</stringProp>
  91457. <stringProp name="Argument.metadata">=</stringProp>
  91458. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91459. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  91460. <stringProp name="Argument.desc">true</stringProp>
  91461. </elementProp>
  91462. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  91463. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91464. <stringProp name="Argument.value"/>
  91465. <stringProp name="Argument.metadata">=</stringProp>
  91466. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91467. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  91468. <stringProp name="Argument.desc">true</stringProp>
  91469. </elementProp>
  91470. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  91471. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91472. <stringProp name="Argument.value"/>
  91473. <stringProp name="Argument.metadata">=</stringProp>
  91474. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91475. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  91476. <stringProp name="Argument.desc">true</stringProp>
  91477. </elementProp>
  91478. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  91479. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91480. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  91481. <stringProp name="Argument.metadata">=</stringProp>
  91482. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91483. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  91484. <stringProp name="Argument.desc">true</stringProp>
  91485. </elementProp>
  91486. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  91487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91488. <stringProp name="Argument.value"/>
  91489. <stringProp name="Argument.metadata">=</stringProp>
  91490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91491. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  91492. <stringProp name="Argument.desc">true</stringProp>
  91493. </elementProp>
  91494. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  91495. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91496. <stringProp name="Argument.value">7.00</stringProp>
  91497. <stringProp name="Argument.metadata">=</stringProp>
  91498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91499. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  91500. <stringProp name="Argument.desc">true</stringProp>
  91501. </elementProp>
  91502. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  91503. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91504. <stringProp name="Argument.value">0</stringProp>
  91505. <stringProp name="Argument.metadata">=</stringProp>
  91506. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91507. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  91508. <stringProp name="Argument.desc">true</stringProp>
  91509. </elementProp>
  91510. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  91511. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91512. <stringProp name="Argument.value">1</stringProp>
  91513. <stringProp name="Argument.metadata">=</stringProp>
  91514. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91515. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  91516. <stringProp name="Argument.desc">true</stringProp>
  91517. </elementProp>
  91518. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  91519. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91520. <stringProp name="Argument.value">1</stringProp>
  91521. <stringProp name="Argument.metadata">=</stringProp>
  91522. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91523. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  91524. <stringProp name="Argument.desc">true</stringProp>
  91525. </elementProp>
  91526. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  91527. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91528. <stringProp name="Argument.value">1</stringProp>
  91529. <stringProp name="Argument.metadata">=</stringProp>
  91530. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91531. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  91532. <stringProp name="Argument.desc">true</stringProp>
  91533. </elementProp>
  91534. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  91535. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91536. <stringProp name="Argument.value">2</stringProp>
  91537. <stringProp name="Argument.metadata">=</stringProp>
  91538. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91539. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  91540. <stringProp name="Argument.desc">true</stringProp>
  91541. </elementProp>
  91542. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  91543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91544. <stringProp name="Argument.value">${related_product_id}</stringProp>
  91545. <stringProp name="Argument.metadata">=</stringProp>
  91546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91547. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  91548. </elementProp>
  91549. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  91550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91551. <stringProp name="Argument.value">1</stringProp>
  91552. <stringProp name="Argument.metadata">=</stringProp>
  91553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91554. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  91555. </elementProp>
  91556. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  91557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91558. <stringProp name="Argument.value">${related_product_id}</stringProp>
  91559. <stringProp name="Argument.metadata">=</stringProp>
  91560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91561. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  91562. </elementProp>
  91563. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  91564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91565. <stringProp name="Argument.value">1</stringProp>
  91566. <stringProp name="Argument.metadata">=</stringProp>
  91567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91568. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  91569. </elementProp>
  91570. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  91571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91572. <stringProp name="Argument.value">${related_product_id}</stringProp>
  91573. <stringProp name="Argument.metadata">=</stringProp>
  91574. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91575. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  91576. </elementProp>
  91577. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  91578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91579. <stringProp name="Argument.value">1</stringProp>
  91580. <stringProp name="Argument.metadata">=</stringProp>
  91581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91582. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  91583. </elementProp>
  91584. </collectionProp>
  91585. </elementProp>
  91586. <stringProp name="HTTPSampler.domain"/>
  91587. <stringProp name="HTTPSampler.port"/>
  91588. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  91589. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  91590. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  91591. <stringProp name="HTTPSampler.contentEncoding"/>
  91592. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  91593. <stringProp name="HTTPSampler.method">POST</stringProp>
  91594. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  91595. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  91596. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  91597. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  91598. <boolProp name="HTTPSampler.monitor">false</boolProp>
  91599. <stringProp name="HTTPSampler.embedded_url_re"/>
  91600. </HTTPSamplerProxy>
  91601. <hashTree>
  91602. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  91603. <collectionProp name="Asserion.test_strings">
  91604. <stringProp name="1853918323">{"error":false}</stringProp>
  91605. </collectionProp>
  91606. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  91607. <boolProp name="Assertion.assume_success">false</boolProp>
  91608. <intProp name="Assertion.test_type">2</intProp>
  91609. </ResponseAssertion>
  91610. <hashTree/>
  91611. </hashTree>
  91612. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Bundle Product Save" enabled="true">
  91613. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  91614. <collectionProp name="Arguments.arguments">
  91615. <elementProp name="ajax" elementType="HTTPArgument">
  91616. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91617. <stringProp name="Argument.value">true</stringProp>
  91618. <stringProp name="Argument.metadata">=</stringProp>
  91619. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91620. <stringProp name="Argument.name">ajax</stringProp>
  91621. <stringProp name="Argument.desc">false</stringProp>
  91622. </elementProp>
  91623. <elementProp name="isAjax" elementType="HTTPArgument">
  91624. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91625. <stringProp name="Argument.value">true</stringProp>
  91626. <stringProp name="Argument.metadata">=</stringProp>
  91627. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91628. <stringProp name="Argument.name">isAjax</stringProp>
  91629. <stringProp name="Argument.desc">false</stringProp>
  91630. </elementProp>
  91631. <elementProp name="form_key" elementType="HTTPArgument">
  91632. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91633. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  91634. <stringProp name="Argument.metadata">=</stringProp>
  91635. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91636. <stringProp name="Argument.name">form_key</stringProp>
  91637. <stringProp name="Argument.desc">false</stringProp>
  91638. </elementProp>
  91639. <elementProp name="product[name]" elementType="HTTPArgument">
  91640. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91641. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  91642. <stringProp name="Argument.metadata">=</stringProp>
  91643. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91644. <stringProp name="Argument.name">product[name]</stringProp>
  91645. <stringProp name="Argument.desc">false</stringProp>
  91646. </elementProp>
  91647. <elementProp name="product[sku]" elementType="HTTPArgument">
  91648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91649. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  91650. <stringProp name="Argument.metadata">=</stringProp>
  91651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91652. <stringProp name="Argument.name">product[sku]</stringProp>
  91653. <stringProp name="Argument.desc">false</stringProp>
  91654. </elementProp>
  91655. <elementProp name="product[price]" elementType="HTTPArgument">
  91656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91657. <stringProp name="Argument.value">42</stringProp>
  91658. <stringProp name="Argument.metadata">=</stringProp>
  91659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91660. <stringProp name="Argument.name">product[price]</stringProp>
  91661. </elementProp>
  91662. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  91663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91664. <stringProp name="Argument.value">2</stringProp>
  91665. <stringProp name="Argument.metadata">=</stringProp>
  91666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91667. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  91668. </elementProp>
  91669. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  91670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91671. <stringProp name="Argument.value">111</stringProp>
  91672. <stringProp name="Argument.metadata">=</stringProp>
  91673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91674. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  91675. </elementProp>
  91676. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  91677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91678. <stringProp name="Argument.value">1</stringProp>
  91679. <stringProp name="Argument.metadata">=</stringProp>
  91680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91681. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  91682. </elementProp>
  91683. <elementProp name="product[weight]" elementType="HTTPArgument">
  91684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91685. <stringProp name="Argument.value">1.0000</stringProp>
  91686. <stringProp name="Argument.metadata">=</stringProp>
  91687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91688. <stringProp name="Argument.name">product[weight]</stringProp>
  91689. </elementProp>
  91690. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  91691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91692. <stringProp name="Argument.value">1</stringProp>
  91693. <stringProp name="Argument.metadata">=</stringProp>
  91694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91695. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  91696. <stringProp name="Argument.desc">true</stringProp>
  91697. </elementProp>
  91698. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  91699. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91700. <stringProp name="Argument.value">2</stringProp>
  91701. <stringProp name="Argument.metadata">=</stringProp>
  91702. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91703. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  91704. </elementProp>
  91705. <elementProp name="product[description]" elementType="HTTPArgument">
  91706. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91707. <stringProp name="Argument.value">&lt;p&gt;Full bundle product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  91708. <stringProp name="Argument.metadata">=</stringProp>
  91709. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91710. <stringProp name="Argument.name">product[description]</stringProp>
  91711. </elementProp>
  91712. <elementProp name="product[short_description]" elementType="HTTPArgument">
  91713. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91714. <stringProp name="Argument.value">&lt;p&gt;Short bundle product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  91715. <stringProp name="Argument.metadata">=</stringProp>
  91716. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91717. <stringProp name="Argument.name">product[short_description]</stringProp>
  91718. </elementProp>
  91719. <elementProp name="product[status]" elementType="HTTPArgument">
  91720. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91721. <stringProp name="Argument.value">1</stringProp>
  91722. <stringProp name="Argument.metadata">=</stringProp>
  91723. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91724. <stringProp name="Argument.name">product[status]</stringProp>
  91725. </elementProp>
  91726. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  91727. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91728. <stringProp name="Argument.value"/>
  91729. <stringProp name="Argument.metadata">=</stringProp>
  91730. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91731. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  91732. </elementProp>
  91733. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  91734. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91735. <stringProp name="Argument.value">1</stringProp>
  91736. <stringProp name="Argument.metadata">=</stringProp>
  91737. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91738. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  91739. </elementProp>
  91740. <elementProp name="product[image]" elementType="HTTPArgument">
  91741. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91742. <stringProp name="Argument.value"/>
  91743. <stringProp name="Argument.metadata">=</stringProp>
  91744. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91745. <stringProp name="Argument.name">product[image]</stringProp>
  91746. </elementProp>
  91747. <elementProp name="product[small_image]" elementType="HTTPArgument">
  91748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91749. <stringProp name="Argument.value"/>
  91750. <stringProp name="Argument.metadata">=</stringProp>
  91751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91752. <stringProp name="Argument.name">product[small_image]</stringProp>
  91753. </elementProp>
  91754. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  91755. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91756. <stringProp name="Argument.value"/>
  91757. <stringProp name="Argument.metadata">=</stringProp>
  91758. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91759. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  91760. </elementProp>
  91761. <elementProp name="product[url_key]" elementType="HTTPArgument">
  91762. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91763. <stringProp name="Argument.value">bundle-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  91764. <stringProp name="Argument.metadata">=</stringProp>
  91765. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91766. <stringProp name="Argument.name">product[url_key]</stringProp>
  91767. </elementProp>
  91768. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  91769. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91770. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  91771. <stringProp name="Argument.metadata">=</stringProp>
  91772. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91773. <stringProp name="Argument.name">product[meta_title]</stringProp>
  91774. </elementProp>
  91775. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  91776. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91777. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  91778. <stringProp name="Argument.metadata">=</stringProp>
  91779. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91780. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  91781. </elementProp>
  91782. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  91783. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91784. <stringProp name="Argument.value">Bundle Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  91785. <stringProp name="Argument.metadata">=</stringProp>
  91786. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91787. <stringProp name="Argument.name">product[meta_description]</stringProp>
  91788. </elementProp>
  91789. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  91790. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91791. <stringProp name="Argument.value">1</stringProp>
  91792. <stringProp name="Argument.metadata">=</stringProp>
  91793. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91794. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  91795. </elementProp>
  91796. <elementProp name="product[special_price]" elementType="HTTPArgument">
  91797. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91798. <stringProp name="Argument.value">99</stringProp>
  91799. <stringProp name="Argument.metadata">=</stringProp>
  91800. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91801. <stringProp name="Argument.name">product[special_price]</stringProp>
  91802. </elementProp>
  91803. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  91804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91805. <stringProp name="Argument.value"/>
  91806. <stringProp name="Argument.metadata">=</stringProp>
  91807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91808. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  91809. </elementProp>
  91810. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  91811. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91812. <stringProp name="Argument.value"/>
  91813. <stringProp name="Argument.metadata">=</stringProp>
  91814. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91815. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  91816. </elementProp>
  91817. <elementProp name="product[cost]" elementType="HTTPArgument">
  91818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91819. <stringProp name="Argument.value"/>
  91820. <stringProp name="Argument.metadata">=</stringProp>
  91821. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91822. <stringProp name="Argument.name">product[cost]</stringProp>
  91823. </elementProp>
  91824. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  91825. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91826. <stringProp name="Argument.value">0</stringProp>
  91827. <stringProp name="Argument.metadata">=</stringProp>
  91828. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91829. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  91830. </elementProp>
  91831. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  91832. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91833. <stringProp name="Argument.value">32000</stringProp>
  91834. <stringProp name="Argument.metadata">=</stringProp>
  91835. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91836. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  91837. </elementProp>
  91838. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  91839. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91840. <stringProp name="Argument.value">100</stringProp>
  91841. <stringProp name="Argument.metadata">=</stringProp>
  91842. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91843. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  91844. </elementProp>
  91845. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  91846. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91847. <stringProp name="Argument.value">90</stringProp>
  91848. <stringProp name="Argument.metadata">=</stringProp>
  91849. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91850. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  91851. </elementProp>
  91852. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  91853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91854. <stringProp name="Argument.value"/>
  91855. <stringProp name="Argument.metadata">=</stringProp>
  91856. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91857. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  91858. </elementProp>
  91859. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  91860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91861. <stringProp name="Argument.value">0</stringProp>
  91862. <stringProp name="Argument.metadata">=</stringProp>
  91863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91864. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  91865. </elementProp>
  91866. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  91867. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91868. <stringProp name="Argument.value">1</stringProp>
  91869. <stringProp name="Argument.metadata">=</stringProp>
  91870. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91871. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  91872. </elementProp>
  91873. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  91874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91875. <stringProp name="Argument.value">101</stringProp>
  91876. <stringProp name="Argument.metadata">=</stringProp>
  91877. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91878. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  91879. </elementProp>
  91880. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  91881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91882. <stringProp name="Argument.value">99</stringProp>
  91883. <stringProp name="Argument.metadata">=</stringProp>
  91884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91885. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  91886. </elementProp>
  91887. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  91888. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91889. <stringProp name="Argument.value"/>
  91890. <stringProp name="Argument.metadata">=</stringProp>
  91891. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91892. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  91893. </elementProp>
  91894. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  91895. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91896. <stringProp name="Argument.value">1</stringProp>
  91897. <stringProp name="Argument.metadata">=</stringProp>
  91898. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91899. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  91900. </elementProp>
  91901. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  91902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91903. <stringProp name="Argument.value">100500</stringProp>
  91904. <stringProp name="Argument.metadata">=</stringProp>
  91905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91906. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  91907. </elementProp>
  91908. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  91909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91910. <stringProp name="Argument.value">100500</stringProp>
  91911. <stringProp name="Argument.metadata">=</stringProp>
  91912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91913. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  91914. </elementProp>
  91915. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  91916. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91917. <stringProp name="Argument.value">0</stringProp>
  91918. <stringProp name="Argument.metadata">=</stringProp>
  91919. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91920. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  91921. </elementProp>
  91922. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  91923. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91924. <stringProp name="Argument.value">1</stringProp>
  91925. <stringProp name="Argument.metadata">=</stringProp>
  91926. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91927. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  91928. </elementProp>
  91929. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  91930. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91931. <stringProp name="Argument.value">1</stringProp>
  91932. <stringProp name="Argument.metadata">=</stringProp>
  91933. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91934. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  91935. </elementProp>
  91936. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  91937. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91938. <stringProp name="Argument.value">1</stringProp>
  91939. <stringProp name="Argument.metadata">=</stringProp>
  91940. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91941. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  91942. </elementProp>
  91943. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  91944. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91945. <stringProp name="Argument.value">10000</stringProp>
  91946. <stringProp name="Argument.metadata">=</stringProp>
  91947. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91948. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  91949. </elementProp>
  91950. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  91951. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91952. <stringProp name="Argument.value">1</stringProp>
  91953. <stringProp name="Argument.metadata">=</stringProp>
  91954. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91955. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  91956. </elementProp>
  91957. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  91958. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91959. <stringProp name="Argument.value">0</stringProp>
  91960. <stringProp name="Argument.metadata">=</stringProp>
  91961. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91962. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  91963. </elementProp>
  91964. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  91965. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91966. <stringProp name="Argument.value">0</stringProp>
  91967. <stringProp name="Argument.metadata">=</stringProp>
  91968. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91969. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  91970. </elementProp>
  91971. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  91972. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91973. <stringProp name="Argument.value">0</stringProp>
  91974. <stringProp name="Argument.metadata">=</stringProp>
  91975. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91976. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  91977. </elementProp>
  91978. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  91979. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91980. <stringProp name="Argument.value">1</stringProp>
  91981. <stringProp name="Argument.metadata">=</stringProp>
  91982. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91983. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  91984. </elementProp>
  91985. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  91986. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91987. <stringProp name="Argument.value">1</stringProp>
  91988. <stringProp name="Argument.metadata">=</stringProp>
  91989. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91990. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  91991. </elementProp>
  91992. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  91993. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  91994. <stringProp name="Argument.value">1</stringProp>
  91995. <stringProp name="Argument.metadata">=</stringProp>
  91996. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  91997. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  91998. </elementProp>
  91999. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  92000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92001. <stringProp name="Argument.value">0</stringProp>
  92002. <stringProp name="Argument.metadata">=</stringProp>
  92003. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92004. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  92005. </elementProp>
  92006. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  92007. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92008. <stringProp name="Argument.value">0</stringProp>
  92009. <stringProp name="Argument.metadata">=</stringProp>
  92010. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92011. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  92012. </elementProp>
  92013. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  92014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92015. <stringProp name="Argument.value">1</stringProp>
  92016. <stringProp name="Argument.metadata">=</stringProp>
  92017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92018. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  92019. </elementProp>
  92020. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  92021. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92022. <stringProp name="Argument.value">1</stringProp>
  92023. <stringProp name="Argument.metadata">=</stringProp>
  92024. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92025. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  92026. </elementProp>
  92027. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  92028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92029. <stringProp name="Argument.value"/>
  92030. <stringProp name="Argument.metadata">=</stringProp>
  92031. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92032. <stringProp name="Argument.name">product[custom_design]</stringProp>
  92033. </elementProp>
  92034. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  92035. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92036. <stringProp name="Argument.value"/>
  92037. <stringProp name="Argument.metadata">=</stringProp>
  92038. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92039. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  92040. </elementProp>
  92041. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  92042. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92043. <stringProp name="Argument.value"/>
  92044. <stringProp name="Argument.metadata">=</stringProp>
  92045. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92046. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  92047. </elementProp>
  92048. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  92049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92050. <stringProp name="Argument.value"/>
  92051. <stringProp name="Argument.metadata">=</stringProp>
  92052. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92053. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  92054. </elementProp>
  92055. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  92056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92057. <stringProp name="Argument.value"/>
  92058. <stringProp name="Argument.metadata">=</stringProp>
  92059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92060. <stringProp name="Argument.name">product[page_layout]</stringProp>
  92061. </elementProp>
  92062. <elementProp name="product[options_container]" elementType="HTTPArgument">
  92063. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92064. <stringProp name="Argument.value">container2</stringProp>
  92065. <stringProp name="Argument.metadata">=</stringProp>
  92066. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92067. <stringProp name="Argument.name">product[options_container]</stringProp>
  92068. </elementProp>
  92069. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  92070. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92071. <stringProp name="Argument.value"/>
  92072. <stringProp name="Argument.metadata">=</stringProp>
  92073. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92074. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  92075. </elementProp>
  92076. <elementProp name="product[shipment_type]" elementType="HTTPArgument">
  92077. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92078. <stringProp name="Argument.value">0</stringProp>
  92079. <stringProp name="Argument.metadata">=</stringProp>
  92080. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92081. <stringProp name="Argument.name">product[shipment_type]</stringProp>
  92082. <stringProp name="Argument.desc">false</stringProp>
  92083. </elementProp>
  92084. <elementProp name="bundle_options[bundle_options][0][title]" elementType="HTTPArgument">
  92085. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92086. <stringProp name="Argument.value">option title one</stringProp>
  92087. <stringProp name="Argument.metadata">=</stringProp>
  92088. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92089. <stringProp name="Argument.name">bundle_options[bundle_options][0][title]</stringProp>
  92090. <stringProp name="Argument.desc">false</stringProp>
  92091. </elementProp>
  92092. <elementProp name="bundle_options[bundle_options][0][option_id]" elementType="HTTPArgument">
  92093. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92094. <stringProp name="Argument.value"/>
  92095. <stringProp name="Argument.metadata">=</stringProp>
  92096. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92097. <stringProp name="Argument.name">bundle_options[bundle_options][0][option_id]</stringProp>
  92098. <stringProp name="Argument.desc">false</stringProp>
  92099. </elementProp>
  92100. <elementProp name="bundle_options[bundle_options][0][delete]" elementType="HTTPArgument">
  92101. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92102. <stringProp name="Argument.value"/>
  92103. <stringProp name="Argument.metadata">=</stringProp>
  92104. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92105. <stringProp name="Argument.name">bundle_options[bundle_options][0][delete]</stringProp>
  92106. <stringProp name="Argument.desc">false</stringProp>
  92107. </elementProp>
  92108. <elementProp name="bundle_options[bundle_options][0][type]" elementType="HTTPArgument">
  92109. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92110. <stringProp name="Argument.value">select</stringProp>
  92111. <stringProp name="Argument.metadata">=</stringProp>
  92112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92113. <stringProp name="Argument.name">bundle_options[bundle_options][0][type]</stringProp>
  92114. <stringProp name="Argument.desc">false</stringProp>
  92115. </elementProp>
  92116. <elementProp name="bundle_options[bundle_options][0][required]" elementType="HTTPArgument">
  92117. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92118. <stringProp name="Argument.value">1</stringProp>
  92119. <stringProp name="Argument.metadata">=</stringProp>
  92120. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92121. <stringProp name="Argument.name">bundle_options[bundle_options][0][required]</stringProp>
  92122. <stringProp name="Argument.desc">false</stringProp>
  92123. </elementProp>
  92124. <elementProp name="bundle_options[bundle_options][0][position]" elementType="HTTPArgument">
  92125. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92126. <stringProp name="Argument.value">0</stringProp>
  92127. <stringProp name="Argument.metadata">=</stringProp>
  92128. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92129. <stringProp name="Argument.name">bundle_options[bundle_options][0][position]</stringProp>
  92130. <stringProp name="Argument.desc">false</stringProp>
  92131. </elementProp>
  92132. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  92133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92134. <stringProp name="Argument.value"/>
  92135. <stringProp name="Argument.metadata">=</stringProp>
  92136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92137. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_id]</stringProp>
  92138. <stringProp name="Argument.desc">false</stringProp>
  92139. </elementProp>
  92140. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][option_id]" elementType="HTTPArgument">
  92141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92142. <stringProp name="Argument.value"/>
  92143. <stringProp name="Argument.metadata">=</stringProp>
  92144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92145. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][option_id]</stringProp>
  92146. <stringProp name="Argument.desc">false</stringProp>
  92147. </elementProp>
  92148. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][product_id]" elementType="HTTPArgument">
  92149. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92150. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  92151. <stringProp name="Argument.metadata">=</stringProp>
  92152. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92153. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][product_id]</stringProp>
  92154. <stringProp name="Argument.desc">false</stringProp>
  92155. </elementProp>
  92156. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][delete]" elementType="HTTPArgument">
  92157. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92158. <stringProp name="Argument.value"/>
  92159. <stringProp name="Argument.metadata">=</stringProp>
  92160. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92161. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][delete]</stringProp>
  92162. <stringProp name="Argument.desc">false</stringProp>
  92163. </elementProp>
  92164. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  92165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92166. <stringProp name="Argument.value">25</stringProp>
  92167. <stringProp name="Argument.metadata">=</stringProp>
  92168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92169. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_value]</stringProp>
  92170. <stringProp name="Argument.desc">false</stringProp>
  92171. </elementProp>
  92172. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  92173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92174. <stringProp name="Argument.value">1</stringProp>
  92175. <stringProp name="Argument.metadata">=</stringProp>
  92176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92177. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_price_type]</stringProp>
  92178. <stringProp name="Argument.desc">false</stringProp>
  92179. </elementProp>
  92180. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  92181. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92182. <stringProp name="Argument.value">1</stringProp>
  92183. <stringProp name="Argument.metadata">=</stringProp>
  92184. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92185. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_qty]</stringProp>
  92186. <stringProp name="Argument.desc">false</stringProp>
  92187. </elementProp>
  92188. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  92189. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92190. <stringProp name="Argument.value">1</stringProp>
  92191. <stringProp name="Argument.metadata">=</stringProp>
  92192. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92193. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][selection_can_change_qty]</stringProp>
  92194. <stringProp name="Argument.desc">false</stringProp>
  92195. </elementProp>
  92196. <elementProp name="bundle_options[bundle_options][0][bundle_selections][0][position]" elementType="HTTPArgument">
  92197. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92198. <stringProp name="Argument.value">0</stringProp>
  92199. <stringProp name="Argument.metadata">=</stringProp>
  92200. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92201. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][0][position]</stringProp>
  92202. <stringProp name="Argument.desc">false</stringProp>
  92203. </elementProp>
  92204. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  92205. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92206. <stringProp name="Argument.value"/>
  92207. <stringProp name="Argument.metadata">=</stringProp>
  92208. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92209. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_id]</stringProp>
  92210. <stringProp name="Argument.desc">false</stringProp>
  92211. </elementProp>
  92212. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][option_id]" elementType="HTTPArgument">
  92213. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92214. <stringProp name="Argument.value"/>
  92215. <stringProp name="Argument.metadata">=</stringProp>
  92216. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92217. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][option_id]</stringProp>
  92218. <stringProp name="Argument.desc">false</stringProp>
  92219. </elementProp>
  92220. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][product_id]" elementType="HTTPArgument">
  92221. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92222. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  92223. <stringProp name="Argument.metadata">=</stringProp>
  92224. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92225. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][product_id]</stringProp>
  92226. <stringProp name="Argument.desc">false</stringProp>
  92227. </elementProp>
  92228. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][delete]" elementType="HTTPArgument">
  92229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92230. <stringProp name="Argument.value"/>
  92231. <stringProp name="Argument.metadata">=</stringProp>
  92232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92233. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][delete]</stringProp>
  92234. <stringProp name="Argument.desc">false</stringProp>
  92235. </elementProp>
  92236. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  92237. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92238. <stringProp name="Argument.value">10.99</stringProp>
  92239. <stringProp name="Argument.metadata">=</stringProp>
  92240. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92241. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_value]</stringProp>
  92242. <stringProp name="Argument.desc">false</stringProp>
  92243. </elementProp>
  92244. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  92245. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92246. <stringProp name="Argument.value">0</stringProp>
  92247. <stringProp name="Argument.metadata">=</stringProp>
  92248. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92249. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_price_type]</stringProp>
  92250. <stringProp name="Argument.desc">false</stringProp>
  92251. </elementProp>
  92252. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  92253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92254. <stringProp name="Argument.value">1</stringProp>
  92255. <stringProp name="Argument.metadata">=</stringProp>
  92256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92257. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_qty]</stringProp>
  92258. <stringProp name="Argument.desc">false</stringProp>
  92259. </elementProp>
  92260. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  92261. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92262. <stringProp name="Argument.value">1</stringProp>
  92263. <stringProp name="Argument.metadata">=</stringProp>
  92264. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92265. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][selection_can_change_qty]</stringProp>
  92266. <stringProp name="Argument.desc">false</stringProp>
  92267. </elementProp>
  92268. <elementProp name="bundle_options[bundle_options][0][bundle_selections][1][position]" elementType="HTTPArgument">
  92269. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92270. <stringProp name="Argument.value">1</stringProp>
  92271. <stringProp name="Argument.metadata">=</stringProp>
  92272. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92273. <stringProp name="Argument.name">bundle_options[bundle_options][0][bundle_selections][1][position]</stringProp>
  92274. <stringProp name="Argument.desc">false</stringProp>
  92275. </elementProp>
  92276. <elementProp name="bundle_options[bundle_options][1][title]" elementType="HTTPArgument">
  92277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92278. <stringProp name="Argument.value">option title two</stringProp>
  92279. <stringProp name="Argument.metadata">=</stringProp>
  92280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92281. <stringProp name="Argument.name">bundle_options[bundle_options][1][title]</stringProp>
  92282. <stringProp name="Argument.desc">false</stringProp>
  92283. </elementProp>
  92284. <elementProp name="bundle_options[bundle_options][1][option_id]" elementType="HTTPArgument">
  92285. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92286. <stringProp name="Argument.value"/>
  92287. <stringProp name="Argument.metadata">=</stringProp>
  92288. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92289. <stringProp name="Argument.name">bundle_options[bundle_options][1][option_id]</stringProp>
  92290. <stringProp name="Argument.desc">false</stringProp>
  92291. </elementProp>
  92292. <elementProp name="bundle_options[bundle_options][1][delete]" elementType="HTTPArgument">
  92293. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92294. <stringProp name="Argument.value"/>
  92295. <stringProp name="Argument.metadata">=</stringProp>
  92296. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92297. <stringProp name="Argument.name">bundle_options[bundle_options][1][delete]</stringProp>
  92298. <stringProp name="Argument.desc">false</stringProp>
  92299. </elementProp>
  92300. <elementProp name="bundle_options[bundle_options][1][type]" elementType="HTTPArgument">
  92301. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92302. <stringProp name="Argument.value">select</stringProp>
  92303. <stringProp name="Argument.metadata">=</stringProp>
  92304. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92305. <stringProp name="Argument.name">bundle_options[bundle_options][1][type]</stringProp>
  92306. <stringProp name="Argument.desc">false</stringProp>
  92307. </elementProp>
  92308. <elementProp name="bundle_options[bundle_options][1][required]" elementType="HTTPArgument">
  92309. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92310. <stringProp name="Argument.value">1</stringProp>
  92311. <stringProp name="Argument.metadata">=</stringProp>
  92312. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92313. <stringProp name="Argument.name">bundle_options[bundle_options][1][required]</stringProp>
  92314. <stringProp name="Argument.desc">false</stringProp>
  92315. </elementProp>
  92316. <elementProp name="bundle_options[bundle_options][1][position]" elementType="HTTPArgument">
  92317. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92318. <stringProp name="Argument.value">1</stringProp>
  92319. <stringProp name="Argument.metadata">=</stringProp>
  92320. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92321. <stringProp name="Argument.name">bundle_options[bundle_options][1][position]</stringProp>
  92322. <stringProp name="Argument.desc">false</stringProp>
  92323. </elementProp>
  92324. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_id]" elementType="HTTPArgument">
  92325. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92326. <stringProp name="Argument.value"/>
  92327. <stringProp name="Argument.metadata">=</stringProp>
  92328. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92329. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_id]</stringProp>
  92330. <stringProp name="Argument.desc">false</stringProp>
  92331. </elementProp>
  92332. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][option_id]" elementType="HTTPArgument">
  92333. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92334. <stringProp name="Argument.value"/>
  92335. <stringProp name="Argument.metadata">=</stringProp>
  92336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92337. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][option_id]</stringProp>
  92338. <stringProp name="Argument.desc">false</stringProp>
  92339. </elementProp>
  92340. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][product_id]" elementType="HTTPArgument">
  92341. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92342. <stringProp name="Argument.value">${simple_product_1_id}</stringProp>
  92343. <stringProp name="Argument.metadata">=</stringProp>
  92344. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92345. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][product_id]</stringProp>
  92346. <stringProp name="Argument.desc">false</stringProp>
  92347. </elementProp>
  92348. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][delete]" elementType="HTTPArgument">
  92349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92350. <stringProp name="Argument.value"/>
  92351. <stringProp name="Argument.metadata">=</stringProp>
  92352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92353. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][delete]</stringProp>
  92354. <stringProp name="Argument.desc">false</stringProp>
  92355. </elementProp>
  92356. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]" elementType="HTTPArgument">
  92357. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92358. <stringProp name="Argument.value">5.00</stringProp>
  92359. <stringProp name="Argument.metadata">=</stringProp>
  92360. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92361. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_value]</stringProp>
  92362. <stringProp name="Argument.desc">false</stringProp>
  92363. </elementProp>
  92364. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]" elementType="HTTPArgument">
  92365. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92366. <stringProp name="Argument.value">0</stringProp>
  92367. <stringProp name="Argument.metadata">=</stringProp>
  92368. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92369. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_price_type]</stringProp>
  92370. <stringProp name="Argument.desc">false</stringProp>
  92371. </elementProp>
  92372. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_qty]" elementType="HTTPArgument">
  92373. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92374. <stringProp name="Argument.value">1</stringProp>
  92375. <stringProp name="Argument.metadata">=</stringProp>
  92376. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92377. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_qty]</stringProp>
  92378. <stringProp name="Argument.desc">false</stringProp>
  92379. </elementProp>
  92380. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]" elementType="HTTPArgument">
  92381. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92382. <stringProp name="Argument.value">1</stringProp>
  92383. <stringProp name="Argument.metadata">=</stringProp>
  92384. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92385. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][selection_can_change_qty]</stringProp>
  92386. <stringProp name="Argument.desc">false</stringProp>
  92387. </elementProp>
  92388. <elementProp name="bundle_options[bundle_options][1][bundle_selections][0][position]" elementType="HTTPArgument">
  92389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92390. <stringProp name="Argument.value">0</stringProp>
  92391. <stringProp name="Argument.metadata">=</stringProp>
  92392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92393. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][0][position]</stringProp>
  92394. <stringProp name="Argument.desc">false</stringProp>
  92395. </elementProp>
  92396. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_id]" elementType="HTTPArgument">
  92397. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92398. <stringProp name="Argument.value"/>
  92399. <stringProp name="Argument.metadata">=</stringProp>
  92400. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92401. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_id]</stringProp>
  92402. <stringProp name="Argument.desc">false</stringProp>
  92403. </elementProp>
  92404. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][option_id]" elementType="HTTPArgument">
  92405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92406. <stringProp name="Argument.value"/>
  92407. <stringProp name="Argument.metadata">=</stringProp>
  92408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92409. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][option_id]</stringProp>
  92410. <stringProp name="Argument.desc">false</stringProp>
  92411. </elementProp>
  92412. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][product_id]" elementType="HTTPArgument">
  92413. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92414. <stringProp name="Argument.value">${simple_product_2_id}</stringProp>
  92415. <stringProp name="Argument.metadata">=</stringProp>
  92416. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92417. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][product_id]</stringProp>
  92418. <stringProp name="Argument.desc">false</stringProp>
  92419. </elementProp>
  92420. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][delete]" elementType="HTTPArgument">
  92421. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92422. <stringProp name="Argument.value"/>
  92423. <stringProp name="Argument.metadata">=</stringProp>
  92424. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92425. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][delete]</stringProp>
  92426. <stringProp name="Argument.desc">false</stringProp>
  92427. </elementProp>
  92428. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]" elementType="HTTPArgument">
  92429. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92430. <stringProp name="Argument.value">7.00</stringProp>
  92431. <stringProp name="Argument.metadata">=</stringProp>
  92432. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92433. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_value]</stringProp>
  92434. <stringProp name="Argument.desc">false</stringProp>
  92435. </elementProp>
  92436. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]" elementType="HTTPArgument">
  92437. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92438. <stringProp name="Argument.value">0</stringProp>
  92439. <stringProp name="Argument.metadata">=</stringProp>
  92440. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92441. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_price_type]</stringProp>
  92442. <stringProp name="Argument.desc">false</stringProp>
  92443. </elementProp>
  92444. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_qty]" elementType="HTTPArgument">
  92445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92446. <stringProp name="Argument.value">1</stringProp>
  92447. <stringProp name="Argument.metadata">=</stringProp>
  92448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92449. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_qty]</stringProp>
  92450. <stringProp name="Argument.desc">false</stringProp>
  92451. </elementProp>
  92452. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]" elementType="HTTPArgument">
  92453. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92454. <stringProp name="Argument.value">1</stringProp>
  92455. <stringProp name="Argument.metadata">=</stringProp>
  92456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92457. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][selection_can_change_qty]</stringProp>
  92458. <stringProp name="Argument.desc">false</stringProp>
  92459. </elementProp>
  92460. <elementProp name="bundle_options[bundle_options][1][bundle_selections][1][position]" elementType="HTTPArgument">
  92461. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92462. <stringProp name="Argument.value">1</stringProp>
  92463. <stringProp name="Argument.metadata">=</stringProp>
  92464. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92465. <stringProp name="Argument.name">bundle_options[bundle_options][1][bundle_selections][1][position]</stringProp>
  92466. <stringProp name="Argument.desc">false</stringProp>
  92467. </elementProp>
  92468. <elementProp name="affect_bundle_product_selections" elementType="HTTPArgument">
  92469. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92470. <stringProp name="Argument.value">2</stringProp>
  92471. <stringProp name="Argument.metadata">=</stringProp>
  92472. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92473. <stringProp name="Argument.name">affect_bundle_product_selections</stringProp>
  92474. <stringProp name="Argument.desc">false</stringProp>
  92475. </elementProp>
  92476. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  92477. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92478. <stringProp name="Argument.value">${related_product_id}</stringProp>
  92479. <stringProp name="Argument.metadata">=</stringProp>
  92480. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92481. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  92482. </elementProp>
  92483. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  92484. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92485. <stringProp name="Argument.value">1</stringProp>
  92486. <stringProp name="Argument.metadata">=</stringProp>
  92487. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92488. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  92489. </elementProp>
  92490. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  92491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92492. <stringProp name="Argument.value">${related_product_id}</stringProp>
  92493. <stringProp name="Argument.metadata">=</stringProp>
  92494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92495. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  92496. </elementProp>
  92497. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  92498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92499. <stringProp name="Argument.value">1</stringProp>
  92500. <stringProp name="Argument.metadata">=</stringProp>
  92501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92502. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  92503. </elementProp>
  92504. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  92505. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92506. <stringProp name="Argument.value">${related_product_id}</stringProp>
  92507. <stringProp name="Argument.metadata">=</stringProp>
  92508. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92509. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  92510. </elementProp>
  92511. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  92512. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92513. <stringProp name="Argument.value">1</stringProp>
  92514. <stringProp name="Argument.metadata">=</stringProp>
  92515. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92516. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  92517. </elementProp>
  92518. </collectionProp>
  92519. </elementProp>
  92520. <stringProp name="HTTPSampler.domain"/>
  92521. <stringProp name="HTTPSampler.port"/>
  92522. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  92523. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  92524. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  92525. <stringProp name="HTTPSampler.contentEncoding"/>
  92526. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/bundle/back/edit/active_tab/product-details/</stringProp>
  92527. <stringProp name="HTTPSampler.method">POST</stringProp>
  92528. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  92529. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  92530. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  92531. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  92532. <boolProp name="HTTPSampler.monitor">false</boolProp>
  92533. <stringProp name="HTTPSampler.embedded_url_re"/>
  92534. </HTTPSamplerProxy>
  92535. <hashTree>
  92536. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  92537. <collectionProp name="Asserion.test_strings">
  92538. <stringProp name="-583471546">You saved the product</stringProp>
  92539. <stringProp name="-1534079309">option title one</stringProp>
  92540. <stringProp name="-1534074215">option title two</stringProp>
  92541. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  92542. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  92543. </collectionProp>
  92544. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  92545. <boolProp name="Assertion.assume_success">false</boolProp>
  92546. <intProp name="Assertion.test_type">2</intProp>
  92547. </ResponseAssertion>
  92548. <hashTree/>
  92549. </hashTree>
  92550. </hashTree>
  92551. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Create Configurable Product" enabled="true">
  92552. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  92553. </GenericController>
  92554. <hashTree>
  92555. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  92556. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  92557. <collectionProp name="Arguments.arguments"/>
  92558. </elementProp>
  92559. <stringProp name="HTTPSampler.domain"/>
  92560. <stringProp name="HTTPSampler.port"/>
  92561. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  92562. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  92563. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  92564. <stringProp name="HTTPSampler.contentEncoding"/>
  92565. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  92566. <stringProp name="HTTPSampler.method">GET</stringProp>
  92567. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  92568. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  92569. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  92570. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  92571. <boolProp name="HTTPSampler.monitor">false</boolProp>
  92572. <stringProp name="HTTPSampler.embedded_url_re"/>
  92573. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/open_catalog_grid.jmx</stringProp></HTTPSamplerProxy>
  92574. <hashTree>
  92575. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  92576. <collectionProp name="Asserion.test_strings">
  92577. <stringProp name="1509986340">records found</stringProp>
  92578. </collectionProp>
  92579. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  92580. <boolProp name="Assertion.assume_success">false</boolProp>
  92581. <intProp name="Assertion.test_type">2</intProp>
  92582. </ResponseAssertion>
  92583. <hashTree/>
  92584. </hashTree>
  92585. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product" enabled="true">
  92586. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  92587. <collectionProp name="Arguments.arguments"/>
  92588. </elementProp>
  92589. <stringProp name="HTTPSampler.domain"/>
  92590. <stringProp name="HTTPSampler.port"/>
  92591. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  92592. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  92593. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  92594. <stringProp name="HTTPSampler.contentEncoding"/>
  92595. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/${attribute_set_id}/type/configurable/</stringProp>
  92596. <stringProp name="HTTPSampler.method">GET</stringProp>
  92597. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  92598. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  92599. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  92600. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  92601. <boolProp name="HTTPSampler.monitor">false</boolProp>
  92602. <stringProp name="HTTPSampler.embedded_url_re"/>
  92603. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/new_configurable.jmx</stringProp></HTTPSamplerProxy>
  92604. <hashTree>
  92605. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  92606. <collectionProp name="Asserion.test_strings">
  92607. <stringProp name="-144461265">New Product</stringProp>
  92608. </collectionProp>
  92609. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  92610. <boolProp name="Assertion.assume_success">false</boolProp>
  92611. <intProp name="Assertion.test_type">2</intProp>
  92612. </ResponseAssertion>
  92613. <hashTree/>
  92614. </hashTree>
  92615. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Validate" enabled="true">
  92616. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  92617. <collectionProp name="Arguments.arguments">
  92618. <elementProp name="ajax" elementType="HTTPArgument">
  92619. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92620. <stringProp name="Argument.value">true</stringProp>
  92621. <stringProp name="Argument.metadata">=</stringProp>
  92622. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92623. <stringProp name="Argument.name">ajax</stringProp>
  92624. <stringProp name="Argument.desc">false</stringProp>
  92625. </elementProp>
  92626. <elementProp name="isAjax" elementType="HTTPArgument">
  92627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92628. <stringProp name="Argument.value">true</stringProp>
  92629. <stringProp name="Argument.metadata">=</stringProp>
  92630. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92631. <stringProp name="Argument.name">isAjax</stringProp>
  92632. <stringProp name="Argument.desc">false</stringProp>
  92633. </elementProp>
  92634. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  92635. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92636. <stringProp name="Argument.value">1</stringProp>
  92637. <stringProp name="Argument.metadata">=</stringProp>
  92638. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92639. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  92640. <stringProp name="Argument.desc">true</stringProp>
  92641. </elementProp>
  92642. <elementProp name="form_key" elementType="HTTPArgument">
  92643. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92644. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  92645. <stringProp name="Argument.metadata">=</stringProp>
  92646. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92647. <stringProp name="Argument.name">form_key</stringProp>
  92648. <stringProp name="Argument.desc">true</stringProp>
  92649. </elementProp>
  92650. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  92651. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92652. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  92653. <stringProp name="Argument.metadata">=</stringProp>
  92654. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92655. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  92656. <stringProp name="Argument.desc">true</stringProp>
  92657. </elementProp>
  92658. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  92659. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92660. <stringProp name="Argument.value">1</stringProp>
  92661. <stringProp name="Argument.metadata">=</stringProp>
  92662. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92663. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  92664. <stringProp name="Argument.desc">true</stringProp>
  92665. </elementProp>
  92666. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  92667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92668. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  92669. <stringProp name="Argument.metadata">=</stringProp>
  92670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92671. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  92672. <stringProp name="Argument.desc">true</stringProp>
  92673. </elementProp>
  92674. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  92675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92676. <stringProp name="Argument.value">4</stringProp>
  92677. <stringProp name="Argument.metadata">=</stringProp>
  92678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92679. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  92680. <stringProp name="Argument.desc">true</stringProp>
  92681. </elementProp>
  92682. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  92683. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92684. <stringProp name="Argument.value"/>
  92685. <stringProp name="Argument.metadata">=</stringProp>
  92686. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92687. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  92688. <stringProp name="Argument.desc">true</stringProp>
  92689. </elementProp>
  92690. <elementProp name="product[description]" elementType="HTTPArgument">
  92691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92692. <stringProp name="Argument.value"/>
  92693. <stringProp name="Argument.metadata">=</stringProp>
  92694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92695. <stringProp name="Argument.name">product[description]</stringProp>
  92696. <stringProp name="Argument.desc">true</stringProp>
  92697. </elementProp>
  92698. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  92699. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92700. <stringProp name="Argument.value">0</stringProp>
  92701. <stringProp name="Argument.metadata">=</stringProp>
  92702. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92703. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  92704. <stringProp name="Argument.desc">true</stringProp>
  92705. </elementProp>
  92706. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  92707. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92708. <stringProp name="Argument.value">1</stringProp>
  92709. <stringProp name="Argument.metadata">=</stringProp>
  92710. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92711. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  92712. <stringProp name="Argument.desc">true</stringProp>
  92713. </elementProp>
  92714. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  92715. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92716. <stringProp name="Argument.value"/>
  92717. <stringProp name="Argument.metadata">=</stringProp>
  92718. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92719. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  92720. <stringProp name="Argument.desc">true</stringProp>
  92721. </elementProp>
  92722. <elementProp name="product[image]" elementType="HTTPArgument">
  92723. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92724. <stringProp name="Argument.value"/>
  92725. <stringProp name="Argument.metadata">=</stringProp>
  92726. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92727. <stringProp name="Argument.name">product[image]</stringProp>
  92728. <stringProp name="Argument.desc">true</stringProp>
  92729. </elementProp>
  92730. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  92731. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92732. <stringProp name="Argument.value">2</stringProp>
  92733. <stringProp name="Argument.metadata">=</stringProp>
  92734. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92735. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  92736. <stringProp name="Argument.desc">true</stringProp>
  92737. </elementProp>
  92738. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  92739. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92740. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  92741. <stringProp name="Argument.metadata">=</stringProp>
  92742. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92743. <stringProp name="Argument.name">product[meta_description]</stringProp>
  92744. <stringProp name="Argument.desc">true</stringProp>
  92745. </elementProp>
  92746. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  92747. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92748. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  92749. <stringProp name="Argument.metadata">=</stringProp>
  92750. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92751. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  92752. <stringProp name="Argument.desc">true</stringProp>
  92753. </elementProp>
  92754. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  92755. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92756. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  92757. <stringProp name="Argument.metadata">=</stringProp>
  92758. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92759. <stringProp name="Argument.name">product[meta_title]</stringProp>
  92760. <stringProp name="Argument.desc">true</stringProp>
  92761. </elementProp>
  92762. <elementProp name="product[name]" elementType="HTTPArgument">
  92763. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92764. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  92765. <stringProp name="Argument.metadata">=</stringProp>
  92766. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92767. <stringProp name="Argument.name">product[name]</stringProp>
  92768. <stringProp name="Argument.desc">true</stringProp>
  92769. </elementProp>
  92770. <elementProp name="product[options_container]" elementType="HTTPArgument">
  92771. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92772. <stringProp name="Argument.value">container2</stringProp>
  92773. <stringProp name="Argument.metadata">=</stringProp>
  92774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92775. <stringProp name="Argument.name">product[options_container]</stringProp>
  92776. <stringProp name="Argument.desc">true</stringProp>
  92777. </elementProp>
  92778. <elementProp name="product[price]" elementType="HTTPArgument">
  92779. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92780. <stringProp name="Argument.value">${price_new}</stringProp>
  92781. <stringProp name="Argument.metadata">=</stringProp>
  92782. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92783. <stringProp name="Argument.name">product[price]</stringProp>
  92784. <stringProp name="Argument.desc">true</stringProp>
  92785. </elementProp>
  92786. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  92787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92788. <stringProp name="Argument.value">1</stringProp>
  92789. <stringProp name="Argument.metadata">=</stringProp>
  92790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92791. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  92792. <stringProp name="Argument.desc">true</stringProp>
  92793. </elementProp>
  92794. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  92795. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92796. <stringProp name="Argument.value">1</stringProp>
  92797. <stringProp name="Argument.metadata">=</stringProp>
  92798. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92799. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  92800. <stringProp name="Argument.desc">true</stringProp>
  92801. </elementProp>
  92802. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  92803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92804. <stringProp name="Argument.value">1000</stringProp>
  92805. <stringProp name="Argument.metadata">=</stringProp>
  92806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92807. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  92808. <stringProp name="Argument.desc">true</stringProp>
  92809. </elementProp>
  92810. <elementProp name="product[short_description]" elementType="HTTPArgument">
  92811. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92812. <stringProp name="Argument.value"/>
  92813. <stringProp name="Argument.metadata">=</stringProp>
  92814. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92815. <stringProp name="Argument.name">product[short_description]</stringProp>
  92816. <stringProp name="Argument.desc">true</stringProp>
  92817. </elementProp>
  92818. <elementProp name="product[sku]" elementType="HTTPArgument">
  92819. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92820. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  92821. <stringProp name="Argument.metadata">=</stringProp>
  92822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92823. <stringProp name="Argument.name">product[sku]</stringProp>
  92824. <stringProp name="Argument.desc">true</stringProp>
  92825. </elementProp>
  92826. <elementProp name="product[small_image]" elementType="HTTPArgument">
  92827. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92828. <stringProp name="Argument.value"/>
  92829. <stringProp name="Argument.metadata">=</stringProp>
  92830. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92831. <stringProp name="Argument.name">product[small_image]</stringProp>
  92832. <stringProp name="Argument.desc">true</stringProp>
  92833. </elementProp>
  92834. <elementProp name="product[special_price]" elementType="HTTPArgument">
  92835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92836. <stringProp name="Argument.value">${special_price_new}</stringProp>
  92837. <stringProp name="Argument.metadata">=</stringProp>
  92838. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92839. <stringProp name="Argument.name">product[special_price]</stringProp>
  92840. <stringProp name="Argument.desc">true</stringProp>
  92841. </elementProp>
  92842. <elementProp name="product[status]" elementType="HTTPArgument">
  92843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92844. <stringProp name="Argument.value">1</stringProp>
  92845. <stringProp name="Argument.metadata">=</stringProp>
  92846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92847. <stringProp name="Argument.name">product[status]</stringProp>
  92848. <stringProp name="Argument.desc">true</stringProp>
  92849. </elementProp>
  92850. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  92851. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92852. <stringProp name="Argument.value">0</stringProp>
  92853. <stringProp name="Argument.metadata">=</stringProp>
  92854. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92855. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  92856. <stringProp name="Argument.desc">true</stringProp>
  92857. </elementProp>
  92858. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  92859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92860. <stringProp name="Argument.value">1</stringProp>
  92861. <stringProp name="Argument.metadata">=</stringProp>
  92862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92863. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  92864. <stringProp name="Argument.desc">true</stringProp>
  92865. </elementProp>
  92866. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  92867. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92868. <stringProp name="Argument.value">0</stringProp>
  92869. <stringProp name="Argument.metadata">=</stringProp>
  92870. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92871. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  92872. <stringProp name="Argument.desc">true</stringProp>
  92873. </elementProp>
  92874. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  92875. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92876. <stringProp name="Argument.value">0</stringProp>
  92877. <stringProp name="Argument.metadata">=</stringProp>
  92878. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92879. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  92880. <stringProp name="Argument.desc">true</stringProp>
  92881. </elementProp>
  92882. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  92883. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92884. <stringProp name="Argument.value">0</stringProp>
  92885. <stringProp name="Argument.metadata">=</stringProp>
  92886. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92887. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  92888. <stringProp name="Argument.desc">true</stringProp>
  92889. </elementProp>
  92890. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  92891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92892. <stringProp name="Argument.value">1</stringProp>
  92893. <stringProp name="Argument.metadata">=</stringProp>
  92894. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92895. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  92896. <stringProp name="Argument.desc">true</stringProp>
  92897. </elementProp>
  92898. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  92899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92900. <stringProp name="Argument.value">10000</stringProp>
  92901. <stringProp name="Argument.metadata">=</stringProp>
  92902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92903. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  92904. <stringProp name="Argument.desc">true</stringProp>
  92905. </elementProp>
  92906. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  92907. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92908. <stringProp name="Argument.value">0</stringProp>
  92909. <stringProp name="Argument.metadata">=</stringProp>
  92910. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92911. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  92912. <stringProp name="Argument.desc">true</stringProp>
  92913. </elementProp>
  92914. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  92915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92916. <stringProp name="Argument.value">1</stringProp>
  92917. <stringProp name="Argument.metadata">=</stringProp>
  92918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92919. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  92920. <stringProp name="Argument.desc">true</stringProp>
  92921. </elementProp>
  92922. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  92923. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92924. <stringProp name="Argument.value">1</stringProp>
  92925. <stringProp name="Argument.metadata">=</stringProp>
  92926. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92927. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  92928. <stringProp name="Argument.desc">true</stringProp>
  92929. </elementProp>
  92930. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  92931. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92932. <stringProp name="Argument.value">1</stringProp>
  92933. <stringProp name="Argument.metadata">=</stringProp>
  92934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92935. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  92936. <stringProp name="Argument.desc">true</stringProp>
  92937. </elementProp>
  92938. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  92939. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92940. <stringProp name="Argument.value">1</stringProp>
  92941. <stringProp name="Argument.metadata">=</stringProp>
  92942. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92943. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  92944. <stringProp name="Argument.desc">true</stringProp>
  92945. </elementProp>
  92946. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  92947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92948. <stringProp name="Argument.value">1</stringProp>
  92949. <stringProp name="Argument.metadata">=</stringProp>
  92950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92951. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  92952. <stringProp name="Argument.desc">true</stringProp>
  92953. </elementProp>
  92954. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  92955. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92956. <stringProp name="Argument.value">1</stringProp>
  92957. <stringProp name="Argument.metadata">=</stringProp>
  92958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92959. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  92960. <stringProp name="Argument.desc">true</stringProp>
  92961. </elementProp>
  92962. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  92963. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92964. <stringProp name="Argument.value">1</stringProp>
  92965. <stringProp name="Argument.metadata">=</stringProp>
  92966. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92967. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  92968. <stringProp name="Argument.desc">true</stringProp>
  92969. </elementProp>
  92970. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  92971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92972. <stringProp name="Argument.value">1</stringProp>
  92973. <stringProp name="Argument.metadata">=</stringProp>
  92974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92975. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  92976. <stringProp name="Argument.desc">true</stringProp>
  92977. </elementProp>
  92978. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  92979. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92980. <stringProp name="Argument.value">1</stringProp>
  92981. <stringProp name="Argument.metadata">=</stringProp>
  92982. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92983. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  92984. <stringProp name="Argument.desc">true</stringProp>
  92985. </elementProp>
  92986. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  92987. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92988. <stringProp name="Argument.value">1</stringProp>
  92989. <stringProp name="Argument.metadata">=</stringProp>
  92990. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92991. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  92992. <stringProp name="Argument.desc">true</stringProp>
  92993. </elementProp>
  92994. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  92995. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  92996. <stringProp name="Argument.value">1</stringProp>
  92997. <stringProp name="Argument.metadata">=</stringProp>
  92998. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  92999. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  93000. <stringProp name="Argument.desc">true</stringProp>
  93001. </elementProp>
  93002. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  93003. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93004. <stringProp name="Argument.value">1</stringProp>
  93005. <stringProp name="Argument.metadata">=</stringProp>
  93006. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93007. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  93008. <stringProp name="Argument.desc">true</stringProp>
  93009. </elementProp>
  93010. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  93011. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93012. <stringProp name="Argument.value">2</stringProp>
  93013. <stringProp name="Argument.metadata">=</stringProp>
  93014. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93015. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  93016. <stringProp name="Argument.desc">true</stringProp>
  93017. </elementProp>
  93018. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  93019. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93020. <stringProp name="Argument.value"/>
  93021. <stringProp name="Argument.metadata">=</stringProp>
  93022. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93023. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  93024. <stringProp name="Argument.desc">true</stringProp>
  93025. </elementProp>
  93026. <elementProp name="product[url_key]" elementType="HTTPArgument">
  93027. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93028. <stringProp name="Argument.value"/>
  93029. <stringProp name="Argument.metadata">=</stringProp>
  93030. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93031. <stringProp name="Argument.name">product[url_key]</stringProp>
  93032. <stringProp name="Argument.desc">true</stringProp>
  93033. </elementProp>
  93034. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  93035. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93036. <stringProp name="Argument.value">1</stringProp>
  93037. <stringProp name="Argument.metadata">=</stringProp>
  93038. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93039. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  93040. <stringProp name="Argument.desc">true</stringProp>
  93041. </elementProp>
  93042. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  93043. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93044. <stringProp name="Argument.value">1</stringProp>
  93045. <stringProp name="Argument.metadata">=</stringProp>
  93046. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93047. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  93048. <stringProp name="Argument.desc">true</stringProp>
  93049. </elementProp>
  93050. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  93051. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93052. <stringProp name="Argument.value">1</stringProp>
  93053. <stringProp name="Argument.metadata">=</stringProp>
  93054. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93055. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  93056. <stringProp name="Argument.desc">true</stringProp>
  93057. </elementProp>
  93058. <elementProp name="product[visibility]" elementType="HTTPArgument">
  93059. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93060. <stringProp name="Argument.value">4</stringProp>
  93061. <stringProp name="Argument.metadata">=</stringProp>
  93062. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93063. <stringProp name="Argument.name">product[visibility]</stringProp>
  93064. <stringProp name="Argument.desc">true</stringProp>
  93065. </elementProp>
  93066. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  93067. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93068. <stringProp name="Argument.value">1</stringProp>
  93069. <stringProp name="Argument.metadata">=</stringProp>
  93070. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93071. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  93072. <stringProp name="Argument.desc">true</stringProp>
  93073. </elementProp>
  93074. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  93075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93076. <stringProp name="Argument.value">${related_product_id}</stringProp>
  93077. <stringProp name="Argument.metadata">=</stringProp>
  93078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93079. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  93080. </elementProp>
  93081. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  93082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93083. <stringProp name="Argument.value">1</stringProp>
  93084. <stringProp name="Argument.metadata">=</stringProp>
  93085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93086. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  93087. </elementProp>
  93088. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  93089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93090. <stringProp name="Argument.value">${related_product_id}</stringProp>
  93091. <stringProp name="Argument.metadata">=</stringProp>
  93092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93093. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  93094. </elementProp>
  93095. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  93096. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93097. <stringProp name="Argument.value">1</stringProp>
  93098. <stringProp name="Argument.metadata">=</stringProp>
  93099. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93100. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  93101. </elementProp>
  93102. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  93103. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93104. <stringProp name="Argument.value">${related_product_id}</stringProp>
  93105. <stringProp name="Argument.metadata">=</stringProp>
  93106. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93107. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  93108. </elementProp>
  93109. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  93110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93111. <stringProp name="Argument.value">1</stringProp>
  93112. <stringProp name="Argument.metadata">=</stringProp>
  93113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93114. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  93115. </elementProp>
  93116. </collectionProp>
  93117. </elementProp>
  93118. <stringProp name="HTTPSampler.domain"/>
  93119. <stringProp name="HTTPSampler.port"/>
  93120. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  93121. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  93122. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  93123. <stringProp name="HTTPSampler.contentEncoding"/>
  93124. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/${attribute_set_id}/</stringProp>
  93125. <stringProp name="HTTPSampler.method">POST</stringProp>
  93126. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  93127. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  93128. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  93129. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  93130. <boolProp name="HTTPSampler.monitor">false</boolProp>
  93131. <stringProp name="HTTPSampler.embedded_url_re"/>
  93132. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_validate.jmx</stringProp></HTTPSamplerProxy>
  93133. <hashTree>
  93134. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  93135. <collectionProp name="Asserion.test_strings">
  93136. <stringProp name="1853918323">{"error":false}</stringProp>
  93137. </collectionProp>
  93138. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  93139. <boolProp name="Assertion.assume_success">false</boolProp>
  93140. <intProp name="Assertion.test_type">2</intProp>
  93141. </ResponseAssertion>
  93142. <hashTree/>
  93143. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  93144. <stringProp name="scriptLanguage">javascript</stringProp>
  93145. <stringProp name="parameters"/>
  93146. <stringProp name="filename"/>
  93147. <stringProp name="cacheKey"/>
  93148. <stringProp name="script">
  93149. attributes = vars.getObject("product_attributes");
  93150. for (i in attributes) {
  93151. var attribute = attributes[i];
  93152. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  93153. sampler.addArgument("attributes[" + i + "]", attribute.id);
  93154. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  93155. addConfigurableAttributeData(attribute);
  93156. }
  93157. addConfigurableMatrix(attributes);
  93158. function addConfigurableAttributeData(attribute) {
  93159. var attributeId = attribute.id;
  93160. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  93161. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  93162. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  93163. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  93164. attribute.options.forEach(function (option, index) {
  93165. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  93166. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  93167. });
  93168. }
  93169. /**
  93170. * Build 4 simple products for Configurable
  93171. */
  93172. function addConfigurableMatrix(attributes) {
  93173. var attribute1 = attributes[0],
  93174. attribute2 = attributes[1],
  93175. productIndex = 1,
  93176. products = [];
  93177. var variationNames = [];
  93178. attribute1.options.forEach(function (option1) {
  93179. attribute2.options.forEach(function (option2) {
  93180. var productAttributes = {},
  93181. namePart = option1.label + "+" + option2.label,
  93182. variationKey = option1.value + "-" + option2.value;
  93183. productAttributes[attribute1.code] = option1.value;
  93184. productAttributes[attribute2.code] = option2.value;
  93185. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  93186. var product = {
  93187. "id": null,
  93188. "name": namePart + " - " + vars.get("configurable_sku"),
  93189. "sku": namePart + " - " + vars.get("configurable_sku"),
  93190. "status": 1,
  93191. "price": "100",
  93192. "price_currency": "$",
  93193. "price_string": "$100",
  93194. "weight": "6",
  93195. "qty": "50",
  93196. "variationKey": variationKey,
  93197. "configurable_attribute": JSON.stringify(productAttributes),
  93198. "thumbnail_image": "",
  93199. "media_gallery": {"images": {}},
  93200. "image": [],
  93201. "was_changed": true,
  93202. "canEdit": 1,
  93203. "newProduct": 1,
  93204. "record_id": productIndex
  93205. };
  93206. productIndex++;
  93207. products.push(product);
  93208. });
  93209. });
  93210. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  93211. vars.putObject("configurable_variations_assertion", variationNames);
  93212. }
  93213. </stringProp>
  93214. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  93215. <hashTree/>
  93216. </hashTree>
  93217. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Configurable Product Save" enabled="true">
  93218. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  93219. <collectionProp name="Arguments.arguments">
  93220. <elementProp name="ajax" elementType="HTTPArgument">
  93221. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93222. <stringProp name="Argument.value">true</stringProp>
  93223. <stringProp name="Argument.metadata">=</stringProp>
  93224. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93225. <stringProp name="Argument.name">ajax</stringProp>
  93226. <stringProp name="Argument.desc">false</stringProp>
  93227. </elementProp>
  93228. <elementProp name="isAjax" elementType="HTTPArgument">
  93229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93230. <stringProp name="Argument.value">true</stringProp>
  93231. <stringProp name="Argument.metadata">=</stringProp>
  93232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93233. <stringProp name="Argument.name">isAjax</stringProp>
  93234. <stringProp name="Argument.desc">false</stringProp>
  93235. </elementProp>
  93236. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  93237. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93238. <stringProp name="Argument.value">1</stringProp>
  93239. <stringProp name="Argument.metadata">=</stringProp>
  93240. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93241. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  93242. <stringProp name="Argument.desc">true</stringProp>
  93243. </elementProp>
  93244. <elementProp name="form_key" elementType="HTTPArgument">
  93245. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93246. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  93247. <stringProp name="Argument.metadata">=</stringProp>
  93248. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93249. <stringProp name="Argument.name">form_key</stringProp>
  93250. <stringProp name="Argument.desc">true</stringProp>
  93251. </elementProp>
  93252. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  93253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93254. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  93255. <stringProp name="Argument.metadata">=</stringProp>
  93256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93257. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  93258. <stringProp name="Argument.desc">true</stringProp>
  93259. </elementProp>
  93260. <elementProp name="product[affect_product_custom_options]" elementType="HTTPArgument">
  93261. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93262. <stringProp name="Argument.value">1</stringProp>
  93263. <stringProp name="Argument.metadata">=</stringProp>
  93264. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93265. <stringProp name="Argument.name">product[affect_product_custom_options]</stringProp>
  93266. <stringProp name="Argument.desc">true</stringProp>
  93267. </elementProp>
  93268. <elementProp name="product[attribute_set_id]" elementType="HTTPArgument">
  93269. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93270. <stringProp name="Argument.value">${attribute_set_id}</stringProp>
  93271. <stringProp name="Argument.metadata">=</stringProp>
  93272. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93273. <stringProp name="Argument.name">product[attribute_set_id]</stringProp>
  93274. <stringProp name="Argument.desc">true</stringProp>
  93275. </elementProp>
  93276. <elementProp name="product[category_ids][0]" elementType="HTTPArgument">
  93277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93278. <stringProp name="Argument.value">2</stringProp>
  93279. <stringProp name="Argument.metadata">=</stringProp>
  93280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93281. <stringProp name="Argument.name">product[category_ids][0]</stringProp>
  93282. <stringProp name="Argument.desc">true</stringProp>
  93283. </elementProp>
  93284. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  93285. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93286. <stringProp name="Argument.value"/>
  93287. <stringProp name="Argument.metadata">=</stringProp>
  93288. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93289. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  93290. <stringProp name="Argument.desc">true</stringProp>
  93291. </elementProp>
  93292. <elementProp name="product[description]" elementType="HTTPArgument">
  93293. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93294. <stringProp name="Argument.value"/>
  93295. <stringProp name="Argument.metadata">=</stringProp>
  93296. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93297. <stringProp name="Argument.name">product[description]</stringProp>
  93298. <stringProp name="Argument.desc">true</stringProp>
  93299. </elementProp>
  93300. <elementProp name="product[gift_message_available]" elementType="HTTPArgument">
  93301. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93302. <stringProp name="Argument.value">0</stringProp>
  93303. <stringProp name="Argument.metadata">=</stringProp>
  93304. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93305. <stringProp name="Argument.name">product[gift_message_available]</stringProp>
  93306. <stringProp name="Argument.desc">true</stringProp>
  93307. </elementProp>
  93308. <elementProp name="product[gift_wrapping_available]" elementType="HTTPArgument">
  93309. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93310. <stringProp name="Argument.value">1</stringProp>
  93311. <stringProp name="Argument.metadata">=</stringProp>
  93312. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93313. <stringProp name="Argument.name">product[gift_wrapping_available]</stringProp>
  93314. <stringProp name="Argument.desc">true</stringProp>
  93315. </elementProp>
  93316. <elementProp name="product[gift_wrapping_price]" elementType="HTTPArgument">
  93317. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93318. <stringProp name="Argument.value"/>
  93319. <stringProp name="Argument.metadata">=</stringProp>
  93320. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93321. <stringProp name="Argument.name">product[gift_wrapping_price]</stringProp>
  93322. <stringProp name="Argument.desc">true</stringProp>
  93323. </elementProp>
  93324. <elementProp name="product[image]" elementType="HTTPArgument">
  93325. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93326. <stringProp name="Argument.value"/>
  93327. <stringProp name="Argument.metadata">=</stringProp>
  93328. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93329. <stringProp name="Argument.name">product[image]</stringProp>
  93330. <stringProp name="Argument.desc">true</stringProp>
  93331. </elementProp>
  93332. <elementProp name="product[is_returnable]" elementType="HTTPArgument">
  93333. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93334. <stringProp name="Argument.value">2</stringProp>
  93335. <stringProp name="Argument.metadata">=</stringProp>
  93336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93337. <stringProp name="Argument.name">product[is_returnable]</stringProp>
  93338. <stringProp name="Argument.desc">true</stringProp>
  93339. </elementProp>
  93340. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  93341. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93342. <stringProp name="Argument.value">${configurable_sku} - Meta Description</stringProp>
  93343. <stringProp name="Argument.metadata">=</stringProp>
  93344. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93345. <stringProp name="Argument.name">product[meta_description]</stringProp>
  93346. <stringProp name="Argument.desc">true</stringProp>
  93347. </elementProp>
  93348. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  93349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93350. <stringProp name="Argument.value">${configurable_sku} - Meta Keyword</stringProp>
  93351. <stringProp name="Argument.metadata">=</stringProp>
  93352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93353. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  93354. <stringProp name="Argument.desc">true</stringProp>
  93355. </elementProp>
  93356. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  93357. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93358. <stringProp name="Argument.value">${configurable_sku} - Meta Title</stringProp>
  93359. <stringProp name="Argument.metadata">=</stringProp>
  93360. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93361. <stringProp name="Argument.name">product[meta_title]</stringProp>
  93362. <stringProp name="Argument.desc">true</stringProp>
  93363. </elementProp>
  93364. <elementProp name="product[name]" elementType="HTTPArgument">
  93365. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93366. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  93367. <stringProp name="Argument.metadata">=</stringProp>
  93368. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93369. <stringProp name="Argument.name">product[name]</stringProp>
  93370. <stringProp name="Argument.desc">true</stringProp>
  93371. </elementProp>
  93372. <elementProp name="product[options_container]" elementType="HTTPArgument">
  93373. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93374. <stringProp name="Argument.value">container2</stringProp>
  93375. <stringProp name="Argument.metadata">=</stringProp>
  93376. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93377. <stringProp name="Argument.name">product[options_container]</stringProp>
  93378. <stringProp name="Argument.desc">true</stringProp>
  93379. </elementProp>
  93380. <elementProp name="product[price]" elementType="HTTPArgument">
  93381. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93382. <stringProp name="Argument.value">${price_new}</stringProp>
  93383. <stringProp name="Argument.metadata">=</stringProp>
  93384. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93385. <stringProp name="Argument.name">product[price]</stringProp>
  93386. <stringProp name="Argument.desc">true</stringProp>
  93387. </elementProp>
  93388. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  93389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93390. <stringProp name="Argument.value">1</stringProp>
  93391. <stringProp name="Argument.metadata">=</stringProp>
  93392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93393. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  93394. <stringProp name="Argument.desc">true</stringProp>
  93395. </elementProp>
  93396. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  93397. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93398. <stringProp name="Argument.value">1</stringProp>
  93399. <stringProp name="Argument.metadata">=</stringProp>
  93400. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93401. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  93402. <stringProp name="Argument.desc">true</stringProp>
  93403. </elementProp>
  93404. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  93405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93406. <stringProp name="Argument.value">1000</stringProp>
  93407. <stringProp name="Argument.metadata">=</stringProp>
  93408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93409. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  93410. <stringProp name="Argument.desc">true</stringProp>
  93411. </elementProp>
  93412. <elementProp name="product[short_description]" elementType="HTTPArgument">
  93413. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93414. <stringProp name="Argument.value"/>
  93415. <stringProp name="Argument.metadata">=</stringProp>
  93416. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93417. <stringProp name="Argument.name">product[short_description]</stringProp>
  93418. <stringProp name="Argument.desc">true</stringProp>
  93419. </elementProp>
  93420. <elementProp name="product[sku]" elementType="HTTPArgument">
  93421. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93422. <stringProp name="Argument.value">${configurable_sku}</stringProp>
  93423. <stringProp name="Argument.metadata">=</stringProp>
  93424. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93425. <stringProp name="Argument.name">product[sku]</stringProp>
  93426. <stringProp name="Argument.desc">true</stringProp>
  93427. </elementProp>
  93428. <elementProp name="product[small_image]" elementType="HTTPArgument">
  93429. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93430. <stringProp name="Argument.value"/>
  93431. <stringProp name="Argument.metadata">=</stringProp>
  93432. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93433. <stringProp name="Argument.name">product[small_image]</stringProp>
  93434. <stringProp name="Argument.desc">true</stringProp>
  93435. </elementProp>
  93436. <elementProp name="product[special_price]" elementType="HTTPArgument">
  93437. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93438. <stringProp name="Argument.value">${special_price_new}</stringProp>
  93439. <stringProp name="Argument.metadata">=</stringProp>
  93440. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93441. <stringProp name="Argument.name">product[special_price]</stringProp>
  93442. <stringProp name="Argument.desc">true</stringProp>
  93443. </elementProp>
  93444. <elementProp name="product[status]" elementType="HTTPArgument">
  93445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93446. <stringProp name="Argument.value">1</stringProp>
  93447. <stringProp name="Argument.metadata">=</stringProp>
  93448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93449. <stringProp name="Argument.name">product[status]</stringProp>
  93450. <stringProp name="Argument.desc">true</stringProp>
  93451. </elementProp>
  93452. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  93453. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93454. <stringProp name="Argument.value">0</stringProp>
  93455. <stringProp name="Argument.metadata">=</stringProp>
  93456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93457. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  93458. <stringProp name="Argument.desc">true</stringProp>
  93459. </elementProp>
  93460. <elementProp name="product[stock_data][deferred_stock_update]" elementType="HTTPArgument">
  93461. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93462. <stringProp name="Argument.value">1</stringProp>
  93463. <stringProp name="Argument.metadata">=</stringProp>
  93464. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93465. <stringProp name="Argument.name">product[stock_data][deferred_stock_update]</stringProp>
  93466. <stringProp name="Argument.desc">true</stringProp>
  93467. </elementProp>
  93468. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  93469. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93470. <stringProp name="Argument.value">0</stringProp>
  93471. <stringProp name="Argument.metadata">=</stringProp>
  93472. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93473. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  93474. <stringProp name="Argument.desc">true</stringProp>
  93475. </elementProp>
  93476. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  93477. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93478. <stringProp name="Argument.value">0</stringProp>
  93479. <stringProp name="Argument.metadata">=</stringProp>
  93480. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93481. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  93482. <stringProp name="Argument.desc">true</stringProp>
  93483. </elementProp>
  93484. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  93485. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93486. <stringProp name="Argument.value">0</stringProp>
  93487. <stringProp name="Argument.metadata">=</stringProp>
  93488. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93489. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  93490. <stringProp name="Argument.desc">true</stringProp>
  93491. </elementProp>
  93492. <elementProp name="product[stock_data][manage_stock]" elementType="HTTPArgument">
  93493. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93494. <stringProp name="Argument.value">1</stringProp>
  93495. <stringProp name="Argument.metadata">=</stringProp>
  93496. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93497. <stringProp name="Argument.name">product[stock_data][manage_stock]</stringProp>
  93498. <stringProp name="Argument.desc">true</stringProp>
  93499. </elementProp>
  93500. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  93501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93502. <stringProp name="Argument.value">10000</stringProp>
  93503. <stringProp name="Argument.metadata">=</stringProp>
  93504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93505. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  93506. <stringProp name="Argument.desc">true</stringProp>
  93507. </elementProp>
  93508. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  93509. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93510. <stringProp name="Argument.value">0</stringProp>
  93511. <stringProp name="Argument.metadata">=</stringProp>
  93512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93513. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  93514. <stringProp name="Argument.desc">true</stringProp>
  93515. </elementProp>
  93516. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  93517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93518. <stringProp name="Argument.value">1</stringProp>
  93519. <stringProp name="Argument.metadata">=</stringProp>
  93520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93521. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  93522. <stringProp name="Argument.desc">true</stringProp>
  93523. </elementProp>
  93524. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  93525. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93526. <stringProp name="Argument.value">1</stringProp>
  93527. <stringProp name="Argument.metadata">=</stringProp>
  93528. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93529. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  93530. <stringProp name="Argument.desc">true</stringProp>
  93531. </elementProp>
  93532. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  93533. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93534. <stringProp name="Argument.value">1</stringProp>
  93535. <stringProp name="Argument.metadata">=</stringProp>
  93536. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93537. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  93538. <stringProp name="Argument.desc">true</stringProp>
  93539. </elementProp>
  93540. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  93541. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93542. <stringProp name="Argument.value">1</stringProp>
  93543. <stringProp name="Argument.metadata">=</stringProp>
  93544. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93545. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  93546. <stringProp name="Argument.desc">true</stringProp>
  93547. </elementProp>
  93548. <elementProp name="product[stock_data][use_config_deferred_stock_update]" elementType="HTTPArgument">
  93549. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93550. <stringProp name="Argument.value">1</stringProp>
  93551. <stringProp name="Argument.metadata">=</stringProp>
  93552. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93553. <stringProp name="Argument.name">product[stock_data][use_config_deferred_stock_update]</stringProp>
  93554. <stringProp name="Argument.desc">true</stringProp>
  93555. </elementProp>
  93556. <elementProp name="product[stock_data][use_config_enable_qty_increments]" elementType="HTTPArgument">
  93557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93558. <stringProp name="Argument.value">1</stringProp>
  93559. <stringProp name="Argument.metadata">=</stringProp>
  93560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93561. <stringProp name="Argument.name">product[stock_data][use_config_enable_qty_increments]</stringProp>
  93562. <stringProp name="Argument.desc">true</stringProp>
  93563. </elementProp>
  93564. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  93565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93566. <stringProp name="Argument.value">1</stringProp>
  93567. <stringProp name="Argument.metadata">=</stringProp>
  93568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93569. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  93570. <stringProp name="Argument.desc">true</stringProp>
  93571. </elementProp>
  93572. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  93573. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93574. <stringProp name="Argument.value">1</stringProp>
  93575. <stringProp name="Argument.metadata">=</stringProp>
  93576. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93577. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  93578. <stringProp name="Argument.desc">true</stringProp>
  93579. </elementProp>
  93580. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  93581. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93582. <stringProp name="Argument.value">1</stringProp>
  93583. <stringProp name="Argument.metadata">=</stringProp>
  93584. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93585. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  93586. <stringProp name="Argument.desc">true</stringProp>
  93587. </elementProp>
  93588. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  93589. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93590. <stringProp name="Argument.value">1</stringProp>
  93591. <stringProp name="Argument.metadata">=</stringProp>
  93592. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93593. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  93594. <stringProp name="Argument.desc">true</stringProp>
  93595. </elementProp>
  93596. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  93597. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93598. <stringProp name="Argument.value">1</stringProp>
  93599. <stringProp name="Argument.metadata">=</stringProp>
  93600. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93601. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  93602. <stringProp name="Argument.desc">true</stringProp>
  93603. </elementProp>
  93604. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  93605. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93606. <stringProp name="Argument.value">1</stringProp>
  93607. <stringProp name="Argument.metadata">=</stringProp>
  93608. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93609. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  93610. <stringProp name="Argument.desc">true</stringProp>
  93611. </elementProp>
  93612. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  93613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93614. <stringProp name="Argument.value">2</stringProp>
  93615. <stringProp name="Argument.metadata">=</stringProp>
  93616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93617. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  93618. <stringProp name="Argument.desc">true</stringProp>
  93619. </elementProp>
  93620. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  93621. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93622. <stringProp name="Argument.value"/>
  93623. <stringProp name="Argument.metadata">=</stringProp>
  93624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93625. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  93626. <stringProp name="Argument.desc">true</stringProp>
  93627. </elementProp>
  93628. <elementProp name="product[url_key]" elementType="HTTPArgument">
  93629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93630. <stringProp name="Argument.value"/>
  93631. <stringProp name="Argument.metadata">=</stringProp>
  93632. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93633. <stringProp name="Argument.name">product[url_key]</stringProp>
  93634. <stringProp name="Argument.desc">true</stringProp>
  93635. </elementProp>
  93636. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  93637. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93638. <stringProp name="Argument.value">1</stringProp>
  93639. <stringProp name="Argument.metadata">=</stringProp>
  93640. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93641. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  93642. <stringProp name="Argument.desc">true</stringProp>
  93643. </elementProp>
  93644. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  93645. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93646. <stringProp name="Argument.value">1</stringProp>
  93647. <stringProp name="Argument.metadata">=</stringProp>
  93648. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93649. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  93650. <stringProp name="Argument.desc">true</stringProp>
  93651. </elementProp>
  93652. <elementProp name="product[use_config_is_returnable]" elementType="HTTPArgument">
  93653. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93654. <stringProp name="Argument.value">1</stringProp>
  93655. <stringProp name="Argument.metadata">=</stringProp>
  93656. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93657. <stringProp name="Argument.name">product[use_config_is_returnable]</stringProp>
  93658. <stringProp name="Argument.desc">true</stringProp>
  93659. </elementProp>
  93660. <elementProp name="product[visibility]" elementType="HTTPArgument">
  93661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93662. <stringProp name="Argument.value">4</stringProp>
  93663. <stringProp name="Argument.metadata">=</stringProp>
  93664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93665. <stringProp name="Argument.name">product[visibility]</stringProp>
  93666. <stringProp name="Argument.desc">true</stringProp>
  93667. </elementProp>
  93668. <elementProp name="product[website_ids][1]" elementType="HTTPArgument">
  93669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93670. <stringProp name="Argument.value">1</stringProp>
  93671. <stringProp name="Argument.metadata">=</stringProp>
  93672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93673. <stringProp name="Argument.name">product[website_ids][1]</stringProp>
  93674. <stringProp name="Argument.desc">true</stringProp>
  93675. </elementProp>
  93676. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  93677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93678. <stringProp name="Argument.value">${related_product_id}</stringProp>
  93679. <stringProp name="Argument.metadata">=</stringProp>
  93680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93681. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  93682. </elementProp>
  93683. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  93684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93685. <stringProp name="Argument.value">1</stringProp>
  93686. <stringProp name="Argument.metadata">=</stringProp>
  93687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93688. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  93689. </elementProp>
  93690. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  93691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93692. <stringProp name="Argument.value">${related_product_id}</stringProp>
  93693. <stringProp name="Argument.metadata">=</stringProp>
  93694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93695. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  93696. </elementProp>
  93697. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  93698. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93699. <stringProp name="Argument.value">1</stringProp>
  93700. <stringProp name="Argument.metadata">=</stringProp>
  93701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93702. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  93703. </elementProp>
  93704. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  93705. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93706. <stringProp name="Argument.value">${related_product_id}</stringProp>
  93707. <stringProp name="Argument.metadata">=</stringProp>
  93708. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93709. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  93710. </elementProp>
  93711. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  93712. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93713. <stringProp name="Argument.value">1</stringProp>
  93714. <stringProp name="Argument.metadata">=</stringProp>
  93715. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93716. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  93717. </elementProp>
  93718. </collectionProp>
  93719. </elementProp>
  93720. <stringProp name="HTTPSampler.domain"/>
  93721. <stringProp name="HTTPSampler.port"/>
  93722. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  93723. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  93724. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  93725. <stringProp name="HTTPSampler.contentEncoding"/>
  93726. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/${attribute_set_id}/type/configurable/back/edit/active_tab/product-details/</stringProp>
  93727. <stringProp name="HTTPSampler.method">POST</stringProp>
  93728. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  93729. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  93730. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  93731. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  93732. <boolProp name="HTTPSampler.monitor">false</boolProp>
  93733. <stringProp name="HTTPSampler.embedded_url_re"/>
  93734. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_save.jmx</stringProp></HTTPSamplerProxy>
  93735. <hashTree>
  93736. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  93737. <collectionProp name="Asserion.test_strings">
  93738. <stringProp name="-583471546">You saved the product</stringProp>
  93739. </collectionProp>
  93740. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  93741. <boolProp name="Assertion.assume_success">false</boolProp>
  93742. <intProp name="Assertion.test_type">2</intProp>
  93743. </ResponseAssertion>
  93744. <hashTree/>
  93745. <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert Variation" enabled="true">
  93746. <stringProp name="scriptLanguage">javascript</stringProp>
  93747. <stringProp name="parameters"/>
  93748. <stringProp name="filename"/>
  93749. <stringProp name="cacheKey"/>
  93750. <stringProp name="script">
  93751. var configurableVariations = vars.getObject("configurable_variations_assertion"),
  93752. response = SampleResult.getResponseDataAsString();
  93753. configurableVariations.forEach(function (variation) {
  93754. if (response.indexOf(variation) == -1) {
  93755. AssertionResult.setFailureMessage("Cannot find variation \"" + variation + "\"");
  93756. AssertionResult.setFailure(true);
  93757. }
  93758. });
  93759. </stringProp>
  93760. </JSR223Assertion>
  93761. <hashTree/>
  93762. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Prepare Configurable Data" enabled="true">
  93763. <stringProp name="scriptLanguage">javascript</stringProp>
  93764. <stringProp name="parameters"/>
  93765. <stringProp name="filename"/>
  93766. <stringProp name="cacheKey"/>
  93767. <stringProp name="script">
  93768. attributes = vars.getObject("product_attributes");
  93769. for (i in attributes) {
  93770. var attribute = attributes[i];
  93771. sampler.addArgument("attribute_codes[" + i + "]", attribute.code);
  93772. sampler.addArgument("attributes[" + i + "]", attribute.id);
  93773. sampler.addArgument("product[" + attribute.code + "]", attribute.options[0].value);
  93774. addConfigurableAttributeData(attribute);
  93775. }
  93776. addConfigurableMatrix(attributes);
  93777. function addConfigurableAttributeData(attribute) {
  93778. var attributeId = attribute.id;
  93779. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  93780. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attribute.code);
  93781. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attribute.label);
  93782. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][position]", 0);
  93783. attribute.options.forEach(function (option, index) {
  93784. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][include]", index);
  93785. sampler.addArgument("product[configurable_attributes_data][" + attributeId + "][values][" + option.value + "][value_index]", option.value);
  93786. });
  93787. }
  93788. /**
  93789. * Build 4 simple products for Configurable
  93790. */
  93791. function addConfigurableMatrix(attributes) {
  93792. var attribute1 = attributes[0],
  93793. attribute2 = attributes[1],
  93794. productIndex = 1,
  93795. products = [];
  93796. var variationNames = [];
  93797. attribute1.options.forEach(function (option1) {
  93798. attribute2.options.forEach(function (option2) {
  93799. var productAttributes = {},
  93800. namePart = option1.label + "+" + option2.label,
  93801. variationKey = option1.value + "-" + option2.value;
  93802. productAttributes[attribute1.code] = option1.value;
  93803. productAttributes[attribute2.code] = option2.value;
  93804. variationNames.push(namePart + " - " + vars.get("configurable_sku"));
  93805. var product = {
  93806. "id": null,
  93807. "name": namePart + " - " + vars.get("configurable_sku"),
  93808. "sku": namePart + " - " + vars.get("configurable_sku"),
  93809. "status": 1,
  93810. "price": "100",
  93811. "price_currency": "$",
  93812. "price_string": "$100",
  93813. "weight": "6",
  93814. "qty": "50",
  93815. "variationKey": variationKey,
  93816. "configurable_attribute": JSON.stringify(productAttributes),
  93817. "thumbnail_image": "",
  93818. "media_gallery": {"images": {}},
  93819. "image": [],
  93820. "was_changed": true,
  93821. "canEdit": 1,
  93822. "newProduct": 1,
  93823. "record_id": productIndex
  93824. };
  93825. productIndex++;
  93826. products.push(product);
  93827. });
  93828. });
  93829. sampler.addArgument("configurable-matrix-serialized", JSON.stringify(products));
  93830. vars.putObject("configurable_variations_assertion", variationNames);
  93831. }
  93832. </stringProp>
  93833. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/configurable_prepare_data.jmx</stringProp></JSR223PreProcessor>
  93834. <hashTree/>
  93835. </hashTree>
  93836. </hashTree>
  93837. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Downloadable Product" enabled="true">
  93838. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_downloadable_product.jmx</stringProp>
  93839. </TestFragmentController>
  93840. <hashTree>
  93841. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  93842. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  93843. <collectionProp name="Arguments.arguments"/>
  93844. </elementProp>
  93845. <stringProp name="HTTPSampler.domain"/>
  93846. <stringProp name="HTTPSampler.port"/>
  93847. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  93848. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  93849. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  93850. <stringProp name="HTTPSampler.contentEncoding"/>
  93851. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  93852. <stringProp name="HTTPSampler.method">GET</stringProp>
  93853. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  93854. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  93855. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  93856. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  93857. <boolProp name="HTTPSampler.monitor">false</boolProp>
  93858. <stringProp name="HTTPSampler.embedded_url_re"/>
  93859. </HTTPSamplerProxy>
  93860. <hashTree>
  93861. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  93862. <collectionProp name="Asserion.test_strings">
  93863. <stringProp name="1509986340">records found</stringProp>
  93864. </collectionProp>
  93865. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  93866. <boolProp name="Assertion.assume_success">false</boolProp>
  93867. <intProp name="Assertion.test_type">2</intProp>
  93868. </ResponseAssertion>
  93869. <hashTree/>
  93870. </hashTree>
  93871. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product" enabled="true">
  93872. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  93873. <collectionProp name="Arguments.arguments"/>
  93874. </elementProp>
  93875. <stringProp name="HTTPSampler.domain"/>
  93876. <stringProp name="HTTPSampler.port"/>
  93877. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  93878. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  93879. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  93880. <stringProp name="HTTPSampler.contentEncoding"/>
  93881. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/downloadable/</stringProp>
  93882. <stringProp name="HTTPSampler.method">GET</stringProp>
  93883. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  93884. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  93885. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  93886. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  93887. <boolProp name="HTTPSampler.monitor">false</boolProp>
  93888. <stringProp name="HTTPSampler.embedded_url_re"/>
  93889. </HTTPSamplerProxy>
  93890. <hashTree>
  93891. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  93892. <collectionProp name="Asserion.test_strings">
  93893. <stringProp name="-144461265">New Product</stringProp>
  93894. </collectionProp>
  93895. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  93896. <boolProp name="Assertion.assume_success">false</boolProp>
  93897. <intProp name="Assertion.test_type">2</intProp>
  93898. </ResponseAssertion>
  93899. <hashTree/>
  93900. </hashTree>
  93901. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Original File" enabled="true">
  93902. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  93903. <collectionProp name="HTTPFileArgs.files">
  93904. <elementProp name="${files_folder}downloadable_original.txt" elementType="HTTPFileArg">
  93905. <stringProp name="File.path">${files_folder}downloadable_original.txt</stringProp>
  93906. <stringProp name="File.paramname">links</stringProp>
  93907. <stringProp name="File.mimetype">text/plain</stringProp>
  93908. </elementProp>
  93909. </collectionProp>
  93910. </elementProp>
  93911. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  93912. <collectionProp name="Arguments.arguments">
  93913. <elementProp name="form_key" elementType="HTTPArgument">
  93914. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93915. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  93916. <stringProp name="Argument.metadata">=</stringProp>
  93917. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93918. <stringProp name="Argument.name">form_key</stringProp>
  93919. <stringProp name="Argument.desc">false</stringProp>
  93920. </elementProp>
  93921. </collectionProp>
  93922. </elementProp>
  93923. <stringProp name="HTTPSampler.domain"/>
  93924. <stringProp name="HTTPSampler.port"/>
  93925. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  93926. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  93927. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  93928. <stringProp name="HTTPSampler.contentEncoding"/>
  93929. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/links/?isAjax=true</stringProp>
  93930. <stringProp name="HTTPSampler.method">POST</stringProp>
  93931. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  93932. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  93933. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  93934. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  93935. <boolProp name="HTTPSampler.monitor">false</boolProp>
  93936. <stringProp name="HTTPSampler.embedded_url_re"/>
  93937. </HTTPSamplerProxy>
  93938. <hashTree>
  93939. <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 original file" enabled="true">
  93940. <stringProp name="VAR">original_file</stringProp>
  93941. <stringProp name="JSONPATH">$.file</stringProp>
  93942. <stringProp name="DEFAULT"/>
  93943. <stringProp name="VARIABLE"/>
  93944. <stringProp name="SUBJECT">BODY</stringProp>
  93945. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  93946. <hashTree/>
  93947. </hashTree>
  93948. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Upload Sample File" enabled="true">
  93949. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  93950. <collectionProp name="HTTPFileArgs.files">
  93951. <elementProp name="${files_folder}downloadable_sample.txt" elementType="HTTPFileArg">
  93952. <stringProp name="File.path">${files_folder}downloadable_sample.txt</stringProp>
  93953. <stringProp name="File.paramname">samples</stringProp>
  93954. <stringProp name="File.mimetype">text/plain</stringProp>
  93955. </elementProp>
  93956. </collectionProp>
  93957. </elementProp>
  93958. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  93959. <collectionProp name="Arguments.arguments">
  93960. <elementProp name="form_key" elementType="HTTPArgument">
  93961. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  93962. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  93963. <stringProp name="Argument.metadata">=</stringProp>
  93964. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  93965. <stringProp name="Argument.name">form_key</stringProp>
  93966. <stringProp name="Argument.desc">false</stringProp>
  93967. </elementProp>
  93968. </collectionProp>
  93969. </elementProp>
  93970. <stringProp name="HTTPSampler.domain"/>
  93971. <stringProp name="HTTPSampler.port"/>
  93972. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  93973. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  93974. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  93975. <stringProp name="HTTPSampler.contentEncoding"/>
  93976. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/downloadable_file/upload/type/samples/?isAjax=true</stringProp>
  93977. <stringProp name="HTTPSampler.method">POST</stringProp>
  93978. <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
  93979. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  93980. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  93981. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  93982. <boolProp name="HTTPSampler.monitor">false</boolProp>
  93983. <stringProp name="HTTPSampler.embedded_url_re"/>
  93984. </HTTPSamplerProxy>
  93985. <hashTree>
  93986. <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 sample file" enabled="true">
  93987. <stringProp name="VAR">sample_file</stringProp>
  93988. <stringProp name="JSONPATH">$.file</stringProp>
  93989. <stringProp name="DEFAULT"/>
  93990. <stringProp name="VARIABLE"/>
  93991. <stringProp name="SUBJECT">BODY</stringProp>
  93992. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  93993. <hashTree/>
  93994. </hashTree>
  93995. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Validate" enabled="true">
  93996. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  93997. <collectionProp name="Arguments.arguments">
  93998. <elementProp name="ajax" elementType="HTTPArgument">
  93999. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94000. <stringProp name="Argument.value">true</stringProp>
  94001. <stringProp name="Argument.metadata">=</stringProp>
  94002. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94003. <stringProp name="Argument.name">ajax</stringProp>
  94004. <stringProp name="Argument.desc">false</stringProp>
  94005. </elementProp>
  94006. <elementProp name="isAjax" elementType="HTTPArgument">
  94007. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94008. <stringProp name="Argument.value">true</stringProp>
  94009. <stringProp name="Argument.metadata">=</stringProp>
  94010. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94011. <stringProp name="Argument.name">isAjax</stringProp>
  94012. <stringProp name="Argument.desc">false</stringProp>
  94013. </elementProp>
  94014. <elementProp name="form_key" elementType="HTTPArgument">
  94015. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94016. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  94017. <stringProp name="Argument.metadata">=</stringProp>
  94018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94019. <stringProp name="Argument.name">form_key</stringProp>
  94020. <stringProp name="Argument.desc">false</stringProp>
  94021. </elementProp>
  94022. <elementProp name="product[name]" elementType="HTTPArgument">
  94023. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94024. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  94025. <stringProp name="Argument.metadata">=</stringProp>
  94026. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94027. <stringProp name="Argument.name">product[name]</stringProp>
  94028. <stringProp name="Argument.desc">false</stringProp>
  94029. </elementProp>
  94030. <elementProp name="product[sku]" elementType="HTTPArgument">
  94031. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94032. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  94033. <stringProp name="Argument.metadata">=</stringProp>
  94034. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94035. <stringProp name="Argument.name">product[sku]</stringProp>
  94036. <stringProp name="Argument.desc">false</stringProp>
  94037. </elementProp>
  94038. <elementProp name="product[price]" elementType="HTTPArgument">
  94039. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94040. <stringProp name="Argument.value">123</stringProp>
  94041. <stringProp name="Argument.metadata">=</stringProp>
  94042. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94043. <stringProp name="Argument.name">product[price]</stringProp>
  94044. </elementProp>
  94045. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  94046. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94047. <stringProp name="Argument.value">2</stringProp>
  94048. <stringProp name="Argument.metadata">=</stringProp>
  94049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94050. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  94051. </elementProp>
  94052. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  94053. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94054. <stringProp name="Argument.value">111</stringProp>
  94055. <stringProp name="Argument.metadata">=</stringProp>
  94056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94057. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  94058. </elementProp>
  94059. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  94060. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94061. <stringProp name="Argument.value">1</stringProp>
  94062. <stringProp name="Argument.metadata">=</stringProp>
  94063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94064. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  94065. </elementProp>
  94066. <elementProp name="product[weight]" elementType="HTTPArgument">
  94067. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94068. <stringProp name="Argument.value">1.0000</stringProp>
  94069. <stringProp name="Argument.metadata">=</stringProp>
  94070. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94071. <stringProp name="Argument.name">product[weight]</stringProp>
  94072. </elementProp>
  94073. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  94074. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94075. <stringProp name="Argument.value">2</stringProp>
  94076. <stringProp name="Argument.metadata">=</stringProp>
  94077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94078. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  94079. </elementProp>
  94080. <elementProp name="product[description]" elementType="HTTPArgument">
  94081. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94082. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  94083. <stringProp name="Argument.metadata">=</stringProp>
  94084. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94085. <stringProp name="Argument.name">product[description]</stringProp>
  94086. </elementProp>
  94087. <elementProp name="product[short_description]" elementType="HTTPArgument">
  94088. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94089. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  94090. <stringProp name="Argument.metadata">=</stringProp>
  94091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94092. <stringProp name="Argument.name">product[short_description]</stringProp>
  94093. </elementProp>
  94094. <elementProp name="product[status]" elementType="HTTPArgument">
  94095. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94096. <stringProp name="Argument.value">1</stringProp>
  94097. <stringProp name="Argument.metadata">=</stringProp>
  94098. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94099. <stringProp name="Argument.name">product[status]</stringProp>
  94100. </elementProp>
  94101. <elementProp name="product[image]" elementType="HTTPArgument">
  94102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94103. <stringProp name="Argument.value"/>
  94104. <stringProp name="Argument.metadata">=</stringProp>
  94105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94106. <stringProp name="Argument.name">product[image]</stringProp>
  94107. </elementProp>
  94108. <elementProp name="product[small_image]" elementType="HTTPArgument">
  94109. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94110. <stringProp name="Argument.value"/>
  94111. <stringProp name="Argument.metadata">=</stringProp>
  94112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94113. <stringProp name="Argument.name">product[small_image]</stringProp>
  94114. </elementProp>
  94115. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  94116. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94117. <stringProp name="Argument.value"/>
  94118. <stringProp name="Argument.metadata">=</stringProp>
  94119. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94120. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  94121. </elementProp>
  94122. <elementProp name="product[url_key]" elementType="HTTPArgument">
  94123. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94124. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  94125. <stringProp name="Argument.metadata">=</stringProp>
  94126. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94127. <stringProp name="Argument.name">product[url_key]</stringProp>
  94128. </elementProp>
  94129. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  94130. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94131. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  94132. <stringProp name="Argument.metadata">=</stringProp>
  94133. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94134. <stringProp name="Argument.name">product[meta_title]</stringProp>
  94135. </elementProp>
  94136. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  94137. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94138. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  94139. <stringProp name="Argument.metadata">=</stringProp>
  94140. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94141. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  94142. </elementProp>
  94143. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  94144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94145. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  94146. <stringProp name="Argument.metadata">=</stringProp>
  94147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94148. <stringProp name="Argument.name">product[meta_description]</stringProp>
  94149. </elementProp>
  94150. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  94151. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94152. <stringProp name="Argument.value">1</stringProp>
  94153. <stringProp name="Argument.metadata">=</stringProp>
  94154. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94155. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  94156. </elementProp>
  94157. <elementProp name="product[special_price]" elementType="HTTPArgument">
  94158. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94159. <stringProp name="Argument.value">99</stringProp>
  94160. <stringProp name="Argument.metadata">=</stringProp>
  94161. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94162. <stringProp name="Argument.name">product[special_price]</stringProp>
  94163. </elementProp>
  94164. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  94165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94166. <stringProp name="Argument.value">1</stringProp>
  94167. <stringProp name="Argument.metadata">=</stringProp>
  94168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94169. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  94170. </elementProp>
  94171. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  94172. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94173. <stringProp name="Argument.value"/>
  94174. <stringProp name="Argument.metadata">=</stringProp>
  94175. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94176. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  94177. </elementProp>
  94178. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  94179. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94180. <stringProp name="Argument.value"/>
  94181. <stringProp name="Argument.metadata">=</stringProp>
  94182. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94183. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  94184. </elementProp>
  94185. <elementProp name="product[cost]" elementType="HTTPArgument">
  94186. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94187. <stringProp name="Argument.value"/>
  94188. <stringProp name="Argument.metadata">=</stringProp>
  94189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94190. <stringProp name="Argument.name">product[cost]</stringProp>
  94191. </elementProp>
  94192. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  94193. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94194. <stringProp name="Argument.value">0</stringProp>
  94195. <stringProp name="Argument.metadata">=</stringProp>
  94196. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94197. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  94198. </elementProp>
  94199. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  94200. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94201. <stringProp name="Argument.value">32000</stringProp>
  94202. <stringProp name="Argument.metadata">=</stringProp>
  94203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94204. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  94205. </elementProp>
  94206. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  94207. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94208. <stringProp name="Argument.value">100</stringProp>
  94209. <stringProp name="Argument.metadata">=</stringProp>
  94210. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94211. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  94212. </elementProp>
  94213. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  94214. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94215. <stringProp name="Argument.value">90</stringProp>
  94216. <stringProp name="Argument.metadata">=</stringProp>
  94217. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94218. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  94219. </elementProp>
  94220. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  94221. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94222. <stringProp name="Argument.value"/>
  94223. <stringProp name="Argument.metadata">=</stringProp>
  94224. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94225. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  94226. </elementProp>
  94227. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  94228. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94229. <stringProp name="Argument.value">0</stringProp>
  94230. <stringProp name="Argument.metadata">=</stringProp>
  94231. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94232. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  94233. </elementProp>
  94234. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  94235. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94236. <stringProp name="Argument.value">1</stringProp>
  94237. <stringProp name="Argument.metadata">=</stringProp>
  94238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94239. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  94240. </elementProp>
  94241. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  94242. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94243. <stringProp name="Argument.value">101</stringProp>
  94244. <stringProp name="Argument.metadata">=</stringProp>
  94245. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94246. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  94247. </elementProp>
  94248. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  94249. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94250. <stringProp name="Argument.value">99</stringProp>
  94251. <stringProp name="Argument.metadata">=</stringProp>
  94252. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94253. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  94254. </elementProp>
  94255. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  94256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94257. <stringProp name="Argument.value"/>
  94258. <stringProp name="Argument.metadata">=</stringProp>
  94259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94260. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  94261. </elementProp>
  94262. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  94263. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94264. <stringProp name="Argument.value">1</stringProp>
  94265. <stringProp name="Argument.metadata">=</stringProp>
  94266. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94267. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  94268. </elementProp>
  94269. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  94270. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94271. <stringProp name="Argument.value">100500</stringProp>
  94272. <stringProp name="Argument.metadata">=</stringProp>
  94273. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94274. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  94275. </elementProp>
  94276. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  94277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94278. <stringProp name="Argument.value">100500</stringProp>
  94279. <stringProp name="Argument.metadata">=</stringProp>
  94280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94281. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  94282. </elementProp>
  94283. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  94284. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94285. <stringProp name="Argument.value">0</stringProp>
  94286. <stringProp name="Argument.metadata">=</stringProp>
  94287. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94288. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  94289. </elementProp>
  94290. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  94291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94292. <stringProp name="Argument.value">1</stringProp>
  94293. <stringProp name="Argument.metadata">=</stringProp>
  94294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94295. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  94296. </elementProp>
  94297. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  94298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94299. <stringProp name="Argument.value">1</stringProp>
  94300. <stringProp name="Argument.metadata">=</stringProp>
  94301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94302. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  94303. </elementProp>
  94304. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  94305. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94306. <stringProp name="Argument.value">1</stringProp>
  94307. <stringProp name="Argument.metadata">=</stringProp>
  94308. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94309. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  94310. </elementProp>
  94311. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  94312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94313. <stringProp name="Argument.value">10000</stringProp>
  94314. <stringProp name="Argument.metadata">=</stringProp>
  94315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94316. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  94317. </elementProp>
  94318. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  94319. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94320. <stringProp name="Argument.value">1</stringProp>
  94321. <stringProp name="Argument.metadata">=</stringProp>
  94322. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94323. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  94324. </elementProp>
  94325. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  94326. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94327. <stringProp name="Argument.value">0</stringProp>
  94328. <stringProp name="Argument.metadata">=</stringProp>
  94329. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94330. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  94331. </elementProp>
  94332. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  94333. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94334. <stringProp name="Argument.value">0</stringProp>
  94335. <stringProp name="Argument.metadata">=</stringProp>
  94336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94337. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  94338. </elementProp>
  94339. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  94340. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94341. <stringProp name="Argument.value">0</stringProp>
  94342. <stringProp name="Argument.metadata">=</stringProp>
  94343. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94344. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  94345. </elementProp>
  94346. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  94347. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94348. <stringProp name="Argument.value">1</stringProp>
  94349. <stringProp name="Argument.metadata">=</stringProp>
  94350. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94351. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  94352. </elementProp>
  94353. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  94354. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94355. <stringProp name="Argument.value">1</stringProp>
  94356. <stringProp name="Argument.metadata">=</stringProp>
  94357. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94358. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  94359. </elementProp>
  94360. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  94361. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94362. <stringProp name="Argument.value">0</stringProp>
  94363. <stringProp name="Argument.metadata">=</stringProp>
  94364. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94365. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  94366. </elementProp>
  94367. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  94368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94369. <stringProp name="Argument.value">0</stringProp>
  94370. <stringProp name="Argument.metadata">=</stringProp>
  94371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94372. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  94373. </elementProp>
  94374. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  94375. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94376. <stringProp name="Argument.value">1</stringProp>
  94377. <stringProp name="Argument.metadata">=</stringProp>
  94378. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94379. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  94380. </elementProp>
  94381. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  94382. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94383. <stringProp name="Argument.value">1</stringProp>
  94384. <stringProp name="Argument.metadata">=</stringProp>
  94385. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94386. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  94387. </elementProp>
  94388. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  94389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94390. <stringProp name="Argument.value"/>
  94391. <stringProp name="Argument.metadata">=</stringProp>
  94392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94393. <stringProp name="Argument.name">product[custom_design]</stringProp>
  94394. </elementProp>
  94395. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  94396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94397. <stringProp name="Argument.value"/>
  94398. <stringProp name="Argument.metadata">=</stringProp>
  94399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94400. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  94401. </elementProp>
  94402. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  94403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94404. <stringProp name="Argument.value"/>
  94405. <stringProp name="Argument.metadata">=</stringProp>
  94406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94407. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  94408. </elementProp>
  94409. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  94410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94411. <stringProp name="Argument.value"/>
  94412. <stringProp name="Argument.metadata">=</stringProp>
  94413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94414. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  94415. </elementProp>
  94416. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  94417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94418. <stringProp name="Argument.value"/>
  94419. <stringProp name="Argument.metadata">=</stringProp>
  94420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94421. <stringProp name="Argument.name">product[page_layout]</stringProp>
  94422. </elementProp>
  94423. <elementProp name="product[options_container]" elementType="HTTPArgument">
  94424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94425. <stringProp name="Argument.value">container2</stringProp>
  94426. <stringProp name="Argument.metadata">=</stringProp>
  94427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94428. <stringProp name="Argument.name">product[options_container]</stringProp>
  94429. </elementProp>
  94430. <elementProp name="is_downloadable" elementType="HTTPArgument">
  94431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94432. <stringProp name="Argument.value">on</stringProp>
  94433. <stringProp name="Argument.metadata">=</stringProp>
  94434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94435. <stringProp name="Argument.name">is_downloadable</stringProp>
  94436. </elementProp>
  94437. <elementProp name="product[links_title]" elementType="HTTPArgument">
  94438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94439. <stringProp name="Argument.value">Links</stringProp>
  94440. <stringProp name="Argument.metadata">=</stringProp>
  94441. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94442. <stringProp name="Argument.name">product[links_title]</stringProp>
  94443. </elementProp>
  94444. <elementProp name="product[links_purchased_separately]" elementType="HTTPArgument">
  94445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94446. <stringProp name="Argument.value">0</stringProp>
  94447. <stringProp name="Argument.metadata">=</stringProp>
  94448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94449. <stringProp name="Argument.name">product[links_purchased_separately]</stringProp>
  94450. </elementProp>
  94451. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  94452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94453. <stringProp name="Argument.value">${original_file}</stringProp>
  94454. <stringProp name="Argument.metadata">=</stringProp>
  94455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94456. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  94457. <stringProp name="Argument.desc">false</stringProp>
  94458. </elementProp>
  94459. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  94460. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94461. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  94462. <stringProp name="Argument.metadata">=</stringProp>
  94463. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94464. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  94465. <stringProp name="Argument.desc">false</stringProp>
  94466. </elementProp>
  94467. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  94468. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94469. <stringProp name="Argument.value">13</stringProp>
  94470. <stringProp name="Argument.metadata">=</stringProp>
  94471. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94472. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  94473. <stringProp name="Argument.desc">false</stringProp>
  94474. </elementProp>
  94475. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  94476. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94477. <stringProp name="Argument.value">new</stringProp>
  94478. <stringProp name="Argument.metadata">=</stringProp>
  94479. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94480. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  94481. <stringProp name="Argument.desc">false</stringProp>
  94482. </elementProp>
  94483. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  94484. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94485. <stringProp name="Argument.value">1</stringProp>
  94486. <stringProp name="Argument.metadata">=</stringProp>
  94487. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94488. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  94489. </elementProp>
  94490. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  94491. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94492. <stringProp name="Argument.value">0</stringProp>
  94493. <stringProp name="Argument.metadata">=</stringProp>
  94494. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94495. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  94496. </elementProp>
  94497. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  94498. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94499. <stringProp name="Argument.value"/>
  94500. <stringProp name="Argument.metadata">=</stringProp>
  94501. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94502. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  94503. </elementProp>
  94504. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  94505. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94506. <stringProp name="Argument.value">0</stringProp>
  94507. <stringProp name="Argument.metadata">=</stringProp>
  94508. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94509. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  94510. <stringProp name="Argument.desc">true</stringProp>
  94511. </elementProp>
  94512. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  94513. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94514. <stringProp name="Argument.value">120</stringProp>
  94515. <stringProp name="Argument.metadata">=</stringProp>
  94516. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94517. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  94518. <stringProp name="Argument.desc">true</stringProp>
  94519. </elementProp>
  94520. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  94521. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94522. <stringProp name="Argument.value">0</stringProp>
  94523. <stringProp name="Argument.metadata">=</stringProp>
  94524. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94525. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  94526. <stringProp name="Argument.desc">true</stringProp>
  94527. </elementProp>
  94528. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  94529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94530. <stringProp name="Argument.value">file</stringProp>
  94531. <stringProp name="Argument.metadata">=</stringProp>
  94532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94533. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  94534. </elementProp>
  94535. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  94536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94537. <stringProp name="Argument.value"/>
  94538. <stringProp name="Argument.metadata">=</stringProp>
  94539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94540. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  94541. </elementProp>
  94542. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  94543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94544. <stringProp name="Argument.value">1</stringProp>
  94545. <stringProp name="Argument.metadata">=</stringProp>
  94546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94547. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  94548. </elementProp>
  94549. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  94550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94551. <stringProp name="Argument.value">Original Link</stringProp>
  94552. <stringProp name="Argument.metadata">=</stringProp>
  94553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94554. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  94555. </elementProp>
  94556. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  94557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94558. <stringProp name="Argument.value">file</stringProp>
  94559. <stringProp name="Argument.metadata">=</stringProp>
  94560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94561. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  94562. </elementProp>
  94563. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  94564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94565. <stringProp name="Argument.value">${sample_file}</stringProp>
  94566. <stringProp name="Argument.metadata">=</stringProp>
  94567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94568. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  94569. <stringProp name="Argument.desc">true</stringProp>
  94570. </elementProp>
  94571. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  94572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94573. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  94574. <stringProp name="Argument.metadata">=</stringProp>
  94575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94576. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  94577. <stringProp name="Argument.desc">true</stringProp>
  94578. </elementProp>
  94579. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  94580. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94581. <stringProp name="Argument.value">14</stringProp>
  94582. <stringProp name="Argument.metadata">=</stringProp>
  94583. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94584. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  94585. <stringProp name="Argument.desc">true</stringProp>
  94586. </elementProp>
  94587. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  94588. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94589. <stringProp name="Argument.value">new</stringProp>
  94590. <stringProp name="Argument.metadata">=</stringProp>
  94591. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94592. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  94593. <stringProp name="Argument.desc">true</stringProp>
  94594. </elementProp>
  94595. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  94596. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94597. <stringProp name="Argument.value">0</stringProp>
  94598. <stringProp name="Argument.metadata">=</stringProp>
  94599. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94600. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  94601. <stringProp name="Argument.desc">true</stringProp>
  94602. </elementProp>
  94603. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  94604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94605. <stringProp name="Argument.value"/>
  94606. <stringProp name="Argument.metadata">=</stringProp>
  94607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94608. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  94609. <stringProp name="Argument.desc">true</stringProp>
  94610. </elementProp>
  94611. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  94612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94613. <stringProp name="Argument.value">1</stringProp>
  94614. <stringProp name="Argument.metadata">=</stringProp>
  94615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94616. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  94617. <stringProp name="Argument.desc">true</stringProp>
  94618. </elementProp>
  94619. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  94620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94621. <stringProp name="Argument.value">Sample Link</stringProp>
  94622. <stringProp name="Argument.metadata">=</stringProp>
  94623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94624. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  94625. <stringProp name="Argument.desc">true</stringProp>
  94626. </elementProp>
  94627. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  94628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94629. <stringProp name="Argument.value">file</stringProp>
  94630. <stringProp name="Argument.metadata">=</stringProp>
  94631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94632. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  94633. <stringProp name="Argument.desc">true</stringProp>
  94634. </elementProp>
  94635. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  94636. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94637. <stringProp name="Argument.value">1</stringProp>
  94638. <stringProp name="Argument.metadata">=</stringProp>
  94639. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94640. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  94641. <stringProp name="Argument.desc">false</stringProp>
  94642. </elementProp>
  94643. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  94644. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94645. <stringProp name="Argument.value">4</stringProp>
  94646. <stringProp name="Argument.metadata">=</stringProp>
  94647. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94648. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  94649. <stringProp name="Argument.desc">false</stringProp>
  94650. </elementProp>
  94651. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  94652. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94653. <stringProp name="Argument.value"/>
  94654. <stringProp name="Argument.metadata">=</stringProp>
  94655. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94656. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  94657. <stringProp name="Argument.desc">false</stringProp>
  94658. </elementProp>
  94659. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  94660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94661. <stringProp name="Argument.value">${related_product_id}</stringProp>
  94662. <stringProp name="Argument.metadata">=</stringProp>
  94663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94664. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  94665. </elementProp>
  94666. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  94667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94668. <stringProp name="Argument.value">1</stringProp>
  94669. <stringProp name="Argument.metadata">=</stringProp>
  94670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94671. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  94672. </elementProp>
  94673. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  94674. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94675. <stringProp name="Argument.value">${related_product_id}</stringProp>
  94676. <stringProp name="Argument.metadata">=</stringProp>
  94677. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94678. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  94679. </elementProp>
  94680. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  94681. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94682. <stringProp name="Argument.value">1</stringProp>
  94683. <stringProp name="Argument.metadata">=</stringProp>
  94684. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94685. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  94686. </elementProp>
  94687. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  94688. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94689. <stringProp name="Argument.value">${related_product_id}</stringProp>
  94690. <stringProp name="Argument.metadata">=</stringProp>
  94691. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94692. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  94693. </elementProp>
  94694. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  94695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94696. <stringProp name="Argument.value">1</stringProp>
  94697. <stringProp name="Argument.metadata">=</stringProp>
  94698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94699. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  94700. </elementProp>
  94701. </collectionProp>
  94702. </elementProp>
  94703. <stringProp name="HTTPSampler.domain"/>
  94704. <stringProp name="HTTPSampler.port"/>
  94705. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  94706. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  94707. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  94708. <stringProp name="HTTPSampler.contentEncoding"/>
  94709. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/type/downloadable/</stringProp>
  94710. <stringProp name="HTTPSampler.method">POST</stringProp>
  94711. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  94712. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  94713. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  94714. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  94715. <boolProp name="HTTPSampler.monitor">false</boolProp>
  94716. <stringProp name="HTTPSampler.embedded_url_re"/>
  94717. </HTTPSamplerProxy>
  94718. <hashTree>
  94719. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  94720. <collectionProp name="Asserion.test_strings">
  94721. <stringProp name="1853918323">{"error":false}</stringProp>
  94722. </collectionProp>
  94723. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  94724. <boolProp name="Assertion.assume_success">false</boolProp>
  94725. <intProp name="Assertion.test_type">2</intProp>
  94726. </ResponseAssertion>
  94727. <hashTree/>
  94728. </hashTree>
  94729. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Downloadable Product Save" enabled="true">
  94730. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  94731. <collectionProp name="Arguments.arguments">
  94732. <elementProp name="ajax" elementType="HTTPArgument">
  94733. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94734. <stringProp name="Argument.value">true</stringProp>
  94735. <stringProp name="Argument.metadata">=</stringProp>
  94736. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94737. <stringProp name="Argument.name">ajax</stringProp>
  94738. <stringProp name="Argument.desc">false</stringProp>
  94739. </elementProp>
  94740. <elementProp name="isAjax" elementType="HTTPArgument">
  94741. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94742. <stringProp name="Argument.value">true</stringProp>
  94743. <stringProp name="Argument.metadata">=</stringProp>
  94744. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94745. <stringProp name="Argument.name">isAjax</stringProp>
  94746. <stringProp name="Argument.desc">false</stringProp>
  94747. </elementProp>
  94748. <elementProp name="form_key" elementType="HTTPArgument">
  94749. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94750. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  94751. <stringProp name="Argument.metadata">=</stringProp>
  94752. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94753. <stringProp name="Argument.name">form_key</stringProp>
  94754. <stringProp name="Argument.desc">false</stringProp>
  94755. </elementProp>
  94756. <elementProp name="product[name]" elementType="HTTPArgument">
  94757. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94758. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  94759. <stringProp name="Argument.metadata">=</stringProp>
  94760. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94761. <stringProp name="Argument.name">product[name]</stringProp>
  94762. <stringProp name="Argument.desc">false</stringProp>
  94763. </elementProp>
  94764. <elementProp name="product[sku]" elementType="HTTPArgument">
  94765. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94766. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  94767. <stringProp name="Argument.metadata">=</stringProp>
  94768. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94769. <stringProp name="Argument.name">product[sku]</stringProp>
  94770. <stringProp name="Argument.desc">false</stringProp>
  94771. </elementProp>
  94772. <elementProp name="product[price]" elementType="HTTPArgument">
  94773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94774. <stringProp name="Argument.value">123</stringProp>
  94775. <stringProp name="Argument.metadata">=</stringProp>
  94776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94777. <stringProp name="Argument.name">product[price]</stringProp>
  94778. </elementProp>
  94779. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  94780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94781. <stringProp name="Argument.value">2</stringProp>
  94782. <stringProp name="Argument.metadata">=</stringProp>
  94783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94784. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  94785. </elementProp>
  94786. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  94787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94788. <stringProp name="Argument.value">111</stringProp>
  94789. <stringProp name="Argument.metadata">=</stringProp>
  94790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94791. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  94792. </elementProp>
  94793. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  94794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94795. <stringProp name="Argument.value">1</stringProp>
  94796. <stringProp name="Argument.metadata">=</stringProp>
  94797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94798. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  94799. </elementProp>
  94800. <elementProp name="product[weight]" elementType="HTTPArgument">
  94801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94802. <stringProp name="Argument.value">1.0000</stringProp>
  94803. <stringProp name="Argument.metadata">=</stringProp>
  94804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94805. <stringProp name="Argument.name">product[weight]</stringProp>
  94806. </elementProp>
  94807. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  94808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94809. <stringProp name="Argument.value">2</stringProp>
  94810. <stringProp name="Argument.metadata">=</stringProp>
  94811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94812. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  94813. </elementProp>
  94814. <elementProp name="product[description]" elementType="HTTPArgument">
  94815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94816. <stringProp name="Argument.value">&lt;p&gt;Full downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  94817. <stringProp name="Argument.metadata">=</stringProp>
  94818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94819. <stringProp name="Argument.name">product[description]</stringProp>
  94820. </elementProp>
  94821. <elementProp name="product[short_description]" elementType="HTTPArgument">
  94822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94823. <stringProp name="Argument.value">&lt;p&gt;Short downloadable product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  94824. <stringProp name="Argument.metadata">=</stringProp>
  94825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94826. <stringProp name="Argument.name">product[short_description]</stringProp>
  94827. <stringProp name="Argument.desc">false</stringProp>
  94828. </elementProp>
  94829. <elementProp name="product[status]" elementType="HTTPArgument">
  94830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94831. <stringProp name="Argument.value">1</stringProp>
  94832. <stringProp name="Argument.metadata">=</stringProp>
  94833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94834. <stringProp name="Argument.name">product[status]</stringProp>
  94835. </elementProp>
  94836. <elementProp name="product[image]" elementType="HTTPArgument">
  94837. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94838. <stringProp name="Argument.value"/>
  94839. <stringProp name="Argument.metadata">=</stringProp>
  94840. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94841. <stringProp name="Argument.name">product[image]</stringProp>
  94842. </elementProp>
  94843. <elementProp name="product[small_image]" elementType="HTTPArgument">
  94844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94845. <stringProp name="Argument.value"/>
  94846. <stringProp name="Argument.metadata">=</stringProp>
  94847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94848. <stringProp name="Argument.name">product[small_image]</stringProp>
  94849. </elementProp>
  94850. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  94851. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94852. <stringProp name="Argument.value"/>
  94853. <stringProp name="Argument.metadata">=</stringProp>
  94854. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94855. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  94856. </elementProp>
  94857. <elementProp name="product[url_key]" elementType="HTTPArgument">
  94858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94859. <stringProp name="Argument.value">downloadable-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  94860. <stringProp name="Argument.metadata">=</stringProp>
  94861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94862. <stringProp name="Argument.name">product[url_key]</stringProp>
  94863. </elementProp>
  94864. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  94865. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94866. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  94867. <stringProp name="Argument.metadata">=</stringProp>
  94868. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94869. <stringProp name="Argument.name">product[meta_title]</stringProp>
  94870. </elementProp>
  94871. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  94872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94873. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  94874. <stringProp name="Argument.metadata">=</stringProp>
  94875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94876. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  94877. </elementProp>
  94878. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  94879. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94880. <stringProp name="Argument.value">Downloadable Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  94881. <stringProp name="Argument.metadata">=</stringProp>
  94882. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94883. <stringProp name="Argument.name">product[meta_description]</stringProp>
  94884. </elementProp>
  94885. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  94886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94887. <stringProp name="Argument.value">1</stringProp>
  94888. <stringProp name="Argument.metadata">=</stringProp>
  94889. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94890. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  94891. </elementProp>
  94892. <elementProp name="product[special_price]" elementType="HTTPArgument">
  94893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94894. <stringProp name="Argument.value">99</stringProp>
  94895. <stringProp name="Argument.metadata">=</stringProp>
  94896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94897. <stringProp name="Argument.name">product[special_price]</stringProp>
  94898. </elementProp>
  94899. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  94900. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94901. <stringProp name="Argument.value"/>
  94902. <stringProp name="Argument.metadata">=</stringProp>
  94903. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94904. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  94905. </elementProp>
  94906. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  94907. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94908. <stringProp name="Argument.value"/>
  94909. <stringProp name="Argument.metadata">=</stringProp>
  94910. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94911. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  94912. </elementProp>
  94913. <elementProp name="product[cost]" elementType="HTTPArgument">
  94914. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94915. <stringProp name="Argument.value"/>
  94916. <stringProp name="Argument.metadata">=</stringProp>
  94917. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94918. <stringProp name="Argument.name">product[cost]</stringProp>
  94919. </elementProp>
  94920. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  94921. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94922. <stringProp name="Argument.value">0</stringProp>
  94923. <stringProp name="Argument.metadata">=</stringProp>
  94924. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94925. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  94926. </elementProp>
  94927. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  94928. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94929. <stringProp name="Argument.value">32000</stringProp>
  94930. <stringProp name="Argument.metadata">=</stringProp>
  94931. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94932. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  94933. </elementProp>
  94934. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  94935. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94936. <stringProp name="Argument.value">100</stringProp>
  94937. <stringProp name="Argument.metadata">=</stringProp>
  94938. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94939. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  94940. </elementProp>
  94941. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  94942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94943. <stringProp name="Argument.value">90</stringProp>
  94944. <stringProp name="Argument.metadata">=</stringProp>
  94945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94946. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  94947. </elementProp>
  94948. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  94949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94950. <stringProp name="Argument.value"/>
  94951. <stringProp name="Argument.metadata">=</stringProp>
  94952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94953. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  94954. </elementProp>
  94955. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  94956. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94957. <stringProp name="Argument.value">0</stringProp>
  94958. <stringProp name="Argument.metadata">=</stringProp>
  94959. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94960. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  94961. </elementProp>
  94962. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  94963. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94964. <stringProp name="Argument.value">1</stringProp>
  94965. <stringProp name="Argument.metadata">=</stringProp>
  94966. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94967. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  94968. </elementProp>
  94969. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  94970. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94971. <stringProp name="Argument.value">101</stringProp>
  94972. <stringProp name="Argument.metadata">=</stringProp>
  94973. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94974. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  94975. </elementProp>
  94976. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  94977. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94978. <stringProp name="Argument.value">99</stringProp>
  94979. <stringProp name="Argument.metadata">=</stringProp>
  94980. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94981. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  94982. </elementProp>
  94983. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  94984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94985. <stringProp name="Argument.value"/>
  94986. <stringProp name="Argument.metadata">=</stringProp>
  94987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94988. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  94989. </elementProp>
  94990. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  94991. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94992. <stringProp name="Argument.value">1</stringProp>
  94993. <stringProp name="Argument.metadata">=</stringProp>
  94994. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  94995. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  94996. </elementProp>
  94997. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  94998. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  94999. <stringProp name="Argument.value">100500</stringProp>
  95000. <stringProp name="Argument.metadata">=</stringProp>
  95001. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95002. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  95003. </elementProp>
  95004. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  95005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95006. <stringProp name="Argument.value">100500</stringProp>
  95007. <stringProp name="Argument.metadata">=</stringProp>
  95008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95009. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  95010. </elementProp>
  95011. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  95012. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95013. <stringProp name="Argument.value">0</stringProp>
  95014. <stringProp name="Argument.metadata">=</stringProp>
  95015. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95016. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  95017. </elementProp>
  95018. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  95019. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95020. <stringProp name="Argument.value">1</stringProp>
  95021. <stringProp name="Argument.metadata">=</stringProp>
  95022. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95023. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  95024. </elementProp>
  95025. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  95026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95027. <stringProp name="Argument.value">1</stringProp>
  95028. <stringProp name="Argument.metadata">=</stringProp>
  95029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95030. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  95031. </elementProp>
  95032. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  95033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95034. <stringProp name="Argument.value">1</stringProp>
  95035. <stringProp name="Argument.metadata">=</stringProp>
  95036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95037. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  95038. </elementProp>
  95039. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  95040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95041. <stringProp name="Argument.value">10000</stringProp>
  95042. <stringProp name="Argument.metadata">=</stringProp>
  95043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95044. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  95045. </elementProp>
  95046. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  95047. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95048. <stringProp name="Argument.value">1</stringProp>
  95049. <stringProp name="Argument.metadata">=</stringProp>
  95050. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95051. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  95052. </elementProp>
  95053. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  95054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95055. <stringProp name="Argument.value">0</stringProp>
  95056. <stringProp name="Argument.metadata">=</stringProp>
  95057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95058. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  95059. </elementProp>
  95060. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  95061. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95062. <stringProp name="Argument.value">0</stringProp>
  95063. <stringProp name="Argument.metadata">=</stringProp>
  95064. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95065. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  95066. </elementProp>
  95067. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  95068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95069. <stringProp name="Argument.value">0</stringProp>
  95070. <stringProp name="Argument.metadata">=</stringProp>
  95071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95072. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  95073. </elementProp>
  95074. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  95075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95076. <stringProp name="Argument.value">1</stringProp>
  95077. <stringProp name="Argument.metadata">=</stringProp>
  95078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95079. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  95080. </elementProp>
  95081. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  95082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95083. <stringProp name="Argument.value">1</stringProp>
  95084. <stringProp name="Argument.metadata">=</stringProp>
  95085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95086. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  95087. </elementProp>
  95088. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  95089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95090. <stringProp name="Argument.value">1</stringProp>
  95091. <stringProp name="Argument.metadata">=</stringProp>
  95092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95093. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  95094. </elementProp>
  95095. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  95096. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95097. <stringProp name="Argument.value">0</stringProp>
  95098. <stringProp name="Argument.metadata">=</stringProp>
  95099. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95100. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  95101. </elementProp>
  95102. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  95103. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95104. <stringProp name="Argument.value">0</stringProp>
  95105. <stringProp name="Argument.metadata">=</stringProp>
  95106. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95107. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  95108. </elementProp>
  95109. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  95110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95111. <stringProp name="Argument.value">1</stringProp>
  95112. <stringProp name="Argument.metadata">=</stringProp>
  95113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95114. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  95115. </elementProp>
  95116. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  95117. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95118. <stringProp name="Argument.value">1</stringProp>
  95119. <stringProp name="Argument.metadata">=</stringProp>
  95120. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95121. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  95122. </elementProp>
  95123. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  95124. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95125. <stringProp name="Argument.value"/>
  95126. <stringProp name="Argument.metadata">=</stringProp>
  95127. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95128. <stringProp name="Argument.name">product[custom_design]</stringProp>
  95129. </elementProp>
  95130. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  95131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95132. <stringProp name="Argument.value"/>
  95133. <stringProp name="Argument.metadata">=</stringProp>
  95134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95135. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  95136. </elementProp>
  95137. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  95138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95139. <stringProp name="Argument.value"/>
  95140. <stringProp name="Argument.metadata">=</stringProp>
  95141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95142. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  95143. </elementProp>
  95144. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  95145. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95146. <stringProp name="Argument.value"/>
  95147. <stringProp name="Argument.metadata">=</stringProp>
  95148. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95149. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  95150. </elementProp>
  95151. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  95152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95153. <stringProp name="Argument.value"/>
  95154. <stringProp name="Argument.metadata">=</stringProp>
  95155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95156. <stringProp name="Argument.name">product[page_layout]</stringProp>
  95157. </elementProp>
  95158. <elementProp name="product[options_container]" elementType="HTTPArgument">
  95159. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95160. <stringProp name="Argument.value">container2</stringProp>
  95161. <stringProp name="Argument.metadata">=</stringProp>
  95162. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95163. <stringProp name="Argument.name">product[options_container]</stringProp>
  95164. </elementProp>
  95165. <elementProp name="downloadable[link][0][file][0][file]" elementType="HTTPArgument">
  95166. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95167. <stringProp name="Argument.value">${original_file}</stringProp>
  95168. <stringProp name="Argument.metadata">=</stringProp>
  95169. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95170. <stringProp name="Argument.name">downloadable[link][0][file][0][file]</stringProp>
  95171. <stringProp name="Argument.desc">false</stringProp>
  95172. </elementProp>
  95173. <elementProp name="downloadable[link][0][file][0][name]" elementType="HTTPArgument">
  95174. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95175. <stringProp name="Argument.value">downloadable_original.txt</stringProp>
  95176. <stringProp name="Argument.metadata">=</stringProp>
  95177. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95178. <stringProp name="Argument.name">downloadable[link][0][file][0][name]</stringProp>
  95179. <stringProp name="Argument.desc">false</stringProp>
  95180. </elementProp>
  95181. <elementProp name="downloadable[link][0][file][0][size]" elementType="HTTPArgument">
  95182. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95183. <stringProp name="Argument.value">13</stringProp>
  95184. <stringProp name="Argument.metadata">=</stringProp>
  95185. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95186. <stringProp name="Argument.name">downloadable[link][0][file][0][size]</stringProp>
  95187. <stringProp name="Argument.desc">false</stringProp>
  95188. </elementProp>
  95189. <elementProp name="downloadable[link][0][file][0][status]" elementType="HTTPArgument">
  95190. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95191. <stringProp name="Argument.value">new</stringProp>
  95192. <stringProp name="Argument.metadata">=</stringProp>
  95193. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95194. <stringProp name="Argument.name">downloadable[link][0][file][0][status]</stringProp>
  95195. <stringProp name="Argument.desc">false</stringProp>
  95196. </elementProp>
  95197. <elementProp name="downloadable[link][0][is_shareable]" elementType="HTTPArgument">
  95198. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95199. <stringProp name="Argument.value">1</stringProp>
  95200. <stringProp name="Argument.metadata">=</stringProp>
  95201. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95202. <stringProp name="Argument.name">downloadable[link][0][is_shareable]</stringProp>
  95203. <stringProp name="Argument.desc">true</stringProp>
  95204. </elementProp>
  95205. <elementProp name="downloadable[link][0][is_unlimited]" elementType="HTTPArgument">
  95206. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95207. <stringProp name="Argument.value">0</stringProp>
  95208. <stringProp name="Argument.metadata">=</stringProp>
  95209. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95210. <stringProp name="Argument.name">downloadable[link][0][is_unlimited]</stringProp>
  95211. <stringProp name="Argument.desc">true</stringProp>
  95212. </elementProp>
  95213. <elementProp name="downloadable[link][0][link_url]" elementType="HTTPArgument">
  95214. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95215. <stringProp name="Argument.value"/>
  95216. <stringProp name="Argument.metadata">=</stringProp>
  95217. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95218. <stringProp name="Argument.name">downloadable[link][0][link_url]</stringProp>
  95219. <stringProp name="Argument.desc">true</stringProp>
  95220. </elementProp>
  95221. <elementProp name="downloadable[link][0][number_of_downloads]" elementType="HTTPArgument">
  95222. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95223. <stringProp name="Argument.value">0</stringProp>
  95224. <stringProp name="Argument.metadata">=</stringProp>
  95225. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95226. <stringProp name="Argument.name">downloadable[link][0][number_of_downloads]</stringProp>
  95227. <stringProp name="Argument.desc">false</stringProp>
  95228. </elementProp>
  95229. <elementProp name="downloadable[link][0][price]" elementType="HTTPArgument">
  95230. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95231. <stringProp name="Argument.value">120</stringProp>
  95232. <stringProp name="Argument.metadata">=</stringProp>
  95233. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95234. <stringProp name="Argument.name">downloadable[link][0][price]</stringProp>
  95235. <stringProp name="Argument.desc">false</stringProp>
  95236. </elementProp>
  95237. <elementProp name="downloadable[link][0][record_id]" elementType="HTTPArgument">
  95238. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95239. <stringProp name="Argument.value">0</stringProp>
  95240. <stringProp name="Argument.metadata">=</stringProp>
  95241. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95242. <stringProp name="Argument.name">downloadable[link][0][record_id]</stringProp>
  95243. <stringProp name="Argument.desc">false</stringProp>
  95244. </elementProp>
  95245. <elementProp name="downloadable[link][0][sample][type]" elementType="HTTPArgument">
  95246. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95247. <stringProp name="Argument.value">file</stringProp>
  95248. <stringProp name="Argument.metadata">=</stringProp>
  95249. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95250. <stringProp name="Argument.name">downloadable[link][0][sample][type]</stringProp>
  95251. <stringProp name="Argument.desc">true</stringProp>
  95252. </elementProp>
  95253. <elementProp name="downloadable[link][0][sample][url]" elementType="HTTPArgument">
  95254. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95255. <stringProp name="Argument.value"/>
  95256. <stringProp name="Argument.metadata">=</stringProp>
  95257. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95258. <stringProp name="Argument.name">downloadable[link][0][sample][url]</stringProp>
  95259. <stringProp name="Argument.desc">true</stringProp>
  95260. </elementProp>
  95261. <elementProp name="downloadable[link][0][sort_order]" elementType="HTTPArgument">
  95262. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95263. <stringProp name="Argument.value">1</stringProp>
  95264. <stringProp name="Argument.metadata">=</stringProp>
  95265. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95266. <stringProp name="Argument.name">downloadable[link][0][sort_order]</stringProp>
  95267. <stringProp name="Argument.desc">true</stringProp>
  95268. </elementProp>
  95269. <elementProp name="downloadable[link][0][title]" elementType="HTTPArgument">
  95270. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95271. <stringProp name="Argument.value">Original Link</stringProp>
  95272. <stringProp name="Argument.metadata">=</stringProp>
  95273. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95274. <stringProp name="Argument.name">downloadable[link][0][title]</stringProp>
  95275. <stringProp name="Argument.desc">true</stringProp>
  95276. </elementProp>
  95277. <elementProp name="downloadable[link][0][type]" elementType="HTTPArgument">
  95278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95279. <stringProp name="Argument.value">file</stringProp>
  95280. <stringProp name="Argument.metadata">=</stringProp>
  95281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95282. <stringProp name="Argument.name">downloadable[link][0][type]</stringProp>
  95283. <stringProp name="Argument.desc">true</stringProp>
  95284. </elementProp>
  95285. <elementProp name="downloadable[sample][0][file][0][file]" elementType="HTTPArgument">
  95286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95287. <stringProp name="Argument.value">${sample_file}</stringProp>
  95288. <stringProp name="Argument.metadata">=</stringProp>
  95289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95290. <stringProp name="Argument.name">downloadable[sample][0][file][0][file]</stringProp>
  95291. <stringProp name="Argument.desc">true</stringProp>
  95292. </elementProp>
  95293. <elementProp name="downloadable[sample][0][file][0][name]" elementType="HTTPArgument">
  95294. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95295. <stringProp name="Argument.value">downloadable_sample.txt</stringProp>
  95296. <stringProp name="Argument.metadata">=</stringProp>
  95297. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95298. <stringProp name="Argument.name">downloadable[sample][0][file][0][name]</stringProp>
  95299. <stringProp name="Argument.desc">true</stringProp>
  95300. </elementProp>
  95301. <elementProp name="downloadable[sample][0][file][0][size]" elementType="HTTPArgument">
  95302. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95303. <stringProp name="Argument.value">14</stringProp>
  95304. <stringProp name="Argument.metadata">=</stringProp>
  95305. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95306. <stringProp name="Argument.name">downloadable[sample][0][file][0][size]</stringProp>
  95307. <stringProp name="Argument.desc">true</stringProp>
  95308. </elementProp>
  95309. <elementProp name="downloadable[sample][0][file][0][status]" elementType="HTTPArgument">
  95310. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95311. <stringProp name="Argument.value">new</stringProp>
  95312. <stringProp name="Argument.metadata">=</stringProp>
  95313. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95314. <stringProp name="Argument.name">downloadable[sample][0][file][0][status]</stringProp>
  95315. <stringProp name="Argument.desc">true</stringProp>
  95316. </elementProp>
  95317. <elementProp name="downloadable[sample][0][record_id]" elementType="HTTPArgument">
  95318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95319. <stringProp name="Argument.value">0</stringProp>
  95320. <stringProp name="Argument.metadata">=</stringProp>
  95321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95322. <stringProp name="Argument.name">downloadable[sample][0][record_id]</stringProp>
  95323. <stringProp name="Argument.desc">true</stringProp>
  95324. </elementProp>
  95325. <elementProp name="downloadable[sample][0][sample_url]" elementType="HTTPArgument">
  95326. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95327. <stringProp name="Argument.value"/>
  95328. <stringProp name="Argument.metadata">=</stringProp>
  95329. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95330. <stringProp name="Argument.name">downloadable[sample][0][sample_url]</stringProp>
  95331. <stringProp name="Argument.desc">true</stringProp>
  95332. </elementProp>
  95333. <elementProp name="downloadable[sample][0][sort_order]" elementType="HTTPArgument">
  95334. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95335. <stringProp name="Argument.value">1</stringProp>
  95336. <stringProp name="Argument.metadata">=</stringProp>
  95337. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95338. <stringProp name="Argument.name">downloadable[sample][0][sort_order]</stringProp>
  95339. <stringProp name="Argument.desc">true</stringProp>
  95340. </elementProp>
  95341. <elementProp name="downloadable[sample][0][title]" elementType="HTTPArgument">
  95342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95343. <stringProp name="Argument.value">Sample Link</stringProp>
  95344. <stringProp name="Argument.metadata">=</stringProp>
  95345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95346. <stringProp name="Argument.name">downloadable[sample][0][title]</stringProp>
  95347. <stringProp name="Argument.desc">true</stringProp>
  95348. </elementProp>
  95349. <elementProp name="downloadable[sample][0][type]" elementType="HTTPArgument">
  95350. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95351. <stringProp name="Argument.value">file</stringProp>
  95352. <stringProp name="Argument.metadata">=</stringProp>
  95353. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95354. <stringProp name="Argument.name">downloadable[sample][0][type]</stringProp>
  95355. <stringProp name="Argument.desc">true</stringProp>
  95356. </elementProp>
  95357. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  95358. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95359. <stringProp name="Argument.value">1</stringProp>
  95360. <stringProp name="Argument.metadata">=</stringProp>
  95361. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95362. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  95363. <stringProp name="Argument.desc">false</stringProp>
  95364. </elementProp>
  95365. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  95366. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95367. <stringProp name="Argument.value">4</stringProp>
  95368. <stringProp name="Argument.metadata">=</stringProp>
  95369. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95370. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  95371. <stringProp name="Argument.desc">false</stringProp>
  95372. </elementProp>
  95373. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  95374. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95375. <stringProp name="Argument.value"/>
  95376. <stringProp name="Argument.metadata">=</stringProp>
  95377. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95378. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  95379. <stringProp name="Argument.desc">false</stringProp>
  95380. </elementProp>
  95381. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  95382. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95383. <stringProp name="Argument.value">${related_product_id}</stringProp>
  95384. <stringProp name="Argument.metadata">=</stringProp>
  95385. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95386. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  95387. </elementProp>
  95388. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  95389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95390. <stringProp name="Argument.value">1</stringProp>
  95391. <stringProp name="Argument.metadata">=</stringProp>
  95392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95393. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  95394. </elementProp>
  95395. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  95396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95397. <stringProp name="Argument.value">${related_product_id}</stringProp>
  95398. <stringProp name="Argument.metadata">=</stringProp>
  95399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95400. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  95401. </elementProp>
  95402. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  95403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95404. <stringProp name="Argument.value">1</stringProp>
  95405. <stringProp name="Argument.metadata">=</stringProp>
  95406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95407. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  95408. </elementProp>
  95409. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  95410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95411. <stringProp name="Argument.value">${related_product_id}</stringProp>
  95412. <stringProp name="Argument.metadata">=</stringProp>
  95413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95414. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  95415. </elementProp>
  95416. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  95417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95418. <stringProp name="Argument.value">1</stringProp>
  95419. <stringProp name="Argument.metadata">=</stringProp>
  95420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95421. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  95422. </elementProp>
  95423. </collectionProp>
  95424. </elementProp>
  95425. <stringProp name="HTTPSampler.domain"/>
  95426. <stringProp name="HTTPSampler.port"/>
  95427. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  95428. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  95429. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  95430. <stringProp name="HTTPSampler.contentEncoding"/>
  95431. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/downloadable/back/edit/active_tab/product-details/</stringProp>
  95432. <stringProp name="HTTPSampler.method">POST</stringProp>
  95433. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  95434. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  95435. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  95436. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  95437. <boolProp name="HTTPSampler.monitor">false</boolProp>
  95438. <stringProp name="HTTPSampler.embedded_url_re"/>
  95439. </HTTPSamplerProxy>
  95440. <hashTree>
  95441. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  95442. <collectionProp name="Asserion.test_strings">
  95443. <stringProp name="-583471546">You saved the product</stringProp>
  95444. </collectionProp>
  95445. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  95446. <boolProp name="Assertion.assume_success">false</boolProp>
  95447. <intProp name="Assertion.test_type">2</intProp>
  95448. </ResponseAssertion>
  95449. <hashTree/>
  95450. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  95451. <collectionProp name="Asserion.test_strings">
  95452. <stringProp name="-1600986843">violation</stringProp>
  95453. </collectionProp>
  95454. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  95455. <boolProp name="Assertion.assume_success">false</boolProp>
  95456. <intProp name="Assertion.test_type">6</intProp>
  95457. </ResponseAssertion>
  95458. <hashTree/>
  95459. </hashTree>
  95460. </hashTree>
  95461. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Simple Product" enabled="true">
  95462. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_product/create_simple_product.jmx</stringProp>
  95463. </TestFragmentController>
  95464. <hashTree>
  95465. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Catalog Product" enabled="true">
  95466. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  95467. <collectionProp name="Arguments.arguments"/>
  95468. </elementProp>
  95469. <stringProp name="HTTPSampler.domain"/>
  95470. <stringProp name="HTTPSampler.port"/>
  95471. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  95472. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  95473. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  95474. <stringProp name="HTTPSampler.contentEncoding"/>
  95475. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/</stringProp>
  95476. <stringProp name="HTTPSampler.method">GET</stringProp>
  95477. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  95478. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  95479. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  95480. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  95481. <boolProp name="HTTPSampler.monitor">false</boolProp>
  95482. <stringProp name="HTTPSampler.embedded_url_re"/>
  95483. </HTTPSamplerProxy>
  95484. <hashTree>
  95485. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  95486. <collectionProp name="Asserion.test_strings">
  95487. <stringProp name="1509986340">records found</stringProp>
  95488. </collectionProp>
  95489. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  95490. <boolProp name="Assertion.assume_success">false</boolProp>
  95491. <intProp name="Assertion.test_type">2</intProp>
  95492. </ResponseAssertion>
  95493. <hashTree/>
  95494. </hashTree>
  95495. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product" enabled="true">
  95496. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  95497. <collectionProp name="Arguments.arguments"/>
  95498. </elementProp>
  95499. <stringProp name="HTTPSampler.domain"/>
  95500. <stringProp name="HTTPSampler.port"/>
  95501. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  95502. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  95503. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  95504. <stringProp name="HTTPSampler.contentEncoding"/>
  95505. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/new/set/4/type/simple/</stringProp>
  95506. <stringProp name="HTTPSampler.method">GET</stringProp>
  95507. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  95508. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  95509. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  95510. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  95511. <boolProp name="HTTPSampler.monitor">false</boolProp>
  95512. <stringProp name="HTTPSampler.embedded_url_re"/>
  95513. </HTTPSamplerProxy>
  95514. <hashTree>
  95515. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  95516. <collectionProp name="Asserion.test_strings">
  95517. <stringProp name="-144461265">New Product</stringProp>
  95518. </collectionProp>
  95519. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  95520. <boolProp name="Assertion.assume_success">false</boolProp>
  95521. <intProp name="Assertion.test_type">2</intProp>
  95522. </ResponseAssertion>
  95523. <hashTree/>
  95524. </hashTree>
  95525. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Validate" enabled="true">
  95526. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  95527. <collectionProp name="Arguments.arguments">
  95528. <elementProp name="ajax" elementType="HTTPArgument">
  95529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95530. <stringProp name="Argument.value">true</stringProp>
  95531. <stringProp name="Argument.metadata">=</stringProp>
  95532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95533. <stringProp name="Argument.name">ajax</stringProp>
  95534. <stringProp name="Argument.desc">false</stringProp>
  95535. </elementProp>
  95536. <elementProp name="isAjax" elementType="HTTPArgument">
  95537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95538. <stringProp name="Argument.value">true</stringProp>
  95539. <stringProp name="Argument.metadata">=</stringProp>
  95540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95541. <stringProp name="Argument.name">isAjax</stringProp>
  95542. <stringProp name="Argument.desc">false</stringProp>
  95543. </elementProp>
  95544. <elementProp name="form_key" elementType="HTTPArgument">
  95545. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95546. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  95547. <stringProp name="Argument.metadata">=</stringProp>
  95548. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95549. <stringProp name="Argument.name">form_key</stringProp>
  95550. <stringProp name="Argument.desc">false</stringProp>
  95551. </elementProp>
  95552. <elementProp name="product[name]" elementType="HTTPArgument">
  95553. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95554. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  95555. <stringProp name="Argument.metadata">=</stringProp>
  95556. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95557. <stringProp name="Argument.name">product[name]</stringProp>
  95558. <stringProp name="Argument.desc">false</stringProp>
  95559. </elementProp>
  95560. <elementProp name="product[sku]" elementType="HTTPArgument">
  95561. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95562. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  95563. <stringProp name="Argument.metadata">=</stringProp>
  95564. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95565. <stringProp name="Argument.name">product[sku]</stringProp>
  95566. <stringProp name="Argument.desc">false</stringProp>
  95567. </elementProp>
  95568. <elementProp name="product[price]" elementType="HTTPArgument">
  95569. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95570. <stringProp name="Argument.value">123</stringProp>
  95571. <stringProp name="Argument.metadata">=</stringProp>
  95572. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95573. <stringProp name="Argument.name">product[price]</stringProp>
  95574. </elementProp>
  95575. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  95576. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95577. <stringProp name="Argument.value">2</stringProp>
  95578. <stringProp name="Argument.metadata">=</stringProp>
  95579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95580. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  95581. </elementProp>
  95582. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  95583. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95584. <stringProp name="Argument.value">111</stringProp>
  95585. <stringProp name="Argument.metadata">=</stringProp>
  95586. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95587. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  95588. </elementProp>
  95589. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  95590. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95591. <stringProp name="Argument.value">1</stringProp>
  95592. <stringProp name="Argument.metadata">=</stringProp>
  95593. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95594. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  95595. </elementProp>
  95596. <elementProp name="product[weight]" elementType="HTTPArgument">
  95597. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95598. <stringProp name="Argument.value">1.0000</stringProp>
  95599. <stringProp name="Argument.metadata">=</stringProp>
  95600. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95601. <stringProp name="Argument.name">product[weight]</stringProp>
  95602. </elementProp>
  95603. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  95604. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95605. <stringProp name="Argument.value">1</stringProp>
  95606. <stringProp name="Argument.metadata">=</stringProp>
  95607. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95608. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  95609. <stringProp name="Argument.desc">true</stringProp>
  95610. </elementProp>
  95611. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  95612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95613. <stringProp name="Argument.value">2</stringProp>
  95614. <stringProp name="Argument.metadata">=</stringProp>
  95615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95616. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  95617. </elementProp>
  95618. <elementProp name="product[description]" elementType="HTTPArgument">
  95619. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95620. <stringProp name="Argument.value">&lt;p&gt;Full simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  95621. <stringProp name="Argument.metadata">=</stringProp>
  95622. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95623. <stringProp name="Argument.name">product[description]</stringProp>
  95624. </elementProp>
  95625. <elementProp name="product[short_description]" elementType="HTTPArgument">
  95626. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95627. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  95628. <stringProp name="Argument.metadata">=</stringProp>
  95629. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95630. <stringProp name="Argument.name">product[short_description]</stringProp>
  95631. </elementProp>
  95632. <elementProp name="product[status]" elementType="HTTPArgument">
  95633. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95634. <stringProp name="Argument.value">1</stringProp>
  95635. <stringProp name="Argument.metadata">=</stringProp>
  95636. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95637. <stringProp name="Argument.name">product[status]</stringProp>
  95638. </elementProp>
  95639. <elementProp name="product[image]" elementType="HTTPArgument">
  95640. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95641. <stringProp name="Argument.value"/>
  95642. <stringProp name="Argument.metadata">=</stringProp>
  95643. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95644. <stringProp name="Argument.name">product[image]</stringProp>
  95645. </elementProp>
  95646. <elementProp name="product[small_image]" elementType="HTTPArgument">
  95647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95648. <stringProp name="Argument.value"/>
  95649. <stringProp name="Argument.metadata">=</stringProp>
  95650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95651. <stringProp name="Argument.name">product[small_image]</stringProp>
  95652. </elementProp>
  95653. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  95654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95655. <stringProp name="Argument.value"/>
  95656. <stringProp name="Argument.metadata">=</stringProp>
  95657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95658. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  95659. </elementProp>
  95660. <elementProp name="product[url_key]" elementType="HTTPArgument">
  95661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95662. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  95663. <stringProp name="Argument.metadata">=</stringProp>
  95664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95665. <stringProp name="Argument.name">product[url_key]</stringProp>
  95666. </elementProp>
  95667. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  95668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95669. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  95670. <stringProp name="Argument.metadata">=</stringProp>
  95671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95672. <stringProp name="Argument.name">product[meta_title]</stringProp>
  95673. </elementProp>
  95674. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  95675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95676. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  95677. <stringProp name="Argument.metadata">=</stringProp>
  95678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95679. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  95680. </elementProp>
  95681. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  95682. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95683. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  95684. <stringProp name="Argument.metadata">=</stringProp>
  95685. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95686. <stringProp name="Argument.name">product[meta_description]</stringProp>
  95687. </elementProp>
  95688. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  95689. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95690. <stringProp name="Argument.value">1</stringProp>
  95691. <stringProp name="Argument.metadata">=</stringProp>
  95692. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95693. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  95694. </elementProp>
  95695. <elementProp name="product[special_price]" elementType="HTTPArgument">
  95696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95697. <stringProp name="Argument.value">99</stringProp>
  95698. <stringProp name="Argument.metadata">=</stringProp>
  95699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95700. <stringProp name="Argument.name">product[special_price]</stringProp>
  95701. </elementProp>
  95702. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  95703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95704. <stringProp name="Argument.value">1</stringProp>
  95705. <stringProp name="Argument.metadata">=</stringProp>
  95706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95707. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  95708. </elementProp>
  95709. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  95710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95711. <stringProp name="Argument.value"/>
  95712. <stringProp name="Argument.metadata">=</stringProp>
  95713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95714. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  95715. </elementProp>
  95716. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  95717. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95718. <stringProp name="Argument.value"/>
  95719. <stringProp name="Argument.metadata">=</stringProp>
  95720. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95721. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  95722. </elementProp>
  95723. <elementProp name="product[cost]" elementType="HTTPArgument">
  95724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95725. <stringProp name="Argument.value"/>
  95726. <stringProp name="Argument.metadata">=</stringProp>
  95727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95728. <stringProp name="Argument.name">product[cost]</stringProp>
  95729. </elementProp>
  95730. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  95731. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95732. <stringProp name="Argument.value">0</stringProp>
  95733. <stringProp name="Argument.metadata">=</stringProp>
  95734. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95735. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  95736. </elementProp>
  95737. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  95738. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95739. <stringProp name="Argument.value">32000</stringProp>
  95740. <stringProp name="Argument.metadata">=</stringProp>
  95741. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95742. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  95743. </elementProp>
  95744. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  95745. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95746. <stringProp name="Argument.value">100</stringProp>
  95747. <stringProp name="Argument.metadata">=</stringProp>
  95748. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95749. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  95750. </elementProp>
  95751. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  95752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95753. <stringProp name="Argument.value">90</stringProp>
  95754. <stringProp name="Argument.metadata">=</stringProp>
  95755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95756. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  95757. </elementProp>
  95758. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  95759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95760. <stringProp name="Argument.value"/>
  95761. <stringProp name="Argument.metadata">=</stringProp>
  95762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95763. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  95764. </elementProp>
  95765. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  95766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95767. <stringProp name="Argument.value">0</stringProp>
  95768. <stringProp name="Argument.metadata">=</stringProp>
  95769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95770. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  95771. </elementProp>
  95772. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  95773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95774. <stringProp name="Argument.value">1</stringProp>
  95775. <stringProp name="Argument.metadata">=</stringProp>
  95776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95777. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  95778. </elementProp>
  95779. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  95780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95781. <stringProp name="Argument.value">101</stringProp>
  95782. <stringProp name="Argument.metadata">=</stringProp>
  95783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95784. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  95785. </elementProp>
  95786. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  95787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95788. <stringProp name="Argument.value">99</stringProp>
  95789. <stringProp name="Argument.metadata">=</stringProp>
  95790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95791. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  95792. </elementProp>
  95793. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  95794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95795. <stringProp name="Argument.value"/>
  95796. <stringProp name="Argument.metadata">=</stringProp>
  95797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95798. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  95799. </elementProp>
  95800. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  95801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95802. <stringProp name="Argument.value">1</stringProp>
  95803. <stringProp name="Argument.metadata">=</stringProp>
  95804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95805. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  95806. </elementProp>
  95807. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  95808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95809. <stringProp name="Argument.value">100500</stringProp>
  95810. <stringProp name="Argument.metadata">=</stringProp>
  95811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95812. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  95813. </elementProp>
  95814. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  95815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95816. <stringProp name="Argument.value">100500</stringProp>
  95817. <stringProp name="Argument.metadata">=</stringProp>
  95818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95819. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  95820. </elementProp>
  95821. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  95822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95823. <stringProp name="Argument.value">0</stringProp>
  95824. <stringProp name="Argument.metadata">=</stringProp>
  95825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95826. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  95827. </elementProp>
  95828. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  95829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95830. <stringProp name="Argument.value">1</stringProp>
  95831. <stringProp name="Argument.metadata">=</stringProp>
  95832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95833. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  95834. </elementProp>
  95835. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  95836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95837. <stringProp name="Argument.value">1</stringProp>
  95838. <stringProp name="Argument.metadata">=</stringProp>
  95839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95840. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  95841. </elementProp>
  95842. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  95843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95844. <stringProp name="Argument.value">1</stringProp>
  95845. <stringProp name="Argument.metadata">=</stringProp>
  95846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95847. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  95848. </elementProp>
  95849. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  95850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95851. <stringProp name="Argument.value">10000</stringProp>
  95852. <stringProp name="Argument.metadata">=</stringProp>
  95853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95854. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  95855. </elementProp>
  95856. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  95857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95858. <stringProp name="Argument.value">1</stringProp>
  95859. <stringProp name="Argument.metadata">=</stringProp>
  95860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95861. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  95862. </elementProp>
  95863. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  95864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95865. <stringProp name="Argument.value">0</stringProp>
  95866. <stringProp name="Argument.metadata">=</stringProp>
  95867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95868. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  95869. </elementProp>
  95870. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  95871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95872. <stringProp name="Argument.value">0</stringProp>
  95873. <stringProp name="Argument.metadata">=</stringProp>
  95874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95875. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  95876. </elementProp>
  95877. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  95878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95879. <stringProp name="Argument.value">0</stringProp>
  95880. <stringProp name="Argument.metadata">=</stringProp>
  95881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95882. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  95883. </elementProp>
  95884. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  95885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95886. <stringProp name="Argument.value">1</stringProp>
  95887. <stringProp name="Argument.metadata">=</stringProp>
  95888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95889. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  95890. </elementProp>
  95891. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  95892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95893. <stringProp name="Argument.value">1</stringProp>
  95894. <stringProp name="Argument.metadata">=</stringProp>
  95895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95896. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  95897. </elementProp>
  95898. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  95899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95900. <stringProp name="Argument.value">0</stringProp>
  95901. <stringProp name="Argument.metadata">=</stringProp>
  95902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95903. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  95904. </elementProp>
  95905. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  95906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95907. <stringProp name="Argument.value">0</stringProp>
  95908. <stringProp name="Argument.metadata">=</stringProp>
  95909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95910. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  95911. </elementProp>
  95912. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  95913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95914. <stringProp name="Argument.value">1</stringProp>
  95915. <stringProp name="Argument.metadata">=</stringProp>
  95916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95917. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  95918. </elementProp>
  95919. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  95920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95921. <stringProp name="Argument.value">1</stringProp>
  95922. <stringProp name="Argument.metadata">=</stringProp>
  95923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95924. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  95925. </elementProp>
  95926. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  95927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95928. <stringProp name="Argument.value"/>
  95929. <stringProp name="Argument.metadata">=</stringProp>
  95930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95931. <stringProp name="Argument.name">product[custom_design]</stringProp>
  95932. </elementProp>
  95933. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  95934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95935. <stringProp name="Argument.value"/>
  95936. <stringProp name="Argument.metadata">=</stringProp>
  95937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95938. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  95939. </elementProp>
  95940. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  95941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95942. <stringProp name="Argument.value"/>
  95943. <stringProp name="Argument.metadata">=</stringProp>
  95944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95945. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  95946. </elementProp>
  95947. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  95948. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95949. <stringProp name="Argument.value"/>
  95950. <stringProp name="Argument.metadata">=</stringProp>
  95951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95952. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  95953. </elementProp>
  95954. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  95955. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95956. <stringProp name="Argument.value"/>
  95957. <stringProp name="Argument.metadata">=</stringProp>
  95958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95959. <stringProp name="Argument.name">product[page_layout]</stringProp>
  95960. </elementProp>
  95961. <elementProp name="product[options_container]" elementType="HTTPArgument">
  95962. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95963. <stringProp name="Argument.value">container2</stringProp>
  95964. <stringProp name="Argument.metadata">=</stringProp>
  95965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95966. <stringProp name="Argument.name">product[options_container]</stringProp>
  95967. </elementProp>
  95968. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  95969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95970. <stringProp name="Argument.value"/>
  95971. <stringProp name="Argument.metadata">=</stringProp>
  95972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95973. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  95974. <stringProp name="Argument.desc">false</stringProp>
  95975. </elementProp>
  95976. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  95977. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95978. <stringProp name="Argument.value">1</stringProp>
  95979. <stringProp name="Argument.metadata">=</stringProp>
  95980. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95981. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  95982. <stringProp name="Argument.desc">false</stringProp>
  95983. </elementProp>
  95984. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  95985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95986. <stringProp name="Argument.value">select</stringProp>
  95987. <stringProp name="Argument.metadata">=</stringProp>
  95988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95989. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  95990. <stringProp name="Argument.desc">false</stringProp>
  95991. </elementProp>
  95992. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  95993. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  95994. <stringProp name="Argument.value">drop_down</stringProp>
  95995. <stringProp name="Argument.metadata">=</stringProp>
  95996. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  95997. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  95998. <stringProp name="Argument.desc">false</stringProp>
  95999. </elementProp>
  96000. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  96001. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96002. <stringProp name="Argument.value">0</stringProp>
  96003. <stringProp name="Argument.metadata">=</stringProp>
  96004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96005. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  96006. <stringProp name="Argument.desc">false</stringProp>
  96007. </elementProp>
  96008. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  96009. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96010. <stringProp name="Argument.value">Product Option Title One</stringProp>
  96011. <stringProp name="Argument.metadata">=</stringProp>
  96012. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96013. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  96014. <stringProp name="Argument.desc">false</stringProp>
  96015. </elementProp>
  96016. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  96017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96018. <stringProp name="Argument.value">drop_down</stringProp>
  96019. <stringProp name="Argument.metadata">=</stringProp>
  96020. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96021. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  96022. <stringProp name="Argument.desc">false</stringProp>
  96023. </elementProp>
  96024. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  96025. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96026. <stringProp name="Argument.value"/>
  96027. <stringProp name="Argument.metadata">=</stringProp>
  96028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96029. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  96030. <stringProp name="Argument.desc">false</stringProp>
  96031. </elementProp>
  96032. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  96033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96034. <stringProp name="Argument.value">200</stringProp>
  96035. <stringProp name="Argument.metadata">=</stringProp>
  96036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96037. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  96038. <stringProp name="Argument.desc">false</stringProp>
  96039. </elementProp>
  96040. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  96041. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96042. <stringProp name="Argument.value">fixed</stringProp>
  96043. <stringProp name="Argument.metadata">=</stringProp>
  96044. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96045. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  96046. <stringProp name="Argument.desc">false</stringProp>
  96047. </elementProp>
  96048. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  96049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96050. <stringProp name="Argument.value">sku-one</stringProp>
  96051. <stringProp name="Argument.metadata">=</stringProp>
  96052. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96053. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  96054. <stringProp name="Argument.desc">false</stringProp>
  96055. </elementProp>
  96056. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  96057. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96058. <stringProp name="Argument.value">0</stringProp>
  96059. <stringProp name="Argument.metadata">=</stringProp>
  96060. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96061. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  96062. <stringProp name="Argument.desc">false</stringProp>
  96063. </elementProp>
  96064. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  96065. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96066. <stringProp name="Argument.value">Row Title</stringProp>
  96067. <stringProp name="Argument.metadata">=</stringProp>
  96068. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96069. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  96070. <stringProp name="Argument.desc">false</stringProp>
  96071. </elementProp>
  96072. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  96073. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96074. <stringProp name="Argument.value"/>
  96075. <stringProp name="Argument.metadata">=</stringProp>
  96076. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96077. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  96078. <stringProp name="Argument.desc">false</stringProp>
  96079. </elementProp>
  96080. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  96081. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96082. <stringProp name="Argument.value">1</stringProp>
  96083. <stringProp name="Argument.metadata">=</stringProp>
  96084. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96085. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  96086. <stringProp name="Argument.desc">false</stringProp>
  96087. </elementProp>
  96088. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  96089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96090. <stringProp name="Argument.value">250</stringProp>
  96091. <stringProp name="Argument.metadata">=</stringProp>
  96092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96093. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  96094. <stringProp name="Argument.desc">false</stringProp>
  96095. </elementProp>
  96096. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  96097. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96098. <stringProp name="Argument.value">text</stringProp>
  96099. <stringProp name="Argument.metadata">=</stringProp>
  96100. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96101. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  96102. <stringProp name="Argument.desc">false</stringProp>
  96103. </elementProp>
  96104. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  96105. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96106. <stringProp name="Argument.value">field</stringProp>
  96107. <stringProp name="Argument.metadata">=</stringProp>
  96108. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96109. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  96110. <stringProp name="Argument.desc">false</stringProp>
  96111. </elementProp>
  96112. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  96113. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96114. <stringProp name="Argument.value">500</stringProp>
  96115. <stringProp name="Argument.metadata">=</stringProp>
  96116. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96117. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  96118. <stringProp name="Argument.desc">false</stringProp>
  96119. </elementProp>
  96120. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  96121. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96122. <stringProp name="Argument.value">fixed</stringProp>
  96123. <stringProp name="Argument.metadata">=</stringProp>
  96124. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96125. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  96126. <stringProp name="Argument.desc">false</stringProp>
  96127. </elementProp>
  96128. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  96129. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96130. <stringProp name="Argument.value">sku-two</stringProp>
  96131. <stringProp name="Argument.metadata">=</stringProp>
  96132. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96133. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  96134. <stringProp name="Argument.desc">false</stringProp>
  96135. </elementProp>
  96136. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  96137. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96138. <stringProp name="Argument.value">1</stringProp>
  96139. <stringProp name="Argument.metadata">=</stringProp>
  96140. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96141. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  96142. <stringProp name="Argument.desc">false</stringProp>
  96143. </elementProp>
  96144. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  96145. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96146. <stringProp name="Argument.value">Field Title</stringProp>
  96147. <stringProp name="Argument.metadata">=</stringProp>
  96148. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96149. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  96150. <stringProp name="Argument.desc">false</stringProp>
  96151. </elementProp>
  96152. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  96153. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96154. <stringProp name="Argument.value">field</stringProp>
  96155. <stringProp name="Argument.metadata">=</stringProp>
  96156. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96157. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  96158. <stringProp name="Argument.desc">false</stringProp>
  96159. </elementProp>
  96160. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  96161. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96162. <stringProp name="Argument.value">1</stringProp>
  96163. <stringProp name="Argument.metadata">=</stringProp>
  96164. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96165. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  96166. <stringProp name="Argument.desc">true</stringProp>
  96167. </elementProp>
  96168. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  96169. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96170. <stringProp name="Argument.value">4</stringProp>
  96171. <stringProp name="Argument.metadata">=</stringProp>
  96172. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96173. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  96174. <stringProp name="Argument.desc">true</stringProp>
  96175. </elementProp>
  96176. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  96177. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96178. <stringProp name="Argument.value"/>
  96179. <stringProp name="Argument.metadata">=</stringProp>
  96180. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96181. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  96182. <stringProp name="Argument.desc">true</stringProp>
  96183. </elementProp>
  96184. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  96185. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96186. <stringProp name="Argument.value">${related_product_id}</stringProp>
  96187. <stringProp name="Argument.metadata">=</stringProp>
  96188. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96189. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  96190. </elementProp>
  96191. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  96192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96193. <stringProp name="Argument.value">1</stringProp>
  96194. <stringProp name="Argument.metadata">=</stringProp>
  96195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96196. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  96197. </elementProp>
  96198. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  96199. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96200. <stringProp name="Argument.value">${related_product_id}</stringProp>
  96201. <stringProp name="Argument.metadata">=</stringProp>
  96202. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96203. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  96204. </elementProp>
  96205. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  96206. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96207. <stringProp name="Argument.value">1</stringProp>
  96208. <stringProp name="Argument.metadata">=</stringProp>
  96209. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96210. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  96211. </elementProp>
  96212. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  96213. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96214. <stringProp name="Argument.value">${related_product_id}</stringProp>
  96215. <stringProp name="Argument.metadata">=</stringProp>
  96216. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96217. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  96218. </elementProp>
  96219. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  96220. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96221. <stringProp name="Argument.value">1</stringProp>
  96222. <stringProp name="Argument.metadata">=</stringProp>
  96223. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96224. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  96225. </elementProp>
  96226. </collectionProp>
  96227. </elementProp>
  96228. <stringProp name="HTTPSampler.domain"/>
  96229. <stringProp name="HTTPSampler.port"/>
  96230. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  96231. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  96232. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  96233. <stringProp name="HTTPSampler.contentEncoding"/>
  96234. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/set/4/</stringProp>
  96235. <stringProp name="HTTPSampler.method">POST</stringProp>
  96236. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  96237. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  96238. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  96239. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  96240. <boolProp name="HTTPSampler.monitor">false</boolProp>
  96241. <stringProp name="HTTPSampler.embedded_url_re"/>
  96242. </HTTPSamplerProxy>
  96243. <hashTree>
  96244. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  96245. <collectionProp name="Asserion.test_strings">
  96246. <stringProp name="1853918323">{"error":false}</stringProp>
  96247. </collectionProp>
  96248. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  96249. <boolProp name="Assertion.assume_success">false</boolProp>
  96250. <intProp name="Assertion.test_type">2</intProp>
  96251. </ResponseAssertion>
  96252. <hashTree/>
  96253. </hashTree>
  96254. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="New Simple Product Save" enabled="true">
  96255. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  96256. <collectionProp name="Arguments.arguments">
  96257. <elementProp name="ajax" elementType="HTTPArgument">
  96258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96259. <stringProp name="Argument.value">true</stringProp>
  96260. <stringProp name="Argument.metadata">=</stringProp>
  96261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96262. <stringProp name="Argument.name">ajax</stringProp>
  96263. <stringProp name="Argument.desc">false</stringProp>
  96264. </elementProp>
  96265. <elementProp name="isAjax" elementType="HTTPArgument">
  96266. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96267. <stringProp name="Argument.value">true</stringProp>
  96268. <stringProp name="Argument.metadata">=</stringProp>
  96269. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96270. <stringProp name="Argument.name">isAjax</stringProp>
  96271. <stringProp name="Argument.desc">false</stringProp>
  96272. </elementProp>
  96273. <elementProp name="form_key" elementType="HTTPArgument">
  96274. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96275. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  96276. <stringProp name="Argument.metadata">=</stringProp>
  96277. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96278. <stringProp name="Argument.name">form_key</stringProp>
  96279. <stringProp name="Argument.desc">false</stringProp>
  96280. </elementProp>
  96281. <elementProp name="product[name]" elementType="HTTPArgument">
  96282. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96283. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  96284. <stringProp name="Argument.metadata">=</stringProp>
  96285. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96286. <stringProp name="Argument.name">product[name]</stringProp>
  96287. <stringProp name="Argument.desc">false</stringProp>
  96288. </elementProp>
  96289. <elementProp name="product[sku]" elementType="HTTPArgument">
  96290. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96291. <stringProp name="Argument.value">SKU ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  96292. <stringProp name="Argument.metadata">=</stringProp>
  96293. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96294. <stringProp name="Argument.name">product[sku]</stringProp>
  96295. <stringProp name="Argument.desc">false</stringProp>
  96296. </elementProp>
  96297. <elementProp name="product[price]" elementType="HTTPArgument">
  96298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96299. <stringProp name="Argument.value">123</stringProp>
  96300. <stringProp name="Argument.metadata">=</stringProp>
  96301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96302. <stringProp name="Argument.name">product[price]</stringProp>
  96303. </elementProp>
  96304. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  96305. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96306. <stringProp name="Argument.value">2</stringProp>
  96307. <stringProp name="Argument.metadata">=</stringProp>
  96308. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96309. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  96310. </elementProp>
  96311. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  96312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96313. <stringProp name="Argument.value">111</stringProp>
  96314. <stringProp name="Argument.metadata">=</stringProp>
  96315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96316. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  96317. </elementProp>
  96318. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  96319. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96320. <stringProp name="Argument.value">1</stringProp>
  96321. <stringProp name="Argument.metadata">=</stringProp>
  96322. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96323. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  96324. </elementProp>
  96325. <elementProp name="product[weight]" elementType="HTTPArgument">
  96326. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96327. <stringProp name="Argument.value">1.0000</stringProp>
  96328. <stringProp name="Argument.metadata">=</stringProp>
  96329. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96330. <stringProp name="Argument.name">product[weight]</stringProp>
  96331. </elementProp>
  96332. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  96333. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96334. <stringProp name="Argument.value">1</stringProp>
  96335. <stringProp name="Argument.metadata">=</stringProp>
  96336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96337. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  96338. <stringProp name="Argument.desc">true</stringProp>
  96339. </elementProp>
  96340. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  96341. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96342. <stringProp name="Argument.value">2</stringProp>
  96343. <stringProp name="Argument.metadata">=</stringProp>
  96344. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96345. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  96346. </elementProp>
  96347. <elementProp name="product[description]" elementType="HTTPArgument">
  96348. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96349. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  96350. <stringProp name="Argument.metadata">=</stringProp>
  96351. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96352. <stringProp name="Argument.name">product[description]</stringProp>
  96353. </elementProp>
  96354. <elementProp name="product[short_description]" elementType="HTTPArgument">
  96355. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96356. <stringProp name="Argument.value">&lt;p&gt;Short simple product description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}&lt;/p&gt;</stringProp>
  96357. <stringProp name="Argument.metadata">=</stringProp>
  96358. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96359. <stringProp name="Argument.name">product[short_description]</stringProp>
  96360. </elementProp>
  96361. <elementProp name="product[status]" elementType="HTTPArgument">
  96362. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96363. <stringProp name="Argument.value">1</stringProp>
  96364. <stringProp name="Argument.metadata">=</stringProp>
  96365. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96366. <stringProp name="Argument.name">product[status]</stringProp>
  96367. </elementProp>
  96368. <elementProp name="product[image]" elementType="HTTPArgument">
  96369. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96370. <stringProp name="Argument.value"/>
  96371. <stringProp name="Argument.metadata">=</stringProp>
  96372. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96373. <stringProp name="Argument.name">product[image]</stringProp>
  96374. </elementProp>
  96375. <elementProp name="product[small_image]" elementType="HTTPArgument">
  96376. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96377. <stringProp name="Argument.value"/>
  96378. <stringProp name="Argument.metadata">=</stringProp>
  96379. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96380. <stringProp name="Argument.name">product[small_image]</stringProp>
  96381. </elementProp>
  96382. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  96383. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96384. <stringProp name="Argument.value"/>
  96385. <stringProp name="Argument.metadata">=</stringProp>
  96386. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96387. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  96388. </elementProp>
  96389. <elementProp name="product[url_key]" elementType="HTTPArgument">
  96390. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96391. <stringProp name="Argument.value">simple-product-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  96392. <stringProp name="Argument.metadata">=</stringProp>
  96393. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96394. <stringProp name="Argument.name">product[url_key]</stringProp>
  96395. </elementProp>
  96396. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  96397. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96398. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Title</stringProp>
  96399. <stringProp name="Argument.metadata">=</stringProp>
  96400. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96401. <stringProp name="Argument.name">product[meta_title]</stringProp>
  96402. </elementProp>
  96403. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  96404. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96405. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Keyword</stringProp>
  96406. <stringProp name="Argument.metadata">=</stringProp>
  96407. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96408. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  96409. </elementProp>
  96410. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  96411. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96412. <stringProp name="Argument.value">Simple Product ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)} Meta Description</stringProp>
  96413. <stringProp name="Argument.metadata">=</stringProp>
  96414. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96415. <stringProp name="Argument.name">product[meta_description]</stringProp>
  96416. </elementProp>
  96417. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  96418. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96419. <stringProp name="Argument.value">1</stringProp>
  96420. <stringProp name="Argument.metadata">=</stringProp>
  96421. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96422. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  96423. </elementProp>
  96424. <elementProp name="product[special_price]" elementType="HTTPArgument">
  96425. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96426. <stringProp name="Argument.value">99</stringProp>
  96427. <stringProp name="Argument.metadata">=</stringProp>
  96428. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96429. <stringProp name="Argument.name">product[special_price]</stringProp>
  96430. </elementProp>
  96431. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  96432. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96433. <stringProp name="Argument.value"/>
  96434. <stringProp name="Argument.metadata">=</stringProp>
  96435. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96436. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  96437. </elementProp>
  96438. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  96439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96440. <stringProp name="Argument.value"/>
  96441. <stringProp name="Argument.metadata">=</stringProp>
  96442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96443. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  96444. </elementProp>
  96445. <elementProp name="product[cost]" elementType="HTTPArgument">
  96446. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96447. <stringProp name="Argument.value"/>
  96448. <stringProp name="Argument.metadata">=</stringProp>
  96449. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96450. <stringProp name="Argument.name">product[cost]</stringProp>
  96451. </elementProp>
  96452. <elementProp name="product[tier_price][0][website_id]" elementType="HTTPArgument">
  96453. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96454. <stringProp name="Argument.value">0</stringProp>
  96455. <stringProp name="Argument.metadata">=</stringProp>
  96456. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96457. <stringProp name="Argument.name">product[tier_price][0][website_id]</stringProp>
  96458. </elementProp>
  96459. <elementProp name="product[tier_price][0][cust_group]" elementType="HTTPArgument">
  96460. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96461. <stringProp name="Argument.value">32000</stringProp>
  96462. <stringProp name="Argument.metadata">=</stringProp>
  96463. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96464. <stringProp name="Argument.name">product[tier_price][0][cust_group]</stringProp>
  96465. </elementProp>
  96466. <elementProp name="product[tier_price][0][price_qty]" elementType="HTTPArgument">
  96467. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96468. <stringProp name="Argument.value">100</stringProp>
  96469. <stringProp name="Argument.metadata">=</stringProp>
  96470. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96471. <stringProp name="Argument.name">product[tier_price][0][price_qty]</stringProp>
  96472. </elementProp>
  96473. <elementProp name="product[tier_price][0][price]" elementType="HTTPArgument">
  96474. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96475. <stringProp name="Argument.value">90</stringProp>
  96476. <stringProp name="Argument.metadata">=</stringProp>
  96477. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96478. <stringProp name="Argument.name">product[tier_price][0][price]</stringProp>
  96479. </elementProp>
  96480. <elementProp name="product[tier_price][0][delete]" elementType="HTTPArgument">
  96481. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96482. <stringProp name="Argument.value"/>
  96483. <stringProp name="Argument.metadata">=</stringProp>
  96484. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96485. <stringProp name="Argument.name">product[tier_price][0][delete]</stringProp>
  96486. </elementProp>
  96487. <elementProp name="product[tier_price][1][website_id]" elementType="HTTPArgument">
  96488. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96489. <stringProp name="Argument.value">0</stringProp>
  96490. <stringProp name="Argument.metadata">=</stringProp>
  96491. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96492. <stringProp name="Argument.name">product[tier_price][1][website_id]</stringProp>
  96493. </elementProp>
  96494. <elementProp name="product[tier_price][1][cust_group]" elementType="HTTPArgument">
  96495. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96496. <stringProp name="Argument.value">1</stringProp>
  96497. <stringProp name="Argument.metadata">=</stringProp>
  96498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96499. <stringProp name="Argument.name">product[tier_price][1][cust_group]</stringProp>
  96500. </elementProp>
  96501. <elementProp name="product[tier_price][1][price_qty]" elementType="HTTPArgument">
  96502. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96503. <stringProp name="Argument.value">101</stringProp>
  96504. <stringProp name="Argument.metadata">=</stringProp>
  96505. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96506. <stringProp name="Argument.name">product[tier_price][1][price_qty]</stringProp>
  96507. </elementProp>
  96508. <elementProp name="product[tier_price][1][price]" elementType="HTTPArgument">
  96509. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96510. <stringProp name="Argument.value">99</stringProp>
  96511. <stringProp name="Argument.metadata">=</stringProp>
  96512. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96513. <stringProp name="Argument.name">product[tier_price][1][price]</stringProp>
  96514. </elementProp>
  96515. <elementProp name="product[tier_price][1][delete]" elementType="HTTPArgument">
  96516. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96517. <stringProp name="Argument.value"/>
  96518. <stringProp name="Argument.metadata">=</stringProp>
  96519. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96520. <stringProp name="Argument.name">product[tier_price][1][delete]</stringProp>
  96521. </elementProp>
  96522. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  96523. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96524. <stringProp name="Argument.value">1</stringProp>
  96525. <stringProp name="Argument.metadata">=</stringProp>
  96526. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96527. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  96528. </elementProp>
  96529. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  96530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96531. <stringProp name="Argument.value">100500</stringProp>
  96532. <stringProp name="Argument.metadata">=</stringProp>
  96533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96534. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  96535. </elementProp>
  96536. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  96537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96538. <stringProp name="Argument.value">100500</stringProp>
  96539. <stringProp name="Argument.metadata">=</stringProp>
  96540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96541. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  96542. </elementProp>
  96543. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  96544. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96545. <stringProp name="Argument.value">0</stringProp>
  96546. <stringProp name="Argument.metadata">=</stringProp>
  96547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96548. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  96549. </elementProp>
  96550. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  96551. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96552. <stringProp name="Argument.value">1</stringProp>
  96553. <stringProp name="Argument.metadata">=</stringProp>
  96554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96555. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  96556. </elementProp>
  96557. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  96558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96559. <stringProp name="Argument.value">1</stringProp>
  96560. <stringProp name="Argument.metadata">=</stringProp>
  96561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96562. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  96563. </elementProp>
  96564. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  96565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96566. <stringProp name="Argument.value">1</stringProp>
  96567. <stringProp name="Argument.metadata">=</stringProp>
  96568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96569. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  96570. </elementProp>
  96571. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  96572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96573. <stringProp name="Argument.value">10000</stringProp>
  96574. <stringProp name="Argument.metadata">=</stringProp>
  96575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96576. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  96577. </elementProp>
  96578. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  96579. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96580. <stringProp name="Argument.value">1</stringProp>
  96581. <stringProp name="Argument.metadata">=</stringProp>
  96582. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96583. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  96584. </elementProp>
  96585. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  96586. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96587. <stringProp name="Argument.value">0</stringProp>
  96588. <stringProp name="Argument.metadata">=</stringProp>
  96589. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96590. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  96591. </elementProp>
  96592. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  96593. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96594. <stringProp name="Argument.value">0</stringProp>
  96595. <stringProp name="Argument.metadata">=</stringProp>
  96596. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96597. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  96598. </elementProp>
  96599. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  96600. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96601. <stringProp name="Argument.value">0</stringProp>
  96602. <stringProp name="Argument.metadata">=</stringProp>
  96603. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96604. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  96605. </elementProp>
  96606. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  96607. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96608. <stringProp name="Argument.value">1</stringProp>
  96609. <stringProp name="Argument.metadata">=</stringProp>
  96610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96611. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  96612. </elementProp>
  96613. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  96614. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96615. <stringProp name="Argument.value">1</stringProp>
  96616. <stringProp name="Argument.metadata">=</stringProp>
  96617. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96618. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  96619. </elementProp>
  96620. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  96621. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96622. <stringProp name="Argument.value">1</stringProp>
  96623. <stringProp name="Argument.metadata">=</stringProp>
  96624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96625. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  96626. </elementProp>
  96627. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  96628. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96629. <stringProp name="Argument.value">0</stringProp>
  96630. <stringProp name="Argument.metadata">=</stringProp>
  96631. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96632. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  96633. </elementProp>
  96634. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  96635. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96636. <stringProp name="Argument.value">0</stringProp>
  96637. <stringProp name="Argument.metadata">=</stringProp>
  96638. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96639. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  96640. </elementProp>
  96641. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  96642. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96643. <stringProp name="Argument.value">1</stringProp>
  96644. <stringProp name="Argument.metadata">=</stringProp>
  96645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96646. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  96647. </elementProp>
  96648. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  96649. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96650. <stringProp name="Argument.value">1</stringProp>
  96651. <stringProp name="Argument.metadata">=</stringProp>
  96652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96653. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  96654. </elementProp>
  96655. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  96656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96657. <stringProp name="Argument.value"/>
  96658. <stringProp name="Argument.metadata">=</stringProp>
  96659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96660. <stringProp name="Argument.name">product[custom_design]</stringProp>
  96661. </elementProp>
  96662. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  96663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96664. <stringProp name="Argument.value"/>
  96665. <stringProp name="Argument.metadata">=</stringProp>
  96666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96667. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  96668. </elementProp>
  96669. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  96670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96671. <stringProp name="Argument.value"/>
  96672. <stringProp name="Argument.metadata">=</stringProp>
  96673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96674. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  96675. </elementProp>
  96676. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  96677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96678. <stringProp name="Argument.value"/>
  96679. <stringProp name="Argument.metadata">=</stringProp>
  96680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96681. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  96682. </elementProp>
  96683. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  96684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96685. <stringProp name="Argument.value"/>
  96686. <stringProp name="Argument.metadata">=</stringProp>
  96687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96688. <stringProp name="Argument.name">product[page_layout]</stringProp>
  96689. </elementProp>
  96690. <elementProp name="product[options_container]" elementType="HTTPArgument">
  96691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96692. <stringProp name="Argument.value">container2</stringProp>
  96693. <stringProp name="Argument.metadata">=</stringProp>
  96694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96695. <stringProp name="Argument.name">product[options_container]</stringProp>
  96696. </elementProp>
  96697. <elementProp name="product[options][1][is_delete]" elementType="HTTPArgument">
  96698. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96699. <stringProp name="Argument.value"/>
  96700. <stringProp name="Argument.metadata">=</stringProp>
  96701. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96702. <stringProp name="Argument.name">product[options][1][is_delete]</stringProp>
  96703. <stringProp name="Argument.desc">true</stringProp>
  96704. </elementProp>
  96705. <elementProp name="product[options][1][is_require]" elementType="HTTPArgument">
  96706. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96707. <stringProp name="Argument.value">1</stringProp>
  96708. <stringProp name="Argument.metadata">=</stringProp>
  96709. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96710. <stringProp name="Argument.name">product[options][1][is_require]</stringProp>
  96711. </elementProp>
  96712. <elementProp name="product[options][1][previous_group]" elementType="HTTPArgument">
  96713. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96714. <stringProp name="Argument.value">select</stringProp>
  96715. <stringProp name="Argument.metadata">=</stringProp>
  96716. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96717. <stringProp name="Argument.name">product[options][1][previous_group]</stringProp>
  96718. <stringProp name="Argument.desc">false</stringProp>
  96719. </elementProp>
  96720. <elementProp name="product[options][1][previous_type]" elementType="HTTPArgument">
  96721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96722. <stringProp name="Argument.value">drop_down</stringProp>
  96723. <stringProp name="Argument.metadata">=</stringProp>
  96724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96725. <stringProp name="Argument.name">product[options][1][previous_type]</stringProp>
  96726. <stringProp name="Argument.desc">false</stringProp>
  96727. </elementProp>
  96728. <elementProp name="product[options][1][sort_order]" elementType="HTTPArgument">
  96729. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96730. <stringProp name="Argument.value">0</stringProp>
  96731. <stringProp name="Argument.metadata">=</stringProp>
  96732. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96733. <stringProp name="Argument.name">product[options][1][sort_order]</stringProp>
  96734. <stringProp name="Argument.desc">false</stringProp>
  96735. </elementProp>
  96736. <elementProp name="product[options][1][title]" elementType="HTTPArgument">
  96737. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96738. <stringProp name="Argument.value">Product Option Title One</stringProp>
  96739. <stringProp name="Argument.metadata">=</stringProp>
  96740. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96741. <stringProp name="Argument.name">product[options][1][title]</stringProp>
  96742. </elementProp>
  96743. <elementProp name="product[options][1][type]" elementType="HTTPArgument">
  96744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96745. <stringProp name="Argument.value">drop_down</stringProp>
  96746. <stringProp name="Argument.metadata">=</stringProp>
  96747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96748. <stringProp name="Argument.name">product[options][1][type]</stringProp>
  96749. </elementProp>
  96750. <elementProp name="product[options][1][values][1][is_delete]" elementType="HTTPArgument">
  96751. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96752. <stringProp name="Argument.value"/>
  96753. <stringProp name="Argument.metadata">=</stringProp>
  96754. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96755. <stringProp name="Argument.name">product[options][1][values][1][is_delete]</stringProp>
  96756. <stringProp name="Argument.desc">false</stringProp>
  96757. </elementProp>
  96758. <elementProp name="product[options][1][values][1][price]" elementType="HTTPArgument">
  96759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96760. <stringProp name="Argument.value">200</stringProp>
  96761. <stringProp name="Argument.metadata">=</stringProp>
  96762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96763. <stringProp name="Argument.name">product[options][1][values][1][price]</stringProp>
  96764. </elementProp>
  96765. <elementProp name="product[options][1][values][1][price_type]" elementType="HTTPArgument">
  96766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96767. <stringProp name="Argument.value">fixed</stringProp>
  96768. <stringProp name="Argument.metadata">=</stringProp>
  96769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96770. <stringProp name="Argument.name">product[options][1][values][1][price_type]</stringProp>
  96771. </elementProp>
  96772. <elementProp name="product[options][1][values][1][sku]" elementType="HTTPArgument">
  96773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96774. <stringProp name="Argument.value">sku-one</stringProp>
  96775. <stringProp name="Argument.metadata">=</stringProp>
  96776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96777. <stringProp name="Argument.name">product[options][1][values][1][sku]</stringProp>
  96778. </elementProp>
  96779. <elementProp name="product[options][1][values][1][sort_order]" elementType="HTTPArgument">
  96780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96781. <stringProp name="Argument.value">0</stringProp>
  96782. <stringProp name="Argument.metadata">=</stringProp>
  96783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96784. <stringProp name="Argument.name">product[options][1][values][1][sort_order]</stringProp>
  96785. </elementProp>
  96786. <elementProp name="product[options][1][values][1][title]" elementType="HTTPArgument">
  96787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96788. <stringProp name="Argument.value">Row Title</stringProp>
  96789. <stringProp name="Argument.metadata">=</stringProp>
  96790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96791. <stringProp name="Argument.name">product[options][1][values][1][title]</stringProp>
  96792. </elementProp>
  96793. <elementProp name="product[options][2][is_delete]" elementType="HTTPArgument">
  96794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96795. <stringProp name="Argument.value"/>
  96796. <stringProp name="Argument.metadata">=</stringProp>
  96797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96798. <stringProp name="Argument.name">product[options][2][is_delete]</stringProp>
  96799. <stringProp name="Argument.desc">false</stringProp>
  96800. </elementProp>
  96801. <elementProp name="product[options][2][is_require]" elementType="HTTPArgument">
  96802. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96803. <stringProp name="Argument.value">1</stringProp>
  96804. <stringProp name="Argument.metadata">=</stringProp>
  96805. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96806. <stringProp name="Argument.name">product[options][2][is_require]</stringProp>
  96807. </elementProp>
  96808. <elementProp name="product[options][2][max_characters]" elementType="HTTPArgument">
  96809. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96810. <stringProp name="Argument.value">250</stringProp>
  96811. <stringProp name="Argument.metadata">=</stringProp>
  96812. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96813. <stringProp name="Argument.name">product[options][2][max_characters]</stringProp>
  96814. </elementProp>
  96815. <elementProp name="product[options][2][previous_group]" elementType="HTTPArgument">
  96816. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96817. <stringProp name="Argument.value">text</stringProp>
  96818. <stringProp name="Argument.metadata">=</stringProp>
  96819. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96820. <stringProp name="Argument.name">product[options][2][previous_group]</stringProp>
  96821. </elementProp>
  96822. <elementProp name="product[options][2][previous_type]" elementType="HTTPArgument">
  96823. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96824. <stringProp name="Argument.value">field</stringProp>
  96825. <stringProp name="Argument.metadata">=</stringProp>
  96826. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96827. <stringProp name="Argument.name">product[options][2][previous_type]</stringProp>
  96828. </elementProp>
  96829. <elementProp name="product[options][2][price]" elementType="HTTPArgument">
  96830. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96831. <stringProp name="Argument.value">500</stringProp>
  96832. <stringProp name="Argument.metadata">=</stringProp>
  96833. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96834. <stringProp name="Argument.name">product[options][2][price]</stringProp>
  96835. </elementProp>
  96836. <elementProp name="product[options][2][price_type]" elementType="HTTPArgument">
  96837. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96838. <stringProp name="Argument.value">fixed</stringProp>
  96839. <stringProp name="Argument.metadata">=</stringProp>
  96840. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96841. <stringProp name="Argument.name">product[options][2][price_type]</stringProp>
  96842. </elementProp>
  96843. <elementProp name="product[options][2][sku]" elementType="HTTPArgument">
  96844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96845. <stringProp name="Argument.value">sku-two</stringProp>
  96846. <stringProp name="Argument.metadata">=</stringProp>
  96847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96848. <stringProp name="Argument.name">product[options][2][sku]</stringProp>
  96849. </elementProp>
  96850. <elementProp name="product[options][2][sort_order]" elementType="HTTPArgument">
  96851. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96852. <stringProp name="Argument.value">1</stringProp>
  96853. <stringProp name="Argument.metadata">=</stringProp>
  96854. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96855. <stringProp name="Argument.name">product[options][2][sort_order]</stringProp>
  96856. </elementProp>
  96857. <elementProp name="product[options][2][title]" elementType="HTTPArgument">
  96858. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96859. <stringProp name="Argument.value">Field Title</stringProp>
  96860. <stringProp name="Argument.metadata">=</stringProp>
  96861. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96862. <stringProp name="Argument.name">product[options][2][title]</stringProp>
  96863. </elementProp>
  96864. <elementProp name="product[options][2][type]" elementType="HTTPArgument">
  96865. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96866. <stringProp name="Argument.value">field</stringProp>
  96867. <stringProp name="Argument.metadata">=</stringProp>
  96868. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96869. <stringProp name="Argument.name">product[options][2][type]</stringProp>
  96870. </elementProp>
  96871. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  96872. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96873. <stringProp name="Argument.value">1</stringProp>
  96874. <stringProp name="Argument.metadata">=</stringProp>
  96875. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96876. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  96877. <stringProp name="Argument.desc">true</stringProp>
  96878. </elementProp>
  96879. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  96880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96881. <stringProp name="Argument.value">4</stringProp>
  96882. <stringProp name="Argument.metadata">=</stringProp>
  96883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96884. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  96885. <stringProp name="Argument.desc">true</stringProp>
  96886. </elementProp>
  96887. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  96888. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96889. <stringProp name="Argument.value"/>
  96890. <stringProp name="Argument.metadata">=</stringProp>
  96891. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96892. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  96893. <stringProp name="Argument.desc">true</stringProp>
  96894. </elementProp>
  96895. <elementProp name="links[related][0][id]" elementType="HTTPArgument">
  96896. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96897. <stringProp name="Argument.value">${related_product_id}</stringProp>
  96898. <stringProp name="Argument.metadata">=</stringProp>
  96899. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96900. <stringProp name="Argument.name">links[related][0][id]</stringProp>
  96901. </elementProp>
  96902. <elementProp name="links[related][0][position]" elementType="HTTPArgument">
  96903. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96904. <stringProp name="Argument.value">1</stringProp>
  96905. <stringProp name="Argument.metadata">=</stringProp>
  96906. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96907. <stringProp name="Argument.name">links[related][0][position]</stringProp>
  96908. </elementProp>
  96909. <elementProp name="links[upsell][0][id]" elementType="HTTPArgument">
  96910. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96911. <stringProp name="Argument.value">${related_product_id}</stringProp>
  96912. <stringProp name="Argument.metadata">=</stringProp>
  96913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96914. <stringProp name="Argument.name">links[upsell][0][id]</stringProp>
  96915. </elementProp>
  96916. <elementProp name="links[upsell][0][position]" elementType="HTTPArgument">
  96917. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96918. <stringProp name="Argument.value">1</stringProp>
  96919. <stringProp name="Argument.metadata">=</stringProp>
  96920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96921. <stringProp name="Argument.name">links[upsell][0][position]</stringProp>
  96922. </elementProp>
  96923. <elementProp name="links[crosssell][0][id]" elementType="HTTPArgument">
  96924. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96925. <stringProp name="Argument.value">${related_product_id}</stringProp>
  96926. <stringProp name="Argument.metadata">=</stringProp>
  96927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96928. <stringProp name="Argument.name">links[crosssell][0][id]</stringProp>
  96929. </elementProp>
  96930. <elementProp name="links[crosssell][0][position]" elementType="HTTPArgument">
  96931. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  96932. <stringProp name="Argument.value">1</stringProp>
  96933. <stringProp name="Argument.metadata">=</stringProp>
  96934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  96935. <stringProp name="Argument.name">links[crosssell][0][position]</stringProp>
  96936. </elementProp>
  96937. </collectionProp>
  96938. </elementProp>
  96939. <stringProp name="HTTPSampler.domain"/>
  96940. <stringProp name="HTTPSampler.port"/>
  96941. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  96942. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  96943. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  96944. <stringProp name="HTTPSampler.contentEncoding"/>
  96945. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/set/4/type/simple/back/edit/active_tab/product-details/</stringProp>
  96946. <stringProp name="HTTPSampler.method">POST</stringProp>
  96947. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  96948. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  96949. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  96950. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  96951. <boolProp name="HTTPSampler.monitor">false</boolProp>
  96952. <stringProp name="HTTPSampler.embedded_url_re"/>
  96953. </HTTPSamplerProxy>
  96954. <hashTree>
  96955. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  96956. <collectionProp name="Asserion.test_strings">
  96957. <stringProp name="-583471546">You saved the product</stringProp>
  96958. </collectionProp>
  96959. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  96960. <boolProp name="Assertion.assume_success">false</boolProp>
  96961. <intProp name="Assertion.test_type">2</intProp>
  96962. </ResponseAssertion>
  96963. <hashTree/>
  96964. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  96965. <collectionProp name="Asserion.test_strings">
  96966. <stringProp name="-1600986843">violation</stringProp>
  96967. </collectionProp>
  96968. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  96969. <boolProp name="Assertion.assume_success">false</boolProp>
  96970. <intProp name="Assertion.test_type">6</intProp>
  96971. </ResponseAssertion>
  96972. <hashTree/>
  96973. </hashTree>
  96974. </hashTree>
  96975. </hashTree>
  96976. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  96977. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  96978. <collectionProp name="Arguments.arguments"/>
  96979. </elementProp>
  96980. <stringProp name="HTTPSampler.domain"/>
  96981. <stringProp name="HTTPSampler.port"/>
  96982. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  96983. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  96984. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  96985. <stringProp name="HTTPSampler.contentEncoding"/>
  96986. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  96987. <stringProp name="HTTPSampler.method">GET</stringProp>
  96988. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  96989. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  96990. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  96991. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  96992. <boolProp name="HTTPSampler.monitor">false</boolProp>
  96993. <stringProp name="HTTPSampler.embedded_url_re"/>
  96994. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  96995. <hashTree>
  96996. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  96997. <boolProp name="resetInterpreter">false</boolProp>
  96998. <stringProp name="parameters"/>
  96999. <stringProp name="filename"/>
  97000. <stringProp name="script">
  97001. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  97002. if (adminUsersDistribution == 1) {
  97003. adminUserList = props.get("adminUserList");
  97004. adminUserList.add(vars.get("admin_user"));
  97005. }
  97006. </stringProp>
  97007. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  97008. <hashTree/>
  97009. </hashTree>
  97010. </hashTree>
  97011. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Edit Product" enabled="true">
  97012. <intProp name="ThroughputController.style">1</intProp>
  97013. <boolProp name="ThroughputController.perThread">false</boolProp>
  97014. <intProp name="ThroughputController.maxThroughput">1</intProp>
  97015. <stringProp name="ThroughputController.percentThroughput">${cAdminProductEditingPercentage}</stringProp>
  97016. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  97017. <hashTree>
  97018. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  97019. <stringProp name="script">
  97020. var tmpLabel = vars.get("testLabel")
  97021. if (tmpLabel) {
  97022. var testLabel = " (" + tmpLabel + ")"
  97023. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  97024. if (sampler.getName().indexOf(testLabel) == -1) {
  97025. sampler.setName(sampler.getName() + testLabel);
  97026. }
  97027. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  97028. sampler.setName("SetUp - " + sampler.getName());
  97029. }
  97030. } else {
  97031. testLabel = ""
  97032. }
  97033. </stringProp>
  97034. <stringProp name="scriptLanguage">javascript</stringProp>
  97035. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  97036. <hashTree/>
  97037. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  97038. <stringProp name="BeanShellSampler.query">
  97039. vars.put("testLabel", "[REST API C] Admin Edit Product");
  97040. </stringProp>
  97041. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  97042. </BeanShellSampler>
  97043. <hashTree/>
  97044. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  97045. <stringProp name="script">
  97046. function getFormKeyFromResponse()
  97047. {
  97048. var url = prev.getUrlAsString(),
  97049. responseCode = prev.getResponseCode(),
  97050. formKey = null;
  97051. searchPattern = /var FORM_KEY = '(.+)'/;
  97052. if (responseCode == "200" &amp;&amp; url) {
  97053. response = prev.getResponseDataAsString();
  97054. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  97055. }
  97056. return formKey;
  97057. }
  97058. formKey = vars.get("form_key_storage");
  97059. currentFormKey = getFormKeyFromResponse();
  97060. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  97061. vars.put("form_key_storage", currentFormKey);
  97062. }
  97063. </stringProp>
  97064. <stringProp name="scriptLanguage">javascript</stringProp>
  97065. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  97066. <hashTree/>
  97067. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  97068. <stringProp name="script">
  97069. formKey = vars.get("form_key_storage");
  97070. if (formKey
  97071. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  97072. &amp;&amp; sampler.getMethod() == "POST")
  97073. {
  97074. arguments = sampler.getArguments();
  97075. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  97076. {
  97077. argument = arguments.getArgument(i);
  97078. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  97079. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  97080. argument.setValue(formKey);
  97081. }
  97082. }
  97083. }
  97084. </stringProp>
  97085. <stringProp name="scriptLanguage">javascript</stringProp>
  97086. </JSR223PreProcessor>
  97087. <hashTree/>
  97088. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  97089. <collectionProp name="CookieManager.cookies"/>
  97090. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  97091. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  97092. <hashTree/>
  97093. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  97094. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  97095. </GenericController>
  97096. <hashTree>
  97097. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  97098. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  97099. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  97100. <hashTree>
  97101. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  97102. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  97103. <stringProp name="BeanShellSampler.query">
  97104. adminUser = "none";
  97105. adminUserList = props.get("adminUserList");
  97106. adminUserListIterator = props.get("adminUserListIterator");
  97107. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  97108. if (adminUsersDistribution == 1) {
  97109. adminUser = adminUserList.poll();
  97110. } else {
  97111. if (!adminUserListIterator.hasNext()) {
  97112. adminUserListIterator = adminUserList.descendingIterator();
  97113. }
  97114. adminUser = adminUserListIterator.next();
  97115. }
  97116. if (adminUser == "none") {
  97117. SampleResult.setResponseMessage("adminUser list is empty");
  97118. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  97119. IsSuccess=false;
  97120. SampleResult.setSuccessful(false);
  97121. SampleResult.setStopThread(true);
  97122. }
  97123. vars.put("admin_user", adminUser);
  97124. </stringProp>
  97125. <stringProp name="BeanShellSampler.filename"/>
  97126. <stringProp name="BeanShellSampler.parameters"/>
  97127. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  97128. </BeanShellSampler>
  97129. <hashTree/>
  97130. </hashTree>
  97131. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  97132. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  97133. <collectionProp name="Arguments.arguments"/>
  97134. </elementProp>
  97135. <stringProp name="HTTPSampler.domain"/>
  97136. <stringProp name="HTTPSampler.port"/>
  97137. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  97138. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  97139. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  97140. <stringProp name="HTTPSampler.contentEncoding"/>
  97141. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  97142. <stringProp name="HTTPSampler.method">GET</stringProp>
  97143. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  97144. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  97145. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  97146. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  97147. <boolProp name="HTTPSampler.monitor">false</boolProp>
  97148. <stringProp name="HTTPSampler.embedded_url_re"/>
  97149. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  97150. <hashTree>
  97151. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  97152. <collectionProp name="Asserion.test_strings">
  97153. <stringProp name="-1397214398">Welcome</stringProp>
  97154. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  97155. </collectionProp>
  97156. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  97157. <boolProp name="Assertion.assume_success">false</boolProp>
  97158. <intProp name="Assertion.test_type">2</intProp>
  97159. </ResponseAssertion>
  97160. <hashTree/>
  97161. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  97162. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  97163. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  97164. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  97165. <stringProp name="RegexExtractor.template">$1$</stringProp>
  97166. <stringProp name="RegexExtractor.default"/>
  97167. <stringProp name="RegexExtractor.match_number">1</stringProp>
  97168. </RegexExtractor>
  97169. <hashTree/>
  97170. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  97171. <collectionProp name="Asserion.test_strings">
  97172. <stringProp name="2845929">^.+$</stringProp>
  97173. </collectionProp>
  97174. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  97175. <boolProp name="Assertion.assume_success">false</boolProp>
  97176. <intProp name="Assertion.test_type">1</intProp>
  97177. <stringProp name="Assertion.scope">variable</stringProp>
  97178. <stringProp name="Scope.variable">admin_form_key</stringProp>
  97179. </ResponseAssertion>
  97180. <hashTree/>
  97181. </hashTree>
  97182. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  97183. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  97184. <collectionProp name="Arguments.arguments">
  97185. <elementProp name="dummy" elementType="HTTPArgument">
  97186. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97187. <stringProp name="Argument.value"/>
  97188. <stringProp name="Argument.metadata">=</stringProp>
  97189. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97190. <stringProp name="Argument.name">dummy</stringProp>
  97191. </elementProp>
  97192. <elementProp name="form_key" elementType="HTTPArgument">
  97193. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97194. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  97195. <stringProp name="Argument.metadata">=</stringProp>
  97196. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97197. <stringProp name="Argument.name">form_key</stringProp>
  97198. </elementProp>
  97199. <elementProp name="login[password]" elementType="HTTPArgument">
  97200. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97201. <stringProp name="Argument.value">${admin_password}</stringProp>
  97202. <stringProp name="Argument.metadata">=</stringProp>
  97203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97204. <stringProp name="Argument.name">login[password]</stringProp>
  97205. </elementProp>
  97206. <elementProp name="login[username]" elementType="HTTPArgument">
  97207. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97208. <stringProp name="Argument.value">${admin_user}</stringProp>
  97209. <stringProp name="Argument.metadata">=</stringProp>
  97210. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97211. <stringProp name="Argument.name">login[username]</stringProp>
  97212. </elementProp>
  97213. </collectionProp>
  97214. </elementProp>
  97215. <stringProp name="HTTPSampler.domain"/>
  97216. <stringProp name="HTTPSampler.port"/>
  97217. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  97218. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  97219. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  97220. <stringProp name="HTTPSampler.contentEncoding"/>
  97221. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  97222. <stringProp name="HTTPSampler.method">POST</stringProp>
  97223. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  97224. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  97225. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  97226. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  97227. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  97228. <boolProp name="HTTPSampler.monitor">false</boolProp>
  97229. <stringProp name="HTTPSampler.embedded_url_re"/>
  97230. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  97231. </HTTPSamplerProxy>
  97232. <hashTree>
  97233. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  97234. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  97235. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  97236. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  97237. <stringProp name="RegexExtractor.template">$1$</stringProp>
  97238. <stringProp name="RegexExtractor.default"/>
  97239. <stringProp name="RegexExtractor.match_number">1</stringProp>
  97240. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  97241. <hashTree/>
  97242. </hashTree>
  97243. </hashTree>
  97244. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  97245. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  97246. </GenericController>
  97247. <hashTree>
  97248. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Edit Product" enabled="true"/>
  97249. <hashTree>
  97250. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  97251. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_product/admin_edit_product_updated.jmx</stringProp>
  97252. <stringProp name="BeanShellSampler.query">import java.util.ArrayList;
  97253. import java.util.HashMap;
  97254. import java.util.Random;
  97255. int relatedIndex;
  97256. try {
  97257. Random random = new Random();
  97258. if (${seedForRandom} &gt; 0) {
  97259. random.setSeed(${seedForRandom} + ${__threadNum});
  97260. }
  97261. simpleCount = props.get("simple_products_list_for_edit").size();
  97262. configCount = props.get("configurable_products_list_for_edit").size();
  97263. productCount = 0;
  97264. if (simpleCount &gt; configCount) {
  97265. productCount = configCount;
  97266. } else {
  97267. productCount = simpleCount;
  97268. }
  97269. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  97270. if (threadsNumber == 0) {
  97271. threadsNumber = 1;
  97272. }
  97273. //Current thread number starts from 0
  97274. currentThreadNum = ctx.getThreadNum();
  97275. String siterator = vars.get("threadIterator_" + currentThreadNum.toString());
  97276. iterator = 0;
  97277. if(siterator == null){
  97278. vars.put("threadIterator_" + currentThreadNum.toString() , "0");
  97279. } else {
  97280. iterator = Integer.parseInt(siterator);
  97281. iterator ++;
  97282. vars.put("threadIterator_" + currentThreadNum.toString() , iterator.toString());
  97283. }
  97284. //Number of products for one thread
  97285. productClusterLength = productCount / threadsNumber;
  97286. if (iterator &gt;= productClusterLength) {
  97287. vars.put("threadIterator_" + currentThreadNum.toString(), "0");
  97288. iterator = 0;
  97289. }
  97290. //Index of the current product from the cluster
  97291. i = productClusterLength * currentThreadNum + iterator;
  97292. //ids of simple and configurable products to edit
  97293. vars.put("simple_product_id", props.get("simple_products_list_for_edit").get(i).get("id"));
  97294. vars.put("configurable_product_id", props.get("configurable_products_list_for_edit").get(i).get("id"));
  97295. //id of related product
  97296. do {
  97297. relatedIndex = random.nextInt(props.get("simple_products_list_for_edit").size());
  97298. } while(i == relatedIndex);
  97299. vars.put("related_product_id", props.get("simple_products_list_for_edit").get(relatedIndex).get("id"));
  97300. } catch (Exception ex) {
  97301. log.info("Script execution failed", ex);
  97302. }</stringProp>
  97303. <stringProp name="BeanShellSampler.filename"/>
  97304. <stringProp name="BeanShellSampler.parameters"/>
  97305. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  97306. </BeanShellSampler>
  97307. <hashTree/>
  97308. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product" enabled="true">
  97309. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  97310. <collectionProp name="Arguments.arguments"/>
  97311. </elementProp>
  97312. <stringProp name="HTTPSampler.domain"/>
  97313. <stringProp name="HTTPSampler.port"/>
  97314. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  97315. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  97316. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  97317. <stringProp name="HTTPSampler.contentEncoding"/>
  97318. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${simple_product_id}/</stringProp>
  97319. <stringProp name="HTTPSampler.method">GET</stringProp>
  97320. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  97321. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  97322. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  97323. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  97324. <boolProp name="HTTPSampler.monitor">false</boolProp>
  97325. <stringProp name="HTTPSampler.embedded_url_re"/>
  97326. </HTTPSamplerProxy>
  97327. <hashTree>
  97328. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  97329. <collectionProp name="Asserion.test_strings">
  97330. <stringProp name="1355179215">Product</stringProp>
  97331. </collectionProp>
  97332. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  97333. <boolProp name="Assertion.assume_success">false</boolProp>
  97334. <intProp name="Assertion.test_type">16</intProp>
  97335. </ResponseAssertion>
  97336. <hashTree/>
  97337. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  97338. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  97339. <stringProp name="RegexExtractor.refname">simple_product_name</stringProp>
  97340. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  97341. <stringProp name="RegexExtractor.template">$1$</stringProp>
  97342. <stringProp name="RegexExtractor.default"/>
  97343. <stringProp name="RegexExtractor.match_number">1</stringProp>
  97344. </RegexExtractor>
  97345. <hashTree/>
  97346. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  97347. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  97348. <stringProp name="RegexExtractor.refname">simple_product_sku</stringProp>
  97349. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  97350. <stringProp name="RegexExtractor.template">$1$</stringProp>
  97351. <stringProp name="RegexExtractor.default"/>
  97352. <stringProp name="RegexExtractor.match_number">1</stringProp>
  97353. </RegexExtractor>
  97354. <hashTree/>
  97355. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  97356. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  97357. <stringProp name="RegexExtractor.refname">simple_product_category_id</stringProp>
  97358. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)".</stringProp>
  97359. <stringProp name="RegexExtractor.template">$1$</stringProp>
  97360. <stringProp name="RegexExtractor.default"/>
  97361. <stringProp name="RegexExtractor.match_number">1</stringProp>
  97362. </RegexExtractor>
  97363. <hashTree/>
  97364. </hashTree>
  97365. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set updated values" enabled="true">
  97366. <stringProp name="TestPlan.comments">Passing arguments between threads</stringProp>
  97367. <stringProp name="BeanShellSampler.query">//Additional category to be added
  97368. import java.util.Random;
  97369. Random randomGenerator = new Random();
  97370. int newCategoryId;
  97371. if (${seedForRandom} &gt; 0) {
  97372. randomGenerator.setSeed(${seedForRandom} + ${__threadNum});
  97373. }
  97374. int categoryId = Integer.parseInt(vars.get("simple_product_category_id"));
  97375. categoryList = props.get("admin_category_ids_list");
  97376. if (categoryList.size() &gt; 1) {
  97377. do {
  97378. int index = randomGenerator.nextInt(categoryList.size());
  97379. newCategoryId = Integer.parseInt(categoryList.get(index));
  97380. } while (categoryId == newCategoryId);
  97381. vars.put("category_additional", newCategoryId.toString());
  97382. }
  97383. //New price
  97384. vars.put("price_new", "9999");
  97385. //New special price
  97386. vars.put("special_price_new", "8888");
  97387. //New quantity
  97388. vars.put("quantity_new", "100600");
  97389. </stringProp>
  97390. <stringProp name="BeanShellSampler.filename"/>
  97391. <stringProp name="BeanShellSampler.parameters"/>
  97392. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  97393. </BeanShellSampler>
  97394. <hashTree/>
  97395. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Validate" enabled="true">
  97396. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  97397. <collectionProp name="Arguments.arguments">
  97398. <elementProp name="ajax" elementType="HTTPArgument">
  97399. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97400. <stringProp name="Argument.value">true</stringProp>
  97401. <stringProp name="Argument.metadata">=</stringProp>
  97402. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97403. <stringProp name="Argument.name">ajax</stringProp>
  97404. <stringProp name="Argument.desc">false</stringProp>
  97405. </elementProp>
  97406. <elementProp name="isAjax" elementType="HTTPArgument">
  97407. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97408. <stringProp name="Argument.value">true</stringProp>
  97409. <stringProp name="Argument.metadata">=</stringProp>
  97410. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97411. <stringProp name="Argument.name">isAjax</stringProp>
  97412. <stringProp name="Argument.desc">false</stringProp>
  97413. </elementProp>
  97414. <elementProp name="form_key" elementType="HTTPArgument">
  97415. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97416. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  97417. <stringProp name="Argument.metadata">=</stringProp>
  97418. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97419. <stringProp name="Argument.name">form_key</stringProp>
  97420. <stringProp name="Argument.desc">false</stringProp>
  97421. </elementProp>
  97422. <elementProp name="product[name]" elementType="HTTPArgument">
  97423. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97424. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  97425. <stringProp name="Argument.metadata">=</stringProp>
  97426. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97427. <stringProp name="Argument.name">product[name]</stringProp>
  97428. <stringProp name="Argument.desc">false</stringProp>
  97429. </elementProp>
  97430. <elementProp name="product[sku]" elementType="HTTPArgument">
  97431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97432. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  97433. <stringProp name="Argument.metadata">=</stringProp>
  97434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97435. <stringProp name="Argument.name">product[sku]</stringProp>
  97436. <stringProp name="Argument.desc">false</stringProp>
  97437. </elementProp>
  97438. <elementProp name="product[price]" elementType="HTTPArgument">
  97439. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97440. <stringProp name="Argument.value">${price_new}</stringProp>
  97441. <stringProp name="Argument.metadata">=</stringProp>
  97442. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97443. <stringProp name="Argument.name">product[price]</stringProp>
  97444. <stringProp name="Argument.desc">false</stringProp>
  97445. </elementProp>
  97446. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  97447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97448. <stringProp name="Argument.value">2</stringProp>
  97449. <stringProp name="Argument.metadata">=</stringProp>
  97450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97451. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  97452. <stringProp name="Argument.desc">false</stringProp>
  97453. </elementProp>
  97454. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  97455. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97456. <stringProp name="Argument.value">${quantity_new}</stringProp>
  97457. <stringProp name="Argument.metadata">=</stringProp>
  97458. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97459. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  97460. <stringProp name="Argument.desc">false</stringProp>
  97461. </elementProp>
  97462. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  97463. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97464. <stringProp name="Argument.value">1</stringProp>
  97465. <stringProp name="Argument.metadata">=</stringProp>
  97466. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97467. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  97468. <stringProp name="Argument.desc">false</stringProp>
  97469. </elementProp>
  97470. <elementProp name="product[weight]" elementType="HTTPArgument">
  97471. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97472. <stringProp name="Argument.value">1.0000</stringProp>
  97473. <stringProp name="Argument.metadata">=</stringProp>
  97474. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97475. <stringProp name="Argument.name">product[weight]</stringProp>
  97476. <stringProp name="Argument.desc">false</stringProp>
  97477. </elementProp>
  97478. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  97479. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97480. <stringProp name="Argument.value">1</stringProp>
  97481. <stringProp name="Argument.metadata">=</stringProp>
  97482. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97483. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  97484. <stringProp name="Argument.desc">false</stringProp>
  97485. </elementProp>
  97486. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  97487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97488. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  97489. <stringProp name="Argument.metadata">=</stringProp>
  97490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97491. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  97492. <stringProp name="Argument.desc">false</stringProp>
  97493. </elementProp>
  97494. <elementProp name="product[description]" elementType="HTTPArgument">
  97495. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97496. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  97497. <stringProp name="Argument.metadata">=</stringProp>
  97498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97499. <stringProp name="Argument.name">product[description]</stringProp>
  97500. <stringProp name="Argument.desc">false</stringProp>
  97501. </elementProp>
  97502. <elementProp name="product[status]" elementType="HTTPArgument">
  97503. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97504. <stringProp name="Argument.value">1</stringProp>
  97505. <stringProp name="Argument.metadata">=</stringProp>
  97506. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97507. <stringProp name="Argument.name">product[status]</stringProp>
  97508. <stringProp name="Argument.desc">false</stringProp>
  97509. </elementProp>
  97510. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  97511. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97512. <stringProp name="Argument.value"/>
  97513. <stringProp name="Argument.metadata">=</stringProp>
  97514. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97515. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  97516. <stringProp name="Argument.desc">false</stringProp>
  97517. </elementProp>
  97518. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  97519. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97520. <stringProp name="Argument.value">1</stringProp>
  97521. <stringProp name="Argument.metadata">=</stringProp>
  97522. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97523. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  97524. <stringProp name="Argument.desc">false</stringProp>
  97525. </elementProp>
  97526. <elementProp name="product[image]" elementType="HTTPArgument">
  97527. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97528. <stringProp name="Argument.value"/>
  97529. <stringProp name="Argument.metadata">=</stringProp>
  97530. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97531. <stringProp name="Argument.name">product[image]</stringProp>
  97532. <stringProp name="Argument.desc">false</stringProp>
  97533. </elementProp>
  97534. <elementProp name="product[small_image]" elementType="HTTPArgument">
  97535. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97536. <stringProp name="Argument.value"/>
  97537. <stringProp name="Argument.metadata">=</stringProp>
  97538. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97539. <stringProp name="Argument.name">product[small_image]</stringProp>
  97540. <stringProp name="Argument.desc">false</stringProp>
  97541. </elementProp>
  97542. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  97543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97544. <stringProp name="Argument.value"/>
  97545. <stringProp name="Argument.metadata">=</stringProp>
  97546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97547. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  97548. <stringProp name="Argument.desc">false</stringProp>
  97549. </elementProp>
  97550. <elementProp name="product[url_key]" elementType="HTTPArgument">
  97551. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97552. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  97553. <stringProp name="Argument.metadata">=</stringProp>
  97554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97555. <stringProp name="Argument.name">product[url_key]</stringProp>
  97556. <stringProp name="Argument.desc">false</stringProp>
  97557. </elementProp>
  97558. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  97559. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97560. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  97561. <stringProp name="Argument.metadata">=</stringProp>
  97562. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97563. <stringProp name="Argument.name">product[meta_title]</stringProp>
  97564. <stringProp name="Argument.desc">false</stringProp>
  97565. </elementProp>
  97566. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  97567. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97568. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  97569. <stringProp name="Argument.metadata">=</stringProp>
  97570. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97571. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  97572. <stringProp name="Argument.desc">false</stringProp>
  97573. </elementProp>
  97574. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  97575. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97576. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  97577. <stringProp name="Argument.metadata">=</stringProp>
  97578. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97579. <stringProp name="Argument.name">product[meta_description]</stringProp>
  97580. <stringProp name="Argument.desc">false</stringProp>
  97581. </elementProp>
  97582. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  97583. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97584. <stringProp name="Argument.value">1</stringProp>
  97585. <stringProp name="Argument.metadata">=</stringProp>
  97586. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97587. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  97588. <stringProp name="Argument.desc">false</stringProp>
  97589. </elementProp>
  97590. <elementProp name="product[special_price]" elementType="HTTPArgument">
  97591. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97592. <stringProp name="Argument.value">${special_price_new}</stringProp>
  97593. <stringProp name="Argument.metadata">=</stringProp>
  97594. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97595. <stringProp name="Argument.name">product[special_price]</stringProp>
  97596. <stringProp name="Argument.desc">false</stringProp>
  97597. </elementProp>
  97598. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  97599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97600. <stringProp name="Argument.value"/>
  97601. <stringProp name="Argument.metadata">=</stringProp>
  97602. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97603. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  97604. <stringProp name="Argument.desc">false</stringProp>
  97605. </elementProp>
  97606. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  97607. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97608. <stringProp name="Argument.value"/>
  97609. <stringProp name="Argument.metadata">=</stringProp>
  97610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97611. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  97612. <stringProp name="Argument.desc">false</stringProp>
  97613. </elementProp>
  97614. <elementProp name="product[cost]" elementType="HTTPArgument">
  97615. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97616. <stringProp name="Argument.value"/>
  97617. <stringProp name="Argument.metadata">=</stringProp>
  97618. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97619. <stringProp name="Argument.name">product[cost]</stringProp>
  97620. <stringProp name="Argument.desc">false</stringProp>
  97621. </elementProp>
  97622. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  97623. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97624. <stringProp name="Argument.value">1</stringProp>
  97625. <stringProp name="Argument.metadata">=</stringProp>
  97626. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97627. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  97628. <stringProp name="Argument.desc">false</stringProp>
  97629. </elementProp>
  97630. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  97631. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97632. <stringProp name="Argument.value">${quantity_new}</stringProp>
  97633. <stringProp name="Argument.metadata">=</stringProp>
  97634. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97635. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  97636. <stringProp name="Argument.desc">false</stringProp>
  97637. </elementProp>
  97638. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  97639. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97640. <stringProp name="Argument.value">${quantity_new}</stringProp>
  97641. <stringProp name="Argument.metadata">=</stringProp>
  97642. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97643. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  97644. <stringProp name="Argument.desc">false</stringProp>
  97645. </elementProp>
  97646. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  97647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97648. <stringProp name="Argument.value">0</stringProp>
  97649. <stringProp name="Argument.metadata">=</stringProp>
  97650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97651. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  97652. <stringProp name="Argument.desc">false</stringProp>
  97653. </elementProp>
  97654. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  97655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97656. <stringProp name="Argument.value">1</stringProp>
  97657. <stringProp name="Argument.metadata">=</stringProp>
  97658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97659. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  97660. <stringProp name="Argument.desc">false</stringProp>
  97661. </elementProp>
  97662. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  97663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97664. <stringProp name="Argument.value">1</stringProp>
  97665. <stringProp name="Argument.metadata">=</stringProp>
  97666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97667. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  97668. <stringProp name="Argument.desc">false</stringProp>
  97669. </elementProp>
  97670. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  97671. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97672. <stringProp name="Argument.value">1</stringProp>
  97673. <stringProp name="Argument.metadata">=</stringProp>
  97674. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97675. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  97676. <stringProp name="Argument.desc">false</stringProp>
  97677. </elementProp>
  97678. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  97679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97680. <stringProp name="Argument.value">10000</stringProp>
  97681. <stringProp name="Argument.metadata">=</stringProp>
  97682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97683. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  97684. <stringProp name="Argument.desc">false</stringProp>
  97685. </elementProp>
  97686. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  97687. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97688. <stringProp name="Argument.value">1</stringProp>
  97689. <stringProp name="Argument.metadata">=</stringProp>
  97690. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97691. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  97692. <stringProp name="Argument.desc">false</stringProp>
  97693. </elementProp>
  97694. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  97695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97696. <stringProp name="Argument.value">0</stringProp>
  97697. <stringProp name="Argument.metadata">=</stringProp>
  97698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97699. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  97700. <stringProp name="Argument.desc">false</stringProp>
  97701. </elementProp>
  97702. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  97703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97704. <stringProp name="Argument.value">0</stringProp>
  97705. <stringProp name="Argument.metadata">=</stringProp>
  97706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97707. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  97708. <stringProp name="Argument.desc">false</stringProp>
  97709. </elementProp>
  97710. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  97711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97712. <stringProp name="Argument.value">0</stringProp>
  97713. <stringProp name="Argument.metadata">=</stringProp>
  97714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97715. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  97716. <stringProp name="Argument.desc">false</stringProp>
  97717. </elementProp>
  97718. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  97719. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97720. <stringProp name="Argument.value">1</stringProp>
  97721. <stringProp name="Argument.metadata">=</stringProp>
  97722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97723. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  97724. <stringProp name="Argument.desc">false</stringProp>
  97725. </elementProp>
  97726. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  97727. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97728. <stringProp name="Argument.value">1</stringProp>
  97729. <stringProp name="Argument.metadata">=</stringProp>
  97730. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97731. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  97732. <stringProp name="Argument.desc">false</stringProp>
  97733. </elementProp>
  97734. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  97735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97736. <stringProp name="Argument.value">1</stringProp>
  97737. <stringProp name="Argument.metadata">=</stringProp>
  97738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97739. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  97740. <stringProp name="Argument.desc">false</stringProp>
  97741. </elementProp>
  97742. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  97743. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97744. <stringProp name="Argument.value">0</stringProp>
  97745. <stringProp name="Argument.metadata">=</stringProp>
  97746. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97747. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  97748. <stringProp name="Argument.desc">false</stringProp>
  97749. </elementProp>
  97750. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  97751. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97752. <stringProp name="Argument.value">0</stringProp>
  97753. <stringProp name="Argument.metadata">=</stringProp>
  97754. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97755. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  97756. <stringProp name="Argument.desc">false</stringProp>
  97757. </elementProp>
  97758. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  97759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97760. <stringProp name="Argument.value">1</stringProp>
  97761. <stringProp name="Argument.metadata">=</stringProp>
  97762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97763. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  97764. <stringProp name="Argument.desc">false</stringProp>
  97765. </elementProp>
  97766. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  97767. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97768. <stringProp name="Argument.value">1</stringProp>
  97769. <stringProp name="Argument.metadata">=</stringProp>
  97770. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97771. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  97772. <stringProp name="Argument.desc">false</stringProp>
  97773. </elementProp>
  97774. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  97775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97776. <stringProp name="Argument.value"/>
  97777. <stringProp name="Argument.metadata">=</stringProp>
  97778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97779. <stringProp name="Argument.name">product[custom_design]</stringProp>
  97780. <stringProp name="Argument.desc">false</stringProp>
  97781. </elementProp>
  97782. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  97783. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97784. <stringProp name="Argument.value"/>
  97785. <stringProp name="Argument.metadata">=</stringProp>
  97786. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97787. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  97788. <stringProp name="Argument.desc">false</stringProp>
  97789. </elementProp>
  97790. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  97791. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97792. <stringProp name="Argument.value"/>
  97793. <stringProp name="Argument.metadata">=</stringProp>
  97794. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97795. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  97796. <stringProp name="Argument.desc">false</stringProp>
  97797. </elementProp>
  97798. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  97799. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97800. <stringProp name="Argument.value"/>
  97801. <stringProp name="Argument.metadata">=</stringProp>
  97802. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97803. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  97804. <stringProp name="Argument.desc">false</stringProp>
  97805. </elementProp>
  97806. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  97807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97808. <stringProp name="Argument.value"/>
  97809. <stringProp name="Argument.metadata">=</stringProp>
  97810. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97811. <stringProp name="Argument.name">product[page_layout]</stringProp>
  97812. <stringProp name="Argument.desc">false</stringProp>
  97813. </elementProp>
  97814. <elementProp name="product[options_container]" elementType="HTTPArgument">
  97815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97816. <stringProp name="Argument.value">container2</stringProp>
  97817. <stringProp name="Argument.metadata">=</stringProp>
  97818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97819. <stringProp name="Argument.name">product[options_container]</stringProp>
  97820. <stringProp name="Argument.desc">false</stringProp>
  97821. </elementProp>
  97822. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  97823. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97824. <stringProp name="Argument.value"/>
  97825. <stringProp name="Argument.metadata">=</stringProp>
  97826. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97827. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  97828. <stringProp name="Argument.desc">false</stringProp>
  97829. </elementProp>
  97830. </collectionProp>
  97831. </elementProp>
  97832. <stringProp name="HTTPSampler.domain"/>
  97833. <stringProp name="HTTPSampler.port"/>
  97834. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  97835. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  97836. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  97837. <stringProp name="HTTPSampler.contentEncoding"/>
  97838. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${simple_product_id}/?isAjax=true</stringProp>
  97839. <stringProp name="HTTPSampler.method">POST</stringProp>
  97840. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  97841. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  97842. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  97843. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  97844. <boolProp name="HTTPSampler.monitor">false</boolProp>
  97845. <stringProp name="HTTPSampler.embedded_url_re"/>
  97846. </HTTPSamplerProxy>
  97847. <hashTree>
  97848. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  97849. <collectionProp name="Asserion.test_strings">
  97850. <stringProp name="1853918323">{"error":false}</stringProp>
  97851. </collectionProp>
  97852. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  97853. <boolProp name="Assertion.assume_success">false</boolProp>
  97854. <intProp name="Assertion.test_type">2</intProp>
  97855. </ResponseAssertion>
  97856. <hashTree/>
  97857. </hashTree>
  97858. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Simple Product Save" enabled="true">
  97859. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  97860. <collectionProp name="Arguments.arguments">
  97861. <elementProp name="ajax" elementType="HTTPArgument">
  97862. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97863. <stringProp name="Argument.value">true</stringProp>
  97864. <stringProp name="Argument.metadata">=</stringProp>
  97865. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97866. <stringProp name="Argument.name">ajax</stringProp>
  97867. <stringProp name="Argument.desc">false</stringProp>
  97868. </elementProp>
  97869. <elementProp name="isAjax" elementType="HTTPArgument">
  97870. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97871. <stringProp name="Argument.value">true</stringProp>
  97872. <stringProp name="Argument.metadata">=</stringProp>
  97873. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97874. <stringProp name="Argument.name">isAjax</stringProp>
  97875. <stringProp name="Argument.desc">false</stringProp>
  97876. </elementProp>
  97877. <elementProp name="form_key" elementType="HTTPArgument">
  97878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97879. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  97880. <stringProp name="Argument.metadata">=</stringProp>
  97881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97882. <stringProp name="Argument.name">form_key</stringProp>
  97883. <stringProp name="Argument.desc">false</stringProp>
  97884. </elementProp>
  97885. <elementProp name="product[name]" elementType="HTTPArgument">
  97886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97887. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  97888. <stringProp name="Argument.metadata">=</stringProp>
  97889. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97890. <stringProp name="Argument.name">product[name]</stringProp>
  97891. <stringProp name="Argument.desc">false</stringProp>
  97892. </elementProp>
  97893. <elementProp name="product[sku]" elementType="HTTPArgument">
  97894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97895. <stringProp name="Argument.value">${simple_product_sku}</stringProp>
  97896. <stringProp name="Argument.metadata">=</stringProp>
  97897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97898. <stringProp name="Argument.name">product[sku]</stringProp>
  97899. <stringProp name="Argument.desc">false</stringProp>
  97900. </elementProp>
  97901. <elementProp name="product[price]" elementType="HTTPArgument">
  97902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97903. <stringProp name="Argument.value">${price_new}</stringProp>
  97904. <stringProp name="Argument.metadata">=</stringProp>
  97905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97906. <stringProp name="Argument.name">product[price]</stringProp>
  97907. <stringProp name="Argument.desc">false</stringProp>
  97908. </elementProp>
  97909. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  97910. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97911. <stringProp name="Argument.value">2</stringProp>
  97912. <stringProp name="Argument.metadata">=</stringProp>
  97913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97914. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  97915. <stringProp name="Argument.desc">false</stringProp>
  97916. </elementProp>
  97917. <elementProp name="product[quantity_and_stock_status][qty]" elementType="HTTPArgument">
  97918. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97919. <stringProp name="Argument.value">${quantity_new}</stringProp>
  97920. <stringProp name="Argument.metadata">=</stringProp>
  97921. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97922. <stringProp name="Argument.name">product[quantity_and_stock_status][qty]</stringProp>
  97923. <stringProp name="Argument.desc">false</stringProp>
  97924. </elementProp>
  97925. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  97926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97927. <stringProp name="Argument.value">1</stringProp>
  97928. <stringProp name="Argument.metadata">=</stringProp>
  97929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97930. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  97931. <stringProp name="Argument.desc">false</stringProp>
  97932. </elementProp>
  97933. <elementProp name="product[weight]" elementType="HTTPArgument">
  97934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97935. <stringProp name="Argument.value">1.0000</stringProp>
  97936. <stringProp name="Argument.metadata">=</stringProp>
  97937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97938. <stringProp name="Argument.name">product[weight]</stringProp>
  97939. <stringProp name="Argument.desc">false</stringProp>
  97940. </elementProp>
  97941. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  97942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97943. <stringProp name="Argument.value">1</stringProp>
  97944. <stringProp name="Argument.metadata">=</stringProp>
  97945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97946. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  97947. <stringProp name="Argument.desc">false</stringProp>
  97948. </elementProp>
  97949. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  97950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97951. <stringProp name="Argument.value">${simple_product_category_id}</stringProp>
  97952. <stringProp name="Argument.metadata">=</stringProp>
  97953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97954. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  97955. <stringProp name="Argument.desc">false</stringProp>
  97956. </elementProp>
  97957. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  97958. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97959. <stringProp name="Argument.value">${category_additional}</stringProp>
  97960. <stringProp name="Argument.metadata">=</stringProp>
  97961. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97962. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  97963. </elementProp>
  97964. <elementProp name="product[description]" elementType="HTTPArgument">
  97965. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97966. <stringProp name="Argument.value">&lt;p&gt;Full simple product Description ${simple_product_id} Edited&lt;/p&gt;</stringProp>
  97967. <stringProp name="Argument.metadata">=</stringProp>
  97968. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97969. <stringProp name="Argument.name">product[description]</stringProp>
  97970. <stringProp name="Argument.desc">false</stringProp>
  97971. </elementProp>
  97972. <elementProp name="product[status]" elementType="HTTPArgument">
  97973. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97974. <stringProp name="Argument.value">1</stringProp>
  97975. <stringProp name="Argument.metadata">=</stringProp>
  97976. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97977. <stringProp name="Argument.name">product[status]</stringProp>
  97978. <stringProp name="Argument.desc">false</stringProp>
  97979. </elementProp>
  97980. <elementProp name="product[configurable_variations]" elementType="HTTPArgument">
  97981. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97982. <stringProp name="Argument.value"/>
  97983. <stringProp name="Argument.metadata">=</stringProp>
  97984. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97985. <stringProp name="Argument.name">product[configurable_variations]</stringProp>
  97986. <stringProp name="Argument.desc">false</stringProp>
  97987. </elementProp>
  97988. <elementProp name="affect_configurable_product_attributes" elementType="HTTPArgument">
  97989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97990. <stringProp name="Argument.value">1</stringProp>
  97991. <stringProp name="Argument.metadata">=</stringProp>
  97992. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  97993. <stringProp name="Argument.name">affect_configurable_product_attributes</stringProp>
  97994. <stringProp name="Argument.desc">false</stringProp>
  97995. </elementProp>
  97996. <elementProp name="product[image]" elementType="HTTPArgument">
  97997. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  97998. <stringProp name="Argument.value"/>
  97999. <stringProp name="Argument.metadata">=</stringProp>
  98000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98001. <stringProp name="Argument.name">product[image]</stringProp>
  98002. <stringProp name="Argument.desc">false</stringProp>
  98003. </elementProp>
  98004. <elementProp name="product[small_image]" elementType="HTTPArgument">
  98005. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98006. <stringProp name="Argument.value"/>
  98007. <stringProp name="Argument.metadata">=</stringProp>
  98008. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98009. <stringProp name="Argument.name">product[small_image]</stringProp>
  98010. <stringProp name="Argument.desc">false</stringProp>
  98011. </elementProp>
  98012. <elementProp name="product[thumbnail]" elementType="HTTPArgument">
  98013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98014. <stringProp name="Argument.value"/>
  98015. <stringProp name="Argument.metadata">=</stringProp>
  98016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98017. <stringProp name="Argument.name">product[thumbnail]</stringProp>
  98018. <stringProp name="Argument.desc">false</stringProp>
  98019. </elementProp>
  98020. <elementProp name="product[url_key]" elementType="HTTPArgument">
  98021. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98022. <stringProp name="Argument.value">${simple_product_name}</stringProp>
  98023. <stringProp name="Argument.metadata">=</stringProp>
  98024. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98025. <stringProp name="Argument.name">product[url_key]</stringProp>
  98026. <stringProp name="Argument.desc">false</stringProp>
  98027. </elementProp>
  98028. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  98029. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98030. <stringProp name="Argument.value">${simple_product_name} Meta Title Edited</stringProp>
  98031. <stringProp name="Argument.metadata">=</stringProp>
  98032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98033. <stringProp name="Argument.name">product[meta_title]</stringProp>
  98034. <stringProp name="Argument.desc">false</stringProp>
  98035. </elementProp>
  98036. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  98037. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98038. <stringProp name="Argument.value">${simple_product_name} Meta Keyword Edited</stringProp>
  98039. <stringProp name="Argument.metadata">=</stringProp>
  98040. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98041. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  98042. <stringProp name="Argument.desc">false</stringProp>
  98043. </elementProp>
  98044. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  98045. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98046. <stringProp name="Argument.value">${simple_product_name} Meta Description Edited</stringProp>
  98047. <stringProp name="Argument.metadata">=</stringProp>
  98048. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98049. <stringProp name="Argument.name">product[meta_description]</stringProp>
  98050. <stringProp name="Argument.desc">false</stringProp>
  98051. </elementProp>
  98052. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  98053. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98054. <stringProp name="Argument.value">1</stringProp>
  98055. <stringProp name="Argument.metadata">=</stringProp>
  98056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98057. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  98058. <stringProp name="Argument.desc">false</stringProp>
  98059. </elementProp>
  98060. <elementProp name="product[special_price]" elementType="HTTPArgument">
  98061. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98062. <stringProp name="Argument.value">${special_price_new}</stringProp>
  98063. <stringProp name="Argument.metadata">=</stringProp>
  98064. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98065. <stringProp name="Argument.name">product[special_price]</stringProp>
  98066. <stringProp name="Argument.desc">false</stringProp>
  98067. </elementProp>
  98068. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  98069. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98070. <stringProp name="Argument.value"/>
  98071. <stringProp name="Argument.metadata">=</stringProp>
  98072. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98073. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  98074. <stringProp name="Argument.desc">false</stringProp>
  98075. </elementProp>
  98076. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  98077. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98078. <stringProp name="Argument.value"/>
  98079. <stringProp name="Argument.metadata">=</stringProp>
  98080. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98081. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  98082. <stringProp name="Argument.desc">false</stringProp>
  98083. </elementProp>
  98084. <elementProp name="product[cost]" elementType="HTTPArgument">
  98085. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98086. <stringProp name="Argument.value"/>
  98087. <stringProp name="Argument.metadata">=</stringProp>
  98088. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98089. <stringProp name="Argument.name">product[cost]</stringProp>
  98090. <stringProp name="Argument.desc">false</stringProp>
  98091. </elementProp>
  98092. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  98093. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98094. <stringProp name="Argument.value">1</stringProp>
  98095. <stringProp name="Argument.metadata">=</stringProp>
  98096. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98097. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  98098. <stringProp name="Argument.desc">false</stringProp>
  98099. </elementProp>
  98100. <elementProp name="product[stock_data][original_inventory_qty]" elementType="HTTPArgument">
  98101. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98102. <stringProp name="Argument.value">${quantity_new}</stringProp>
  98103. <stringProp name="Argument.metadata">=</stringProp>
  98104. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98105. <stringProp name="Argument.name">product[stock_data][original_inventory_qty]</stringProp>
  98106. <stringProp name="Argument.desc">false</stringProp>
  98107. </elementProp>
  98108. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  98109. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98110. <stringProp name="Argument.value">${quantity_new}</stringProp>
  98111. <stringProp name="Argument.metadata">=</stringProp>
  98112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98113. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  98114. <stringProp name="Argument.desc">false</stringProp>
  98115. </elementProp>
  98116. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  98117. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98118. <stringProp name="Argument.value">0</stringProp>
  98119. <stringProp name="Argument.metadata">=</stringProp>
  98120. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98121. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  98122. <stringProp name="Argument.desc">false</stringProp>
  98123. </elementProp>
  98124. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  98125. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98126. <stringProp name="Argument.value">1</stringProp>
  98127. <stringProp name="Argument.metadata">=</stringProp>
  98128. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98129. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  98130. <stringProp name="Argument.desc">false</stringProp>
  98131. </elementProp>
  98132. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  98133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98134. <stringProp name="Argument.value">1</stringProp>
  98135. <stringProp name="Argument.metadata">=</stringProp>
  98136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98137. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  98138. <stringProp name="Argument.desc">false</stringProp>
  98139. </elementProp>
  98140. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  98141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98142. <stringProp name="Argument.value">1</stringProp>
  98143. <stringProp name="Argument.metadata">=</stringProp>
  98144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98145. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  98146. <stringProp name="Argument.desc">false</stringProp>
  98147. </elementProp>
  98148. <elementProp name="product[stock_data][max_sale_qty]" elementType="HTTPArgument">
  98149. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98150. <stringProp name="Argument.value">10000</stringProp>
  98151. <stringProp name="Argument.metadata">=</stringProp>
  98152. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98153. <stringProp name="Argument.name">product[stock_data][max_sale_qty]</stringProp>
  98154. <stringProp name="Argument.desc">false</stringProp>
  98155. </elementProp>
  98156. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  98157. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98158. <stringProp name="Argument.value">1</stringProp>
  98159. <stringProp name="Argument.metadata">=</stringProp>
  98160. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98161. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  98162. <stringProp name="Argument.desc">false</stringProp>
  98163. </elementProp>
  98164. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  98165. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98166. <stringProp name="Argument.value">0</stringProp>
  98167. <stringProp name="Argument.metadata">=</stringProp>
  98168. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98169. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  98170. <stringProp name="Argument.desc">false</stringProp>
  98171. </elementProp>
  98172. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  98173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98174. <stringProp name="Argument.value">0</stringProp>
  98175. <stringProp name="Argument.metadata">=</stringProp>
  98176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98177. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  98178. <stringProp name="Argument.desc">false</stringProp>
  98179. </elementProp>
  98180. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  98181. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98182. <stringProp name="Argument.value">0</stringProp>
  98183. <stringProp name="Argument.metadata">=</stringProp>
  98184. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98185. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  98186. <stringProp name="Argument.desc">false</stringProp>
  98187. </elementProp>
  98188. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  98189. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98190. <stringProp name="Argument.value">1</stringProp>
  98191. <stringProp name="Argument.metadata">=</stringProp>
  98192. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98193. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  98194. <stringProp name="Argument.desc">false</stringProp>
  98195. </elementProp>
  98196. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  98197. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98198. <stringProp name="Argument.value">1</stringProp>
  98199. <stringProp name="Argument.metadata">=</stringProp>
  98200. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98201. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  98202. <stringProp name="Argument.desc">false</stringProp>
  98203. </elementProp>
  98204. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  98205. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98206. <stringProp name="Argument.value">1</stringProp>
  98207. <stringProp name="Argument.metadata">=</stringProp>
  98208. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98209. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  98210. <stringProp name="Argument.desc">false</stringProp>
  98211. </elementProp>
  98212. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  98213. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98214. <stringProp name="Argument.value">0</stringProp>
  98215. <stringProp name="Argument.metadata">=</stringProp>
  98216. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98217. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  98218. <stringProp name="Argument.desc">false</stringProp>
  98219. </elementProp>
  98220. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  98221. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98222. <stringProp name="Argument.value">0</stringProp>
  98223. <stringProp name="Argument.metadata">=</stringProp>
  98224. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98225. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  98226. <stringProp name="Argument.desc">false</stringProp>
  98227. </elementProp>
  98228. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  98229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98230. <stringProp name="Argument.value">1</stringProp>
  98231. <stringProp name="Argument.metadata">=</stringProp>
  98232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98233. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  98234. <stringProp name="Argument.desc">false</stringProp>
  98235. </elementProp>
  98236. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  98237. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98238. <stringProp name="Argument.value">1</stringProp>
  98239. <stringProp name="Argument.metadata">=</stringProp>
  98240. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98241. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  98242. <stringProp name="Argument.desc">false</stringProp>
  98243. </elementProp>
  98244. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  98245. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98246. <stringProp name="Argument.value"/>
  98247. <stringProp name="Argument.metadata">=</stringProp>
  98248. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98249. <stringProp name="Argument.name">product[custom_design]</stringProp>
  98250. <stringProp name="Argument.desc">false</stringProp>
  98251. </elementProp>
  98252. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  98253. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98254. <stringProp name="Argument.value"/>
  98255. <stringProp name="Argument.metadata">=</stringProp>
  98256. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98257. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  98258. <stringProp name="Argument.desc">false</stringProp>
  98259. </elementProp>
  98260. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  98261. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98262. <stringProp name="Argument.value"/>
  98263. <stringProp name="Argument.metadata">=</stringProp>
  98264. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98265. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  98266. <stringProp name="Argument.desc">false</stringProp>
  98267. </elementProp>
  98268. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  98269. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98270. <stringProp name="Argument.value"/>
  98271. <stringProp name="Argument.metadata">=</stringProp>
  98272. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98273. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  98274. <stringProp name="Argument.desc">false</stringProp>
  98275. </elementProp>
  98276. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  98277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98278. <stringProp name="Argument.value"/>
  98279. <stringProp name="Argument.metadata">=</stringProp>
  98280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98281. <stringProp name="Argument.name">product[page_layout]</stringProp>
  98282. <stringProp name="Argument.desc">false</stringProp>
  98283. </elementProp>
  98284. <elementProp name="product[options_container]" elementType="HTTPArgument">
  98285. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98286. <stringProp name="Argument.value">container2</stringProp>
  98287. <stringProp name="Argument.metadata">=</stringProp>
  98288. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98289. <stringProp name="Argument.name">product[options_container]</stringProp>
  98290. <stringProp name="Argument.desc">false</stringProp>
  98291. </elementProp>
  98292. <elementProp name="new-variations-attribute-set-id" elementType="HTTPArgument">
  98293. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98294. <stringProp name="Argument.value"/>
  98295. <stringProp name="Argument.metadata">=</stringProp>
  98296. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98297. <stringProp name="Argument.name">new-variations-attribute-set-id</stringProp>
  98298. <stringProp name="Argument.desc">false</stringProp>
  98299. </elementProp>
  98300. </collectionProp>
  98301. </elementProp>
  98302. <stringProp name="HTTPSampler.domain"/>
  98303. <stringProp name="HTTPSampler.port"/>
  98304. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  98305. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  98306. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  98307. <stringProp name="HTTPSampler.contentEncoding"/>
  98308. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${simple_product_id}/back/edit/active_tab/product-details/</stringProp>
  98309. <stringProp name="HTTPSampler.method">POST</stringProp>
  98310. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  98311. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  98312. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  98313. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  98314. <boolProp name="HTTPSampler.monitor">false</boolProp>
  98315. <stringProp name="HTTPSampler.embedded_url_re"/>
  98316. </HTTPSamplerProxy>
  98317. <hashTree>
  98318. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  98319. <collectionProp name="Asserion.test_strings">
  98320. <stringProp name="-583471546">You saved the product</stringProp>
  98321. </collectionProp>
  98322. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  98323. <boolProp name="Assertion.assume_success">false</boolProp>
  98324. <intProp name="Assertion.test_type">2</intProp>
  98325. </ResponseAssertion>
  98326. <hashTree/>
  98327. </hashTree>
  98328. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product" enabled="true">
  98329. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  98330. <collectionProp name="Arguments.arguments"/>
  98331. </elementProp>
  98332. <stringProp name="HTTPSampler.domain"/>
  98333. <stringProp name="HTTPSampler.port"/>
  98334. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  98335. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  98336. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  98337. <stringProp name="HTTPSampler.contentEncoding"/>
  98338. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/edit/id/${configurable_product_id}/</stringProp>
  98339. <stringProp name="HTTPSampler.method">GET</stringProp>
  98340. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  98341. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  98342. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  98343. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  98344. <boolProp name="HTTPSampler.monitor">false</boolProp>
  98345. <stringProp name="HTTPSampler.embedded_url_re"/>
  98346. </HTTPSamplerProxy>
  98347. <hashTree>
  98348. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  98349. <collectionProp name="Asserion.test_strings">
  98350. <stringProp name="1355179215">Product</stringProp>
  98351. </collectionProp>
  98352. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  98353. <boolProp name="Assertion.assume_success">false</boolProp>
  98354. <intProp name="Assertion.test_type">16</intProp>
  98355. </ResponseAssertion>
  98356. <hashTree/>
  98357. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract name" enabled="true">
  98358. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98359. <stringProp name="RegexExtractor.refname">configurable_product_name</stringProp>
  98360. <stringProp name="RegexExtractor.regex">,"name":"([^'"]+)",</stringProp>
  98361. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98362. <stringProp name="RegexExtractor.default"/>
  98363. <stringProp name="RegexExtractor.match_number">1</stringProp>
  98364. </RegexExtractor>
  98365. <hashTree/>
  98366. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract sku" enabled="true">
  98367. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98368. <stringProp name="RegexExtractor.refname">configurable_product_sku</stringProp>
  98369. <stringProp name="RegexExtractor.regex">,"sku":"([^'"]+)",</stringProp>
  98370. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98371. <stringProp name="RegexExtractor.default"/>
  98372. <stringProp name="RegexExtractor.match_number">1</stringProp>
  98373. </RegexExtractor>
  98374. <hashTree/>
  98375. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category" enabled="true">
  98376. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98377. <stringProp name="RegexExtractor.refname">configurable_product_category_id</stringProp>
  98378. <stringProp name="RegexExtractor.regex">,"category_ids":."(\d+)"</stringProp>
  98379. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98380. <stringProp name="RegexExtractor.default"/>
  98381. <stringProp name="RegexExtractor.match_number">1</stringProp>
  98382. </RegexExtractor>
  98383. <hashTree/>
  98384. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable attribute id" enabled="true">
  98385. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98386. <stringProp name="RegexExtractor.refname">configurable_attribute_id</stringProp>
  98387. <stringProp name="RegexExtractor.regex">,"configurable_variation":"([^'"]+)",</stringProp>
  98388. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98389. <stringProp name="RegexExtractor.default"/>
  98390. <stringProp name="RegexExtractor.match_number">1</stringProp>
  98391. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  98392. </RegexExtractor>
  98393. <hashTree/>
  98394. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable matrix" enabled="true">
  98395. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98396. <stringProp name="RegexExtractor.refname">configurable_matrix</stringProp>
  98397. <stringProp name="RegexExtractor.regex">"configurable-matrix":(\[.*?\])</stringProp>
  98398. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98399. <stringProp name="RegexExtractor.default"/>
  98400. <stringProp name="RegexExtractor.match_number">1</stringProp>
  98401. <boolProp name="RegexExtractor.default_empty_value">true</boolProp>
  98402. </RegexExtractor>
  98403. <hashTree/>
  98404. <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 associated products ids" enabled="true">
  98405. <stringProp name="VAR">associated_products_ids</stringProp>
  98406. <stringProp name="JSONPATH">$.[*].id</stringProp>
  98407. <stringProp name="DEFAULT"/>
  98408. <stringProp name="VARIABLE">configurable_matrix</stringProp>
  98409. <stringProp name="SUBJECT">VAR</stringProp>
  98410. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  98411. <hashTree/>
  98412. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract configurable product json" enabled="true">
  98413. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98414. <stringProp name="RegexExtractor.refname">configurable_product_data</stringProp>
  98415. <stringProp name="RegexExtractor.regex">(\{"product":.*?configurable_attributes_data.*?\})\s*&lt;</stringProp>
  98416. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98417. <stringProp name="RegexExtractor.default"/>
  98418. <stringProp name="RegexExtractor.match_number">1</stringProp>
  98419. </RegexExtractor>
  98420. <hashTree/>
  98421. <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 configurable attributes data" enabled="true">
  98422. <stringProp name="VAR">configurable_attributes_data</stringProp>
  98423. <stringProp name="JSONPATH">$.product.configurable_attributes_data</stringProp>
  98424. <stringProp name="DEFAULT"/>
  98425. <stringProp name="VARIABLE">configurable_product_data</stringProp>
  98426. <stringProp name="SUBJECT">VAR</stringProp>
  98427. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  98428. <hashTree/>
  98429. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute ids" enabled="true">
  98430. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98431. <stringProp name="RegexExtractor.refname">configurable_attribute_ids</stringProp>
  98432. <stringProp name="RegexExtractor.regex">"attribute_id":"(\d+)"</stringProp>
  98433. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98434. <stringProp name="RegexExtractor.default"/>
  98435. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  98436. <stringProp name="Sample.scope">variable</stringProp>
  98437. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  98438. </RegexExtractor>
  98439. <hashTree/>
  98440. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute codes" enabled="true">
  98441. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98442. <stringProp name="RegexExtractor.refname">configurable_attribute_codes</stringProp>
  98443. <stringProp name="RegexExtractor.regex">"code":"(\w+)"</stringProp>
  98444. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98445. <stringProp name="RegexExtractor.default"/>
  98446. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  98447. <stringProp name="Sample.scope">variable</stringProp>
  98448. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  98449. </RegexExtractor>
  98450. <hashTree/>
  98451. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute labels" enabled="true">
  98452. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98453. <stringProp name="RegexExtractor.refname">configurable_attribute_labels</stringProp>
  98454. <stringProp name="RegexExtractor.regex">"label":"(.*?)"</stringProp>
  98455. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98456. <stringProp name="RegexExtractor.default"/>
  98457. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  98458. <stringProp name="Sample.scope">variable</stringProp>
  98459. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  98460. </RegexExtractor>
  98461. <hashTree/>
  98462. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract attribute values" enabled="true">
  98463. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98464. <stringProp name="RegexExtractor.refname">configurable_attribute_values</stringProp>
  98465. <stringProp name="RegexExtractor.regex">"values":(\{(?:\}|.*?\}\}))</stringProp>
  98466. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98467. <stringProp name="RegexExtractor.default"/>
  98468. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  98469. <stringProp name="Sample.scope">variable</stringProp>
  98470. <stringProp name="Scope.variable">configurable_attributes_data</stringProp>
  98471. </RegexExtractor>
  98472. <hashTree/>
  98473. </hashTree>
  98474. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach configurable attribute id" enabled="true">
  98475. <stringProp name="ForeachController.inputVal">configurable_attribute_ids</stringProp>
  98476. <stringProp name="ForeachController.returnVal">configurable_attribute_id</stringProp>
  98477. <boolProp name="ForeachController.useSeparator">true</boolProp>
  98478. </ForeachController>
  98479. <hashTree>
  98480. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
  98481. <stringProp name="CounterConfig.start">1</stringProp>
  98482. <stringProp name="CounterConfig.end">${configurable_attribute_ids_matchNr}</stringProp>
  98483. <stringProp name="CounterConfig.incr">1</stringProp>
  98484. <stringProp name="CounterConfig.name">attribute_counter</stringProp>
  98485. <stringProp name="CounterConfig.format"/>
  98486. <boolProp name="CounterConfig.per_user">true</boolProp>
  98487. <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
  98488. </CounterConfig>
  98489. <hashTree/>
  98490. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Process configurable attribute values" enabled="true">
  98491. <stringProp name="BeanShellSampler.query">return vars.get("configurable_attribute_values_" + vars.get("attribute_counter"));</stringProp>
  98492. <stringProp name="BeanShellSampler.filename"/>
  98493. <stringProp name="BeanShellSampler.parameters"/>
  98494. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  98495. </BeanShellSampler>
  98496. <hashTree>
  98497. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Exctract attribute values" enabled="true">
  98498. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  98499. <stringProp name="RegexExtractor.refname">attribute_${configurable_attribute_id}_values</stringProp>
  98500. <stringProp name="RegexExtractor.regex">"value_index":"(\d+)"</stringProp>
  98501. <stringProp name="RegexExtractor.template">$1$</stringProp>
  98502. <stringProp name="RegexExtractor.default"/>
  98503. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  98504. <stringProp name="Scope.variable">configurable_attribute_values_${attribute_counter}</stringProp>
  98505. </RegexExtractor>
  98506. <hashTree/>
  98507. </hashTree>
  98508. </hashTree>
  98509. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Validate" enabled="true">
  98510. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  98511. <collectionProp name="Arguments.arguments">
  98512. <elementProp name="isAjax" elementType="HTTPArgument">
  98513. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98514. <stringProp name="Argument.value">true</stringProp>
  98515. <stringProp name="Argument.metadata">=</stringProp>
  98516. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98517. <stringProp name="Argument.name">isAjax</stringProp>
  98518. <stringProp name="Argument.desc">false</stringProp>
  98519. </elementProp>
  98520. <elementProp name="form_key" elementType="HTTPArgument">
  98521. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98522. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  98523. <stringProp name="Argument.metadata">=</stringProp>
  98524. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98525. <stringProp name="Argument.name">form_key</stringProp>
  98526. <stringProp name="Argument.desc">false</stringProp>
  98527. </elementProp>
  98528. <elementProp name="product[name]" elementType="HTTPArgument">
  98529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98530. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  98531. <stringProp name="Argument.metadata">=</stringProp>
  98532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98533. <stringProp name="Argument.name">product[name]</stringProp>
  98534. <stringProp name="Argument.desc">false</stringProp>
  98535. </elementProp>
  98536. <elementProp name="product[sku]" elementType="HTTPArgument">
  98537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98538. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  98539. <stringProp name="Argument.metadata">=</stringProp>
  98540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98541. <stringProp name="Argument.name">product[sku]</stringProp>
  98542. <stringProp name="Argument.desc">false</stringProp>
  98543. </elementProp>
  98544. <elementProp name="product[price]" elementType="HTTPArgument">
  98545. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98546. <stringProp name="Argument.value">${price_new}</stringProp>
  98547. <stringProp name="Argument.metadata">=</stringProp>
  98548. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98549. <stringProp name="Argument.name">product[price]</stringProp>
  98550. <stringProp name="Argument.desc">false</stringProp>
  98551. </elementProp>
  98552. <elementProp name="product[tax_class_id]" elementType="HTTPArgument">
  98553. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98554. <stringProp name="Argument.value">2</stringProp>
  98555. <stringProp name="Argument.metadata">=</stringProp>
  98556. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98557. <stringProp name="Argument.name">product[tax_class_id]</stringProp>
  98558. <stringProp name="Argument.desc">false</stringProp>
  98559. </elementProp>
  98560. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  98561. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98562. <stringProp name="Argument.value">1</stringProp>
  98563. <stringProp name="Argument.metadata">=</stringProp>
  98564. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98565. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  98566. <stringProp name="Argument.desc">false</stringProp>
  98567. </elementProp>
  98568. <elementProp name="product[weight]" elementType="HTTPArgument">
  98569. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98570. <stringProp name="Argument.value">3</stringProp>
  98571. <stringProp name="Argument.metadata">=</stringProp>
  98572. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98573. <stringProp name="Argument.name">product[weight]</stringProp>
  98574. <stringProp name="Argument.desc">false</stringProp>
  98575. </elementProp>
  98576. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  98577. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98578. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  98579. <stringProp name="Argument.metadata">=</stringProp>
  98580. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98581. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  98582. <stringProp name="Argument.desc">false</stringProp>
  98583. </elementProp>
  98584. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  98585. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98586. <stringProp name="Argument.value">${category_additional}</stringProp>
  98587. <stringProp name="Argument.metadata">=</stringProp>
  98588. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98589. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  98590. <stringProp name="Argument.desc">false</stringProp>
  98591. </elementProp>
  98592. <elementProp name="product[description]" elementType="HTTPArgument">
  98593. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98594. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  98595. <stringProp name="Argument.metadata">=</stringProp>
  98596. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98597. <stringProp name="Argument.name">product[description]</stringProp>
  98598. <stringProp name="Argument.desc">false</stringProp>
  98599. </elementProp>
  98600. <elementProp name="product[status]" elementType="HTTPArgument">
  98601. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98602. <stringProp name="Argument.value">1</stringProp>
  98603. <stringProp name="Argument.metadata">=</stringProp>
  98604. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98605. <stringProp name="Argument.name">product[status]</stringProp>
  98606. <stringProp name="Argument.desc">false</stringProp>
  98607. </elementProp>
  98608. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  98609. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98610. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  98611. <stringProp name="Argument.metadata">=</stringProp>
  98612. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98613. <stringProp name="Argument.name">product[meta_title]</stringProp>
  98614. <stringProp name="Argument.desc">false</stringProp>
  98615. </elementProp>
  98616. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  98617. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98618. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  98619. <stringProp name="Argument.metadata">=</stringProp>
  98620. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98621. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  98622. <stringProp name="Argument.desc">false</stringProp>
  98623. </elementProp>
  98624. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  98625. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98626. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  98627. <stringProp name="Argument.metadata">=</stringProp>
  98628. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98629. <stringProp name="Argument.name">product[meta_description]</stringProp>
  98630. <stringProp name="Argument.desc">false</stringProp>
  98631. </elementProp>
  98632. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  98633. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98634. <stringProp name="Argument.value">1</stringProp>
  98635. <stringProp name="Argument.metadata">=</stringProp>
  98636. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98637. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  98638. <stringProp name="Argument.desc">false</stringProp>
  98639. </elementProp>
  98640. <elementProp name="product[special_price]" elementType="HTTPArgument">
  98641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98642. <stringProp name="Argument.value">${special_price_new}</stringProp>
  98643. <stringProp name="Argument.metadata">=</stringProp>
  98644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98645. <stringProp name="Argument.name">product[special_price]</stringProp>
  98646. <stringProp name="Argument.desc">false</stringProp>
  98647. </elementProp>
  98648. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  98649. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98650. <stringProp name="Argument.value"/>
  98651. <stringProp name="Argument.metadata">=</stringProp>
  98652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98653. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  98654. <stringProp name="Argument.desc">false</stringProp>
  98655. </elementProp>
  98656. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  98657. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98658. <stringProp name="Argument.value"/>
  98659. <stringProp name="Argument.metadata">=</stringProp>
  98660. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98661. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  98662. <stringProp name="Argument.desc">false</stringProp>
  98663. </elementProp>
  98664. <elementProp name="product[cost]" elementType="HTTPArgument">
  98665. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98666. <stringProp name="Argument.value"/>
  98667. <stringProp name="Argument.metadata">=</stringProp>
  98668. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98669. <stringProp name="Argument.name">product[cost]</stringProp>
  98670. <stringProp name="Argument.desc">false</stringProp>
  98671. </elementProp>
  98672. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  98673. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98674. <stringProp name="Argument.value">1</stringProp>
  98675. <stringProp name="Argument.metadata">=</stringProp>
  98676. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98677. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  98678. <stringProp name="Argument.desc">false</stringProp>
  98679. </elementProp>
  98680. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  98681. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98682. <stringProp name="Argument.value">0</stringProp>
  98683. <stringProp name="Argument.metadata">=</stringProp>
  98684. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98685. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  98686. <stringProp name="Argument.desc">false</stringProp>
  98687. </elementProp>
  98688. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  98689. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98690. <stringProp name="Argument.value">1</stringProp>
  98691. <stringProp name="Argument.metadata">=</stringProp>
  98692. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98693. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  98694. <stringProp name="Argument.desc">false</stringProp>
  98695. </elementProp>
  98696. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  98697. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98698. <stringProp name="Argument.value">1</stringProp>
  98699. <stringProp name="Argument.metadata">=</stringProp>
  98700. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98701. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  98702. <stringProp name="Argument.desc">false</stringProp>
  98703. </elementProp>
  98704. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  98705. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98706. <stringProp name="Argument.value">1</stringProp>
  98707. <stringProp name="Argument.metadata">=</stringProp>
  98708. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98709. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  98710. <stringProp name="Argument.desc">false</stringProp>
  98711. </elementProp>
  98712. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  98713. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98714. <stringProp name="Argument.value">1</stringProp>
  98715. <stringProp name="Argument.metadata">=</stringProp>
  98716. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98717. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  98718. <stringProp name="Argument.desc">false</stringProp>
  98719. </elementProp>
  98720. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  98721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98722. <stringProp name="Argument.value">0</stringProp>
  98723. <stringProp name="Argument.metadata">=</stringProp>
  98724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98725. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  98726. <stringProp name="Argument.desc">false</stringProp>
  98727. </elementProp>
  98728. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  98729. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98730. <stringProp name="Argument.value">0</stringProp>
  98731. <stringProp name="Argument.metadata">=</stringProp>
  98732. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98733. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  98734. <stringProp name="Argument.desc">false</stringProp>
  98735. </elementProp>
  98736. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  98737. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98738. <stringProp name="Argument.value">0</stringProp>
  98739. <stringProp name="Argument.metadata">=</stringProp>
  98740. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98741. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  98742. <stringProp name="Argument.desc">false</stringProp>
  98743. </elementProp>
  98744. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  98745. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98746. <stringProp name="Argument.value">1</stringProp>
  98747. <stringProp name="Argument.metadata">=</stringProp>
  98748. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98749. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  98750. <stringProp name="Argument.desc">false</stringProp>
  98751. </elementProp>
  98752. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  98753. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98754. <stringProp name="Argument.value">1</stringProp>
  98755. <stringProp name="Argument.metadata">=</stringProp>
  98756. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98757. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  98758. <stringProp name="Argument.desc">false</stringProp>
  98759. </elementProp>
  98760. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  98761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98762. <stringProp name="Argument.value">1</stringProp>
  98763. <stringProp name="Argument.metadata">=</stringProp>
  98764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98765. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  98766. <stringProp name="Argument.desc">false</stringProp>
  98767. </elementProp>
  98768. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  98769. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98770. <stringProp name="Argument.value">0</stringProp>
  98771. <stringProp name="Argument.metadata">=</stringProp>
  98772. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98773. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  98774. <stringProp name="Argument.desc">false</stringProp>
  98775. </elementProp>
  98776. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  98777. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98778. <stringProp name="Argument.value">0</stringProp>
  98779. <stringProp name="Argument.metadata">=</stringProp>
  98780. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98781. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  98782. <stringProp name="Argument.desc">false</stringProp>
  98783. </elementProp>
  98784. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  98785. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98786. <stringProp name="Argument.value">1</stringProp>
  98787. <stringProp name="Argument.metadata">=</stringProp>
  98788. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98789. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  98790. <stringProp name="Argument.desc">false</stringProp>
  98791. </elementProp>
  98792. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  98793. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98794. <stringProp name="Argument.value">1</stringProp>
  98795. <stringProp name="Argument.metadata">=</stringProp>
  98796. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98797. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  98798. <stringProp name="Argument.desc">false</stringProp>
  98799. </elementProp>
  98800. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  98801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98802. <stringProp name="Argument.value"/>
  98803. <stringProp name="Argument.metadata">=</stringProp>
  98804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98805. <stringProp name="Argument.name">product[custom_design]</stringProp>
  98806. <stringProp name="Argument.desc">false</stringProp>
  98807. </elementProp>
  98808. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  98809. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98810. <stringProp name="Argument.value"/>
  98811. <stringProp name="Argument.metadata">=</stringProp>
  98812. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98813. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  98814. <stringProp name="Argument.desc">false</stringProp>
  98815. </elementProp>
  98816. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  98817. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98818. <stringProp name="Argument.value"/>
  98819. <stringProp name="Argument.metadata">=</stringProp>
  98820. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98821. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  98822. <stringProp name="Argument.desc">false</stringProp>
  98823. </elementProp>
  98824. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  98825. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98826. <stringProp name="Argument.value"/>
  98827. <stringProp name="Argument.metadata">=</stringProp>
  98828. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98829. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  98830. <stringProp name="Argument.desc">false</stringProp>
  98831. </elementProp>
  98832. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  98833. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98834. <stringProp name="Argument.value"/>
  98835. <stringProp name="Argument.metadata">=</stringProp>
  98836. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98837. <stringProp name="Argument.name">product[page_layout]</stringProp>
  98838. <stringProp name="Argument.desc">false</stringProp>
  98839. </elementProp>
  98840. <elementProp name="product[options_container]" elementType="HTTPArgument">
  98841. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98842. <stringProp name="Argument.value">container2</stringProp>
  98843. <stringProp name="Argument.metadata">=</stringProp>
  98844. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98845. <stringProp name="Argument.name">product[options_container]</stringProp>
  98846. <stringProp name="Argument.desc">false</stringProp>
  98847. </elementProp>
  98848. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  98849. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98850. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  98851. <stringProp name="Argument.metadata">=</stringProp>
  98852. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98853. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  98854. <stringProp name="Argument.desc">false</stringProp>
  98855. </elementProp>
  98856. <elementProp name="product[url_key]" elementType="HTTPArgument">
  98857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98858. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  98859. <stringProp name="Argument.metadata">=</stringProp>
  98860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98861. <stringProp name="Argument.name">product[url_key]</stringProp>
  98862. </elementProp>
  98863. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  98864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98865. <stringProp name="Argument.value">1</stringProp>
  98866. <stringProp name="Argument.metadata">=</stringProp>
  98867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98868. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  98869. </elementProp>
  98870. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  98871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98872. <stringProp name="Argument.value">1</stringProp>
  98873. <stringProp name="Argument.metadata">=</stringProp>
  98874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98875. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  98876. </elementProp>
  98877. <elementProp name="product[visibility]" elementType="HTTPArgument">
  98878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98879. <stringProp name="Argument.value">4</stringProp>
  98880. <stringProp name="Argument.metadata">=</stringProp>
  98881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98882. <stringProp name="Argument.name">product[visibility]</stringProp>
  98883. </elementProp>
  98884. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  98885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98886. <stringProp name="Argument.value">1</stringProp>
  98887. <stringProp name="Argument.metadata">=</stringProp>
  98888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98889. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  98890. <stringProp name="Argument.desc">true</stringProp>
  98891. </elementProp>
  98892. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  98893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98894. <stringProp name="Argument.value">50</stringProp>
  98895. <stringProp name="Argument.metadata">=</stringProp>
  98896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98897. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  98898. <stringProp name="Argument.desc">false</stringProp>
  98899. </elementProp>
  98900. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  98901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98902. <stringProp name="Argument.value">configurable</stringProp>
  98903. <stringProp name="Argument.metadata">=</stringProp>
  98904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98905. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  98906. <stringProp name="Argument.desc">false</stringProp>
  98907. </elementProp>
  98908. </collectionProp>
  98909. </elementProp>
  98910. <stringProp name="HTTPSampler.domain"/>
  98911. <stringProp name="HTTPSampler.port"/>
  98912. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  98913. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  98914. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  98915. <stringProp name="HTTPSampler.contentEncoding"/>
  98916. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/validate/id/${configurable_product_id}/</stringProp>
  98917. <stringProp name="HTTPSampler.method">POST</stringProp>
  98918. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  98919. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  98920. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  98921. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  98922. <boolProp name="HTTPSampler.monitor">false</boolProp>
  98923. <stringProp name="HTTPSampler.embedded_url_re"/>
  98924. </HTTPSamplerProxy>
  98925. <hashTree>
  98926. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  98927. <boolProp name="resetInterpreter">false</boolProp>
  98928. <stringProp name="parameters"/>
  98929. <stringProp name="filename"/>
  98930. <stringProp name="script">try {
  98931. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  98932. for (int i = 1; i &lt;= attributesCount; i++) {
  98933. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  98934. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  98935. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  98936. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  98937. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  98938. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  98939. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  98940. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  98941. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  98942. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  98943. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  98944. for (int j = 1; j &lt;= valuesCount; j++) {
  98945. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  98946. ctx.getCurrentSampler().addArgument(
  98947. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  98948. "1"
  98949. );
  98950. ctx.getCurrentSampler().addArgument(
  98951. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  98952. attributeValue
  98953. );
  98954. }
  98955. }
  98956. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  98957. } catch (Exception e) {
  98958. log.error("error???", e);
  98959. }</stringProp>
  98960. </BeanShellPreProcessor>
  98961. <hashTree/>
  98962. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  98963. <collectionProp name="Asserion.test_strings">
  98964. <stringProp name="1853918323">{"error":false}</stringProp>
  98965. </collectionProp>
  98966. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  98967. <boolProp name="Assertion.assume_success">false</boolProp>
  98968. <intProp name="Assertion.test_type">2</intProp>
  98969. </ResponseAssertion>
  98970. <hashTree/>
  98971. </hashTree>
  98972. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Configurable Product Save" enabled="true">
  98973. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  98974. <collectionProp name="Arguments.arguments">
  98975. <elementProp name="ajax" elementType="HTTPArgument">
  98976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98977. <stringProp name="Argument.value">true</stringProp>
  98978. <stringProp name="Argument.metadata">=</stringProp>
  98979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98980. <stringProp name="Argument.name">ajax</stringProp>
  98981. <stringProp name="Argument.desc">false</stringProp>
  98982. </elementProp>
  98983. <elementProp name="isAjax" elementType="HTTPArgument">
  98984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98985. <stringProp name="Argument.value">true</stringProp>
  98986. <stringProp name="Argument.metadata">=</stringProp>
  98987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98988. <stringProp name="Argument.name">isAjax</stringProp>
  98989. <stringProp name="Argument.desc">false</stringProp>
  98990. </elementProp>
  98991. <elementProp name="form_key" elementType="HTTPArgument">
  98992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  98993. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  98994. <stringProp name="Argument.metadata">=</stringProp>
  98995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  98996. <stringProp name="Argument.name">form_key</stringProp>
  98997. <stringProp name="Argument.desc">false</stringProp>
  98998. </elementProp>
  98999. <elementProp name="product[name]" elementType="HTTPArgument">
  99000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99001. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  99002. <stringProp name="Argument.metadata">=</stringProp>
  99003. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99004. <stringProp name="Argument.name">product[name]</stringProp>
  99005. <stringProp name="Argument.desc">false</stringProp>
  99006. </elementProp>
  99007. <elementProp name="product[sku]" elementType="HTTPArgument">
  99008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99009. <stringProp name="Argument.value">${configurable_product_sku}</stringProp>
  99010. <stringProp name="Argument.metadata">=</stringProp>
  99011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99012. <stringProp name="Argument.name">product[sku]</stringProp>
  99013. <stringProp name="Argument.desc">false</stringProp>
  99014. </elementProp>
  99015. <elementProp name="product[price]" elementType="HTTPArgument">
  99016. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99017. <stringProp name="Argument.value">${price_new}</stringProp>
  99018. <stringProp name="Argument.metadata">=</stringProp>
  99019. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99020. <stringProp name="Argument.name">product[price]</stringProp>
  99021. <stringProp name="Argument.desc">false</stringProp>
  99022. </elementProp>
  99023. <elementProp name="product[tax_class_id]admin" elementType="HTTPArgument">
  99024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99025. <stringProp name="Argument.value">2</stringProp>
  99026. <stringProp name="Argument.metadata">=</stringProp>
  99027. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99028. <stringProp name="Argument.name">product[tax_class_id]admin</stringProp>
  99029. <stringProp name="Argument.desc">false</stringProp>
  99030. </elementProp>
  99031. <elementProp name="product[quantity_and_stock_status][is_in_stock]" elementType="HTTPArgument">
  99032. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99033. <stringProp name="Argument.value">1</stringProp>
  99034. <stringProp name="Argument.metadata">=</stringProp>
  99035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99036. <stringProp name="Argument.name">product[quantity_and_stock_status][is_in_stock]</stringProp>
  99037. <stringProp name="Argument.desc">false</stringProp>
  99038. </elementProp>
  99039. <elementProp name="product[weight]" elementType="HTTPArgument">
  99040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99041. <stringProp name="Argument.value">3</stringProp>
  99042. <stringProp name="Argument.metadata">=</stringProp>
  99043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99044. <stringProp name="Argument.name">product[weight]</stringProp>
  99045. <stringProp name="Argument.desc">false</stringProp>
  99046. </elementProp>
  99047. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  99048. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99049. <stringProp name="Argument.value">${configurable_product_category_id}</stringProp>
  99050. <stringProp name="Argument.metadata">=</stringProp>
  99051. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99052. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  99053. <stringProp name="Argument.desc">false</stringProp>
  99054. </elementProp>
  99055. <elementProp name="product[category_ids][]" elementType="HTTPArgument">
  99056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99057. <stringProp name="Argument.value">${category_additional}</stringProp>
  99058. <stringProp name="Argument.metadata">=</stringProp>
  99059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99060. <stringProp name="Argument.name">product[category_ids][]</stringProp>
  99061. <stringProp name="Argument.desc">false</stringProp>
  99062. </elementProp>
  99063. <elementProp name="product[description]" elementType="HTTPArgument">
  99064. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99065. <stringProp name="Argument.value">&lt;p&gt;Configurable product description ${configurable_product_id} Edited&lt;/p&gt;</stringProp>
  99066. <stringProp name="Argument.metadata">=</stringProp>
  99067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99068. <stringProp name="Argument.name">product[description]</stringProp>
  99069. <stringProp name="Argument.desc">false</stringProp>
  99070. </elementProp>
  99071. <elementProp name="product[status]" elementType="HTTPArgument">
  99072. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99073. <stringProp name="Argument.value">1</stringProp>
  99074. <stringProp name="Argument.metadata">=</stringProp>
  99075. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99076. <stringProp name="Argument.name">product[status]</stringProp>
  99077. <stringProp name="Argument.desc">false</stringProp>
  99078. </elementProp>
  99079. <elementProp name="product[meta_title]" elementType="HTTPArgument">
  99080. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99081. <stringProp name="Argument.value">${configurable_product_name} Meta Title Edited</stringProp>
  99082. <stringProp name="Argument.metadata">=</stringProp>
  99083. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99084. <stringProp name="Argument.name">product[meta_title]</stringProp>
  99085. <stringProp name="Argument.desc">false</stringProp>
  99086. </elementProp>
  99087. <elementProp name="product[meta_keyword]" elementType="HTTPArgument">
  99088. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99089. <stringProp name="Argument.value">${configurable_product_name} Meta Keyword Edited</stringProp>
  99090. <stringProp name="Argument.metadata">=</stringProp>
  99091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99092. <stringProp name="Argument.name">product[meta_keyword]</stringProp>
  99093. <stringProp name="Argument.desc">false</stringProp>
  99094. </elementProp>
  99095. <elementProp name="product[meta_description]" elementType="HTTPArgument">
  99096. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99097. <stringProp name="Argument.value">${configurable_product_name} Meta Description Edited</stringProp>
  99098. <stringProp name="Argument.metadata">=</stringProp>
  99099. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99100. <stringProp name="Argument.name">product[meta_description]</stringProp>
  99101. <stringProp name="Argument.desc">false</stringProp>
  99102. </elementProp>
  99103. <elementProp name="product[website_ids][]" elementType="HTTPArgument">
  99104. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99105. <stringProp name="Argument.value">1</stringProp>
  99106. <stringProp name="Argument.metadata">=</stringProp>
  99107. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99108. <stringProp name="Argument.name">product[website_ids][]</stringProp>
  99109. <stringProp name="Argument.desc">false</stringProp>
  99110. </elementProp>
  99111. <elementProp name="product[special_price]" elementType="HTTPArgument">
  99112. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99113. <stringProp name="Argument.value">${special_price_new}</stringProp>
  99114. <stringProp name="Argument.metadata">=</stringProp>
  99115. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99116. <stringProp name="Argument.name">product[special_price]</stringProp>
  99117. <stringProp name="Argument.desc">false</stringProp>
  99118. </elementProp>
  99119. <elementProp name="product[special_from_date]" elementType="HTTPArgument">
  99120. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99121. <stringProp name="Argument.value"/>
  99122. <stringProp name="Argument.metadata">=</stringProp>
  99123. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99124. <stringProp name="Argument.name">product[special_from_date]</stringProp>
  99125. <stringProp name="Argument.desc">false</stringProp>
  99126. </elementProp>
  99127. <elementProp name="product[special_to_date]" elementType="HTTPArgument">
  99128. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99129. <stringProp name="Argument.value"/>
  99130. <stringProp name="Argument.metadata">=</stringProp>
  99131. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99132. <stringProp name="Argument.name">product[special_to_date]</stringProp>
  99133. <stringProp name="Argument.desc">false</stringProp>
  99134. </elementProp>
  99135. <elementProp name="product[cost]" elementType="HTTPArgument">
  99136. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99137. <stringProp name="Argument.value"/>
  99138. <stringProp name="Argument.metadata">=</stringProp>
  99139. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99140. <stringProp name="Argument.name">product[cost]</stringProp>
  99141. <stringProp name="Argument.desc">false</stringProp>
  99142. </elementProp>
  99143. <elementProp name="product[stock_data][use_config_manage_stock]" elementType="HTTPArgument">
  99144. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99145. <stringProp name="Argument.value">1</stringProp>
  99146. <stringProp name="Argument.metadata">=</stringProp>
  99147. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99148. <stringProp name="Argument.name">product[stock_data][use_config_manage_stock]</stringProp>
  99149. <stringProp name="Argument.desc">false</stringProp>
  99150. </elementProp>
  99151. <elementProp name="product[stock_data][min_qty]" elementType="HTTPArgument">
  99152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99153. <stringProp name="Argument.value">0</stringProp>
  99154. <stringProp name="Argument.metadata">=</stringProp>
  99155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99156. <stringProp name="Argument.name">product[stock_data][min_qty]</stringProp>
  99157. <stringProp name="Argument.desc">false</stringProp>
  99158. </elementProp>
  99159. <elementProp name="product[stock_data][use_config_min_qty]" elementType="HTTPArgument">
  99160. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99161. <stringProp name="Argument.value">1</stringProp>
  99162. <stringProp name="Argument.metadata">=</stringProp>
  99163. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99164. <stringProp name="Argument.name">product[stock_data][use_config_min_qty]</stringProp>
  99165. <stringProp name="Argument.desc">false</stringProp>
  99166. </elementProp>
  99167. <elementProp name="product[stock_data][min_sale_qty]" elementType="HTTPArgument">
  99168. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99169. <stringProp name="Argument.value">1</stringProp>
  99170. <stringProp name="Argument.metadata">=</stringProp>
  99171. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99172. <stringProp name="Argument.name">product[stock_data][min_sale_qty]</stringProp>
  99173. <stringProp name="Argument.desc">false</stringProp>
  99174. </elementProp>
  99175. <elementProp name="product[stock_data][use_config_min_sale_qty]" elementType="HTTPArgument">
  99176. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99177. <stringProp name="Argument.value">1</stringProp>
  99178. <stringProp name="Argument.metadata">=</stringProp>
  99179. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99180. <stringProp name="Argument.name">product[stock_data][use_config_min_sale_qty]</stringProp>
  99181. <stringProp name="Argument.desc">false</stringProp>
  99182. </elementProp>
  99183. <elementProp name="product[stock_data][use_config_max_sale_qty]" elementType="HTTPArgument">
  99184. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99185. <stringProp name="Argument.value">1</stringProp>
  99186. <stringProp name="Argument.metadata">=</stringProp>
  99187. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99188. <stringProp name="Argument.name">product[stock_data][use_config_max_sale_qty]</stringProp>
  99189. <stringProp name="Argument.desc">false</stringProp>
  99190. </elementProp>
  99191. <elementProp name="product[stock_data][is_qty_decimal]" elementType="HTTPArgument">
  99192. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99193. <stringProp name="Argument.value">0</stringProp>
  99194. <stringProp name="Argument.metadata">=</stringProp>
  99195. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99196. <stringProp name="Argument.name">product[stock_data][is_qty_decimal]</stringProp>
  99197. <stringProp name="Argument.desc">false</stringProp>
  99198. </elementProp>
  99199. <elementProp name="product[stock_data][is_decimal_divided]" elementType="HTTPArgument">
  99200. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99201. <stringProp name="Argument.value">0</stringProp>
  99202. <stringProp name="Argument.metadata">=</stringProp>
  99203. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99204. <stringProp name="Argument.name">product[stock_data][is_decimal_divided]</stringProp>
  99205. <stringProp name="Argument.desc">false</stringProp>
  99206. </elementProp>
  99207. <elementProp name="product[stock_data][backorders]" elementType="HTTPArgument">
  99208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99209. <stringProp name="Argument.value">0</stringProp>
  99210. <stringProp name="Argument.metadata">=</stringProp>
  99211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99212. <stringProp name="Argument.name">product[stock_data][backorders]</stringProp>
  99213. <stringProp name="Argument.desc">false</stringProp>
  99214. </elementProp>
  99215. <elementProp name="product[stock_data][use_config_backorders]" elementType="HTTPArgument">
  99216. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99217. <stringProp name="Argument.value">1</stringProp>
  99218. <stringProp name="Argument.metadata">=</stringProp>
  99219. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99220. <stringProp name="Argument.name">product[stock_data][use_config_backorders]</stringProp>
  99221. <stringProp name="Argument.desc">false</stringProp>
  99222. </elementProp>
  99223. <elementProp name="product[stock_data][notify_stock_qty]" elementType="HTTPArgument">
  99224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99225. <stringProp name="Argument.value">1</stringProp>
  99226. <stringProp name="Argument.metadata">=</stringProp>
  99227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99228. <stringProp name="Argument.name">product[stock_data][notify_stock_qty]</stringProp>
  99229. <stringProp name="Argument.desc">false</stringProp>
  99230. </elementProp>
  99231. <elementProp name="product[stock_data][use_config_notify_stock_qty]" elementType="HTTPArgument">
  99232. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99233. <stringProp name="Argument.value">1</stringProp>
  99234. <stringProp name="Argument.metadata">=</stringProp>
  99235. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99236. <stringProp name="Argument.name">product[stock_data][use_config_notify_stock_qty]</stringProp>
  99237. <stringProp name="Argument.desc">false</stringProp>
  99238. </elementProp>
  99239. <elementProp name="product[stock_data][enable_qty_increments]" elementType="HTTPArgument">
  99240. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99241. <stringProp name="Argument.value">0</stringProp>
  99242. <stringProp name="Argument.metadata">=</stringProp>
  99243. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99244. <stringProp name="Argument.name">product[stock_data][enable_qty_increments]</stringProp>
  99245. <stringProp name="Argument.desc">false</stringProp>
  99246. </elementProp>
  99247. <elementProp name="product[stock_data][qty_increments]" elementType="HTTPArgument">
  99248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99249. <stringProp name="Argument.value">0</stringProp>
  99250. <stringProp name="Argument.metadata">=</stringProp>
  99251. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99252. <stringProp name="Argument.name">product[stock_data][qty_increments]</stringProp>
  99253. <stringProp name="Argument.desc">false</stringProp>
  99254. </elementProp>
  99255. <elementProp name="product[stock_data][use_config_qty_increments]" elementType="HTTPArgument">
  99256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99257. <stringProp name="Argument.value">1</stringProp>
  99258. <stringProp name="Argument.metadata">=</stringProp>
  99259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99260. <stringProp name="Argument.name">product[stock_data][use_config_qty_increments]</stringProp>
  99261. <stringProp name="Argument.desc">false</stringProp>
  99262. </elementProp>
  99263. <elementProp name="product[stock_data][is_in_stock]" elementType="HTTPArgument">
  99264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99265. <stringProp name="Argument.value">1</stringProp>
  99266. <stringProp name="Argument.metadata">=</stringProp>
  99267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99268. <stringProp name="Argument.name">product[stock_data][is_in_stock]</stringProp>
  99269. <stringProp name="Argument.desc">false</stringProp>
  99270. </elementProp>
  99271. <elementProp name="product[custom_design]" elementType="HTTPArgument">
  99272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99273. <stringProp name="Argument.value"/>
  99274. <stringProp name="Argument.metadata">=</stringProp>
  99275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99276. <stringProp name="Argument.name">product[custom_design]</stringProp>
  99277. <stringProp name="Argument.desc">false</stringProp>
  99278. </elementProp>
  99279. <elementProp name="product[custom_design_from]" elementType="HTTPArgument">
  99280. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99281. <stringProp name="Argument.value"/>
  99282. <stringProp name="Argument.metadata">=</stringProp>
  99283. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99284. <stringProp name="Argument.name">product[custom_design_from]</stringProp>
  99285. <stringProp name="Argument.desc">false</stringProp>
  99286. </elementProp>
  99287. <elementProp name="product[custom_design_to]" elementType="HTTPArgument">
  99288. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99289. <stringProp name="Argument.value"/>
  99290. <stringProp name="Argument.metadata">=</stringProp>
  99291. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99292. <stringProp name="Argument.name">product[custom_design_to]</stringProp>
  99293. <stringProp name="Argument.desc">false</stringProp>
  99294. </elementProp>
  99295. <elementProp name="product[custom_layout_update]" elementType="HTTPArgument">
  99296. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99297. <stringProp name="Argument.value"/>
  99298. <stringProp name="Argument.metadata">=</stringProp>
  99299. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99300. <stringProp name="Argument.name">product[custom_layout_update]</stringProp>
  99301. <stringProp name="Argument.desc">false</stringProp>
  99302. </elementProp>
  99303. <elementProp name="product[page_layout]" elementType="HTTPArgument">
  99304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99305. <stringProp name="Argument.value"/>
  99306. <stringProp name="Argument.metadata">=</stringProp>
  99307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99308. <stringProp name="Argument.name">product[page_layout]</stringProp>
  99309. <stringProp name="Argument.desc">false</stringProp>
  99310. </elementProp>
  99311. <elementProp name="product[options_container]" elementType="HTTPArgument">
  99312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99313. <stringProp name="Argument.value">container2</stringProp>
  99314. <stringProp name="Argument.metadata">=</stringProp>
  99315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99316. <stringProp name="Argument.name">product[options_container]</stringProp>
  99317. <stringProp name="Argument.desc">false</stringProp>
  99318. </elementProp>
  99319. <elementProp name="product[configurable_variation]" elementType="HTTPArgument">
  99320. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99321. <stringProp name="Argument.value">${configurable_attribute_id}</stringProp>
  99322. <stringProp name="Argument.metadata">=</stringProp>
  99323. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99324. <stringProp name="Argument.name">product[configurable_variation]</stringProp>
  99325. <stringProp name="Argument.desc">false</stringProp>
  99326. </elementProp>
  99327. <elementProp name="product[url_key]" elementType="HTTPArgument">
  99328. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99329. <stringProp name="Argument.value">${configurable_product_name}</stringProp>
  99330. <stringProp name="Argument.metadata">=</stringProp>
  99331. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99332. <stringProp name="Argument.name">product[url_key]</stringProp>
  99333. </elementProp>
  99334. <elementProp name="product[use_config_gift_message_available]" elementType="HTTPArgument">
  99335. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99336. <stringProp name="Argument.value">1</stringProp>
  99337. <stringProp name="Argument.metadata">=</stringProp>
  99338. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99339. <stringProp name="Argument.name">product[use_config_gift_message_available]</stringProp>
  99340. </elementProp>
  99341. <elementProp name="product[use_config_gift_wrapping_available]" elementType="HTTPArgument">
  99342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99343. <stringProp name="Argument.value">1</stringProp>
  99344. <stringProp name="Argument.metadata">=</stringProp>
  99345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99346. <stringProp name="Argument.name">product[use_config_gift_wrapping_available]</stringProp>
  99347. </elementProp>
  99348. <elementProp name="product[visibility]" elementType="HTTPArgument">
  99349. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99350. <stringProp name="Argument.value">4</stringProp>
  99351. <stringProp name="Argument.metadata">=</stringProp>
  99352. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99353. <stringProp name="Argument.name">product[visibility]</stringProp>
  99354. </elementProp>
  99355. <elementProp name="product[product_has_weight]" elementType="HTTPArgument">
  99356. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99357. <stringProp name="Argument.value">1</stringProp>
  99358. <stringProp name="Argument.metadata">=</stringProp>
  99359. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99360. <stringProp name="Argument.name">product[product_has_weight]</stringProp>
  99361. <stringProp name="Argument.desc">true</stringProp>
  99362. </elementProp>
  99363. <elementProp name="product[stock_data][qty]" elementType="HTTPArgument">
  99364. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99365. <stringProp name="Argument.value">50</stringProp>
  99366. <stringProp name="Argument.metadata">=</stringProp>
  99367. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99368. <stringProp name="Argument.name">product[stock_data][qty]</stringProp>
  99369. <stringProp name="Argument.desc">false</stringProp>
  99370. </elementProp>
  99371. <elementProp name="product[stock_data][type_id]" elementType="HTTPArgument">
  99372. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99373. <stringProp name="Argument.value">configurable</stringProp>
  99374. <stringProp name="Argument.metadata">=</stringProp>
  99375. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99376. <stringProp name="Argument.name">product[stock_data][type_id]</stringProp>
  99377. <stringProp name="Argument.desc">false</stringProp>
  99378. </elementProp>
  99379. </collectionProp>
  99380. </elementProp>
  99381. <stringProp name="HTTPSampler.domain"/>
  99382. <stringProp name="HTTPSampler.port"/>
  99383. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  99384. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  99385. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  99386. <stringProp name="HTTPSampler.contentEncoding"/>
  99387. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/product/save/id/${configurable_product_id}/back/edit/active_tab/product-details/</stringProp>
  99388. <stringProp name="HTTPSampler.method">POST</stringProp>
  99389. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  99390. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  99391. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  99392. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  99393. <boolProp name="HTTPSampler.monitor">false</boolProp>
  99394. <stringProp name="HTTPSampler.embedded_url_re"/>
  99395. </HTTPSamplerProxy>
  99396. <hashTree>
  99397. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  99398. <boolProp name="resetInterpreter">false</boolProp>
  99399. <stringProp name="parameters"/>
  99400. <stringProp name="filename"/>
  99401. <stringProp name="script">try {
  99402. int attributesCount = Integer.parseInt(vars.get("configurable_attribute_ids_matchNr"));
  99403. for (int i = 1; i &lt;= attributesCount; i++) {
  99404. attributeId = vars.get("configurable_attribute_ids_" + i.toString());
  99405. attributeCode = vars.get("configurable_attribute_codes_" + i.toString());
  99406. attributeLabel = vars.get("configurable_attribute_labels_" + i.toString());
  99407. ctx.getCurrentSampler().addArgument("attributes[" + (i - 1).toString() + "]", attributeId);
  99408. ctx.getCurrentSampler().addArgument("attribute_codes[" + (i - 1).toString() + "]", attributeCode);
  99409. ctx.getCurrentSampler().addArgument("product[" + attributeCode + "]", attributeId);
  99410. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][attribute_id]", attributeId);
  99411. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][position]", (i - 1).toString());
  99412. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][code]", attributeCode);
  99413. ctx.getCurrentSampler().addArgument("product[configurable_attributes_data][" + attributeId + "][label]", attributeLabel);
  99414. int valuesCount = Integer.parseInt(vars.get("attribute_" + attributeId + "_values_matchNr"));
  99415. for (int j = 1; j &lt;= valuesCount; j++) {
  99416. attributeValue = vars.get("attribute_" + attributeId + "_values_" + j.toString());
  99417. ctx.getCurrentSampler().addArgument(
  99418. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][include]",
  99419. "1"
  99420. );
  99421. ctx.getCurrentSampler().addArgument(
  99422. "product[configurable_attributes_data][" + attributeId + "][values][" + attributeValue + "][value_index]",
  99423. attributeValue
  99424. );
  99425. }
  99426. }
  99427. ctx.getCurrentSampler().addArgument("associated_product_ids_serialized", vars.get("associated_products_ids").toString());
  99428. } catch (Exception e) {
  99429. log.error("error???", e);
  99430. }</stringProp>
  99431. </BeanShellPreProcessor>
  99432. <hashTree/>
  99433. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  99434. <collectionProp name="Asserion.test_strings">
  99435. <stringProp name="-583471546">You saved the product</stringProp>
  99436. </collectionProp>
  99437. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  99438. <boolProp name="Assertion.assume_success">false</boolProp>
  99439. <intProp name="Assertion.test_type">2</intProp>
  99440. <stringProp name="TestPlan.comments"> if have trouble see messages-message-error </stringProp>
  99441. </ResponseAssertion>
  99442. <hashTree/>
  99443. </hashTree>
  99444. </hashTree>
  99445. </hashTree>
  99446. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  99447. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  99448. <collectionProp name="Arguments.arguments"/>
  99449. </elementProp>
  99450. <stringProp name="HTTPSampler.domain"/>
  99451. <stringProp name="HTTPSampler.port"/>
  99452. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  99453. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  99454. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  99455. <stringProp name="HTTPSampler.contentEncoding"/>
  99456. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  99457. <stringProp name="HTTPSampler.method">GET</stringProp>
  99458. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  99459. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  99460. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  99461. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  99462. <boolProp name="HTTPSampler.monitor">false</boolProp>
  99463. <stringProp name="HTTPSampler.embedded_url_re"/>
  99464. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  99465. <hashTree>
  99466. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  99467. <boolProp name="resetInterpreter">false</boolProp>
  99468. <stringProp name="parameters"/>
  99469. <stringProp name="filename"/>
  99470. <stringProp name="script">
  99471. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  99472. if (adminUsersDistribution == 1) {
  99473. adminUserList = props.get("adminUserList");
  99474. adminUserList.add(vars.get("admin_user"));
  99475. }
  99476. </stringProp>
  99477. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  99478. <hashTree/>
  99479. </hashTree>
  99480. </hashTree>
  99481. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Returns Management" enabled="true">
  99482. <intProp name="ThroughputController.style">1</intProp>
  99483. <boolProp name="ThroughputController.perThread">false</boolProp>
  99484. <intProp name="ThroughputController.maxThroughput">1</intProp>
  99485. <stringProp name="ThroughputController.percentThroughput">${cAdminReturnsManagementPercentage}</stringProp>
  99486. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  99487. <hashTree>
  99488. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  99489. <stringProp name="script">
  99490. var tmpLabel = vars.get("testLabel")
  99491. if (tmpLabel) {
  99492. var testLabel = " (" + tmpLabel + ")"
  99493. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  99494. if (sampler.getName().indexOf(testLabel) == -1) {
  99495. sampler.setName(sampler.getName() + testLabel);
  99496. }
  99497. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  99498. sampler.setName("SetUp - " + sampler.getName());
  99499. }
  99500. } else {
  99501. testLabel = ""
  99502. }
  99503. </stringProp>
  99504. <stringProp name="scriptLanguage">javascript</stringProp>
  99505. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  99506. <hashTree/>
  99507. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  99508. <stringProp name="BeanShellSampler.query">
  99509. vars.put("testLabel", "[REST API C] Admin Returns Management");
  99510. </stringProp>
  99511. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  99512. </BeanShellSampler>
  99513. <hashTree/>
  99514. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  99515. <stringProp name="script">
  99516. function getFormKeyFromResponse()
  99517. {
  99518. var url = prev.getUrlAsString(),
  99519. responseCode = prev.getResponseCode(),
  99520. formKey = null;
  99521. searchPattern = /var FORM_KEY = '(.+)'/;
  99522. if (responseCode == "200" &amp;&amp; url) {
  99523. response = prev.getResponseDataAsString();
  99524. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  99525. }
  99526. return formKey;
  99527. }
  99528. formKey = vars.get("form_key_storage");
  99529. currentFormKey = getFormKeyFromResponse();
  99530. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  99531. vars.put("form_key_storage", currentFormKey);
  99532. }
  99533. </stringProp>
  99534. <stringProp name="scriptLanguage">javascript</stringProp>
  99535. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  99536. <hashTree/>
  99537. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  99538. <stringProp name="script">
  99539. formKey = vars.get("form_key_storage");
  99540. if (formKey
  99541. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  99542. &amp;&amp; sampler.getMethod() == "POST")
  99543. {
  99544. arguments = sampler.getArguments();
  99545. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  99546. {
  99547. argument = arguments.getArgument(i);
  99548. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  99549. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  99550. argument.setValue(formKey);
  99551. }
  99552. }
  99553. }
  99554. </stringProp>
  99555. <stringProp name="scriptLanguage">javascript</stringProp>
  99556. </JSR223PreProcessor>
  99557. <hashTree/>
  99558. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  99559. <collectionProp name="CookieManager.cookies"/>
  99560. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  99561. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  99562. <hashTree/>
  99563. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  99564. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  99565. </GenericController>
  99566. <hashTree>
  99567. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  99568. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  99569. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  99570. <hashTree>
  99571. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  99572. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  99573. <stringProp name="BeanShellSampler.query">
  99574. adminUser = "none";
  99575. adminUserList = props.get("adminUserList");
  99576. adminUserListIterator = props.get("adminUserListIterator");
  99577. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  99578. if (adminUsersDistribution == 1) {
  99579. adminUser = adminUserList.poll();
  99580. } else {
  99581. if (!adminUserListIterator.hasNext()) {
  99582. adminUserListIterator = adminUserList.descendingIterator();
  99583. }
  99584. adminUser = adminUserListIterator.next();
  99585. }
  99586. if (adminUser == "none") {
  99587. SampleResult.setResponseMessage("adminUser list is empty");
  99588. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  99589. IsSuccess=false;
  99590. SampleResult.setSuccessful(false);
  99591. SampleResult.setStopThread(true);
  99592. }
  99593. vars.put("admin_user", adminUser);
  99594. </stringProp>
  99595. <stringProp name="BeanShellSampler.filename"/>
  99596. <stringProp name="BeanShellSampler.parameters"/>
  99597. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  99598. </BeanShellSampler>
  99599. <hashTree/>
  99600. </hashTree>
  99601. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  99602. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  99603. <collectionProp name="Arguments.arguments"/>
  99604. </elementProp>
  99605. <stringProp name="HTTPSampler.domain"/>
  99606. <stringProp name="HTTPSampler.port"/>
  99607. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  99608. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  99609. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  99610. <stringProp name="HTTPSampler.contentEncoding"/>
  99611. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  99612. <stringProp name="HTTPSampler.method">GET</stringProp>
  99613. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  99614. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  99615. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  99616. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  99617. <boolProp name="HTTPSampler.monitor">false</boolProp>
  99618. <stringProp name="HTTPSampler.embedded_url_re"/>
  99619. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  99620. <hashTree>
  99621. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  99622. <collectionProp name="Asserion.test_strings">
  99623. <stringProp name="-1397214398">Welcome</stringProp>
  99624. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  99625. </collectionProp>
  99626. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  99627. <boolProp name="Assertion.assume_success">false</boolProp>
  99628. <intProp name="Assertion.test_type">2</intProp>
  99629. </ResponseAssertion>
  99630. <hashTree/>
  99631. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  99632. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  99633. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  99634. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  99635. <stringProp name="RegexExtractor.template">$1$</stringProp>
  99636. <stringProp name="RegexExtractor.default"/>
  99637. <stringProp name="RegexExtractor.match_number">1</stringProp>
  99638. </RegexExtractor>
  99639. <hashTree/>
  99640. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  99641. <collectionProp name="Asserion.test_strings">
  99642. <stringProp name="2845929">^.+$</stringProp>
  99643. </collectionProp>
  99644. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  99645. <boolProp name="Assertion.assume_success">false</boolProp>
  99646. <intProp name="Assertion.test_type">1</intProp>
  99647. <stringProp name="Assertion.scope">variable</stringProp>
  99648. <stringProp name="Scope.variable">admin_form_key</stringProp>
  99649. </ResponseAssertion>
  99650. <hashTree/>
  99651. </hashTree>
  99652. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  99653. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  99654. <collectionProp name="Arguments.arguments">
  99655. <elementProp name="dummy" elementType="HTTPArgument">
  99656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99657. <stringProp name="Argument.value"/>
  99658. <stringProp name="Argument.metadata">=</stringProp>
  99659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99660. <stringProp name="Argument.name">dummy</stringProp>
  99661. </elementProp>
  99662. <elementProp name="form_key" elementType="HTTPArgument">
  99663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99664. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  99665. <stringProp name="Argument.metadata">=</stringProp>
  99666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99667. <stringProp name="Argument.name">form_key</stringProp>
  99668. </elementProp>
  99669. <elementProp name="login[password]" elementType="HTTPArgument">
  99670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99671. <stringProp name="Argument.value">${admin_password}</stringProp>
  99672. <stringProp name="Argument.metadata">=</stringProp>
  99673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99674. <stringProp name="Argument.name">login[password]</stringProp>
  99675. </elementProp>
  99676. <elementProp name="login[username]" elementType="HTTPArgument">
  99677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99678. <stringProp name="Argument.value">${admin_user}</stringProp>
  99679. <stringProp name="Argument.metadata">=</stringProp>
  99680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99681. <stringProp name="Argument.name">login[username]</stringProp>
  99682. </elementProp>
  99683. </collectionProp>
  99684. </elementProp>
  99685. <stringProp name="HTTPSampler.domain"/>
  99686. <stringProp name="HTTPSampler.port"/>
  99687. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  99688. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  99689. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  99690. <stringProp name="HTTPSampler.contentEncoding"/>
  99691. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  99692. <stringProp name="HTTPSampler.method">POST</stringProp>
  99693. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  99694. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  99695. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  99696. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  99697. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  99698. <boolProp name="HTTPSampler.monitor">false</boolProp>
  99699. <stringProp name="HTTPSampler.embedded_url_re"/>
  99700. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  99701. </HTTPSamplerProxy>
  99702. <hashTree>
  99703. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  99704. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  99705. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  99706. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  99707. <stringProp name="RegexExtractor.template">$1$</stringProp>
  99708. <stringProp name="RegexExtractor.default"/>
  99709. <stringProp name="RegexExtractor.match_number">1</stringProp>
  99710. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  99711. <hashTree/>
  99712. </hashTree>
  99713. </hashTree>
  99714. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  99715. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  99716. </GenericController>
  99717. <hashTree>
  99718. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  99719. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  99720. <collectionProp name="Arguments.arguments"/>
  99721. </elementProp>
  99722. <stringProp name="HTTPSampler.domain"/>
  99723. <stringProp name="HTTPSampler.port"/>
  99724. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  99725. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  99726. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  99727. <stringProp name="HTTPSampler.contentEncoding"/>
  99728. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  99729. <stringProp name="HTTPSampler.method">GET</stringProp>
  99730. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  99731. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  99732. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  99733. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  99734. <boolProp name="HTTPSampler.monitor">false</boolProp>
  99735. <stringProp name="HTTPSampler.embedded_url_re"/>
  99736. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  99737. <hashTree>
  99738. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  99739. <collectionProp name="Asserion.test_strings">
  99740. <stringProp name="1204796042">Create New Order</stringProp>
  99741. </collectionProp>
  99742. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  99743. <boolProp name="Assertion.assume_success">false</boolProp>
  99744. <intProp name="Assertion.test_type">2</intProp>
  99745. </ResponseAssertion>
  99746. <hashTree/>
  99747. </hashTree>
  99748. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  99749. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  99750. <collectionProp name="Arguments.arguments">
  99751. <elementProp name="namespace" elementType="HTTPArgument">
  99752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99753. <stringProp name="Argument.value">sales_order_grid</stringProp>
  99754. <stringProp name="Argument.metadata">=</stringProp>
  99755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99756. <stringProp name="Argument.name">namespace</stringProp>
  99757. </elementProp>
  99758. <elementProp name="search" elementType="HTTPArgument">
  99759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99760. <stringProp name="Argument.value"/>
  99761. <stringProp name="Argument.metadata">=</stringProp>
  99762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99763. <stringProp name="Argument.name">search</stringProp>
  99764. </elementProp>
  99765. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  99766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99767. <stringProp name="Argument.value">true</stringProp>
  99768. <stringProp name="Argument.metadata">=</stringProp>
  99769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99770. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  99771. </elementProp>
  99772. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  99773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99774. <stringProp name="Argument.value">200</stringProp>
  99775. <stringProp name="Argument.metadata">=</stringProp>
  99776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99777. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  99778. </elementProp>
  99779. <elementProp name="paging[current]" elementType="HTTPArgument">
  99780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99781. <stringProp name="Argument.value">1</stringProp>
  99782. <stringProp name="Argument.metadata">=</stringProp>
  99783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99784. <stringProp name="Argument.name">paging[current]</stringProp>
  99785. </elementProp>
  99786. <elementProp name="sorting[field]" elementType="HTTPArgument">
  99787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99788. <stringProp name="Argument.value">increment_id</stringProp>
  99789. <stringProp name="Argument.metadata">=</stringProp>
  99790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99791. <stringProp name="Argument.name">sorting[field]</stringProp>
  99792. </elementProp>
  99793. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  99794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99795. <stringProp name="Argument.value">desc</stringProp>
  99796. <stringProp name="Argument.metadata">=</stringProp>
  99797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99798. <stringProp name="Argument.name">sorting[direction]</stringProp>
  99799. </elementProp>
  99800. <elementProp name="isAjax" elementType="HTTPArgument">
  99801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99802. <stringProp name="Argument.value">true</stringProp>
  99803. <stringProp name="Argument.metadata">=</stringProp>
  99804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99805. <stringProp name="Argument.name">isAjax</stringProp>
  99806. </elementProp>
  99807. <elementProp name="form_key" elementType="HTTPArgument">
  99808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99809. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  99810. <stringProp name="Argument.metadata">=</stringProp>
  99811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99812. <stringProp name="Argument.name">form_key</stringProp>
  99813. <stringProp name="Argument.desc">false</stringProp>
  99814. </elementProp>
  99815. <elementProp name="filters[status]" elementType="HTTPArgument">
  99816. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99817. <stringProp name="Argument.value">pending</stringProp>
  99818. <stringProp name="Argument.metadata">=</stringProp>
  99819. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99820. <stringProp name="Argument.name">filters[status]</stringProp>
  99821. <stringProp name="Argument.desc">true</stringProp>
  99822. </elementProp>
  99823. <elementProp name="_" elementType="HTTPArgument">
  99824. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99825. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  99826. <stringProp name="Argument.metadata">=</stringProp>
  99827. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99828. <stringProp name="Argument.name">_</stringProp>
  99829. </elementProp>
  99830. </collectionProp>
  99831. </elementProp>
  99832. <stringProp name="HTTPSampler.domain"/>
  99833. <stringProp name="HTTPSampler.port"/>
  99834. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  99835. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  99836. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  99837. <stringProp name="HTTPSampler.contentEncoding"/>
  99838. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  99839. <stringProp name="HTTPSampler.method">GET</stringProp>
  99840. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  99841. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  99842. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  99843. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  99844. <boolProp name="HTTPSampler.monitor">false</boolProp>
  99845. <stringProp name="HTTPSampler.embedded_url_re"/>
  99846. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  99847. <hashTree>
  99848. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  99849. <collectionProp name="Asserion.test_strings">
  99850. <stringProp name="1637639774">totalRecords</stringProp>
  99851. </collectionProp>
  99852. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  99853. <boolProp name="Assertion.assume_success">false</boolProp>
  99854. <intProp name="Assertion.test_type">2</intProp>
  99855. </ResponseAssertion>
  99856. <hashTree/>
  99857. </hashTree>
  99858. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  99859. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  99860. <collectionProp name="Arguments.arguments">
  99861. <elementProp name="form_key" elementType="HTTPArgument">
  99862. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99863. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  99864. <stringProp name="Argument.metadata">=</stringProp>
  99865. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99866. <stringProp name="Argument.name">form_key</stringProp>
  99867. </elementProp>
  99868. <elementProp name="namespace" elementType="HTTPArgument">
  99869. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99870. <stringProp name="Argument.value">sales_order_grid</stringProp>
  99871. <stringProp name="Argument.metadata">=</stringProp>
  99872. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99873. <stringProp name="Argument.name">namespace</stringProp>
  99874. <stringProp name="Argument.desc">true</stringProp>
  99875. </elementProp>
  99876. <elementProp name="search" elementType="HTTPArgument">
  99877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99878. <stringProp name="Argument.value"/>
  99879. <stringProp name="Argument.metadata">=</stringProp>
  99880. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99881. <stringProp name="Argument.name">search</stringProp>
  99882. <stringProp name="Argument.desc">true</stringProp>
  99883. </elementProp>
  99884. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  99885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99886. <stringProp name="Argument.value">true</stringProp>
  99887. <stringProp name="Argument.metadata">=</stringProp>
  99888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99889. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  99890. <stringProp name="Argument.desc">true</stringProp>
  99891. </elementProp>
  99892. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  99893. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99894. <stringProp name="Argument.value">200</stringProp>
  99895. <stringProp name="Argument.metadata">=</stringProp>
  99896. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99897. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  99898. <stringProp name="Argument.desc">true</stringProp>
  99899. </elementProp>
  99900. <elementProp name="paging[current]" elementType="HTTPArgument">
  99901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99902. <stringProp name="Argument.value">1</stringProp>
  99903. <stringProp name="Argument.metadata">=</stringProp>
  99904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99905. <stringProp name="Argument.name">paging[current]</stringProp>
  99906. <stringProp name="Argument.desc">true</stringProp>
  99907. </elementProp>
  99908. <elementProp name="sorting[field]" elementType="HTTPArgument">
  99909. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99910. <stringProp name="Argument.value">increment_id</stringProp>
  99911. <stringProp name="Argument.metadata">=</stringProp>
  99912. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99913. <stringProp name="Argument.name">sorting[field]</stringProp>
  99914. <stringProp name="Argument.desc">true</stringProp>
  99915. </elementProp>
  99916. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  99917. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99918. <stringProp name="Argument.value">asc</stringProp>
  99919. <stringProp name="Argument.metadata">=</stringProp>
  99920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99921. <stringProp name="Argument.name">sorting[direction]</stringProp>
  99922. <stringProp name="Argument.desc">true</stringProp>
  99923. </elementProp>
  99924. <elementProp name="isAjax" elementType="HTTPArgument">
  99925. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99926. <stringProp name="Argument.value">true</stringProp>
  99927. <stringProp name="Argument.metadata">=</stringProp>
  99928. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99929. <stringProp name="Argument.name">isAjax</stringProp>
  99930. <stringProp name="Argument.desc">true</stringProp>
  99931. </elementProp>
  99932. <elementProp name="filters[status]" elementType="HTTPArgument">
  99933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99934. <stringProp name="Argument.value">pending</stringProp>
  99935. <stringProp name="Argument.metadata">=</stringProp>
  99936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99937. <stringProp name="Argument.name">filters[status]</stringProp>
  99938. </elementProp>
  99939. <elementProp name="_" elementType="HTTPArgument">
  99940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  99941. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  99942. <stringProp name="Argument.metadata">=</stringProp>
  99943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  99944. <stringProp name="Argument.name">_</stringProp>
  99945. </elementProp>
  99946. </collectionProp>
  99947. </elementProp>
  99948. <stringProp name="HTTPSampler.domain"/>
  99949. <stringProp name="HTTPSampler.port"/>
  99950. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  99951. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  99952. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  99953. <stringProp name="HTTPSampler.contentEncoding"/>
  99954. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  99955. <stringProp name="HTTPSampler.method">GET</stringProp>
  99956. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  99957. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  99958. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  99959. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  99960. <boolProp name="HTTPSampler.monitor">false</boolProp>
  99961. <stringProp name="HTTPSampler.embedded_url_re"/>
  99962. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  99963. <hashTree>
  99964. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  99965. <collectionProp name="Asserion.test_strings">
  99966. <stringProp name="1637639774">totalRecords</stringProp>
  99967. </collectionProp>
  99968. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  99969. <boolProp name="Assertion.assume_success">false</boolProp>
  99970. <intProp name="Assertion.test_type">2</intProp>
  99971. </ResponseAssertion>
  99972. <hashTree/>
  99973. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  99974. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  99975. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  99976. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  99977. <stringProp name="RegexExtractor.template">$1$</stringProp>
  99978. <stringProp name="RegexExtractor.default"/>
  99979. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  99980. <stringProp name="Scope.variable">simple_products</stringProp>
  99981. </RegexExtractor>
  99982. <hashTree/>
  99983. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  99984. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  99985. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  99986. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  99987. <stringProp name="RegexExtractor.template">$1$</stringProp>
  99988. <stringProp name="RegexExtractor.default"/>
  99989. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  99990. <stringProp name="Scope.variable">simple_products</stringProp>
  99991. </RegexExtractor>
  99992. <hashTree/>
  99993. </hashTree>
  99994. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  99995. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  99996. <stringProp name="BeanShellSampler.query">
  99997. import java.util.ArrayList;
  99998. import java.util.HashMap;
  99999. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  100000. import java.util.Random;
  100001. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  100002. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  100003. int clusterLength;
  100004. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  100005. if (threadsNumber == 0) {
  100006. //Number of orders for one thread
  100007. clusterLength = ordersCount;
  100008. } else {
  100009. clusterLength = Math.round(ordersCount / threadsNumber);
  100010. if (clusterLength == 0) {
  100011. clusterLength = 1;
  100012. }
  100013. }
  100014. //Current thread number starts from 0
  100015. int currentThreadNum = ctx.getThreadNum();
  100016. //Index of the current product from the cluster
  100017. Random random = new Random();
  100018. if (${seedForRandom} &gt; 0) {
  100019. random.setSeed(${seedForRandom} + ${__threadNum});
  100020. }
  100021. int iterator = random.nextInt(clusterLength);
  100022. if (iterator == 0) {
  100023. iterator = 1;
  100024. }
  100025. int i = clusterLength * currentThreadNum + iterator;
  100026. orderNumber = vars.get("order_numbers_" + i.toString());
  100027. orderId = vars.get("order_ids_" + i.toString());
  100028. vars.put("order_number", orderNumber);
  100029. vars.put("order_id", orderId);
  100030. </stringProp>
  100031. <stringProp name="BeanShellSampler.filename"/>
  100032. <stringProp name="BeanShellSampler.parameters"/>
  100033. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  100034. </BeanShellSampler>
  100035. <hashTree/>
  100036. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  100037. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100038. <collectionProp name="Arguments.arguments"/>
  100039. </elementProp>
  100040. <stringProp name="HTTPSampler.domain"/>
  100041. <stringProp name="HTTPSampler.port"/>
  100042. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100043. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100044. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100045. <stringProp name="HTTPSampler.contentEncoding"/>
  100046. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  100047. <stringProp name="HTTPSampler.method">GET</stringProp>
  100048. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100049. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100050. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100051. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100052. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100053. <stringProp name="HTTPSampler.embedded_url_re"/>
  100054. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  100055. <hashTree>
  100056. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  100057. <collectionProp name="Asserion.test_strings">
  100058. <stringProp name="2103620713">#${order_number}</stringProp>
  100059. </collectionProp>
  100060. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100061. <boolProp name="Assertion.assume_success">false</boolProp>
  100062. <intProp name="Assertion.test_type">2</intProp>
  100063. </ResponseAssertion>
  100064. <hashTree/>
  100065. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  100066. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  100067. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  100068. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  100069. <stringProp name="RegexExtractor.template">$1$</stringProp>
  100070. <stringProp name="RegexExtractor.default"/>
  100071. <stringProp name="RegexExtractor.match_number">1</stringProp>
  100072. <stringProp name="Scope.variable">simple_products</stringProp>
  100073. </RegexExtractor>
  100074. <hashTree/>
  100075. </hashTree>
  100076. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  100077. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  100078. <boolProp name="IfController.evaluateAll">false</boolProp>
  100079. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  100080. <hashTree>
  100081. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  100082. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100083. <collectionProp name="Arguments.arguments"/>
  100084. </elementProp>
  100085. <stringProp name="HTTPSampler.domain"/>
  100086. <stringProp name="HTTPSampler.port"/>
  100087. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100088. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100089. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100090. <stringProp name="HTTPSampler.contentEncoding"/>
  100091. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  100092. <stringProp name="HTTPSampler.method">GET</stringProp>
  100093. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100094. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100095. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100096. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100097. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100098. <stringProp name="HTTPSampler.embedded_url_re"/>
  100099. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  100100. <hashTree>
  100101. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  100102. <collectionProp name="Asserion.test_strings">
  100103. <stringProp name="-1233850814">Invoice Totals</stringProp>
  100104. </collectionProp>
  100105. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100106. <boolProp name="Assertion.assume_success">false</boolProp>
  100107. <intProp name="Assertion.test_type">2</intProp>
  100108. </ResponseAssertion>
  100109. <hashTree/>
  100110. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  100111. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  100112. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  100113. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  100114. <stringProp name="RegexExtractor.template">$1$</stringProp>
  100115. <stringProp name="RegexExtractor.default"/>
  100116. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  100117. <stringProp name="Scope.variable">simple_products</stringProp>
  100118. </RegexExtractor>
  100119. <hashTree/>
  100120. </hashTree>
  100121. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  100122. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100123. <collectionProp name="Arguments.arguments">
  100124. <elementProp name="form_key" elementType="HTTPArgument">
  100125. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100126. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  100127. <stringProp name="Argument.metadata">=</stringProp>
  100128. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100129. <stringProp name="Argument.name">form_key</stringProp>
  100130. <stringProp name="Argument.desc">false</stringProp>
  100131. </elementProp>
  100132. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  100133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100134. <stringProp name="Argument.value">1</stringProp>
  100135. <stringProp name="Argument.metadata">=</stringProp>
  100136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100137. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  100138. </elementProp>
  100139. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  100140. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100141. <stringProp name="Argument.value">1</stringProp>
  100142. <stringProp name="Argument.metadata">=</stringProp>
  100143. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100144. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  100145. </elementProp>
  100146. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  100147. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100148. <stringProp name="Argument.value">Invoiced</stringProp>
  100149. <stringProp name="Argument.metadata">=</stringProp>
  100150. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100151. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  100152. </elementProp>
  100153. </collectionProp>
  100154. </elementProp>
  100155. <stringProp name="HTTPSampler.domain"/>
  100156. <stringProp name="HTTPSampler.port"/>
  100157. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100158. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100159. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100160. <stringProp name="HTTPSampler.contentEncoding"/>
  100161. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  100162. <stringProp name="HTTPSampler.method">POST</stringProp>
  100163. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100164. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100165. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100166. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100167. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100168. <stringProp name="HTTPSampler.embedded_url_re"/>
  100169. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  100170. <hashTree>
  100171. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  100172. <collectionProp name="Asserion.test_strings">
  100173. <stringProp name="1740524604">The invoice has been created</stringProp>
  100174. </collectionProp>
  100175. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100176. <boolProp name="Assertion.assume_success">false</boolProp>
  100177. <intProp name="Assertion.test_type">2</intProp>
  100178. </ResponseAssertion>
  100179. <hashTree/>
  100180. </hashTree>
  100181. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Start" enabled="true">
  100182. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100183. <collectionProp name="Arguments.arguments"/>
  100184. </elementProp>
  100185. <stringProp name="HTTPSampler.domain"/>
  100186. <stringProp name="HTTPSampler.port"/>
  100187. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100188. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100189. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100190. <stringProp name="HTTPSampler.contentEncoding"/>
  100191. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/start/order_id/${order_id}/</stringProp>
  100192. <stringProp name="HTTPSampler.method">GET</stringProp>
  100193. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100194. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100195. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100196. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100197. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100198. <stringProp name="HTTPSampler.embedded_url_re"/>
  100199. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_start.jmx</stringProp></HTTPSamplerProxy>
  100200. <hashTree>
  100201. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  100202. <collectionProp name="Asserion.test_strings">
  100203. <stringProp name="1382627322">New Memo</stringProp>
  100204. </collectionProp>
  100205. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100206. <boolProp name="Assertion.assume_success">false</boolProp>
  100207. <intProp name="Assertion.test_type">2</intProp>
  100208. </ResponseAssertion>
  100209. <hashTree/>
  100210. </hashTree>
  100211. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Credit Memo Submit - Full Refund" enabled="true">
  100212. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100213. <collectionProp name="Arguments.arguments">
  100214. <elementProp name="form_key" elementType="HTTPArgument">
  100215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100216. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  100217. <stringProp name="Argument.metadata">=</stringProp>
  100218. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100219. <stringProp name="Argument.name">form_key</stringProp>
  100220. <stringProp name="Argument.desc">false</stringProp>
  100221. </elementProp>
  100222. <elementProp name="creditmemo[items][${item_ids_1}][qty]" elementType="HTTPArgument">
  100223. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100224. <stringProp name="Argument.value">1</stringProp>
  100225. <stringProp name="Argument.metadata">=</stringProp>
  100226. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100227. <stringProp name="Argument.name">creditmemo[items][${item_ids_1}][qty]</stringProp>
  100228. </elementProp>
  100229. <elementProp name="creditmemo[items][${item_ids_2}][qty]" elementType="HTTPArgument">
  100230. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100231. <stringProp name="Argument.value">1</stringProp>
  100232. <stringProp name="Argument.metadata">=</stringProp>
  100233. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100234. <stringProp name="Argument.name">creditmemo[items][${item_ids_2}][qty]</stringProp>
  100235. </elementProp>
  100236. <elementProp name="creditmemo[do_offline]" elementType="HTTPArgument">
  100237. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100238. <stringProp name="Argument.value">1</stringProp>
  100239. <stringProp name="Argument.metadata">=</stringProp>
  100240. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100241. <stringProp name="Argument.name">creditmemo[do_offline]</stringProp>
  100242. </elementProp>
  100243. <elementProp name="creditmemo[comment_text]" elementType="HTTPArgument">
  100244. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100245. <stringProp name="Argument.value">Credit Memo added</stringProp>
  100246. <stringProp name="Argument.metadata">=</stringProp>
  100247. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100248. <stringProp name="Argument.name">creditmemo[comment_text]</stringProp>
  100249. </elementProp>
  100250. <elementProp name="creditmemo[shipping_amount]" elementType="HTTPArgument">
  100251. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100252. <stringProp name="Argument.value">10</stringProp>
  100253. <stringProp name="Argument.metadata">=</stringProp>
  100254. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100255. <stringProp name="Argument.name">creditmemo[shipping_amount]</stringProp>
  100256. </elementProp>
  100257. <elementProp name="creditmemo[adjustment_positive]" elementType="HTTPArgument">
  100258. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100259. <stringProp name="Argument.value">0</stringProp>
  100260. <stringProp name="Argument.metadata">=</stringProp>
  100261. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100262. <stringProp name="Argument.name">creditmemo[adjustment_positive]</stringProp>
  100263. </elementProp>
  100264. <elementProp name="creditmemo[adjustment_negative]" elementType="HTTPArgument">
  100265. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100266. <stringProp name="Argument.value">0</stringProp>
  100267. <stringProp name="Argument.metadata">=</stringProp>
  100268. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100269. <stringProp name="Argument.name">creditmemo[adjustment_negative]</stringProp>
  100270. </elementProp>
  100271. </collectionProp>
  100272. </elementProp>
  100273. <stringProp name="HTTPSampler.domain"/>
  100274. <stringProp name="HTTPSampler.port"/>
  100275. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100276. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100277. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100278. <stringProp name="HTTPSampler.contentEncoding"/>
  100279. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_creditmemo/save/order_id/${order_id}/</stringProp>
  100280. <stringProp name="HTTPSampler.method">POST</stringProp>
  100281. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100282. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100283. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100284. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100285. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100286. <stringProp name="HTTPSampler.embedded_url_re"/>
  100287. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/credit_memo_full_refund.jmx</stringProp></HTTPSamplerProxy>
  100288. <hashTree>
  100289. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  100290. <collectionProp name="Asserion.test_strings">
  100291. <stringProp name="-515117447">You created the credit memo</stringProp>
  100292. </collectionProp>
  100293. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100294. <boolProp name="Assertion.assume_success">false</boolProp>
  100295. <intProp name="Assertion.test_type">2</intProp>
  100296. </ResponseAssertion>
  100297. <hashTree/>
  100298. </hashTree>
  100299. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Create/Process Returns - Pause" enabled="true">
  100300. <intProp name="ActionProcessor.action">1</intProp>
  100301. <intProp name="ActionProcessor.target">0</intProp>
  100302. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCreateProcessReturnsDelay}*1000))}</stringProp>
  100303. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/pause.jmx</stringProp></TestAction>
  100304. <hashTree/>
  100305. </hashTree>
  100306. </hashTree>
  100307. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  100308. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100309. <collectionProp name="Arguments.arguments"/>
  100310. </elementProp>
  100311. <stringProp name="HTTPSampler.domain"/>
  100312. <stringProp name="HTTPSampler.port"/>
  100313. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100314. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100315. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100316. <stringProp name="HTTPSampler.contentEncoding"/>
  100317. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  100318. <stringProp name="HTTPSampler.method">GET</stringProp>
  100319. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100320. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100321. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100322. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100323. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100324. <stringProp name="HTTPSampler.embedded_url_re"/>
  100325. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  100326. <hashTree>
  100327. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  100328. <boolProp name="resetInterpreter">false</boolProp>
  100329. <stringProp name="parameters"/>
  100330. <stringProp name="filename"/>
  100331. <stringProp name="script">
  100332. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  100333. if (adminUsersDistribution == 1) {
  100334. adminUserList = props.get("adminUserList");
  100335. adminUserList.add(vars.get("admin_user"));
  100336. }
  100337. </stringProp>
  100338. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  100339. <hashTree/>
  100340. </hashTree>
  100341. </hashTree>
  100342. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Browse Customer Grid" enabled="true">
  100343. <intProp name="ThroughputController.style">1</intProp>
  100344. <boolProp name="ThroughputController.perThread">false</boolProp>
  100345. <intProp name="ThroughputController.maxThroughput">1</intProp>
  100346. <stringProp name="ThroughputController.percentThroughput">${cAdminBrowseCustomerGridPercentage}</stringProp>
  100347. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  100348. <hashTree>
  100349. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  100350. <stringProp name="script">
  100351. var tmpLabel = vars.get("testLabel")
  100352. if (tmpLabel) {
  100353. var testLabel = " (" + tmpLabel + ")"
  100354. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  100355. if (sampler.getName().indexOf(testLabel) == -1) {
  100356. sampler.setName(sampler.getName() + testLabel);
  100357. }
  100358. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  100359. sampler.setName("SetUp - " + sampler.getName());
  100360. }
  100361. } else {
  100362. testLabel = ""
  100363. }
  100364. </stringProp>
  100365. <stringProp name="scriptLanguage">javascript</stringProp>
  100366. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  100367. <hashTree/>
  100368. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  100369. <stringProp name="BeanShellSampler.query">
  100370. vars.put("testLabel", "[REST API C] Admin Browse Customer Grid");
  100371. </stringProp>
  100372. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  100373. </BeanShellSampler>
  100374. <hashTree/>
  100375. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  100376. <stringProp name="script">
  100377. function getFormKeyFromResponse()
  100378. {
  100379. var url = prev.getUrlAsString(),
  100380. responseCode = prev.getResponseCode(),
  100381. formKey = null;
  100382. searchPattern = /var FORM_KEY = '(.+)'/;
  100383. if (responseCode == "200" &amp;&amp; url) {
  100384. response = prev.getResponseDataAsString();
  100385. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  100386. }
  100387. return formKey;
  100388. }
  100389. formKey = vars.get("form_key_storage");
  100390. currentFormKey = getFormKeyFromResponse();
  100391. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  100392. vars.put("form_key_storage", currentFormKey);
  100393. }
  100394. </stringProp>
  100395. <stringProp name="scriptLanguage">javascript</stringProp>
  100396. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  100397. <hashTree/>
  100398. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  100399. <stringProp name="script">
  100400. formKey = vars.get("form_key_storage");
  100401. if (formKey
  100402. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  100403. &amp;&amp; sampler.getMethod() == "POST")
  100404. {
  100405. arguments = sampler.getArguments();
  100406. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  100407. {
  100408. argument = arguments.getArgument(i);
  100409. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  100410. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  100411. argument.setValue(formKey);
  100412. }
  100413. }
  100414. }
  100415. </stringProp>
  100416. <stringProp name="scriptLanguage">javascript</stringProp>
  100417. </JSR223PreProcessor>
  100418. <hashTree/>
  100419. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  100420. <collectionProp name="CookieManager.cookies"/>
  100421. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  100422. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  100423. <hashTree/>
  100424. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  100425. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  100426. </GenericController>
  100427. <hashTree>
  100428. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  100429. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  100430. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  100431. <hashTree>
  100432. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  100433. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  100434. <stringProp name="BeanShellSampler.query">
  100435. adminUser = "none";
  100436. adminUserList = props.get("adminUserList");
  100437. adminUserListIterator = props.get("adminUserListIterator");
  100438. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  100439. if (adminUsersDistribution == 1) {
  100440. adminUser = adminUserList.poll();
  100441. } else {
  100442. if (!adminUserListIterator.hasNext()) {
  100443. adminUserListIterator = adminUserList.descendingIterator();
  100444. }
  100445. adminUser = adminUserListIterator.next();
  100446. }
  100447. if (adminUser == "none") {
  100448. SampleResult.setResponseMessage("adminUser list is empty");
  100449. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  100450. IsSuccess=false;
  100451. SampleResult.setSuccessful(false);
  100452. SampleResult.setStopThread(true);
  100453. }
  100454. vars.put("admin_user", adminUser);
  100455. </stringProp>
  100456. <stringProp name="BeanShellSampler.filename"/>
  100457. <stringProp name="BeanShellSampler.parameters"/>
  100458. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  100459. </BeanShellSampler>
  100460. <hashTree/>
  100461. </hashTree>
  100462. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  100463. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100464. <collectionProp name="Arguments.arguments"/>
  100465. </elementProp>
  100466. <stringProp name="HTTPSampler.domain"/>
  100467. <stringProp name="HTTPSampler.port"/>
  100468. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100469. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100470. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100471. <stringProp name="HTTPSampler.contentEncoding"/>
  100472. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  100473. <stringProp name="HTTPSampler.method">GET</stringProp>
  100474. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100475. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100476. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100477. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100478. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100479. <stringProp name="HTTPSampler.embedded_url_re"/>
  100480. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  100481. <hashTree>
  100482. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  100483. <collectionProp name="Asserion.test_strings">
  100484. <stringProp name="-1397214398">Welcome</stringProp>
  100485. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  100486. </collectionProp>
  100487. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100488. <boolProp name="Assertion.assume_success">false</boolProp>
  100489. <intProp name="Assertion.test_type">2</intProp>
  100490. </ResponseAssertion>
  100491. <hashTree/>
  100492. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  100493. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  100494. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  100495. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  100496. <stringProp name="RegexExtractor.template">$1$</stringProp>
  100497. <stringProp name="RegexExtractor.default"/>
  100498. <stringProp name="RegexExtractor.match_number">1</stringProp>
  100499. </RegexExtractor>
  100500. <hashTree/>
  100501. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  100502. <collectionProp name="Asserion.test_strings">
  100503. <stringProp name="2845929">^.+$</stringProp>
  100504. </collectionProp>
  100505. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100506. <boolProp name="Assertion.assume_success">false</boolProp>
  100507. <intProp name="Assertion.test_type">1</intProp>
  100508. <stringProp name="Assertion.scope">variable</stringProp>
  100509. <stringProp name="Scope.variable">admin_form_key</stringProp>
  100510. </ResponseAssertion>
  100511. <hashTree/>
  100512. </hashTree>
  100513. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  100514. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100515. <collectionProp name="Arguments.arguments">
  100516. <elementProp name="dummy" elementType="HTTPArgument">
  100517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100518. <stringProp name="Argument.value"/>
  100519. <stringProp name="Argument.metadata">=</stringProp>
  100520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100521. <stringProp name="Argument.name">dummy</stringProp>
  100522. </elementProp>
  100523. <elementProp name="form_key" elementType="HTTPArgument">
  100524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100525. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  100526. <stringProp name="Argument.metadata">=</stringProp>
  100527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100528. <stringProp name="Argument.name">form_key</stringProp>
  100529. </elementProp>
  100530. <elementProp name="login[password]" elementType="HTTPArgument">
  100531. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100532. <stringProp name="Argument.value">${admin_password}</stringProp>
  100533. <stringProp name="Argument.metadata">=</stringProp>
  100534. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100535. <stringProp name="Argument.name">login[password]</stringProp>
  100536. </elementProp>
  100537. <elementProp name="login[username]" elementType="HTTPArgument">
  100538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100539. <stringProp name="Argument.value">${admin_user}</stringProp>
  100540. <stringProp name="Argument.metadata">=</stringProp>
  100541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100542. <stringProp name="Argument.name">login[username]</stringProp>
  100543. </elementProp>
  100544. </collectionProp>
  100545. </elementProp>
  100546. <stringProp name="HTTPSampler.domain"/>
  100547. <stringProp name="HTTPSampler.port"/>
  100548. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100549. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100550. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100551. <stringProp name="HTTPSampler.contentEncoding"/>
  100552. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  100553. <stringProp name="HTTPSampler.method">POST</stringProp>
  100554. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100555. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100556. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100557. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100558. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  100559. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100560. <stringProp name="HTTPSampler.embedded_url_re"/>
  100561. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  100562. </HTTPSamplerProxy>
  100563. <hashTree>
  100564. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  100565. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  100566. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  100567. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  100568. <stringProp name="RegexExtractor.template">$1$</stringProp>
  100569. <stringProp name="RegexExtractor.default"/>
  100570. <stringProp name="RegexExtractor.match_number">1</stringProp>
  100571. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  100572. <hashTree/>
  100573. </hashTree>
  100574. </hashTree>
  100575. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Set Arguments" enabled="true">
  100576. <stringProp name="script">
  100577. vars.put("gridEntityType" , "Customer");
  100578. pagesCount = parseInt(vars.get("customers_page_size")) || 20;
  100579. vars.put("grid_entity_page_size" , pagesCount);
  100580. vars.put("grid_namespace" , "customer_listing");
  100581. vars.put("grid_admin_browse_filter_text" , vars.get("admin_browse_customer_filter_text"));
  100582. vars.put("grid_filter_field", "name");
  100583. // set sort fields and sort directions
  100584. vars.put("grid_sort_field_1", "name");
  100585. vars.put("grid_sort_field_2", "group_id");
  100586. vars.put("grid_sort_field_3", "billing_country_id");
  100587. vars.put("grid_sort_order_1", "asc");
  100588. vars.put("grid_sort_order_2", "desc");
  100589. </stringProp>
  100590. <stringProp name="scriptLanguage">javascript</stringProp>
  100591. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_browse_customers_grid/setup.jmx</stringProp></JSR223PostProcessor>
  100592. <hashTree/>
  100593. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  100594. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  100595. </GenericController>
  100596. <hashTree>
  100597. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Pages Count" enabled="true">
  100598. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100599. <collectionProp name="Arguments.arguments">
  100600. <elementProp name="namespace" elementType="HTTPArgument">
  100601. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100602. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  100603. <stringProp name="Argument.metadata">=</stringProp>
  100604. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100605. <stringProp name="Argument.name">namespace</stringProp>
  100606. <stringProp name="Argument.desc">true</stringProp>
  100607. </elementProp>
  100608. <elementProp name="search" elementType="HTTPArgument">
  100609. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100610. <stringProp name="Argument.value"/>
  100611. <stringProp name="Argument.metadata">=</stringProp>
  100612. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100613. <stringProp name="Argument.name">search</stringProp>
  100614. <stringProp name="Argument.desc">true</stringProp>
  100615. </elementProp>
  100616. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  100617. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100618. <stringProp name="Argument.value">true</stringProp>
  100619. <stringProp name="Argument.metadata">=</stringProp>
  100620. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100621. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  100622. <stringProp name="Argument.desc">true</stringProp>
  100623. </elementProp>
  100624. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  100625. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100626. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  100627. <stringProp name="Argument.metadata">=</stringProp>
  100628. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100629. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  100630. <stringProp name="Argument.desc">true</stringProp>
  100631. </elementProp>
  100632. <elementProp name="paging[current]" elementType="HTTPArgument">
  100633. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100634. <stringProp name="Argument.value">1</stringProp>
  100635. <stringProp name="Argument.metadata">=</stringProp>
  100636. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100637. <stringProp name="Argument.name">paging[current]</stringProp>
  100638. <stringProp name="Argument.desc">true</stringProp>
  100639. </elementProp>
  100640. <elementProp name="sorting[field]" elementType="HTTPArgument">
  100641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100642. <stringProp name="Argument.value">entity_id</stringProp>
  100643. <stringProp name="Argument.metadata">=</stringProp>
  100644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100645. <stringProp name="Argument.name">sorting[field]</stringProp>
  100646. <stringProp name="Argument.desc">true</stringProp>
  100647. </elementProp>
  100648. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  100649. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100650. <stringProp name="Argument.value">asc</stringProp>
  100651. <stringProp name="Argument.metadata">=</stringProp>
  100652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100653. <stringProp name="Argument.name">sorting[direction]</stringProp>
  100654. <stringProp name="Argument.desc">true</stringProp>
  100655. </elementProp>
  100656. <elementProp name="isAjax" elementType="HTTPArgument">
  100657. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100658. <stringProp name="Argument.value">true</stringProp>
  100659. <stringProp name="Argument.metadata">=</stringProp>
  100660. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100661. <stringProp name="Argument.name">isAjax</stringProp>
  100662. <stringProp name="Argument.desc">true</stringProp>
  100663. </elementProp>
  100664. </collectionProp>
  100665. </elementProp>
  100666. <stringProp name="HTTPSampler.domain"/>
  100667. <stringProp name="HTTPSampler.port"/>
  100668. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100669. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100670. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100671. <stringProp name="HTTPSampler.contentEncoding"/>
  100672. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  100673. <stringProp name="HTTPSampler.method">GET</stringProp>
  100674. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100675. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100676. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100677. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100678. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100679. <stringProp name="HTTPSampler.embedded_url_re"/>
  100680. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_pages_count.jmx</stringProp></HTTPSamplerProxy>
  100681. <hashTree>
  100682. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  100683. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  100684. <stringProp name="EXPECTED_VALUE">0</stringProp>
  100685. <boolProp name="JSONVALIDATION">true</boolProp>
  100686. <boolProp name="EXPECT_NULL">false</boolProp>
  100687. <boolProp name="INVERT">true</boolProp>
  100688. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  100689. <hashTree/>
  100690. <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 total records" enabled="true">
  100691. <stringProp name="VAR">entity_total_records</stringProp>
  100692. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  100693. <stringProp name="DEFAULT"/>
  100694. <stringProp name="VARIABLE"/>
  100695. <stringProp name="SUBJECT">BODY</stringProp>
  100696. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  100697. <hashTree/>
  100698. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} pages count" enabled="true">
  100699. <stringProp name="cacheKey"/>
  100700. <stringProp name="filename"/>
  100701. <stringProp name="parameters"/>
  100702. <stringProp name="script">
  100703. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  100704. var totalsRecord = parseInt(vars.get("entity_total_records"));
  100705. var pageCount = Math.round(totalsRecord/pageSize);
  100706. vars.put("grid_pages_count", pageCount);
  100707. </stringProp>
  100708. <stringProp name="scriptLanguage">javascript</stringProp>
  100709. </JSR223PostProcessor>
  100710. <hashTree/>
  100711. </hashTree>
  100712. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Set ${gridEntityType} Filtered Pages Count" enabled="true">
  100713. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100714. <collectionProp name="Arguments.arguments">
  100715. <elementProp name="namespace" elementType="HTTPArgument">
  100716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100717. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  100718. <stringProp name="Argument.metadata">=</stringProp>
  100719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100720. <stringProp name="Argument.name">namespace</stringProp>
  100721. <stringProp name="Argument.desc">true</stringProp>
  100722. </elementProp>
  100723. <elementProp name="search" elementType="HTTPArgument">
  100724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100725. <stringProp name="Argument.value"/>
  100726. <stringProp name="Argument.metadata">=</stringProp>
  100727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100728. <stringProp name="Argument.name">search</stringProp>
  100729. <stringProp name="Argument.desc">true</stringProp>
  100730. </elementProp>
  100731. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  100732. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100733. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  100734. <stringProp name="Argument.metadata">=</stringProp>
  100735. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100736. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  100737. <stringProp name="Argument.desc">true</stringProp>
  100738. </elementProp>
  100739. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  100740. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100741. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  100742. <stringProp name="Argument.metadata">=</stringProp>
  100743. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100744. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  100745. <stringProp name="Argument.desc">true</stringProp>
  100746. </elementProp>
  100747. <elementProp name="paging[current]" elementType="HTTPArgument">
  100748. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100749. <stringProp name="Argument.value">1</stringProp>
  100750. <stringProp name="Argument.metadata">=</stringProp>
  100751. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100752. <stringProp name="Argument.name">paging[current]</stringProp>
  100753. <stringProp name="Argument.desc">true</stringProp>
  100754. </elementProp>
  100755. <elementProp name="sorting[field]" elementType="HTTPArgument">
  100756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100757. <stringProp name="Argument.value">entity_id</stringProp>
  100758. <stringProp name="Argument.metadata">=</stringProp>
  100759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100760. <stringProp name="Argument.name">sorting[field]</stringProp>
  100761. <stringProp name="Argument.desc">true</stringProp>
  100762. </elementProp>
  100763. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  100764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100765. <stringProp name="Argument.value">asc</stringProp>
  100766. <stringProp name="Argument.metadata">=</stringProp>
  100767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100768. <stringProp name="Argument.name">sorting[direction]</stringProp>
  100769. <stringProp name="Argument.desc">true</stringProp>
  100770. </elementProp>
  100771. <elementProp name="isAjax" elementType="HTTPArgument">
  100772. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100773. <stringProp name="Argument.value">true</stringProp>
  100774. <stringProp name="Argument.metadata">=</stringProp>
  100775. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100776. <stringProp name="Argument.name">isAjax</stringProp>
  100777. <stringProp name="Argument.desc">true</stringProp>
  100778. </elementProp>
  100779. </collectionProp>
  100780. </elementProp>
  100781. <stringProp name="HTTPSampler.domain"/>
  100782. <stringProp name="HTTPSampler.port"/>
  100783. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100784. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100785. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100786. <stringProp name="HTTPSampler.contentEncoding"/>
  100787. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  100788. <stringProp name="HTTPSampler.method">GET</stringProp>
  100789. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100790. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100791. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100792. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100793. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100794. <stringProp name="HTTPSampler.embedded_url_re"/>
  100795. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/set_filtered_pages_count.jmx</stringProp></HTTPSamplerProxy>
  100796. <hashTree>
  100797. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert total records is not 0" enabled="true">
  100798. <stringProp name="JSON_PATH">$.totalRecords</stringProp>
  100799. <stringProp name="EXPECTED_VALUE">0</stringProp>
  100800. <boolProp name="JSONVALIDATION">true</boolProp>
  100801. <boolProp name="EXPECT_NULL">false</boolProp>
  100802. <boolProp name="INVERT">true</boolProp>
  100803. <boolProp name="ISREGEX">true</boolProp>
  100804. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  100805. <hashTree/>
  100806. <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 total records" enabled="true">
  100807. <stringProp name="VAR">entity_total_records</stringProp>
  100808. <stringProp name="JSONPATH">$.totalRecords</stringProp>
  100809. <stringProp name="DEFAULT"/>
  100810. <stringProp name="VARIABLE"/>
  100811. <stringProp name="SUBJECT">BODY</stringProp>
  100812. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  100813. <hashTree/>
  100814. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="SetUp - Calculate ${gridEntityType} filtered pages count" enabled="true">
  100815. <stringProp name="parameters"/>
  100816. <stringProp name="filename"/>
  100817. <stringProp name="script">
  100818. var pageSize = parseInt(vars.get("grid_entity_page_size")) || 20;
  100819. var totalsRecord = parseInt(vars.get("entity_total_records"));
  100820. var pageCount = Math.round(totalsRecord/pageSize);
  100821. vars.put("grid_pages_count_filtered", pageCount);
  100822. </stringProp>
  100823. <stringProp name="scriptLanguage">javascript</stringProp>
  100824. </JSR223PostProcessor>
  100825. <hashTree/>
  100826. </hashTree>
  100827. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select ${gridEntityType} Page Number" enabled="true">
  100828. <stringProp name="CounterConfig.start">1</stringProp>
  100829. <stringProp name="CounterConfig.end">${grid_pages_count}</stringProp>
  100830. <stringProp name="CounterConfig.incr">1</stringProp>
  100831. <stringProp name="CounterConfig.name">page_number</stringProp>
  100832. <stringProp name="CounterConfig.format"/>
  100833. <boolProp name="CounterConfig.per_user">true</boolProp>
  100834. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  100835. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_page_number.jmx</stringProp></CounterConfig>
  100836. <hashTree/>
  100837. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page" enabled="true">
  100838. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100839. <collectionProp name="Arguments.arguments">
  100840. <elementProp name="namespace" elementType="HTTPArgument">
  100841. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100842. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  100843. <stringProp name="Argument.metadata">=</stringProp>
  100844. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100845. <stringProp name="Argument.name">namespace</stringProp>
  100846. <stringProp name="Argument.desc">true</stringProp>
  100847. </elementProp>
  100848. <elementProp name="search" elementType="HTTPArgument">
  100849. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100850. <stringProp name="Argument.value"/>
  100851. <stringProp name="Argument.metadata">=</stringProp>
  100852. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100853. <stringProp name="Argument.name">search</stringProp>
  100854. <stringProp name="Argument.desc">true</stringProp>
  100855. </elementProp>
  100856. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  100857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100858. <stringProp name="Argument.value">true</stringProp>
  100859. <stringProp name="Argument.metadata">=</stringProp>
  100860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100861. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  100862. <stringProp name="Argument.desc">true</stringProp>
  100863. </elementProp>
  100864. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  100865. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100866. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  100867. <stringProp name="Argument.metadata">=</stringProp>
  100868. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100869. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  100870. <stringProp name="Argument.desc">true</stringProp>
  100871. </elementProp>
  100872. <elementProp name="paging[current]" elementType="HTTPArgument">
  100873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100874. <stringProp name="Argument.value">${page_number}</stringProp>
  100875. <stringProp name="Argument.metadata">=</stringProp>
  100876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100877. <stringProp name="Argument.name">paging[current]</stringProp>
  100878. <stringProp name="Argument.desc">true</stringProp>
  100879. </elementProp>
  100880. <elementProp name="sorting[field]" elementType="HTTPArgument">
  100881. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100882. <stringProp name="Argument.value">entity_id</stringProp>
  100883. <stringProp name="Argument.metadata">=</stringProp>
  100884. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100885. <stringProp name="Argument.name">sorting[field]</stringProp>
  100886. <stringProp name="Argument.desc">true</stringProp>
  100887. </elementProp>
  100888. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  100889. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100890. <stringProp name="Argument.value">asc</stringProp>
  100891. <stringProp name="Argument.metadata">=</stringProp>
  100892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100893. <stringProp name="Argument.name">sorting[direction]</stringProp>
  100894. <stringProp name="Argument.desc">true</stringProp>
  100895. </elementProp>
  100896. <elementProp name="isAjax" elementType="HTTPArgument">
  100897. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100898. <stringProp name="Argument.value">true</stringProp>
  100899. <stringProp name="Argument.metadata">=</stringProp>
  100900. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100901. <stringProp name="Argument.name">isAjax</stringProp>
  100902. <stringProp name="Argument.desc">true</stringProp>
  100903. </elementProp>
  100904. </collectionProp>
  100905. </elementProp>
  100906. <stringProp name="HTTPSampler.domain"/>
  100907. <stringProp name="HTTPSampler.port"/>
  100908. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  100909. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  100910. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  100911. <stringProp name="HTTPSampler.contentEncoding"/>
  100912. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  100913. <stringProp name="HTTPSampler.method">GET</stringProp>
  100914. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  100915. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  100916. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  100917. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  100918. <boolProp name="HTTPSampler.monitor">false</boolProp>
  100919. <stringProp name="HTTPSampler.embedded_url_re"/>
  100920. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid.jmx</stringProp></HTTPSamplerProxy>
  100921. <hashTree>
  100922. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  100923. <collectionProp name="Asserion.test_strings">
  100924. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  100925. </collectionProp>
  100926. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  100927. <boolProp name="Assertion.assume_success">false</boolProp>
  100928. <intProp name="Assertion.test_type">2</intProp>
  100929. </ResponseAssertion>
  100930. <hashTree/>
  100931. </hashTree>
  100932. <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="SetUp - Select Filtered ${gridEntityType} Page Number" enabled="true">
  100933. <stringProp name="CounterConfig.start">1</stringProp>
  100934. <stringProp name="CounterConfig.end">${grid_pages_count_filtered}</stringProp>
  100935. <stringProp name="CounterConfig.incr">1</stringProp>
  100936. <stringProp name="CounterConfig.name">page_number</stringProp>
  100937. <stringProp name="CounterConfig.format"/>
  100938. <boolProp name="CounterConfig.per_user">true</boolProp>
  100939. <boolProp name="CounterConfig.reset_on_tg_iteration">false</boolProp>
  100940. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/select_filtered_page_number.jmx</stringProp></CounterConfig>
  100941. <hashTree/>
  100942. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="View ${gridEntityType} page - Filtering + Sorting" enabled="true">
  100943. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_grid_browsing/admin_browse_grid_sort_and_filter.jmx</stringProp>
  100944. </TestFragmentController>
  100945. <hashTree>
  100946. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Field Defined" enabled="true">
  100947. <stringProp name="ForeachController.inputVal">grid_sort_field</stringProp>
  100948. <stringProp name="ForeachController.returnVal">grid_sort_field</stringProp>
  100949. <boolProp name="ForeachController.useSeparator">true</boolProp>
  100950. <stringProp name="ForeachController.startIndex">0</stringProp>
  100951. <stringProp name="ForeachController.endIndex">3</stringProp>
  100952. </ForeachController>
  100953. <hashTree>
  100954. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Sort Order Defined" enabled="true">
  100955. <stringProp name="ForeachController.inputVal">grid_sort_order</stringProp>
  100956. <stringProp name="ForeachController.returnVal">grid_sort_order</stringProp>
  100957. <boolProp name="ForeachController.useSeparator">true</boolProp>
  100958. <stringProp name="ForeachController.startIndex">0</stringProp>
  100959. <stringProp name="ForeachController.endIndex">2</stringProp>
  100960. </ForeachController>
  100961. <hashTree>
  100962. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View ${gridEntityType} page - Filtering + Sort By ${grid_sort_field} ${grid_sort_order}" enabled="true">
  100963. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  100964. <collectionProp name="Arguments.arguments">
  100965. <elementProp name="namespace" elementType="HTTPArgument">
  100966. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100967. <stringProp name="Argument.value">${grid_namespace}</stringProp>
  100968. <stringProp name="Argument.metadata">=</stringProp>
  100969. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100970. <stringProp name="Argument.name">namespace</stringProp>
  100971. <stringProp name="Argument.desc">false</stringProp>
  100972. </elementProp>
  100973. <elementProp name="filters[${grid_filter_field}]" elementType="HTTPArgument">
  100974. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100975. <stringProp name="Argument.value">${grid_admin_browse_filter_text}</stringProp>
  100976. <stringProp name="Argument.metadata">=</stringProp>
  100977. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100978. <stringProp name="Argument.name">filters[${grid_filter_field}]</stringProp>
  100979. <stringProp name="Argument.desc">false</stringProp>
  100980. </elementProp>
  100981. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  100982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100983. <stringProp name="Argument.value">true</stringProp>
  100984. <stringProp name="Argument.metadata">=</stringProp>
  100985. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100986. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  100987. <stringProp name="Argument.desc">false</stringProp>
  100988. </elementProp>
  100989. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  100990. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100991. <stringProp name="Argument.value">${grid_entity_page_size}</stringProp>
  100992. <stringProp name="Argument.metadata">=</stringProp>
  100993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  100994. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  100995. <stringProp name="Argument.desc">false</stringProp>
  100996. </elementProp>
  100997. <elementProp name="paging[current]" elementType="HTTPArgument">
  100998. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  100999. <stringProp name="Argument.value">${page_number}</stringProp>
  101000. <stringProp name="Argument.metadata">=</stringProp>
  101001. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101002. <stringProp name="Argument.name">paging[current]</stringProp>
  101003. <stringProp name="Argument.desc">false</stringProp>
  101004. </elementProp>
  101005. <elementProp name="sorting[field]" elementType="HTTPArgument">
  101006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101007. <stringProp name="Argument.value">${grid_sort_field}</stringProp>
  101008. <stringProp name="Argument.metadata">=</stringProp>
  101009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101010. <stringProp name="Argument.name">sorting[field]</stringProp>
  101011. <stringProp name="Argument.desc">false</stringProp>
  101012. </elementProp>
  101013. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  101014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101015. <stringProp name="Argument.value">${grid_sort_order}</stringProp>
  101016. <stringProp name="Argument.metadata">=</stringProp>
  101017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101018. <stringProp name="Argument.name">sorting[direction]</stringProp>
  101019. <stringProp name="Argument.desc">false</stringProp>
  101020. </elementProp>
  101021. <elementProp name="isAjax" elementType="HTTPArgument">
  101022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101023. <stringProp name="Argument.value">true</stringProp>
  101024. <stringProp name="Argument.metadata">=</stringProp>
  101025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101026. <stringProp name="Argument.name">isAjax</stringProp>
  101027. <stringProp name="Argument.desc">false</stringProp>
  101028. </elementProp>
  101029. </collectionProp>
  101030. </elementProp>
  101031. <stringProp name="HTTPSampler.domain"/>
  101032. <stringProp name="HTTPSampler.port"/>
  101033. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101034. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101035. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101036. <stringProp name="HTTPSampler.contentEncoding"/>
  101037. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  101038. <stringProp name="HTTPSampler.method">GET</stringProp>
  101039. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101040. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101041. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101042. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101043. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101044. <stringProp name="HTTPSampler.embedded_url_re"/>
  101045. </HTTPSamplerProxy>
  101046. <hashTree>
  101047. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  101048. <collectionProp name="Asserion.test_strings">
  101049. <stringProp name="1637639774">\"totalRecords\":[^0]\d*</stringProp>
  101050. </collectionProp>
  101051. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  101052. <boolProp name="Assertion.assume_success">false</boolProp>
  101053. <intProp name="Assertion.test_type">2</intProp>
  101054. </ResponseAssertion>
  101055. <hashTree/>
  101056. </hashTree>
  101057. </hashTree>
  101058. </hashTree>
  101059. </hashTree>
  101060. </hashTree>
  101061. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  101062. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101063. <collectionProp name="Arguments.arguments"/>
  101064. </elementProp>
  101065. <stringProp name="HTTPSampler.domain"/>
  101066. <stringProp name="HTTPSampler.port"/>
  101067. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101068. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101069. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101070. <stringProp name="HTTPSampler.contentEncoding"/>
  101071. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  101072. <stringProp name="HTTPSampler.method">GET</stringProp>
  101073. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101074. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101075. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101076. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101077. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101078. <stringProp name="HTTPSampler.embedded_url_re"/>
  101079. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  101080. <hashTree>
  101081. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  101082. <boolProp name="resetInterpreter">false</boolProp>
  101083. <stringProp name="parameters"/>
  101084. <stringProp name="filename"/>
  101085. <stringProp name="script">
  101086. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  101087. if (adminUsersDistribution == 1) {
  101088. adminUserList = props.get("adminUserList");
  101089. adminUserList.add(vars.get("admin_user"));
  101090. }
  101091. </stringProp>
  101092. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  101093. <hashTree/>
  101094. </hashTree>
  101095. </hashTree>
  101096. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Create Order" enabled="true">
  101097. <intProp name="ThroughputController.style">1</intProp>
  101098. <boolProp name="ThroughputController.perThread">false</boolProp>
  101099. <intProp name="ThroughputController.maxThroughput">1</intProp>
  101100. <stringProp name="ThroughputController.percentThroughput">${cAdminCreateOrderPercentage}</stringProp>
  101101. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  101102. <hashTree>
  101103. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  101104. <stringProp name="script">
  101105. var tmpLabel = vars.get("testLabel")
  101106. if (tmpLabel) {
  101107. var testLabel = " (" + tmpLabel + ")"
  101108. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  101109. if (sampler.getName().indexOf(testLabel) == -1) {
  101110. sampler.setName(sampler.getName() + testLabel);
  101111. }
  101112. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  101113. sampler.setName("SetUp - " + sampler.getName());
  101114. }
  101115. } else {
  101116. testLabel = ""
  101117. }
  101118. </stringProp>
  101119. <stringProp name="scriptLanguage">javascript</stringProp>
  101120. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  101121. <hashTree/>
  101122. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  101123. <stringProp name="BeanShellSampler.query">
  101124. vars.put("testLabel", "[REST API C] Admin Create Order");
  101125. </stringProp>
  101126. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  101127. </BeanShellSampler>
  101128. <hashTree/>
  101129. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  101130. <stringProp name="script">
  101131. function getFormKeyFromResponse()
  101132. {
  101133. var url = prev.getUrlAsString(),
  101134. responseCode = prev.getResponseCode(),
  101135. formKey = null;
  101136. searchPattern = /var FORM_KEY = '(.+)'/;
  101137. if (responseCode == "200" &amp;&amp; url) {
  101138. response = prev.getResponseDataAsString();
  101139. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  101140. }
  101141. return formKey;
  101142. }
  101143. formKey = vars.get("form_key_storage");
  101144. currentFormKey = getFormKeyFromResponse();
  101145. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  101146. vars.put("form_key_storage", currentFormKey);
  101147. }
  101148. </stringProp>
  101149. <stringProp name="scriptLanguage">javascript</stringProp>
  101150. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  101151. <hashTree/>
  101152. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  101153. <stringProp name="script">
  101154. formKey = vars.get("form_key_storage");
  101155. if (formKey
  101156. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  101157. &amp;&amp; sampler.getMethod() == "POST")
  101158. {
  101159. arguments = sampler.getArguments();
  101160. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  101161. {
  101162. argument = arguments.getArgument(i);
  101163. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  101164. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  101165. argument.setValue(formKey);
  101166. }
  101167. }
  101168. }
  101169. </stringProp>
  101170. <stringProp name="scriptLanguage">javascript</stringProp>
  101171. </JSR223PreProcessor>
  101172. <hashTree/>
  101173. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  101174. <collectionProp name="CookieManager.cookies"/>
  101175. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  101176. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  101177. <hashTree/>
  101178. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  101179. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  101180. </GenericController>
  101181. <hashTree>
  101182. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  101183. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  101184. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  101185. <hashTree>
  101186. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  101187. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  101188. <stringProp name="BeanShellSampler.query">
  101189. adminUser = "none";
  101190. adminUserList = props.get("adminUserList");
  101191. adminUserListIterator = props.get("adminUserListIterator");
  101192. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  101193. if (adminUsersDistribution == 1) {
  101194. adminUser = adminUserList.poll();
  101195. } else {
  101196. if (!adminUserListIterator.hasNext()) {
  101197. adminUserListIterator = adminUserList.descendingIterator();
  101198. }
  101199. adminUser = adminUserListIterator.next();
  101200. }
  101201. if (adminUser == "none") {
  101202. SampleResult.setResponseMessage("adminUser list is empty");
  101203. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  101204. IsSuccess=false;
  101205. SampleResult.setSuccessful(false);
  101206. SampleResult.setStopThread(true);
  101207. }
  101208. vars.put("admin_user", adminUser);
  101209. </stringProp>
  101210. <stringProp name="BeanShellSampler.filename"/>
  101211. <stringProp name="BeanShellSampler.parameters"/>
  101212. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  101213. </BeanShellSampler>
  101214. <hashTree/>
  101215. </hashTree>
  101216. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  101217. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101218. <collectionProp name="Arguments.arguments"/>
  101219. </elementProp>
  101220. <stringProp name="HTTPSampler.domain"/>
  101221. <stringProp name="HTTPSampler.port"/>
  101222. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101223. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101224. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101225. <stringProp name="HTTPSampler.contentEncoding"/>
  101226. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  101227. <stringProp name="HTTPSampler.method">GET</stringProp>
  101228. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101229. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101230. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101231. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101232. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101233. <stringProp name="HTTPSampler.embedded_url_re"/>
  101234. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  101235. <hashTree>
  101236. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  101237. <collectionProp name="Asserion.test_strings">
  101238. <stringProp name="-1397214398">Welcome</stringProp>
  101239. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  101240. </collectionProp>
  101241. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  101242. <boolProp name="Assertion.assume_success">false</boolProp>
  101243. <intProp name="Assertion.test_type">2</intProp>
  101244. </ResponseAssertion>
  101245. <hashTree/>
  101246. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  101247. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  101248. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  101249. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  101250. <stringProp name="RegexExtractor.template">$1$</stringProp>
  101251. <stringProp name="RegexExtractor.default"/>
  101252. <stringProp name="RegexExtractor.match_number">1</stringProp>
  101253. </RegexExtractor>
  101254. <hashTree/>
  101255. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  101256. <collectionProp name="Asserion.test_strings">
  101257. <stringProp name="2845929">^.+$</stringProp>
  101258. </collectionProp>
  101259. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  101260. <boolProp name="Assertion.assume_success">false</boolProp>
  101261. <intProp name="Assertion.test_type">1</intProp>
  101262. <stringProp name="Assertion.scope">variable</stringProp>
  101263. <stringProp name="Scope.variable">admin_form_key</stringProp>
  101264. </ResponseAssertion>
  101265. <hashTree/>
  101266. </hashTree>
  101267. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  101268. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101269. <collectionProp name="Arguments.arguments">
  101270. <elementProp name="dummy" elementType="HTTPArgument">
  101271. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101272. <stringProp name="Argument.value"/>
  101273. <stringProp name="Argument.metadata">=</stringProp>
  101274. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101275. <stringProp name="Argument.name">dummy</stringProp>
  101276. </elementProp>
  101277. <elementProp name="form_key" elementType="HTTPArgument">
  101278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101279. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  101280. <stringProp name="Argument.metadata">=</stringProp>
  101281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101282. <stringProp name="Argument.name">form_key</stringProp>
  101283. </elementProp>
  101284. <elementProp name="login[password]" elementType="HTTPArgument">
  101285. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101286. <stringProp name="Argument.value">${admin_password}</stringProp>
  101287. <stringProp name="Argument.metadata">=</stringProp>
  101288. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101289. <stringProp name="Argument.name">login[password]</stringProp>
  101290. </elementProp>
  101291. <elementProp name="login[username]" elementType="HTTPArgument">
  101292. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101293. <stringProp name="Argument.value">${admin_user}</stringProp>
  101294. <stringProp name="Argument.metadata">=</stringProp>
  101295. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101296. <stringProp name="Argument.name">login[username]</stringProp>
  101297. </elementProp>
  101298. </collectionProp>
  101299. </elementProp>
  101300. <stringProp name="HTTPSampler.domain"/>
  101301. <stringProp name="HTTPSampler.port"/>
  101302. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101303. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101304. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101305. <stringProp name="HTTPSampler.contentEncoding"/>
  101306. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  101307. <stringProp name="HTTPSampler.method">POST</stringProp>
  101308. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101309. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101310. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101311. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101312. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  101313. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101314. <stringProp name="HTTPSampler.embedded_url_re"/>
  101315. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  101316. </HTTPSamplerProxy>
  101317. <hashTree>
  101318. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  101319. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  101320. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  101321. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  101322. <stringProp name="RegexExtractor.template">$1$</stringProp>
  101323. <stringProp name="RegexExtractor.default"/>
  101324. <stringProp name="RegexExtractor.match_number">1</stringProp>
  101325. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  101326. <hashTree/>
  101327. </hashTree>
  101328. </hashTree>
  101329. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  101330. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  101331. </GenericController>
  101332. <hashTree>
  101333. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Get region data" enabled="true">
  101334. <stringProp name="scriptLanguage">javascript</stringProp>
  101335. <stringProp name="parameters"/>
  101336. <stringProp name="filename"/>
  101337. <stringProp name="cacheKey"/>
  101338. <stringProp name="script">
  101339. vars.put("alabama_region_id", props.get("alabama_region_id"));
  101340. vars.put("california_region_id", props.get("california_region_id"));
  101341. </stringProp>
  101342. <stringProp name="TestPlan.comments">tool/fragments/ce/common/get_region_data.jmx</stringProp></JSR223PreProcessor>
  101343. <hashTree/>
  101344. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Create Order" enabled="true"/>
  101345. <hashTree>
  101346. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  101347. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_order/admin_create_order.jmx</stringProp>
  101348. <stringProp name="BeanShellSampler.query">import org.apache.jmeter.samplers.SampleResult;
  101349. import java.util.Random;
  101350. Random random = new Random();
  101351. if (${seedForRandom} &gt; 0) {
  101352. random.setSeed(${seedForRandom});
  101353. }
  101354. number = random.nextInt(props.get("configurable_products_list").size());
  101355. configurableList = props.get("configurable_products_list").get(number);
  101356. vars.put("configurable_product_1_url_key", configurableList.get("url_key"));
  101357. vars.put("configurable_product_1_name", configurableList.get("title"));
  101358. vars.put("configurable_product_1_id", configurableList.get("id"));
  101359. vars.put("configurable_product_1_sku", configurableList.get("sku"));
  101360. vars.put("configurable_attribute_id", configurableList.get("attribute_id"));
  101361. vars.put("configurable_option_id", configurableList.get("attribute_option_id"));
  101362. number = random.nextInt(props.get("simple_products_list").size());
  101363. simpleList = props.get("simple_products_list").get(number);
  101364. vars.put("simple_product_1_url_key", simpleList.get("url_key"));
  101365. vars.put("simple_product_1_name", simpleList.get("title"));
  101366. vars.put("simple_product_1_id", simpleList.get("id"));
  101367. number1 = random.nextInt(props.get("configurable_products_list").size());
  101368. do {
  101369. number1 = random.nextInt(props.get("simple_products_list").size());
  101370. } while(number == number1);
  101371. simpleList = props.get("simple_products_list").get(number1);
  101372. vars.put("simple_product_2_url_key", simpleList.get("url_key"));
  101373. vars.put("simple_product_2_name", simpleList.get("title"));
  101374. vars.put("simple_product_2_id", simpleList.get("id"));
  101375. customers_index = 0;
  101376. if (!props.containsKey("customer_ids_index")) {
  101377. props.put("customer_ids_index", customers_index);
  101378. }
  101379. try {
  101380. customers_index = props.get("customer_ids_index");
  101381. customers_list = props.get("customer_ids_list");
  101382. if (customers_index == customers_list.size()) {
  101383. customers_index=0;
  101384. }
  101385. vars.put("customer_id", customers_list.get(customers_index));
  101386. props.put("customer_ids_index", ++customers_index);
  101387. }
  101388. catch (java.lang.Exception e) {
  101389. log.error("Caught Exception in 'Admin Create Order' thread.");
  101390. SampleResult.setStopThread(true);
  101391. }</stringProp>
  101392. <stringProp name="BeanShellSampler.filename"/>
  101393. <stringProp name="BeanShellSampler.parameters"/>
  101394. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  101395. </BeanShellSampler>
  101396. <hashTree/>
  101397. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Start Order" enabled="true">
  101398. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101399. <collectionProp name="Arguments.arguments"/>
  101400. </elementProp>
  101401. <stringProp name="HTTPSampler.domain"/>
  101402. <stringProp name="HTTPSampler.port"/>
  101403. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101404. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101405. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101406. <stringProp name="HTTPSampler.contentEncoding"/>
  101407. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/start/</stringProp>
  101408. <stringProp name="HTTPSampler.method">GET</stringProp>
  101409. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101410. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101411. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101412. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101413. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101414. <stringProp name="HTTPSampler.embedded_url_re"/>
  101415. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  101416. </HTTPSamplerProxy>
  101417. <hashTree/>
  101418. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="SetUp - Get Configurable Product Options" enabled="true"/>
  101419. <hashTree>
  101420. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  101421. <collectionProp name="HeaderManager.headers">
  101422. <elementProp name="" elementType="Header">
  101423. <stringProp name="Header.name">Content-Type</stringProp>
  101424. <stringProp name="Header.value">application/json</stringProp>
  101425. </elementProp>
  101426. <elementProp name="" elementType="Header">
  101427. <stringProp name="Header.name">Accept</stringProp>
  101428. <stringProp name="Header.value">*/*</stringProp>
  101429. </elementProp>
  101430. </collectionProp>
  101431. </HeaderManager>
  101432. <hashTree/>
  101433. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  101434. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  101435. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  101436. <collectionProp name="Arguments.arguments">
  101437. <elementProp name="" elementType="HTTPArgument">
  101438. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  101439. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  101440. <stringProp name="Argument.metadata">=</stringProp>
  101441. </elementProp>
  101442. </collectionProp>
  101443. </elementProp>
  101444. <stringProp name="HTTPSampler.domain"/>
  101445. <stringProp name="HTTPSampler.port"/>
  101446. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101447. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101448. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101449. <stringProp name="HTTPSampler.contentEncoding"/>
  101450. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  101451. <stringProp name="HTTPSampler.method">POST</stringProp>
  101452. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101453. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101454. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101455. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101456. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101457. <stringProp name="HTTPSampler.embedded_url_re"/>
  101458. </HTTPSamplerProxy>
  101459. <hashTree>
  101460. <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">
  101461. <stringProp name="VAR">admin_token</stringProp>
  101462. <stringProp name="JSONPATH">$</stringProp>
  101463. <stringProp name="DEFAULT"/>
  101464. <stringProp name="VARIABLE"/>
  101465. <stringProp name="SUBJECT">BODY</stringProp>
  101466. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  101467. <hashTree/>
  101468. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  101469. <collectionProp name="Asserion.test_strings">
  101470. <stringProp name="484395188">^.{10,}$</stringProp>
  101471. </collectionProp>
  101472. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  101473. <boolProp name="Assertion.assume_success">false</boolProp>
  101474. <intProp name="Assertion.test_type">1</intProp>
  101475. <stringProp name="Assertion.scope">variable</stringProp>
  101476. <stringProp name="Scope.variable">admin_token</stringProp>
  101477. </ResponseAssertion>
  101478. <hashTree/>
  101479. </hashTree>
  101480. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  101481. <collectionProp name="HeaderManager.headers">
  101482. <elementProp name="" elementType="Header">
  101483. <stringProp name="Header.name">Authorization</stringProp>
  101484. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  101485. </elementProp>
  101486. </collectionProp>
  101487. </HeaderManager>
  101488. <hashTree/>
  101489. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Get Configurable Product Options" enabled="true">
  101490. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101491. <collectionProp name="Arguments.arguments"/>
  101492. </elementProp>
  101493. <stringProp name="HTTPSampler.domain"/>
  101494. <stringProp name="HTTPSampler.port"/>
  101495. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101496. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101497. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101498. <stringProp name="HTTPSampler.contentEncoding"/>
  101499. <stringProp name="HTTPSampler.path">${base_path}rest/V1/configurable-products/${configurable_product_1_sku}/options/all</stringProp>
  101500. <stringProp name="HTTPSampler.method">GET</stringProp>
  101501. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101502. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101503. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101504. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101505. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101506. <stringProp name="HTTPSampler.embedded_url_re"/>
  101507. </HTTPSamplerProxy>
  101508. <hashTree>
  101509. <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">
  101510. <stringProp name="VAR">attribute_ids</stringProp>
  101511. <stringProp name="JSONPATH">$.[*].attribute_id</stringProp>
  101512. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  101513. <stringProp name="VARIABLE"/>
  101514. <stringProp name="SUBJECT">BODY</stringProp>
  101515. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  101516. <hashTree/>
  101517. <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">
  101518. <stringProp name="VAR">option_values</stringProp>
  101519. <stringProp name="JSONPATH">$.[*].values[0].value_index</stringProp>
  101520. <stringProp name="DEFAULT">NO_VALUE</stringProp>
  101521. <stringProp name="VARIABLE"/>
  101522. <stringProp name="SUBJECT">BODY</stringProp>
  101523. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  101524. <hashTree/>
  101525. </hashTree>
  101526. </hashTree>
  101527. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Products" enabled="true">
  101528. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101529. <collectionProp name="Arguments.arguments">
  101530. <elementProp name="item[${simple_product_1_id}][qty]" elementType="HTTPArgument">
  101531. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101532. <stringProp name="Argument.name">item[${simple_product_1_id}][qty]</stringProp>
  101533. <stringProp name="Argument.value">1</stringProp>
  101534. <stringProp name="Argument.metadata">=</stringProp>
  101535. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101536. </elementProp>
  101537. <elementProp name="item[${simple_product_2_id}][qty]" elementType="HTTPArgument">
  101538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101539. <stringProp name="Argument.name">item[${simple_product_2_id}][qty]</stringProp>
  101540. <stringProp name="Argument.value">1</stringProp>
  101541. <stringProp name="Argument.metadata">=</stringProp>
  101542. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101543. </elementProp>
  101544. <elementProp name="item[${configurable_product_1_id}][qty]" elementType="HTTPArgument">
  101545. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101546. <stringProp name="Argument.name">item[${configurable_product_1_id}][qty]</stringProp>
  101547. <stringProp name="Argument.value">1</stringProp>
  101548. <stringProp name="Argument.metadata">=</stringProp>
  101549. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101550. </elementProp>
  101551. <elementProp name="customer_id" elementType="HTTPArgument">
  101552. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101553. <stringProp name="Argument.name">customer_id</stringProp>
  101554. <stringProp name="Argument.value">${customer_id}</stringProp>
  101555. <stringProp name="Argument.metadata">=</stringProp>
  101556. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101557. </elementProp>
  101558. <elementProp name="store_id" elementType="HTTPArgument">
  101559. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101560. <stringProp name="Argument.name">store_id</stringProp>
  101561. <stringProp name="Argument.value">1</stringProp>
  101562. <stringProp name="Argument.metadata">=</stringProp>
  101563. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101564. </elementProp>
  101565. <elementProp name="currency_id" elementType="HTTPArgument">
  101566. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101567. <stringProp name="Argument.name">currency_id</stringProp>
  101568. <stringProp name="Argument.value"/>
  101569. <stringProp name="Argument.metadata">=</stringProp>
  101570. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101571. </elementProp>
  101572. <elementProp name="form_key" elementType="HTTPArgument">
  101573. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101574. <stringProp name="Argument.name">form_key</stringProp>
  101575. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  101576. <stringProp name="Argument.metadata">=</stringProp>
  101577. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101578. </elementProp>
  101579. <elementProp name="payment[method]" elementType="HTTPArgument">
  101580. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101581. <stringProp name="Argument.name">payment[method]</stringProp>
  101582. <stringProp name="Argument.value">checkmo</stringProp>
  101583. <stringProp name="Argument.metadata">=</stringProp>
  101584. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101585. </elementProp>
  101586. <elementProp name="reset_shipping" elementType="HTTPArgument">
  101587. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101588. <stringProp name="Argument.name">reset_shipping</stringProp>
  101589. <stringProp name="Argument.value">1</stringProp>
  101590. <stringProp name="Argument.metadata">=</stringProp>
  101591. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101592. </elementProp>
  101593. <elementProp name="json" elementType="HTTPArgument">
  101594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101595. <stringProp name="Argument.name">json</stringProp>
  101596. <stringProp name="Argument.value">1</stringProp>
  101597. <stringProp name="Argument.metadata">=</stringProp>
  101598. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101599. </elementProp>
  101600. <elementProp name="as_js_varname" elementType="HTTPArgument">
  101601. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101602. <stringProp name="Argument.name">as_js_varname</stringProp>
  101603. <stringProp name="Argument.value">iFrameResponse</stringProp>
  101604. <stringProp name="Argument.metadata">=</stringProp>
  101605. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101606. </elementProp>
  101607. <elementProp name="form_key" elementType="HTTPArgument">
  101608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101609. <stringProp name="Argument.name">form_key</stringProp>
  101610. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  101611. <stringProp name="Argument.metadata">=</stringProp>
  101612. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101613. </elementProp>
  101614. </collectionProp>
  101615. </elementProp>
  101616. <stringProp name="HTTPSampler.domain"/>
  101617. <stringProp name="HTTPSampler.port"/>
  101618. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101619. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101620. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101621. <stringProp name="HTTPSampler.contentEncoding"/>
  101622. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/search,items,shipping_method,totals,giftmessage,billing_method?isAjax=true</stringProp>
  101623. <stringProp name="HTTPSampler.method">POST</stringProp>
  101624. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101625. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101626. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101627. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101628. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101629. <stringProp name="HTTPSampler.embedded_url_re"/>
  101630. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  101631. </HTTPSamplerProxy>
  101632. <hashTree>
  101633. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Configure product options" enabled="true">
  101634. <boolProp name="resetInterpreter">false</boolProp>
  101635. <stringProp name="parameters"/>
  101636. <stringProp name="filename"/>
  101637. <stringProp name="script">try {
  101638. attribute_ids = vars.get("attribute_ids");
  101639. option_values = vars.get("option_values");
  101640. attribute_ids = attribute_ids.replace("[","").replace("]","").replace("\"", "");
  101641. option_values = option_values.replace("[","").replace("]","").replace("\"", "");
  101642. attribute_ids_array = attribute_ids.split(",");
  101643. option_values_array = option_values.split(",");
  101644. args = ctx.getCurrentSampler().getArguments();
  101645. it = args.iterator();
  101646. while (it.hasNext()) {
  101647. argument = it.next();
  101648. if (argument.getStringValue().contains("${")) {
  101649. args.removeArgument(argument.getName());
  101650. }
  101651. }
  101652. for (int i = 0; i &lt; attribute_ids_array.length; i++) {
  101653. ctx.getCurrentSampler().addArgument("item[" + vars.get("configurable_product_1_id") + "][super_attribute][" + attribute_ids_array[i] + "]", option_values_array[i]);
  101654. }
  101655. } catch (Exception e) {
  101656. log.error("error???", e);
  101657. }</stringProp>
  101658. </BeanShellPreProcessor>
  101659. <hashTree/>
  101660. </hashTree>
  101661. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Collect Shipping Rates" enabled="true">
  101662. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101663. <collectionProp name="Arguments.arguments">
  101664. <elementProp name="collect_shipping_rates" elementType="HTTPArgument">
  101665. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101666. <stringProp name="Argument.name">collect_shipping_rates</stringProp>
  101667. <stringProp name="Argument.value">1</stringProp>
  101668. <stringProp name="Argument.metadata">=</stringProp>
  101669. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101670. </elementProp>
  101671. <elementProp name="customer_id" elementType="HTTPArgument">
  101672. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101673. <stringProp name="Argument.name">customer_id</stringProp>
  101674. <stringProp name="Argument.value">${customer_id}</stringProp>
  101675. <stringProp name="Argument.metadata">=</stringProp>
  101676. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101677. </elementProp>
  101678. <elementProp name="store_id" elementType="HTTPArgument">
  101679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101680. <stringProp name="Argument.name">store_id</stringProp>
  101681. <stringProp name="Argument.value">1</stringProp>
  101682. <stringProp name="Argument.metadata">=</stringProp>
  101683. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101684. </elementProp>
  101685. <elementProp name="currency_id" elementType="HTTPArgument">
  101686. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101687. <stringProp name="Argument.name">currency_id</stringProp>
  101688. <stringProp name="Argument.value">false</stringProp>
  101689. <stringProp name="Argument.metadata">=</stringProp>
  101690. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101691. </elementProp>
  101692. <elementProp name="form_key" elementType="HTTPArgument">
  101693. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101694. <stringProp name="Argument.name">form_key</stringProp>
  101695. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  101696. <stringProp name="Argument.metadata">=</stringProp>
  101697. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101698. </elementProp>
  101699. <elementProp name="payment[method]" elementType="HTTPArgument">
  101700. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101701. <stringProp name="Argument.name">payment[method]</stringProp>
  101702. <stringProp name="Argument.value">checkmo</stringProp>
  101703. <stringProp name="Argument.metadata">=</stringProp>
  101704. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101705. </elementProp>
  101706. <elementProp name="json" elementType="HTTPArgument">
  101707. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101708. <stringProp name="Argument.name">json</stringProp>
  101709. <stringProp name="Argument.value">true</stringProp>
  101710. <stringProp name="Argument.metadata">=</stringProp>
  101711. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101712. </elementProp>
  101713. </collectionProp>
  101714. </elementProp>
  101715. <stringProp name="HTTPSampler.domain"/>
  101716. <stringProp name="HTTPSampler.port"/>
  101717. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101718. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101719. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101720. <stringProp name="HTTPSampler.contentEncoding"/>
  101721. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/loadBlock/block/shipping_method,totals?isAjax=true</stringProp>
  101722. <stringProp name="HTTPSampler.method">POST</stringProp>
  101723. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101724. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101725. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101726. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101727. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101728. <stringProp name="HTTPSampler.embedded_url_re"/>
  101729. </HTTPSamplerProxy>
  101730. <hashTree>
  101731. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipping Method" enabled="true">
  101732. <collectionProp name="Asserion.test_strings">
  101733. <stringProp name="-1987784558">shipping_method</stringProp>
  101734. <stringProp name="818779431">Flat Rate</stringProp>
  101735. </collectionProp>
  101736. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  101737. <boolProp name="Assertion.assume_success">false</boolProp>
  101738. <intProp name="Assertion.test_type">2</intProp>
  101739. </ResponseAssertion>
  101740. <hashTree/>
  101741. </hashTree>
  101742. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Filled Order Page" enabled="true">
  101743. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101744. <collectionProp name="Arguments.arguments"/>
  101745. </elementProp>
  101746. <stringProp name="HTTPSampler.domain"/>
  101747. <stringProp name="HTTPSampler.port"/>
  101748. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  101749. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  101750. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  101751. <stringProp name="HTTPSampler.contentEncoding"/>
  101752. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/index/</stringProp>
  101753. <stringProp name="HTTPSampler.method">GET</stringProp>
  101754. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  101755. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  101756. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  101757. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  101758. <boolProp name="HTTPSampler.monitor">false</boolProp>
  101759. <stringProp name="HTTPSampler.embedded_url_re"/>
  101760. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  101761. </HTTPSamplerProxy>
  101762. <hashTree>
  101763. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Filled Order Page" enabled="true">
  101764. <collectionProp name="Asserion.test_strings">
  101765. <stringProp name="-37823069">Select from existing customer addresses</stringProp>
  101766. <stringProp name="-13185722">Submit Order</stringProp>
  101767. <stringProp name="-209419315">Items Ordered</stringProp>
  101768. </collectionProp>
  101769. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  101770. <boolProp name="Assertion.assume_success">false</boolProp>
  101771. <intProp name="Assertion.test_type">2</intProp>
  101772. </ResponseAssertion>
  101773. <hashTree/>
  101774. </hashTree>
  101775. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Order" enabled="true">
  101776. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  101777. <collectionProp name="Arguments.arguments">
  101778. <elementProp name="form_key" elementType="HTTPArgument">
  101779. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101780. <stringProp name="Argument.name">form_key</stringProp>
  101781. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  101782. <stringProp name="Argument.metadata">=</stringProp>
  101783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101784. </elementProp>
  101785. <elementProp name="limit" elementType="HTTPArgument">
  101786. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101787. <stringProp name="Argument.name">limit</stringProp>
  101788. <stringProp name="Argument.value">20</stringProp>
  101789. <stringProp name="Argument.metadata">=</stringProp>
  101790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101791. </elementProp>
  101792. <elementProp name="entity_id" elementType="HTTPArgument">
  101793. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101794. <stringProp name="Argument.name">entity_id</stringProp>
  101795. <stringProp name="Argument.value"/>
  101796. <stringProp name="Argument.metadata">=</stringProp>
  101797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101798. </elementProp>
  101799. <elementProp name="name" elementType="HTTPArgument">
  101800. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101801. <stringProp name="Argument.name">name</stringProp>
  101802. <stringProp name="Argument.value"/>
  101803. <stringProp name="Argument.metadata">=</stringProp>
  101804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101805. </elementProp>
  101806. <elementProp name="email" elementType="HTTPArgument">
  101807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101808. <stringProp name="Argument.name">email</stringProp>
  101809. <stringProp name="Argument.value"/>
  101810. <stringProp name="Argument.metadata">=</stringProp>
  101811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101812. </elementProp>
  101813. <elementProp name="Telephone" elementType="HTTPArgument">
  101814. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101815. <stringProp name="Argument.name">Telephone</stringProp>
  101816. <stringProp name="Argument.value"/>
  101817. <stringProp name="Argument.metadata">=</stringProp>
  101818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101819. </elementProp>
  101820. <elementProp name="billing_postcode" elementType="HTTPArgument">
  101821. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101822. <stringProp name="Argument.name">billing_postcode</stringProp>
  101823. <stringProp name="Argument.value"/>
  101824. <stringProp name="Argument.metadata">=</stringProp>
  101825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101826. </elementProp>
  101827. <elementProp name="billing_country_id" elementType="HTTPArgument">
  101828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101829. <stringProp name="Argument.name">billing_country_id</stringProp>
  101830. <stringProp name="Argument.value"/>
  101831. <stringProp name="Argument.metadata">=</stringProp>
  101832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101833. </elementProp>
  101834. <elementProp name="billing_regione" elementType="HTTPArgument">
  101835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101836. <stringProp name="Argument.name">billing_regione</stringProp>
  101837. <stringProp name="Argument.value"/>
  101838. <stringProp name="Argument.metadata">=</stringProp>
  101839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101840. </elementProp>
  101841. <elementProp name="store_name" elementType="HTTPArgument">
  101842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101843. <stringProp name="Argument.name">store_name</stringProp>
  101844. <stringProp name="Argument.value"/>
  101845. <stringProp name="Argument.metadata">=</stringProp>
  101846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101847. </elementProp>
  101848. <elementProp name="page" elementType="HTTPArgument">
  101849. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101850. <stringProp name="Argument.name">page</stringProp>
  101851. <stringProp name="Argument.value">1</stringProp>
  101852. <stringProp name="Argument.metadata">=</stringProp>
  101853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101854. </elementProp>
  101855. <elementProp name="order[currency]" elementType="HTTPArgument">
  101856. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101857. <stringProp name="Argument.name">order[currency]</stringProp>
  101858. <stringProp name="Argument.value">USD</stringProp>
  101859. <stringProp name="Argument.metadata">=</stringProp>
  101860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101861. </elementProp>
  101862. <elementProp name="sku" elementType="HTTPArgument">
  101863. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101864. <stringProp name="Argument.name">sku</stringProp>
  101865. <stringProp name="Argument.value"/>
  101866. <stringProp name="Argument.metadata">=</stringProp>
  101867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101868. </elementProp>
  101869. <elementProp name="qty" elementType="HTTPArgument">
  101870. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101871. <stringProp name="Argument.name">qty</stringProp>
  101872. <stringProp name="Argument.value"/>
  101873. <stringProp name="Argument.metadata">=</stringProp>
  101874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101875. </elementProp>
  101876. <elementProp name="limit" elementType="HTTPArgument">
  101877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101878. <stringProp name="Argument.name">limit</stringProp>
  101879. <stringProp name="Argument.value">20</stringProp>
  101880. <stringProp name="Argument.metadata">=</stringProp>
  101881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101882. </elementProp>
  101883. <elementProp name="entity_id" elementType="HTTPArgument">
  101884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101885. <stringProp name="Argument.name">entity_id</stringProp>
  101886. <stringProp name="Argument.value"/>
  101887. <stringProp name="Argument.metadata">=</stringProp>
  101888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101889. </elementProp>
  101890. <elementProp name="name" elementType="HTTPArgument">
  101891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101892. <stringProp name="Argument.name">name</stringProp>
  101893. <stringProp name="Argument.value"/>
  101894. <stringProp name="Argument.metadata">=</stringProp>
  101895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101896. </elementProp>
  101897. <elementProp name="sku" elementType="HTTPArgument">
  101898. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101899. <stringProp name="Argument.name">sku</stringProp>
  101900. <stringProp name="Argument.value"/>
  101901. <stringProp name="Argument.metadata">=</stringProp>
  101902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101903. </elementProp>
  101904. <elementProp name="price[from]" elementType="HTTPArgument">
  101905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101906. <stringProp name="Argument.name">price[from]</stringProp>
  101907. <stringProp name="Argument.value"/>
  101908. <stringProp name="Argument.metadata">=</stringProp>
  101909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101910. </elementProp>
  101911. <elementProp name="price[to]" elementType="HTTPArgument">
  101912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101913. <stringProp name="Argument.name">price[to]</stringProp>
  101914. <stringProp name="Argument.value"/>
  101915. <stringProp name="Argument.metadata">=</stringProp>
  101916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101917. </elementProp>
  101918. <elementProp name="in_products" elementType="HTTPArgument">
  101919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101920. <stringProp name="Argument.name">in_products</stringProp>
  101921. <stringProp name="Argument.value"/>
  101922. <stringProp name="Argument.metadata">=</stringProp>
  101923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101924. </elementProp>
  101925. <elementProp name="page" elementType="HTTPArgument">
  101926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101927. <stringProp name="Argument.name">page</stringProp>
  101928. <stringProp name="Argument.value">1</stringProp>
  101929. <stringProp name="Argument.metadata">=</stringProp>
  101930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101931. </elementProp>
  101932. <elementProp name="coupon_code" elementType="HTTPArgument">
  101933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101934. <stringProp name="Argument.name">coupon_code</stringProp>
  101935. <stringProp name="Argument.value"/>
  101936. <stringProp name="Argument.metadata">=</stringProp>
  101937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101938. </elementProp>
  101939. <elementProp name="order[account][group_id]" elementType="HTTPArgument">
  101940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101941. <stringProp name="Argument.name">order[account][group_id]</stringProp>
  101942. <stringProp name="Argument.value">1</stringProp>
  101943. <stringProp name="Argument.metadata">=</stringProp>
  101944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101945. </elementProp>
  101946. <elementProp name="order[account][email]" elementType="HTTPArgument">
  101947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101948. <stringProp name="Argument.name">order[account][email]</stringProp>
  101949. <stringProp name="Argument.value">user_${customer_id}@example.com</stringProp>
  101950. <stringProp name="Argument.metadata">=</stringProp>
  101951. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101952. </elementProp>
  101953. <elementProp name="order[billing_address][customer_address_id]" elementType="HTTPArgument">
  101954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101955. <stringProp name="Argument.name">order[billing_address][customer_address_id]</stringProp>
  101956. <stringProp name="Argument.value"/>
  101957. <stringProp name="Argument.metadata">=</stringProp>
  101958. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101959. </elementProp>
  101960. <elementProp name="order[billing_address][prefix]" elementType="HTTPArgument">
  101961. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101962. <stringProp name="Argument.name">order[billing_address][prefix]</stringProp>
  101963. <stringProp name="Argument.value"/>
  101964. <stringProp name="Argument.metadata">=</stringProp>
  101965. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101966. </elementProp>
  101967. <elementProp name="order[billing_address][firstname]" elementType="HTTPArgument">
  101968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101969. <stringProp name="Argument.name">order[billing_address][firstname]</stringProp>
  101970. <stringProp name="Argument.value">Anthony</stringProp>
  101971. <stringProp name="Argument.metadata">=</stringProp>
  101972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101973. </elementProp>
  101974. <elementProp name="order[billing_address][middlename]" elementType="HTTPArgument">
  101975. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101976. <stringProp name="Argument.name">order[billing_address][middlename]</stringProp>
  101977. <stringProp name="Argument.value"/>
  101978. <stringProp name="Argument.metadata">=</stringProp>
  101979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101980. </elementProp>
  101981. <elementProp name="order[billing_address][lastname]" elementType="HTTPArgument">
  101982. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101983. <stringProp name="Argument.name">order[billing_address][lastname]</stringProp>
  101984. <stringProp name="Argument.value">Nealy</stringProp>
  101985. <stringProp name="Argument.metadata">=</stringProp>
  101986. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101987. </elementProp>
  101988. <elementProp name="order[billing_address][suffix]" elementType="HTTPArgument">
  101989. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101990. <stringProp name="Argument.name">order[billing_address][suffix]</stringProp>
  101991. <stringProp name="Argument.value"/>
  101992. <stringProp name="Argument.metadata">=</stringProp>
  101993. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  101994. </elementProp>
  101995. <elementProp name="order[billing_address][company]" elementType="HTTPArgument">
  101996. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  101997. <stringProp name="Argument.name">order[billing_address][company]</stringProp>
  101998. <stringProp name="Argument.value"/>
  101999. <stringProp name="Argument.metadata">=</stringProp>
  102000. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102001. </elementProp>
  102002. <elementProp name="order[billing_address][street][0]" elementType="HTTPArgument">
  102003. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102004. <stringProp name="Argument.name">order[billing_address][street][0]</stringProp>
  102005. <stringProp name="Argument.value">123 Freedom Blvd. #123</stringProp>
  102006. <stringProp name="Argument.metadata">=</stringProp>
  102007. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102008. </elementProp>
  102009. <elementProp name="order[billing_address][street][1]" elementType="HTTPArgument">
  102010. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102011. <stringProp name="Argument.name">order[billing_address][street][1]</stringProp>
  102012. <stringProp name="Argument.value"/>
  102013. <stringProp name="Argument.metadata">=</stringProp>
  102014. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102015. </elementProp>
  102016. <elementProp name="order[billing_address][city]" elementType="HTTPArgument">
  102017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102018. <stringProp name="Argument.name">order[billing_address][city]</stringProp>
  102019. <stringProp name="Argument.value">Fayetteville</stringProp>
  102020. <stringProp name="Argument.metadata">=</stringProp>
  102021. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102022. </elementProp>
  102023. <elementProp name="order[billing_address][country_id]" elementType="HTTPArgument">
  102024. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102025. <stringProp name="Argument.name">order[billing_address][country_id]</stringProp>
  102026. <stringProp name="Argument.value">US</stringProp>
  102027. <stringProp name="Argument.metadata">=</stringProp>
  102028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102029. </elementProp>
  102030. <elementProp name="order[billing_address][region]" elementType="HTTPArgument">
  102031. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102032. <stringProp name="Argument.name">order[billing_address][region]</stringProp>
  102033. <stringProp name="Argument.value"/>
  102034. <stringProp name="Argument.metadata">=</stringProp>
  102035. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102036. </elementProp>
  102037. <elementProp name="order[billing_address][region_id]" elementType="HTTPArgument">
  102038. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102039. <stringProp name="Argument.name">order[billing_address][region_id]</stringProp>
  102040. <stringProp name="Argument.value">${alabama_region_id}</stringProp>
  102041. <stringProp name="Argument.metadata">=</stringProp>
  102042. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102043. </elementProp>
  102044. <elementProp name="order[billing_address][postcode]" elementType="HTTPArgument">
  102045. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102046. <stringProp name="Argument.name">order[billing_address][postcode]</stringProp>
  102047. <stringProp name="Argument.value">123123</stringProp>
  102048. <stringProp name="Argument.metadata">=</stringProp>
  102049. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102050. </elementProp>
  102051. <elementProp name="order[billing_address][telephone]" elementType="HTTPArgument">
  102052. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102053. <stringProp name="Argument.name">order[billing_address][telephone]</stringProp>
  102054. <stringProp name="Argument.value">022-333-4455</stringProp>
  102055. <stringProp name="Argument.metadata">=</stringProp>
  102056. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102057. </elementProp>
  102058. <elementProp name="order[billing_address][fax]" elementType="HTTPArgument">
  102059. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102060. <stringProp name="Argument.name">order[billing_address][fax]</stringProp>
  102061. <stringProp name="Argument.value"/>
  102062. <stringProp name="Argument.metadata">=</stringProp>
  102063. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102064. </elementProp>
  102065. <elementProp name="order[billing_address][vat_id]" elementType="HTTPArgument">
  102066. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102067. <stringProp name="Argument.name">order[billing_address][vat_id]</stringProp>
  102068. <stringProp name="Argument.value"/>
  102069. <stringProp name="Argument.metadata">=</stringProp>
  102070. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102071. </elementProp>
  102072. <elementProp name="shipping_same_as_billing" elementType="HTTPArgument">
  102073. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102074. <stringProp name="Argument.name">shipping_same_as_billing</stringProp>
  102075. <stringProp name="Argument.value">on</stringProp>
  102076. <stringProp name="Argument.metadata">=</stringProp>
  102077. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102078. </elementProp>
  102079. <elementProp name="payment[method]" elementType="HTTPArgument">
  102080. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102081. <stringProp name="Argument.name">payment[method]</stringProp>
  102082. <stringProp name="Argument.value">checkmo</stringProp>
  102083. <stringProp name="Argument.metadata">=</stringProp>
  102084. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102085. </elementProp>
  102086. <elementProp name="order[shipping_method]" elementType="HTTPArgument">
  102087. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102088. <stringProp name="Argument.name">order[shipping_method]</stringProp>
  102089. <stringProp name="Argument.value">flatrate_flatrate</stringProp>
  102090. <stringProp name="Argument.metadata">=</stringProp>
  102091. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102092. </elementProp>
  102093. <elementProp name="order[comment][customer_note]" elementType="HTTPArgument">
  102094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102095. <stringProp name="Argument.name">order[comment][customer_note]</stringProp>
  102096. <stringProp name="Argument.value"/>
  102097. <stringProp name="Argument.metadata">=</stringProp>
  102098. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102099. </elementProp>
  102100. <elementProp name="order[comment][customer_note_notify]" elementType="HTTPArgument">
  102101. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102102. <stringProp name="Argument.name">order[comment][customer_note_notify]</stringProp>
  102103. <stringProp name="Argument.value">1</stringProp>
  102104. <stringProp name="Argument.metadata">=</stringProp>
  102105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102106. </elementProp>
  102107. <elementProp name="order[send_confirmation]" elementType="HTTPArgument">
  102108. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102109. <stringProp name="Argument.name">order[send_confirmation]</stringProp>
  102110. <stringProp name="Argument.value">1</stringProp>
  102111. <stringProp name="Argument.metadata">=</stringProp>
  102112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102113. </elementProp>
  102114. </collectionProp>
  102115. </elementProp>
  102116. <stringProp name="HTTPSampler.domain"/>
  102117. <stringProp name="HTTPSampler.port"/>
  102118. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102119. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102120. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102121. <stringProp name="HTTPSampler.contentEncoding"/>
  102122. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_create/save/</stringProp>
  102123. <stringProp name="HTTPSampler.method">POST</stringProp>
  102124. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102125. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102126. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102127. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  102128. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102129. <stringProp name="HTTPSampler.embedded_url_re"/>
  102130. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  102131. </HTTPSamplerProxy>
  102132. <hashTree>
  102133. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Id" enabled="true">
  102134. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  102135. <stringProp name="RegexExtractor.refname">order_id</stringProp>
  102136. <stringProp name="RegexExtractor.regex">${host}${base_path}${admin_path}/sales/order/index/order_id/(\d+)/</stringProp>
  102137. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102138. <stringProp name="RegexExtractor.default"/>
  102139. <stringProp name="RegexExtractor.match_number">1</stringProp>
  102140. </RegexExtractor>
  102141. <hashTree/>
  102142. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 1" enabled="true">
  102143. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  102144. <stringProp name="RegexExtractor.refname">order_item_1</stringProp>
  102145. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  102146. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102147. <stringProp name="RegexExtractor.default"/>
  102148. <stringProp name="RegexExtractor.match_number">1</stringProp>
  102149. </RegexExtractor>
  102150. <hashTree/>
  102151. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 2" enabled="true">
  102152. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  102153. <stringProp name="RegexExtractor.refname">order_item_2</stringProp>
  102154. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  102155. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102156. <stringProp name="RegexExtractor.default"/>
  102157. <stringProp name="RegexExtractor.match_number">2</stringProp>
  102158. </RegexExtractor>
  102159. <hashTree/>
  102160. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Order Item 3" enabled="true">
  102161. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  102162. <stringProp name="RegexExtractor.refname">order_item_3</stringProp>
  102163. <stringProp name="RegexExtractor.regex">order_item_(\d+)_title</stringProp>
  102164. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102165. <stringProp name="RegexExtractor.default"/>
  102166. <stringProp name="RegexExtractor.match_number">3</stringProp>
  102167. </RegexExtractor>
  102168. <hashTree/>
  102169. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Id" enabled="true">
  102170. <collectionProp name="Asserion.test_strings">
  102171. <stringProp name="89649215">^\d+$</stringProp>
  102172. </collectionProp>
  102173. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102174. <boolProp name="Assertion.assume_success">false</boolProp>
  102175. <intProp name="Assertion.test_type">1</intProp>
  102176. <stringProp name="Assertion.scope">variable</stringProp>
  102177. <stringProp name="Scope.variable">order_id</stringProp>
  102178. </ResponseAssertion>
  102179. <hashTree/>
  102180. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 1" enabled="true">
  102181. <collectionProp name="Asserion.test_strings">
  102182. <stringProp name="89649215">^\d+$</stringProp>
  102183. </collectionProp>
  102184. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102185. <boolProp name="Assertion.assume_success">false</boolProp>
  102186. <intProp name="Assertion.test_type">1</intProp>
  102187. <stringProp name="Assertion.scope">variable</stringProp>
  102188. <stringProp name="Scope.variable">order_item_1</stringProp>
  102189. </ResponseAssertion>
  102190. <hashTree/>
  102191. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 2" enabled="true">
  102192. <collectionProp name="Asserion.test_strings">
  102193. <stringProp name="89649215">^\d+$</stringProp>
  102194. </collectionProp>
  102195. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102196. <boolProp name="Assertion.assume_success">false</boolProp>
  102197. <intProp name="Assertion.test_type">1</intProp>
  102198. <stringProp name="Assertion.scope">variable</stringProp>
  102199. <stringProp name="Scope.variable">order_item_2</stringProp>
  102200. </ResponseAssertion>
  102201. <hashTree/>
  102202. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Item 3" enabled="true">
  102203. <collectionProp name="Asserion.test_strings">
  102204. <stringProp name="89649215">^\d+$</stringProp>
  102205. </collectionProp>
  102206. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102207. <boolProp name="Assertion.assume_success">false</boolProp>
  102208. <intProp name="Assertion.test_type">1</intProp>
  102209. <stringProp name="Assertion.scope">variable</stringProp>
  102210. <stringProp name="Scope.variable">order_item_3</stringProp>
  102211. </ResponseAssertion>
  102212. <hashTree/>
  102213. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Order Created" enabled="true">
  102214. <collectionProp name="Asserion.test_strings">
  102215. <stringProp name="563107624">You created the order.</stringProp>
  102216. </collectionProp>
  102217. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102218. <boolProp name="Assertion.assume_success">false</boolProp>
  102219. <intProp name="Assertion.test_type">2</intProp>
  102220. </ResponseAssertion>
  102221. <hashTree/>
  102222. </hashTree>
  102223. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Invoice" enabled="true">
  102224. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102225. <collectionProp name="Arguments.arguments">
  102226. <elementProp name="form_key" elementType="HTTPArgument">
  102227. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102228. <stringProp name="Argument.name">form_key</stringProp>
  102229. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  102230. <stringProp name="Argument.metadata">=</stringProp>
  102231. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102232. </elementProp>
  102233. <elementProp name="invoice[items][${order_item_1}]" elementType="HTTPArgument">
  102234. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102235. <stringProp name="Argument.name">invoice[items][${order_item_1}]</stringProp>
  102236. <stringProp name="Argument.value">1</stringProp>
  102237. <stringProp name="Argument.metadata">=</stringProp>
  102238. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102239. </elementProp>
  102240. <elementProp name="invoice[items][${order_item_2}]" elementType="HTTPArgument">
  102241. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102242. <stringProp name="Argument.name">invoice[items][${order_item_2}]</stringProp>
  102243. <stringProp name="Argument.value">1</stringProp>
  102244. <stringProp name="Argument.metadata">=</stringProp>
  102245. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102246. </elementProp>
  102247. <elementProp name="invoice[items][${order_item_3}]" elementType="HTTPArgument">
  102248. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102249. <stringProp name="Argument.name">invoice[items][${order_item_3}]</stringProp>
  102250. <stringProp name="Argument.value">1</stringProp>
  102251. <stringProp name="Argument.metadata">=</stringProp>
  102252. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102253. </elementProp>
  102254. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  102255. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102256. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  102257. <stringProp name="Argument.value"/>
  102258. <stringProp name="Argument.metadata">=</stringProp>
  102259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102260. </elementProp>
  102261. </collectionProp>
  102262. </elementProp>
  102263. <stringProp name="HTTPSampler.domain"/>
  102264. <stringProp name="HTTPSampler.port"/>
  102265. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102266. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102267. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102268. <stringProp name="HTTPSampler.contentEncoding"/>
  102269. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  102270. <stringProp name="HTTPSampler.method">POST</stringProp>
  102271. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102272. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102273. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102274. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102275. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102276. <stringProp name="HTTPSampler.embedded_url_re"/>
  102277. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  102278. </HTTPSamplerProxy>
  102279. <hashTree>
  102280. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Invoice Created" enabled="true">
  102281. <collectionProp name="Asserion.test_strings">
  102282. <stringProp name="-1878312078">The invoice has been created.</stringProp>
  102283. </collectionProp>
  102284. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102285. <boolProp name="Assertion.assume_success">false</boolProp>
  102286. <intProp name="Assertion.test_type">2</intProp>
  102287. </ResponseAssertion>
  102288. <hashTree/>
  102289. </hashTree>
  102290. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save Shipment" enabled="true">
  102291. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102292. <collectionProp name="Arguments.arguments">
  102293. <elementProp name="form_key" elementType="HTTPArgument">
  102294. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102295. <stringProp name="Argument.name">form_key</stringProp>
  102296. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  102297. <stringProp name="Argument.metadata">=</stringProp>
  102298. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102299. </elementProp>
  102300. <elementProp name="shipment[items][${order_item_1}]" elementType="HTTPArgument">
  102301. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102302. <stringProp name="Argument.name">shipment[items][${order_item_1}]</stringProp>
  102303. <stringProp name="Argument.value">1</stringProp>
  102304. <stringProp name="Argument.metadata">=</stringProp>
  102305. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102306. </elementProp>
  102307. <elementProp name="shipment[items][${order_item_2}]" elementType="HTTPArgument">
  102308. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102309. <stringProp name="Argument.name">shipment[items][${order_item_2}]</stringProp>
  102310. <stringProp name="Argument.value">1</stringProp>
  102311. <stringProp name="Argument.metadata">=</stringProp>
  102312. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102313. </elementProp>
  102314. <elementProp name="shipment[items][${order_item_3}]" elementType="HTTPArgument">
  102315. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102316. <stringProp name="Argument.name">shipment[items][${order_item_3}]</stringProp>
  102317. <stringProp name="Argument.value">1</stringProp>
  102318. <stringProp name="Argument.metadata">=</stringProp>
  102319. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102320. </elementProp>
  102321. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  102322. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102323. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  102324. <stringProp name="Argument.value"/>
  102325. <stringProp name="Argument.metadata">=</stringProp>
  102326. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102327. </elementProp>
  102328. </collectionProp>
  102329. </elementProp>
  102330. <stringProp name="HTTPSampler.domain"/>
  102331. <stringProp name="HTTPSampler.port"/>
  102332. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102333. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102334. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102335. <stringProp name="HTTPSampler.contentEncoding"/>
  102336. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  102337. <stringProp name="HTTPSampler.method">POST</stringProp>
  102338. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102339. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102340. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102341. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102342. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102343. <stringProp name="HTTPSampler.embedded_url_re"/>
  102344. <stringProp name="TestPlan.comments">Detected the start of a redirect chain</stringProp>
  102345. </HTTPSamplerProxy>
  102346. <hashTree>
  102347. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert Shipment Created" enabled="true">
  102348. <collectionProp name="Asserion.test_strings">
  102349. <stringProp name="-348539683">The shipment has been created.</stringProp>
  102350. </collectionProp>
  102351. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102352. <boolProp name="Assertion.assume_success">false</boolProp>
  102353. <intProp name="Assertion.test_type">2</intProp>
  102354. </ResponseAssertion>
  102355. <hashTree/>
  102356. </hashTree>
  102357. </hashTree>
  102358. </hashTree>
  102359. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  102360. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102361. <collectionProp name="Arguments.arguments"/>
  102362. </elementProp>
  102363. <stringProp name="HTTPSampler.domain"/>
  102364. <stringProp name="HTTPSampler.port"/>
  102365. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102366. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102367. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102368. <stringProp name="HTTPSampler.contentEncoding"/>
  102369. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  102370. <stringProp name="HTTPSampler.method">GET</stringProp>
  102371. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102372. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102373. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102374. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102375. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102376. <stringProp name="HTTPSampler.embedded_url_re"/>
  102377. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  102378. <hashTree>
  102379. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  102380. <boolProp name="resetInterpreter">false</boolProp>
  102381. <stringProp name="parameters"/>
  102382. <stringProp name="filename"/>
  102383. <stringProp name="script">
  102384. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  102385. if (adminUsersDistribution == 1) {
  102386. adminUserList = props.get("adminUserList");
  102387. adminUserList.add(vars.get("admin_user"));
  102388. }
  102389. </stringProp>
  102390. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  102391. <hashTree/>
  102392. </hashTree>
  102393. </hashTree>
  102394. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Category Management" enabled="true">
  102395. <intProp name="ThroughputController.style">1</intProp>
  102396. <boolProp name="ThroughputController.perThread">false</boolProp>
  102397. <intProp name="ThroughputController.maxThroughput">1</intProp>
  102398. <stringProp name="ThroughputController.percentThroughput">${cAdminCategoryManagementPercentage}</stringProp>
  102399. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  102400. <hashTree>
  102401. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  102402. <stringProp name="script">
  102403. var tmpLabel = vars.get("testLabel")
  102404. if (tmpLabel) {
  102405. var testLabel = " (" + tmpLabel + ")"
  102406. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  102407. if (sampler.getName().indexOf(testLabel) == -1) {
  102408. sampler.setName(sampler.getName() + testLabel);
  102409. }
  102410. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  102411. sampler.setName("SetUp - " + sampler.getName());
  102412. }
  102413. } else {
  102414. testLabel = ""
  102415. }
  102416. </stringProp>
  102417. <stringProp name="scriptLanguage">javascript</stringProp>
  102418. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  102419. <hashTree/>
  102420. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  102421. <stringProp name="BeanShellSampler.query">
  102422. vars.put("testLabel", "[REST API C] Admin Category Management");
  102423. </stringProp>
  102424. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  102425. </BeanShellSampler>
  102426. <hashTree/>
  102427. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  102428. <stringProp name="script">
  102429. function getFormKeyFromResponse()
  102430. {
  102431. var url = prev.getUrlAsString(),
  102432. responseCode = prev.getResponseCode(),
  102433. formKey = null;
  102434. searchPattern = /var FORM_KEY = '(.+)'/;
  102435. if (responseCode == "200" &amp;&amp; url) {
  102436. response = prev.getResponseDataAsString();
  102437. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  102438. }
  102439. return formKey;
  102440. }
  102441. formKey = vars.get("form_key_storage");
  102442. currentFormKey = getFormKeyFromResponse();
  102443. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  102444. vars.put("form_key_storage", currentFormKey);
  102445. }
  102446. </stringProp>
  102447. <stringProp name="scriptLanguage">javascript</stringProp>
  102448. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  102449. <hashTree/>
  102450. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  102451. <stringProp name="script">
  102452. formKey = vars.get("form_key_storage");
  102453. if (formKey
  102454. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  102455. &amp;&amp; sampler.getMethod() == "POST")
  102456. {
  102457. arguments = sampler.getArguments();
  102458. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  102459. {
  102460. argument = arguments.getArgument(i);
  102461. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  102462. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  102463. argument.setValue(formKey);
  102464. }
  102465. }
  102466. }
  102467. </stringProp>
  102468. <stringProp name="scriptLanguage">javascript</stringProp>
  102469. </JSR223PreProcessor>
  102470. <hashTree/>
  102471. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  102472. <collectionProp name="CookieManager.cookies"/>
  102473. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  102474. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  102475. <hashTree/>
  102476. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  102477. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  102478. </GenericController>
  102479. <hashTree>
  102480. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  102481. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  102482. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  102483. <hashTree>
  102484. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  102485. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  102486. <stringProp name="BeanShellSampler.query">
  102487. adminUser = "none";
  102488. adminUserList = props.get("adminUserList");
  102489. adminUserListIterator = props.get("adminUserListIterator");
  102490. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  102491. if (adminUsersDistribution == 1) {
  102492. adminUser = adminUserList.poll();
  102493. } else {
  102494. if (!adminUserListIterator.hasNext()) {
  102495. adminUserListIterator = adminUserList.descendingIterator();
  102496. }
  102497. adminUser = adminUserListIterator.next();
  102498. }
  102499. if (adminUser == "none") {
  102500. SampleResult.setResponseMessage("adminUser list is empty");
  102501. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  102502. IsSuccess=false;
  102503. SampleResult.setSuccessful(false);
  102504. SampleResult.setStopThread(true);
  102505. }
  102506. vars.put("admin_user", adminUser);
  102507. </stringProp>
  102508. <stringProp name="BeanShellSampler.filename"/>
  102509. <stringProp name="BeanShellSampler.parameters"/>
  102510. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  102511. </BeanShellSampler>
  102512. <hashTree/>
  102513. </hashTree>
  102514. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  102515. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102516. <collectionProp name="Arguments.arguments"/>
  102517. </elementProp>
  102518. <stringProp name="HTTPSampler.domain"/>
  102519. <stringProp name="HTTPSampler.port"/>
  102520. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102521. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102522. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102523. <stringProp name="HTTPSampler.contentEncoding"/>
  102524. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  102525. <stringProp name="HTTPSampler.method">GET</stringProp>
  102526. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102527. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102528. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102529. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102530. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102531. <stringProp name="HTTPSampler.embedded_url_re"/>
  102532. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  102533. <hashTree>
  102534. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  102535. <collectionProp name="Asserion.test_strings">
  102536. <stringProp name="-1397214398">Welcome</stringProp>
  102537. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  102538. </collectionProp>
  102539. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102540. <boolProp name="Assertion.assume_success">false</boolProp>
  102541. <intProp name="Assertion.test_type">2</intProp>
  102542. </ResponseAssertion>
  102543. <hashTree/>
  102544. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  102545. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  102546. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  102547. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  102548. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102549. <stringProp name="RegexExtractor.default"/>
  102550. <stringProp name="RegexExtractor.match_number">1</stringProp>
  102551. </RegexExtractor>
  102552. <hashTree/>
  102553. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  102554. <collectionProp name="Asserion.test_strings">
  102555. <stringProp name="2845929">^.+$</stringProp>
  102556. </collectionProp>
  102557. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102558. <boolProp name="Assertion.assume_success">false</boolProp>
  102559. <intProp name="Assertion.test_type">1</intProp>
  102560. <stringProp name="Assertion.scope">variable</stringProp>
  102561. <stringProp name="Scope.variable">admin_form_key</stringProp>
  102562. </ResponseAssertion>
  102563. <hashTree/>
  102564. </hashTree>
  102565. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  102566. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102567. <collectionProp name="Arguments.arguments">
  102568. <elementProp name="dummy" elementType="HTTPArgument">
  102569. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102570. <stringProp name="Argument.value"/>
  102571. <stringProp name="Argument.metadata">=</stringProp>
  102572. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102573. <stringProp name="Argument.name">dummy</stringProp>
  102574. </elementProp>
  102575. <elementProp name="form_key" elementType="HTTPArgument">
  102576. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102577. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  102578. <stringProp name="Argument.metadata">=</stringProp>
  102579. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102580. <stringProp name="Argument.name">form_key</stringProp>
  102581. </elementProp>
  102582. <elementProp name="login[password]" elementType="HTTPArgument">
  102583. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102584. <stringProp name="Argument.value">${admin_password}</stringProp>
  102585. <stringProp name="Argument.metadata">=</stringProp>
  102586. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102587. <stringProp name="Argument.name">login[password]</stringProp>
  102588. </elementProp>
  102589. <elementProp name="login[username]" elementType="HTTPArgument">
  102590. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102591. <stringProp name="Argument.value">${admin_user}</stringProp>
  102592. <stringProp name="Argument.metadata">=</stringProp>
  102593. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102594. <stringProp name="Argument.name">login[username]</stringProp>
  102595. </elementProp>
  102596. </collectionProp>
  102597. </elementProp>
  102598. <stringProp name="HTTPSampler.domain"/>
  102599. <stringProp name="HTTPSampler.port"/>
  102600. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102601. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102602. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102603. <stringProp name="HTTPSampler.contentEncoding"/>
  102604. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  102605. <stringProp name="HTTPSampler.method">POST</stringProp>
  102606. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102607. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102608. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102609. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102610. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  102611. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102612. <stringProp name="HTTPSampler.embedded_url_re"/>
  102613. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  102614. </HTTPSamplerProxy>
  102615. <hashTree>
  102616. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  102617. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  102618. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  102619. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  102620. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102621. <stringProp name="RegexExtractor.default"/>
  102622. <stringProp name="RegexExtractor.match_number">1</stringProp>
  102623. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  102624. <hashTree/>
  102625. </hashTree>
  102626. </hashTree>
  102627. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  102628. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  102629. </GenericController>
  102630. <hashTree>
  102631. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Category Management" enabled="true">
  102632. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_category_management/admin_category_management.jmx</stringProp>
  102633. </TestFragmentController>
  102634. <hashTree>
  102635. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Set Arguments" enabled="true">
  102636. <stringProp name="scriptLanguage">javascript</stringProp>
  102637. <stringProp name="parameters"/>
  102638. <stringProp name="filename"/>
  102639. <stringProp name="cacheKey"/>
  102640. <stringProp name="script">random = new java.util.Random();
  102641. if (${seedForRandom} &gt; 0) {
  102642. random.setSeed(${seedForRandom} + ${__threadNum});
  102643. }
  102644. /**
  102645. * Get unique ids for fix concurrent category saving
  102646. */
  102647. function getNextProductNumber(i) {
  102648. number = productsVariationsSize * ${__threadNum} - i;
  102649. if (number &gt;= productsSize) {
  102650. log.info("${testLabel}: capacity of product list is not enough for support all ${adminPoolUsers} threads");
  102651. return random.nextInt(productsSize);
  102652. }
  102653. return productsVariationsSize * ${__threadNum} - i;
  102654. }
  102655. var productsVariationsSize = 5,
  102656. productsSize = props.get("simple_products_list_for_edit").size();
  102657. for (i = 1; i&lt;= productsVariationsSize; i++) {
  102658. var productVariablePrefix = "simple_product_" + i + "_";
  102659. number = getNextProductNumber(i);
  102660. simpleList = props.get("simple_products_list_for_edit").get(number);
  102661. vars.put(productVariablePrefix + "url_key", simpleList.get("url_key"));
  102662. vars.put(productVariablePrefix + "id", simpleList.get("id"));
  102663. vars.put(productVariablePrefix + "name", simpleList.get("title"));
  102664. }
  102665. categoryIndex = random.nextInt(props.get("admin_category_ids_list").size());
  102666. vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex));
  102667. do {
  102668. categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size());
  102669. } while(categoryIndex == categoryIndexNew);
  102670. vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew));</stringProp>
  102671. </JSR223Sampler>
  102672. <hashTree/>
  102673. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  102674. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102675. <collectionProp name="Arguments.arguments"/>
  102676. </elementProp>
  102677. <stringProp name="HTTPSampler.domain"/>
  102678. <stringProp name="HTTPSampler.port"/>
  102679. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102680. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102681. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102682. <stringProp name="HTTPSampler.contentEncoding"/>
  102683. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/</stringProp>
  102684. <stringProp name="HTTPSampler.method">GET</stringProp>
  102685. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102686. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102687. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102688. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102689. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102690. <stringProp name="HTTPSampler.embedded_url_re"/>
  102691. </HTTPSamplerProxy>
  102692. <hashTree>
  102693. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  102694. <collectionProp name="HeaderManager.headers">
  102695. <elementProp name="Accept-Language" elementType="Header">
  102696. <stringProp name="Header.name">Accept-Language</stringProp>
  102697. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  102698. </elementProp>
  102699. <elementProp name="Accept" elementType="Header">
  102700. <stringProp name="Header.name">Accept</stringProp>
  102701. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  102702. </elementProp>
  102703. <elementProp name="User-Agent" elementType="Header">
  102704. <stringProp name="Header.name">User-Agent</stringProp>
  102705. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  102706. </elementProp>
  102707. <elementProp name="Accept-Encoding" elementType="Header">
  102708. <stringProp name="Header.name">Accept-Encoding</stringProp>
  102709. <stringProp name="Header.value">gzip, deflate</stringProp>
  102710. </elementProp>
  102711. </collectionProp>
  102712. </HeaderManager>
  102713. <hashTree/>
  102714. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  102715. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  102716. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  102717. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  102718. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102719. <stringProp name="RegexExtractor.default"/>
  102720. <stringProp name="RegexExtractor.match_number">1</stringProp>
  102721. </RegexExtractor>
  102722. <hashTree/>
  102723. </hashTree>
  102724. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select parent category" enabled="true">
  102725. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102726. <collectionProp name="Arguments.arguments"/>
  102727. </elementProp>
  102728. <stringProp name="HTTPSampler.domain"/>
  102729. <stringProp name="HTTPSampler.port"/>
  102730. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102731. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102732. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102733. <stringProp name="HTTPSampler.contentEncoding"/>
  102734. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/</stringProp>
  102735. <stringProp name="HTTPSampler.method">GET</stringProp>
  102736. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102737. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102738. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102739. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102740. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102741. <stringProp name="HTTPSampler.embedded_url_re"/>
  102742. </HTTPSamplerProxy>
  102743. <hashTree>
  102744. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  102745. <collectionProp name="HeaderManager.headers">
  102746. <elementProp name="Accept-Language" elementType="Header">
  102747. <stringProp name="Header.name">Accept-Language</stringProp>
  102748. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  102749. </elementProp>
  102750. <elementProp name="Accept" elementType="Header">
  102751. <stringProp name="Header.name">Accept</stringProp>
  102752. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  102753. </elementProp>
  102754. <elementProp name="User-Agent" elementType="Header">
  102755. <stringProp name="Header.name">User-Agent</stringProp>
  102756. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  102757. </elementProp>
  102758. <elementProp name="Accept-Encoding" elementType="Header">
  102759. <stringProp name="Header.name">Accept-Encoding</stringProp>
  102760. <stringProp name="Header.value">gzip, deflate</stringProp>
  102761. </elementProp>
  102762. </collectionProp>
  102763. </HeaderManager>
  102764. <hashTree/>
  102765. </hashTree>
  102766. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open new category page" enabled="true">
  102767. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102768. <collectionProp name="Arguments.arguments"/>
  102769. </elementProp>
  102770. <stringProp name="HTTPSampler.domain"/>
  102771. <stringProp name="HTTPSampler.port"/>
  102772. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102773. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102774. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102775. <stringProp name="HTTPSampler.contentEncoding"/>
  102776. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id}</stringProp>
  102777. <stringProp name="HTTPSampler.method">GET</stringProp>
  102778. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102779. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102780. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102781. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102782. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102783. <stringProp name="HTTPSampler.embedded_url_re"/>
  102784. </HTTPSamplerProxy>
  102785. <hashTree>
  102786. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  102787. <collectionProp name="Asserion.test_strings">
  102788. <stringProp name="-1903925024">&lt;title&gt;New Category</stringProp>
  102789. </collectionProp>
  102790. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  102791. <boolProp name="Assertion.assume_success">false</boolProp>
  102792. <intProp name="Assertion.test_type">2</intProp>
  102793. </ResponseAssertion>
  102794. <hashTree/>
  102795. </hashTree>
  102796. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create category" enabled="true">
  102797. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  102798. <collectionProp name="Arguments.arguments">
  102799. <elementProp name="id" elementType="HTTPArgument">
  102800. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102801. <stringProp name="Argument.value"/>
  102802. <stringProp name="Argument.metadata">=</stringProp>
  102803. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102804. <stringProp name="Argument.name">id</stringProp>
  102805. </elementProp>
  102806. <elementProp name="parent" elementType="HTTPArgument">
  102807. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102808. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  102809. <stringProp name="Argument.metadata">=</stringProp>
  102810. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102811. <stringProp name="Argument.name">parent</stringProp>
  102812. </elementProp>
  102813. <elementProp name="path" elementType="HTTPArgument">
  102814. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102815. <stringProp name="Argument.value"/>
  102816. <stringProp name="Argument.metadata">=</stringProp>
  102817. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102818. <stringProp name="Argument.name">path</stringProp>
  102819. </elementProp>
  102820. <elementProp name="store_id" elementType="HTTPArgument">
  102821. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102822. <stringProp name="Argument.value"/>
  102823. <stringProp name="Argument.metadata">=</stringProp>
  102824. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102825. <stringProp name="Argument.name">store_id</stringProp>
  102826. </elementProp>
  102827. <elementProp name="is_active" elementType="HTTPArgument">
  102828. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102829. <stringProp name="Argument.value">0</stringProp>
  102830. <stringProp name="Argument.metadata">=</stringProp>
  102831. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102832. <stringProp name="Argument.name">is_active</stringProp>
  102833. </elementProp>
  102834. <elementProp name="include_in_menu" elementType="HTTPArgument">
  102835. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102836. <stringProp name="Argument.value">0</stringProp>
  102837. <stringProp name="Argument.metadata">=</stringProp>
  102838. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102839. <stringProp name="Argument.name">include_in_menu</stringProp>
  102840. </elementProp>
  102841. <elementProp name="is_anchor" elementType="HTTPArgument">
  102842. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102843. <stringProp name="Argument.value">1</stringProp>
  102844. <stringProp name="Argument.metadata">=</stringProp>
  102845. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102846. <stringProp name="Argument.name">is_anchor</stringProp>
  102847. </elementProp>
  102848. <elementProp name="use_config[available_sort_by]" elementType="HTTPArgument">
  102849. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102850. <stringProp name="Argument.value">true</stringProp>
  102851. <stringProp name="Argument.metadata">=</stringProp>
  102852. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102853. <stringProp name="Argument.name">use_config[available_sort_by]</stringProp>
  102854. </elementProp>
  102855. <elementProp name="use_config[default_sort_by]" elementType="HTTPArgument">
  102856. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102857. <stringProp name="Argument.value">true</stringProp>
  102858. <stringProp name="Argument.metadata">=</stringProp>
  102859. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102860. <stringProp name="Argument.name">use_config[default_sort_by]</stringProp>
  102861. </elementProp>
  102862. <elementProp name="use_config[filter_price_range]" elementType="HTTPArgument">
  102863. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102864. <stringProp name="Argument.value">true</stringProp>
  102865. <stringProp name="Argument.metadata">=</stringProp>
  102866. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102867. <stringProp name="Argument.name">use_config[filter_price_range]</stringProp>
  102868. </elementProp>
  102869. <elementProp name="use_default[url_key]" elementType="HTTPArgument">
  102870. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102871. <stringProp name="Argument.value">false</stringProp>
  102872. <stringProp name="Argument.metadata">=</stringProp>
  102873. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102874. <stringProp name="Argument.name">use_default[url_key]</stringProp>
  102875. </elementProp>
  102876. <elementProp name="url_key_create_redirect" elementType="HTTPArgument">
  102877. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102878. <stringProp name="Argument.value">0</stringProp>
  102879. <stringProp name="Argument.metadata">=</stringProp>
  102880. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102881. <stringProp name="Argument.name">url_key_create_redirect</stringProp>
  102882. </elementProp>
  102883. <elementProp name="custom_use_parent_settings" elementType="HTTPArgument">
  102884. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102885. <stringProp name="Argument.value">0</stringProp>
  102886. <stringProp name="Argument.metadata">=</stringProp>
  102887. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102888. <stringProp name="Argument.name">custom_use_parent_settings</stringProp>
  102889. </elementProp>
  102890. <elementProp name="custom_apply_to_products" elementType="HTTPArgument">
  102891. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102892. <stringProp name="Argument.value">0</stringProp>
  102893. <stringProp name="Argument.metadata">=</stringProp>
  102894. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102895. <stringProp name="Argument.name">custom_apply_to_products</stringProp>
  102896. </elementProp>
  102897. <elementProp name="name" elementType="HTTPArgument">
  102898. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102899. <stringProp name="Argument.value">Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  102900. <stringProp name="Argument.metadata">=</stringProp>
  102901. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102902. <stringProp name="Argument.name">name</stringProp>
  102903. </elementProp>
  102904. <elementProp name="url_key" elementType="HTTPArgument">
  102905. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102906. <stringProp name="Argument.value">admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  102907. <stringProp name="Argument.metadata">=</stringProp>
  102908. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102909. <stringProp name="Argument.name">url_key</stringProp>
  102910. </elementProp>
  102911. <elementProp name="meta_title" elementType="HTTPArgument">
  102912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102913. <stringProp name="Argument.value"/>
  102914. <stringProp name="Argument.metadata">=</stringProp>
  102915. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102916. <stringProp name="Argument.name">meta_title</stringProp>
  102917. </elementProp>
  102918. <elementProp name="description" elementType="HTTPArgument">
  102919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102920. <stringProp name="Argument.value"/>
  102921. <stringProp name="Argument.metadata">=</stringProp>
  102922. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102923. <stringProp name="Argument.name">description</stringProp>
  102924. </elementProp>
  102925. <elementProp name="display_mode" elementType="HTTPArgument">
  102926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102927. <stringProp name="Argument.value">PRODUCTS</stringProp>
  102928. <stringProp name="Argument.metadata">=</stringProp>
  102929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102930. <stringProp name="Argument.name">display_mode</stringProp>
  102931. </elementProp>
  102932. <elementProp name="default_sort_by" elementType="HTTPArgument">
  102933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102934. <stringProp name="Argument.value">position</stringProp>
  102935. <stringProp name="Argument.metadata">=</stringProp>
  102936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102937. <stringProp name="Argument.name">default_sort_by</stringProp>
  102938. </elementProp>
  102939. <elementProp name="meta_keywords" elementType="HTTPArgument">
  102940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102941. <stringProp name="Argument.value"/>
  102942. <stringProp name="Argument.metadata">=</stringProp>
  102943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102944. <stringProp name="Argument.name">meta_keywords</stringProp>
  102945. </elementProp>
  102946. <elementProp name="meta_description" elementType="HTTPArgument">
  102947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102948. <stringProp name="Argument.value"/>
  102949. <stringProp name="Argument.metadata">=</stringProp>
  102950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102951. <stringProp name="Argument.name">meta_description</stringProp>
  102952. </elementProp>
  102953. <elementProp name="custom_layout_update" elementType="HTTPArgument">
  102954. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102955. <stringProp name="Argument.value"/>
  102956. <stringProp name="Argument.metadata">=</stringProp>
  102957. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102958. <stringProp name="Argument.name">custom_layout_update</stringProp>
  102959. </elementProp>
  102960. <elementProp name="category_products" elementType="HTTPArgument">
  102961. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  102962. <stringProp name="Argument.value">{"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""}</stringProp>
  102963. <stringProp name="Argument.metadata">=</stringProp>
  102964. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102965. <stringProp name="Argument.name">category_products</stringProp>
  102966. </elementProp>
  102967. <elementProp name="form_key" elementType="HTTPArgument">
  102968. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  102969. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  102970. <stringProp name="Argument.metadata">=</stringProp>
  102971. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  102972. <stringProp name="Argument.name">form_key</stringProp>
  102973. </elementProp>
  102974. </collectionProp>
  102975. </elementProp>
  102976. <stringProp name="HTTPSampler.domain"/>
  102977. <stringProp name="HTTPSampler.port"/>
  102978. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  102979. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  102980. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  102981. <stringProp name="HTTPSampler.contentEncoding"/>
  102982. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/save/</stringProp>
  102983. <stringProp name="HTTPSampler.method">POST</stringProp>
  102984. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  102985. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  102986. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  102987. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  102988. <boolProp name="HTTPSampler.monitor">false</boolProp>
  102989. <stringProp name="HTTPSampler.embedded_url_re"/>
  102990. </HTTPSamplerProxy>
  102991. <hashTree>
  102992. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category id" enabled="true">
  102993. <stringProp name="RegexExtractor.useHeaders">URL</stringProp>
  102994. <stringProp name="RegexExtractor.refname">admin_category_id</stringProp>
  102995. <stringProp name="RegexExtractor.regex">/catalog/category/edit/id/(\d+)/</stringProp>
  102996. <stringProp name="RegexExtractor.template">$1$</stringProp>
  102997. <stringProp name="RegexExtractor.default"/>
  102998. <stringProp name="RegexExtractor.match_number">1</stringProp>
  102999. </RegexExtractor>
  103000. <hashTree/>
  103001. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category id" enabled="true">
  103002. <collectionProp name="Asserion.test_strings">
  103003. <stringProp name="89649215">^\d+$</stringProp>
  103004. </collectionProp>
  103005. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103006. <boolProp name="Assertion.assume_success">false</boolProp>
  103007. <intProp name="Assertion.test_type">1</intProp>
  103008. <stringProp name="Assertion.scope">variable</stringProp>
  103009. <stringProp name="Scope.variable">admin_category_id</stringProp>
  103010. </ResponseAssertion>
  103011. <hashTree/>
  103012. </hashTree>
  103013. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select created category" enabled="true">
  103014. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103015. <collectionProp name="Arguments.arguments"/>
  103016. </elementProp>
  103017. <stringProp name="HTTPSampler.domain"/>
  103018. <stringProp name="HTTPSampler.port"/>
  103019. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103020. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103021. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103022. <stringProp name="HTTPSampler.contentEncoding"/>
  103023. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/</stringProp>
  103024. <stringProp name="HTTPSampler.method">GET</stringProp>
  103025. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103026. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103027. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103028. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103029. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103030. <stringProp name="HTTPSampler.embedded_url_re"/>
  103031. </HTTPSamplerProxy>
  103032. <hashTree>
  103033. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  103034. <collectionProp name="HeaderManager.headers">
  103035. <elementProp name="Accept-Language" elementType="Header">
  103036. <stringProp name="Header.name">Accept-Language</stringProp>
  103037. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  103038. </elementProp>
  103039. <elementProp name="Accept" elementType="Header">
  103040. <stringProp name="Header.name">Accept</stringProp>
  103041. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  103042. </elementProp>
  103043. <elementProp name="User-Agent" elementType="Header">
  103044. <stringProp name="Header.name">User-Agent</stringProp>
  103045. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  103046. </elementProp>
  103047. <elementProp name="Accept-Encoding" elementType="Header">
  103048. <stringProp name="Header.name">Accept-Encoding</stringProp>
  103049. <stringProp name="Header.value">gzip, deflate</stringProp>
  103050. </elementProp>
  103051. </collectionProp>
  103052. </HeaderManager>
  103053. <hashTree/>
  103054. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category row id" enabled="true">
  103055. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103056. <stringProp name="RegexExtractor.refname">admin_category_entity_id</stringProp>
  103057. <stringProp name="RegexExtractor.regex">"entity_id":"([^"]+)"</stringProp>
  103058. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103059. <stringProp name="RegexExtractor.default"/>
  103060. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103061. </RegexExtractor>
  103062. <hashTree/>
  103063. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category attribute set id" enabled="true">
  103064. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103065. <stringProp name="RegexExtractor.refname">admin_category_attribute_set_id</stringProp>
  103066. <stringProp name="RegexExtractor.regex">"attribute_set_id":"([^"]+)"</stringProp>
  103067. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103068. <stringProp name="RegexExtractor.default"/>
  103069. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103070. </RegexExtractor>
  103071. <hashTree/>
  103072. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category parent Id" enabled="true">
  103073. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103074. <stringProp name="RegexExtractor.refname">admin_category_parent_id</stringProp>
  103075. <stringProp name="RegexExtractor.regex">"parent_id":"([^"]+)"</stringProp>
  103076. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103077. <stringProp name="RegexExtractor.default"/>
  103078. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103079. </RegexExtractor>
  103080. <hashTree/>
  103081. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category created at" enabled="true">
  103082. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103083. <stringProp name="RegexExtractor.refname">admin_category_created_at</stringProp>
  103084. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  103085. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103086. <stringProp name="RegexExtractor.default"/>
  103087. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103088. </RegexExtractor>
  103089. <hashTree/>
  103090. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category updated at" enabled="true">
  103091. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103092. <stringProp name="RegexExtractor.refname">admin_category_updated_at</stringProp>
  103093. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  103094. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103095. <stringProp name="RegexExtractor.default"/>
  103096. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103097. </RegexExtractor>
  103098. <hashTree/>
  103099. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category path" enabled="true">
  103100. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103101. <stringProp name="RegexExtractor.refname">admin_category_path</stringProp>
  103102. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"path":"([^\"]+)"</stringProp>
  103103. <stringProp name="RegexExtractor.template">$2$</stringProp>
  103104. <stringProp name="RegexExtractor.default"/>
  103105. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103106. </RegexExtractor>
  103107. <hashTree/>
  103108. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category level" enabled="true">
  103109. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103110. <stringProp name="RegexExtractor.refname">admin_category_level</stringProp>
  103111. <stringProp name="RegexExtractor.regex">"level":"([^"]+)"</stringProp>
  103112. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103113. <stringProp name="RegexExtractor.default"/>
  103114. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103115. </RegexExtractor>
  103116. <hashTree/>
  103117. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category name" enabled="true">
  103118. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103119. <stringProp name="RegexExtractor.refname">admin_category_name</stringProp>
  103120. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"name":"([^"]+)"</stringProp>
  103121. <stringProp name="RegexExtractor.template">$2$</stringProp>
  103122. <stringProp name="RegexExtractor.default"/>
  103123. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103124. </RegexExtractor>
  103125. <hashTree/>
  103126. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url key" enabled="true">
  103127. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103128. <stringProp name="RegexExtractor.refname">admin_category_url_key</stringProp>
  103129. <stringProp name="RegexExtractor.regex">"url_key":"([^"]+)"</stringProp>
  103130. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103131. <stringProp name="RegexExtractor.default"/>
  103132. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103133. </RegexExtractor>
  103134. <hashTree/>
  103135. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url path" enabled="true">
  103136. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103137. <stringProp name="RegexExtractor.refname">admin_category_url_path</stringProp>
  103138. <stringProp name="RegexExtractor.regex">"url_path":"([^"]+)"</stringProp>
  103139. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103140. <stringProp name="RegexExtractor.default"/>
  103141. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103142. </RegexExtractor>
  103143. <hashTree/>
  103144. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category row id" enabled="true">
  103145. <collectionProp name="Asserion.test_strings">
  103146. <stringProp name="89649215">^\d+$</stringProp>
  103147. </collectionProp>
  103148. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103149. <boolProp name="Assertion.assume_success">false</boolProp>
  103150. <intProp name="Assertion.test_type">1</intProp>
  103151. <stringProp name="Assertion.scope">variable</stringProp>
  103152. <stringProp name="Scope.variable">admin_category_entity_id</stringProp>
  103153. </ResponseAssertion>
  103154. <hashTree/>
  103155. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category attribute set id" enabled="true">
  103156. <collectionProp name="Asserion.test_strings">
  103157. <stringProp name="89649215">^\d+$</stringProp>
  103158. </collectionProp>
  103159. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103160. <boolProp name="Assertion.assume_success">false</boolProp>
  103161. <intProp name="Assertion.test_type">1</intProp>
  103162. <stringProp name="Assertion.scope">variable</stringProp>
  103163. <stringProp name="Scope.variable">admin_category_attribute_set_id</stringProp>
  103164. </ResponseAssertion>
  103165. <hashTree/>
  103166. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category parent id" enabled="true">
  103167. <collectionProp name="Asserion.test_strings">
  103168. <stringProp name="89649215">^\d+$</stringProp>
  103169. </collectionProp>
  103170. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103171. <boolProp name="Assertion.assume_success">false</boolProp>
  103172. <intProp name="Assertion.test_type">1</intProp>
  103173. <stringProp name="Assertion.scope">variable</stringProp>
  103174. <stringProp name="Scope.variable">admin_category_parent_id</stringProp>
  103175. </ResponseAssertion>
  103176. <hashTree/>
  103177. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category created at" enabled="true">
  103178. <collectionProp name="Asserion.test_strings">
  103179. <stringProp name="2845929">^.+$</stringProp>
  103180. </collectionProp>
  103181. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103182. <boolProp name="Assertion.assume_success">false</boolProp>
  103183. <intProp name="Assertion.test_type">1</intProp>
  103184. <stringProp name="Assertion.scope">variable</stringProp>
  103185. <stringProp name="Scope.variable">admin_category_created_at</stringProp>
  103186. </ResponseAssertion>
  103187. <hashTree/>
  103188. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category updated at" enabled="true">
  103189. <collectionProp name="Asserion.test_strings">
  103190. <stringProp name="2845929">^.+$</stringProp>
  103191. </collectionProp>
  103192. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103193. <boolProp name="Assertion.assume_success">false</boolProp>
  103194. <intProp name="Assertion.test_type">1</intProp>
  103195. <stringProp name="Assertion.scope">variable</stringProp>
  103196. <stringProp name="Scope.variable">admin_category_updated_at</stringProp>
  103197. </ResponseAssertion>
  103198. <hashTree/>
  103199. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category path" enabled="true">
  103200. <collectionProp name="Asserion.test_strings">
  103201. <stringProp name="59022110">^[\d\\\/]+$</stringProp>
  103202. </collectionProp>
  103203. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103204. <boolProp name="Assertion.assume_success">false</boolProp>
  103205. <intProp name="Assertion.test_type">1</intProp>
  103206. <stringProp name="Assertion.scope">variable</stringProp>
  103207. <stringProp name="Scope.variable">admin_category_path</stringProp>
  103208. </ResponseAssertion>
  103209. <hashTree/>
  103210. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category level" enabled="true">
  103211. <collectionProp name="Asserion.test_strings">
  103212. <stringProp name="89649215">^\d+$</stringProp>
  103213. </collectionProp>
  103214. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103215. <boolProp name="Assertion.assume_success">false</boolProp>
  103216. <intProp name="Assertion.test_type">1</intProp>
  103217. <stringProp name="Assertion.scope">variable</stringProp>
  103218. <stringProp name="Scope.variable">admin_category_level</stringProp>
  103219. </ResponseAssertion>
  103220. <hashTree/>
  103221. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category name" enabled="true">
  103222. <collectionProp name="Asserion.test_strings">
  103223. <stringProp name="2845929">^.+$</stringProp>
  103224. </collectionProp>
  103225. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103226. <boolProp name="Assertion.assume_success">false</boolProp>
  103227. <intProp name="Assertion.test_type">1</intProp>
  103228. <stringProp name="Assertion.scope">variable</stringProp>
  103229. <stringProp name="Scope.variable">admin_category_name</stringProp>
  103230. </ResponseAssertion>
  103231. <hashTree/>
  103232. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url key" enabled="true">
  103233. <collectionProp name="Asserion.test_strings">
  103234. <stringProp name="2845929">^.+$</stringProp>
  103235. </collectionProp>
  103236. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103237. <boolProp name="Assertion.assume_success">false</boolProp>
  103238. <intProp name="Assertion.test_type">1</intProp>
  103239. <stringProp name="Assertion.scope">variable</stringProp>
  103240. <stringProp name="Scope.variable">admin_category_url_key</stringProp>
  103241. </ResponseAssertion>
  103242. <hashTree/>
  103243. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url path" enabled="true">
  103244. <collectionProp name="Asserion.test_strings">
  103245. <stringProp name="2845929">^.+$</stringProp>
  103246. </collectionProp>
  103247. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103248. <boolProp name="Assertion.assume_success">false</boolProp>
  103249. <intProp name="Assertion.test_type">1</intProp>
  103250. <stringProp name="Assertion.scope">variable</stringProp>
  103251. <stringProp name="Scope.variable">admin_category_url_path</stringProp>
  103252. </ResponseAssertion>
  103253. <hashTree/>
  103254. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert products added" enabled="true">
  103255. <collectionProp name="Asserion.test_strings">
  103256. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  103257. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  103258. <stringProp name="-2102674944">${simple_product_3_name}</stringProp>
  103259. <stringProp name="-1215171263">${simple_product_4_name}</stringProp>
  103260. <stringProp name="-327667582">${simple_product_5_name}</stringProp>
  103261. </collectionProp>
  103262. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103263. <boolProp name="Assertion.assume_success">false</boolProp>
  103264. <intProp name="Assertion.test_type">2</intProp>
  103265. </ResponseAssertion>
  103266. <hashTree/>
  103267. </hashTree>
  103268. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Move category" enabled="true">
  103269. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103270. <collectionProp name="Arguments.arguments">
  103271. <elementProp name="id" elementType="HTTPArgument">
  103272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103273. <stringProp name="Argument.value">${admin_category_id}</stringProp>
  103274. <stringProp name="Argument.metadata">=</stringProp>
  103275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103276. <stringProp name="Argument.name">id</stringProp>
  103277. </elementProp>
  103278. <elementProp name="form_key" elementType="HTTPArgument">
  103279. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103280. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  103281. <stringProp name="Argument.metadata">=</stringProp>
  103282. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103283. <stringProp name="Argument.name">form_key</stringProp>
  103284. </elementProp>
  103285. <elementProp name="point" elementType="HTTPArgument">
  103286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103287. <stringProp name="Argument.value">append</stringProp>
  103288. <stringProp name="Argument.metadata">=</stringProp>
  103289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103290. <stringProp name="Argument.name">point</stringProp>
  103291. </elementProp>
  103292. <elementProp name="pid" elementType="HTTPArgument">
  103293. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103294. <stringProp name="Argument.value">${new_parent_category_id}</stringProp>
  103295. <stringProp name="Argument.metadata">=</stringProp>
  103296. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103297. <stringProp name="Argument.name">pid</stringProp>
  103298. </elementProp>
  103299. <elementProp name="paid" elementType="HTTPArgument">
  103300. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103301. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  103302. <stringProp name="Argument.metadata">=</stringProp>
  103303. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103304. <stringProp name="Argument.name">paid</stringProp>
  103305. </elementProp>
  103306. <elementProp name="aid" elementType="HTTPArgument">
  103307. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103308. <stringProp name="Argument.value">0</stringProp>
  103309. <stringProp name="Argument.metadata">=</stringProp>
  103310. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103311. <stringProp name="Argument.name">aid</stringProp>
  103312. </elementProp>
  103313. <elementProp name="isAjax" elementType="HTTPArgument">
  103314. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103315. <stringProp name="Argument.value">true</stringProp>
  103316. <stringProp name="Argument.metadata">=</stringProp>
  103317. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103318. <stringProp name="Argument.name">isAjax</stringProp>
  103319. </elementProp>
  103320. </collectionProp>
  103321. </elementProp>
  103322. <stringProp name="HTTPSampler.domain"/>
  103323. <stringProp name="HTTPSampler.port"/>
  103324. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103325. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103326. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103327. <stringProp name="HTTPSampler.contentEncoding"/>
  103328. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/move/</stringProp>
  103329. <stringProp name="HTTPSampler.method">POST</stringProp>
  103330. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103331. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103332. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103333. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103334. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103335. <stringProp name="HTTPSampler.embedded_url_re"/>
  103336. </HTTPSamplerProxy>
  103337. <hashTree/>
  103338. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete category" enabled="true">
  103339. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103340. <collectionProp name="Arguments.arguments">
  103341. <elementProp name="form_key" elementType="HTTPArgument">
  103342. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103343. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  103344. <stringProp name="Argument.metadata">=</stringProp>
  103345. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103346. <stringProp name="Argument.name">form_key</stringProp>
  103347. </elementProp>
  103348. </collectionProp>
  103349. </elementProp>
  103350. <stringProp name="HTTPSampler.domain"/>
  103351. <stringProp name="HTTPSampler.port"/>
  103352. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103353. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103354. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103355. <stringProp name="HTTPSampler.contentEncoding"/>
  103356. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/</stringProp>
  103357. <stringProp name="HTTPSampler.method">POST</stringProp>
  103358. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103359. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103360. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103361. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103362. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103363. <stringProp name="HTTPSampler.embedded_url_re"/>
  103364. </HTTPSamplerProxy>
  103365. <hashTree>
  103366. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category deleted" enabled="true">
  103367. <collectionProp name="Asserion.test_strings">
  103368. <stringProp name="1277069529">You deleted the category.</stringProp>
  103369. </collectionProp>
  103370. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103371. <boolProp name="Assertion.assume_success">false</boolProp>
  103372. <intProp name="Assertion.test_type">2</intProp>
  103373. </ResponseAssertion>
  103374. <hashTree/>
  103375. </hashTree>
  103376. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  103377. <intProp name="ActionProcessor.action">1</intProp>
  103378. <intProp name="ActionProcessor.target">0</intProp>
  103379. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))}</stringProp>
  103380. </TestAction>
  103381. <hashTree/>
  103382. </hashTree>
  103383. </hashTree>
  103384. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  103385. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103386. <collectionProp name="Arguments.arguments"/>
  103387. </elementProp>
  103388. <stringProp name="HTTPSampler.domain"/>
  103389. <stringProp name="HTTPSampler.port"/>
  103390. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103391. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103392. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103393. <stringProp name="HTTPSampler.contentEncoding"/>
  103394. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  103395. <stringProp name="HTTPSampler.method">GET</stringProp>
  103396. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103397. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103398. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103399. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103400. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103401. <stringProp name="HTTPSampler.embedded_url_re"/>
  103402. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  103403. <hashTree>
  103404. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  103405. <boolProp name="resetInterpreter">false</boolProp>
  103406. <stringProp name="parameters"/>
  103407. <stringProp name="filename"/>
  103408. <stringProp name="script">
  103409. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  103410. if (adminUsersDistribution == 1) {
  103411. adminUserList = props.get("adminUserList");
  103412. adminUserList.add(vars.get("admin_user"));
  103413. }
  103414. </stringProp>
  103415. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  103416. <hashTree/>
  103417. </hashTree>
  103418. </hashTree>
  103419. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Promotion Rules" enabled="true">
  103420. <intProp name="ThroughputController.style">1</intProp>
  103421. <boolProp name="ThroughputController.perThread">false</boolProp>
  103422. <intProp name="ThroughputController.maxThroughput">1</intProp>
  103423. <stringProp name="ThroughputController.percentThroughput">${cAdminPromotionRulesPercentage}</stringProp>
  103424. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  103425. <hashTree>
  103426. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  103427. <stringProp name="script">
  103428. var tmpLabel = vars.get("testLabel")
  103429. if (tmpLabel) {
  103430. var testLabel = " (" + tmpLabel + ")"
  103431. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  103432. if (sampler.getName().indexOf(testLabel) == -1) {
  103433. sampler.setName(sampler.getName() + testLabel);
  103434. }
  103435. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  103436. sampler.setName("SetUp - " + sampler.getName());
  103437. }
  103438. } else {
  103439. testLabel = ""
  103440. }
  103441. </stringProp>
  103442. <stringProp name="scriptLanguage">javascript</stringProp>
  103443. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  103444. <hashTree/>
  103445. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  103446. <stringProp name="BeanShellSampler.query">
  103447. vars.put("testLabel", "[REST API C] Admin Promotion Rules");
  103448. </stringProp>
  103449. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  103450. </BeanShellSampler>
  103451. <hashTree/>
  103452. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  103453. <stringProp name="script">
  103454. function getFormKeyFromResponse()
  103455. {
  103456. var url = prev.getUrlAsString(),
  103457. responseCode = prev.getResponseCode(),
  103458. formKey = null;
  103459. searchPattern = /var FORM_KEY = '(.+)'/;
  103460. if (responseCode == "200" &amp;&amp; url) {
  103461. response = prev.getResponseDataAsString();
  103462. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  103463. }
  103464. return formKey;
  103465. }
  103466. formKey = vars.get("form_key_storage");
  103467. currentFormKey = getFormKeyFromResponse();
  103468. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  103469. vars.put("form_key_storage", currentFormKey);
  103470. }
  103471. </stringProp>
  103472. <stringProp name="scriptLanguage">javascript</stringProp>
  103473. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  103474. <hashTree/>
  103475. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  103476. <stringProp name="script">
  103477. formKey = vars.get("form_key_storage");
  103478. if (formKey
  103479. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  103480. &amp;&amp; sampler.getMethod() == "POST")
  103481. {
  103482. arguments = sampler.getArguments();
  103483. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  103484. {
  103485. argument = arguments.getArgument(i);
  103486. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  103487. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  103488. argument.setValue(formKey);
  103489. }
  103490. }
  103491. }
  103492. </stringProp>
  103493. <stringProp name="scriptLanguage">javascript</stringProp>
  103494. </JSR223PreProcessor>
  103495. <hashTree/>
  103496. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  103497. <collectionProp name="CookieManager.cookies"/>
  103498. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  103499. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  103500. <hashTree/>
  103501. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  103502. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  103503. </GenericController>
  103504. <hashTree>
  103505. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  103506. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  103507. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  103508. <hashTree>
  103509. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  103510. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  103511. <stringProp name="BeanShellSampler.query">
  103512. adminUser = "none";
  103513. adminUserList = props.get("adminUserList");
  103514. adminUserListIterator = props.get("adminUserListIterator");
  103515. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  103516. if (adminUsersDistribution == 1) {
  103517. adminUser = adminUserList.poll();
  103518. } else {
  103519. if (!adminUserListIterator.hasNext()) {
  103520. adminUserListIterator = adminUserList.descendingIterator();
  103521. }
  103522. adminUser = adminUserListIterator.next();
  103523. }
  103524. if (adminUser == "none") {
  103525. SampleResult.setResponseMessage("adminUser list is empty");
  103526. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  103527. IsSuccess=false;
  103528. SampleResult.setSuccessful(false);
  103529. SampleResult.setStopThread(true);
  103530. }
  103531. vars.put("admin_user", adminUser);
  103532. </stringProp>
  103533. <stringProp name="BeanShellSampler.filename"/>
  103534. <stringProp name="BeanShellSampler.parameters"/>
  103535. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  103536. </BeanShellSampler>
  103537. <hashTree/>
  103538. </hashTree>
  103539. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  103540. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103541. <collectionProp name="Arguments.arguments"/>
  103542. </elementProp>
  103543. <stringProp name="HTTPSampler.domain"/>
  103544. <stringProp name="HTTPSampler.port"/>
  103545. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103546. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103547. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103548. <stringProp name="HTTPSampler.contentEncoding"/>
  103549. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  103550. <stringProp name="HTTPSampler.method">GET</stringProp>
  103551. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103552. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103553. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103554. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103555. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103556. <stringProp name="HTTPSampler.embedded_url_re"/>
  103557. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  103558. <hashTree>
  103559. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  103560. <collectionProp name="Asserion.test_strings">
  103561. <stringProp name="-1397214398">Welcome</stringProp>
  103562. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  103563. </collectionProp>
  103564. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103565. <boolProp name="Assertion.assume_success">false</boolProp>
  103566. <intProp name="Assertion.test_type">2</intProp>
  103567. </ResponseAssertion>
  103568. <hashTree/>
  103569. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  103570. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103571. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  103572. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  103573. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103574. <stringProp name="RegexExtractor.default"/>
  103575. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103576. </RegexExtractor>
  103577. <hashTree/>
  103578. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  103579. <collectionProp name="Asserion.test_strings">
  103580. <stringProp name="2845929">^.+$</stringProp>
  103581. </collectionProp>
  103582. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  103583. <boolProp name="Assertion.assume_success">false</boolProp>
  103584. <intProp name="Assertion.test_type">1</intProp>
  103585. <stringProp name="Assertion.scope">variable</stringProp>
  103586. <stringProp name="Scope.variable">admin_form_key</stringProp>
  103587. </ResponseAssertion>
  103588. <hashTree/>
  103589. </hashTree>
  103590. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  103591. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103592. <collectionProp name="Arguments.arguments">
  103593. <elementProp name="dummy" elementType="HTTPArgument">
  103594. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103595. <stringProp name="Argument.value"/>
  103596. <stringProp name="Argument.metadata">=</stringProp>
  103597. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103598. <stringProp name="Argument.name">dummy</stringProp>
  103599. </elementProp>
  103600. <elementProp name="form_key" elementType="HTTPArgument">
  103601. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103602. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  103603. <stringProp name="Argument.metadata">=</stringProp>
  103604. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103605. <stringProp name="Argument.name">form_key</stringProp>
  103606. </elementProp>
  103607. <elementProp name="login[password]" elementType="HTTPArgument">
  103608. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103609. <stringProp name="Argument.value">${admin_password}</stringProp>
  103610. <stringProp name="Argument.metadata">=</stringProp>
  103611. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103612. <stringProp name="Argument.name">login[password]</stringProp>
  103613. </elementProp>
  103614. <elementProp name="login[username]" elementType="HTTPArgument">
  103615. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103616. <stringProp name="Argument.value">${admin_user}</stringProp>
  103617. <stringProp name="Argument.metadata">=</stringProp>
  103618. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103619. <stringProp name="Argument.name">login[username]</stringProp>
  103620. </elementProp>
  103621. </collectionProp>
  103622. </elementProp>
  103623. <stringProp name="HTTPSampler.domain"/>
  103624. <stringProp name="HTTPSampler.port"/>
  103625. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103626. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103627. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103628. <stringProp name="HTTPSampler.contentEncoding"/>
  103629. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  103630. <stringProp name="HTTPSampler.method">POST</stringProp>
  103631. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103632. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103633. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103634. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103635. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  103636. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103637. <stringProp name="HTTPSampler.embedded_url_re"/>
  103638. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  103639. </HTTPSamplerProxy>
  103640. <hashTree>
  103641. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  103642. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  103643. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  103644. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  103645. <stringProp name="RegexExtractor.template">$1$</stringProp>
  103646. <stringProp name="RegexExtractor.default"/>
  103647. <stringProp name="RegexExtractor.match_number">1</stringProp>
  103648. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  103649. <hashTree/>
  103650. </hashTree>
  103651. </hashTree>
  103652. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  103653. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  103654. </GenericController>
  103655. <hashTree>
  103656. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Promotions Management" enabled="true">
  103657. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx</stringProp>
  103658. </TestFragmentController>
  103659. <hashTree>
  103660. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  103661. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103662. <collectionProp name="Arguments.arguments"/>
  103663. </elementProp>
  103664. <stringProp name="HTTPSampler.domain"/>
  103665. <stringProp name="HTTPSampler.port"/>
  103666. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103667. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103668. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103669. <stringProp name="HTTPSampler.contentEncoding"/>
  103670. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/</stringProp>
  103671. <stringProp name="HTTPSampler.method">GET</stringProp>
  103672. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103673. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103674. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103675. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103676. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103677. <stringProp name="HTTPSampler.embedded_url_re"/>
  103678. </HTTPSamplerProxy>
  103679. <hashTree/>
  103680. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  103681. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103682. <collectionProp name="Arguments.arguments"/>
  103683. </elementProp>
  103684. <stringProp name="HTTPSampler.domain"/>
  103685. <stringProp name="HTTPSampler.port"/>
  103686. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103687. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103688. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103689. <stringProp name="HTTPSampler.contentEncoding"/>
  103690. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/new</stringProp>
  103691. <stringProp name="HTTPSampler.method">GET</stringProp>
  103692. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103693. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103694. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103695. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103696. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103697. <stringProp name="HTTPSampler.embedded_url_re"/>
  103698. </HTTPSamplerProxy>
  103699. <hashTree/>
  103700. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New Conditional" enabled="true">
  103701. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103702. <collectionProp name="Arguments.arguments">
  103703. <elementProp name="isAjax" elementType="HTTPArgument">
  103704. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103705. <stringProp name="Argument.value">true</stringProp>
  103706. <stringProp name="Argument.metadata">=</stringProp>
  103707. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103708. <stringProp name="Argument.name">isAjax</stringProp>
  103709. </elementProp>
  103710. <elementProp name="form_key" elementType="HTTPArgument">
  103711. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103712. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  103713. <stringProp name="Argument.metadata">=</stringProp>
  103714. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103715. <stringProp name="Argument.name">form_key</stringProp>
  103716. <stringProp name="Argument.desc">true</stringProp>
  103717. </elementProp>
  103718. <elementProp name="id" elementType="HTTPArgument">
  103719. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103720. <stringProp name="Argument.value">1--1</stringProp>
  103721. <stringProp name="Argument.metadata">=</stringProp>
  103722. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103723. <stringProp name="Argument.name">id</stringProp>
  103724. </elementProp>
  103725. <elementProp name="type" elementType="HTTPArgument">
  103726. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103727. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal</stringProp>
  103728. <stringProp name="Argument.metadata">=</stringProp>
  103729. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103730. <stringProp name="Argument.name">type</stringProp>
  103731. </elementProp>
  103732. </collectionProp>
  103733. </elementProp>
  103734. <stringProp name="HTTPSampler.domain"/>
  103735. <stringProp name="HTTPSampler.port"/>
  103736. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  103737. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  103738. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  103739. <stringProp name="HTTPSampler.contentEncoding"/>
  103740. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form</stringProp>
  103741. <stringProp name="HTTPSampler.method">POST</stringProp>
  103742. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  103743. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  103744. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  103745. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  103746. <boolProp name="HTTPSampler.monitor">false</boolProp>
  103747. <stringProp name="HTTPSampler.embedded_url_re"/>
  103748. </HTTPSamplerProxy>
  103749. <hashTree/>
  103750. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  103751. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  103752. <collectionProp name="Arguments.arguments">
  103753. <elementProp name="name" elementType="HTTPArgument">
  103754. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103755. <stringProp name="Argument.value">Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  103756. <stringProp name="Argument.metadata">=</stringProp>
  103757. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103758. <stringProp name="Argument.name">name</stringProp>
  103759. </elementProp>
  103760. <elementProp name="is_active" elementType="HTTPArgument">
  103761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103762. <stringProp name="Argument.value">0</stringProp>
  103763. <stringProp name="Argument.metadata">=</stringProp>
  103764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103765. <stringProp name="Argument.name">is_active</stringProp>
  103766. </elementProp>
  103767. <elementProp name="use_auto_generation" elementType="HTTPArgument">
  103768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103769. <stringProp name="Argument.value">0</stringProp>
  103770. <stringProp name="Argument.metadata">=</stringProp>
  103771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103772. <stringProp name="Argument.name">use_auto_generation</stringProp>
  103773. </elementProp>
  103774. <elementProp name="is_rss" elementType="HTTPArgument">
  103775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103776. <stringProp name="Argument.value">1</stringProp>
  103777. <stringProp name="Argument.metadata">=</stringProp>
  103778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103779. <stringProp name="Argument.name">is_rss</stringProp>
  103780. </elementProp>
  103781. <elementProp name="apply_to_shipping" elementType="HTTPArgument">
  103782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103783. <stringProp name="Argument.value">0</stringProp>
  103784. <stringProp name="Argument.metadata">=</stringProp>
  103785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103786. <stringProp name="Argument.name">apply_to_shipping</stringProp>
  103787. </elementProp>
  103788. <elementProp name="stop_rules_processing" elementType="HTTPArgument">
  103789. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103790. <stringProp name="Argument.value">0</stringProp>
  103791. <stringProp name="Argument.metadata">=</stringProp>
  103792. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103793. <stringProp name="Argument.name">stop_rules_processing</stringProp>
  103794. </elementProp>
  103795. <elementProp name="coupon_code" elementType="HTTPArgument">
  103796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103797. <stringProp name="Argument.value"/>
  103798. <stringProp name="Argument.metadata">=</stringProp>
  103799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103800. <stringProp name="Argument.name">coupon_code</stringProp>
  103801. </elementProp>
  103802. <elementProp name="uses_per_coupon" elementType="HTTPArgument">
  103803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103804. <stringProp name="Argument.value"/>
  103805. <stringProp name="Argument.metadata">=</stringProp>
  103806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103807. <stringProp name="Argument.name">uses_per_coupon</stringProp>
  103808. </elementProp>
  103809. <elementProp name="uses_per_customer" elementType="HTTPArgument">
  103810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103811. <stringProp name="Argument.value"/>
  103812. <stringProp name="Argument.metadata">=</stringProp>
  103813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103814. <stringProp name="Argument.name">uses_per_customer</stringProp>
  103815. </elementProp>
  103816. <elementProp name="sort_order" elementType="HTTPArgument">
  103817. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103818. <stringProp name="Argument.value"/>
  103819. <stringProp name="Argument.metadata">=</stringProp>
  103820. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103821. <stringProp name="Argument.name">sort_order</stringProp>
  103822. </elementProp>
  103823. <elementProp name="discount_amount" elementType="HTTPArgument">
  103824. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103825. <stringProp name="Argument.value">5</stringProp>
  103826. <stringProp name="Argument.metadata">=</stringProp>
  103827. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103828. <stringProp name="Argument.name">discount_amount</stringProp>
  103829. </elementProp>
  103830. <elementProp name="discount_qty" elementType="HTTPArgument">
  103831. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103832. <stringProp name="Argument.value">0</stringProp>
  103833. <stringProp name="Argument.metadata">=</stringProp>
  103834. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103835. <stringProp name="Argument.name">discount_qty</stringProp>
  103836. </elementProp>
  103837. <elementProp name="discount_step" elementType="HTTPArgument">
  103838. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103839. <stringProp name="Argument.value"/>
  103840. <stringProp name="Argument.metadata">=</stringProp>
  103841. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103842. <stringProp name="Argument.name">discount_step</stringProp>
  103843. </elementProp>
  103844. <elementProp name="reward_points_delta" elementType="HTTPArgument">
  103845. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103846. <stringProp name="Argument.value"/>
  103847. <stringProp name="Argument.metadata">=</stringProp>
  103848. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103849. <stringProp name="Argument.name">reward_points_delta</stringProp>
  103850. </elementProp>
  103851. <elementProp name="store_labels[0]" elementType="HTTPArgument">
  103852. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103853. <stringProp name="Argument.value"/>
  103854. <stringProp name="Argument.metadata">=</stringProp>
  103855. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103856. <stringProp name="Argument.name">store_labels[0]</stringProp>
  103857. </elementProp>
  103858. <elementProp name="description" elementType="HTTPArgument">
  103859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103860. <stringProp name="Argument.value">Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  103861. <stringProp name="Argument.metadata">=</stringProp>
  103862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103863. <stringProp name="Argument.name">description</stringProp>
  103864. </elementProp>
  103865. <elementProp name="coupon_type" elementType="HTTPArgument">
  103866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103867. <stringProp name="Argument.value">1</stringProp>
  103868. <stringProp name="Argument.metadata">=</stringProp>
  103869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103870. <stringProp name="Argument.name">coupon_type</stringProp>
  103871. </elementProp>
  103872. <elementProp name="simple_action" elementType="HTTPArgument">
  103873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103874. <stringProp name="Argument.value">cart_fixed</stringProp>
  103875. <stringProp name="Argument.metadata">=</stringProp>
  103876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103877. <stringProp name="Argument.name">simple_action</stringProp>
  103878. </elementProp>
  103879. <elementProp name="website_ids[0]" elementType="HTTPArgument">
  103880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103881. <stringProp name="Argument.value">1</stringProp>
  103882. <stringProp name="Argument.metadata">=</stringProp>
  103883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103884. <stringProp name="Argument.name">website_ids[0]</stringProp>
  103885. </elementProp>
  103886. <elementProp name="customer_group_ids[0]" elementType="HTTPArgument">
  103887. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103888. <stringProp name="Argument.value">0</stringProp>
  103889. <stringProp name="Argument.metadata">=</stringProp>
  103890. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103891. <stringProp name="Argument.name">customer_group_ids[0]</stringProp>
  103892. </elementProp>
  103893. <elementProp name="from_date" elementType="HTTPArgument">
  103894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103895. <stringProp name="Argument.value"/>
  103896. <stringProp name="Argument.metadata">=</stringProp>
  103897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103898. <stringProp name="Argument.name">from_date</stringProp>
  103899. </elementProp>
  103900. <elementProp name="to_date" elementType="HTTPArgument">
  103901. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103902. <stringProp name="Argument.value"/>
  103903. <stringProp name="Argument.metadata">=</stringProp>
  103904. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103905. <stringProp name="Argument.name">to_date</stringProp>
  103906. </elementProp>
  103907. <elementProp name="rule[conditions][1][type]" elementType="HTTPArgument">
  103908. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103909. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Combine</stringProp>
  103910. <stringProp name="Argument.metadata">=</stringProp>
  103911. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103912. <stringProp name="Argument.name">rule[conditions][1][type]</stringProp>
  103913. </elementProp>
  103914. <elementProp name="rule[conditions][1][aggregator]" elementType="HTTPArgument">
  103915. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103916. <stringProp name="Argument.value">all</stringProp>
  103917. <stringProp name="Argument.metadata">=</stringProp>
  103918. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103919. <stringProp name="Argument.name">rule[conditions][1][aggregator]</stringProp>
  103920. </elementProp>
  103921. <elementProp name="rule[conditions][1][value]" elementType="HTTPArgument">
  103922. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103923. <stringProp name="Argument.value">1</stringProp>
  103924. <stringProp name="Argument.metadata">=</stringProp>
  103925. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103926. <stringProp name="Argument.name">rule[conditions][1][value]</stringProp>
  103927. </elementProp>
  103928. <elementProp name="rule[conditions][1--1][type]" elementType="HTTPArgument">
  103929. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103930. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address</stringProp>
  103931. <stringProp name="Argument.metadata">=</stringProp>
  103932. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103933. <stringProp name="Argument.name">rule[conditions][1--1][type]</stringProp>
  103934. </elementProp>
  103935. <elementProp name="rule[conditions][1--1][attribute]" elementType="HTTPArgument">
  103936. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103937. <stringProp name="Argument.value">base_subtotal</stringProp>
  103938. <stringProp name="Argument.metadata">=</stringProp>
  103939. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103940. <stringProp name="Argument.name">rule[conditions][1--1][attribute]</stringProp>
  103941. </elementProp>
  103942. <elementProp name="rule[conditions][1--1][operator]" elementType="HTTPArgument">
  103943. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103944. <stringProp name="Argument.value">&gt;=</stringProp>
  103945. <stringProp name="Argument.metadata">=</stringProp>
  103946. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103947. <stringProp name="Argument.name">rule[conditions][1--1][operator]</stringProp>
  103948. </elementProp>
  103949. <elementProp name="rule[conditions][1--1][value]" elementType="HTTPArgument">
  103950. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103951. <stringProp name="Argument.value">100</stringProp>
  103952. <stringProp name="Argument.metadata">=</stringProp>
  103953. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103954. <stringProp name="Argument.name">rule[conditions][1--1][value]</stringProp>
  103955. </elementProp>
  103956. <elementProp name="rule[conditions][1][new_chlid]" elementType="HTTPArgument">
  103957. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103958. <stringProp name="Argument.value"/>
  103959. <stringProp name="Argument.metadata">=</stringProp>
  103960. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103961. <stringProp name="Argument.name">rule[conditions][1][new_chlid]</stringProp>
  103962. </elementProp>
  103963. <elementProp name="rule[actions][1][type]" elementType="HTTPArgument">
  103964. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103965. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Product\Combine</stringProp>
  103966. <stringProp name="Argument.metadata">=</stringProp>
  103967. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103968. <stringProp name="Argument.name">rule[actions][1][type]</stringProp>
  103969. </elementProp>
  103970. <elementProp name="rule[actions][1][aggregator]" elementType="HTTPArgument">
  103971. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103972. <stringProp name="Argument.value">all</stringProp>
  103973. <stringProp name="Argument.metadata">=</stringProp>
  103974. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103975. <stringProp name="Argument.name">rule[actions][1][aggregator]</stringProp>
  103976. </elementProp>
  103977. <elementProp name="rule[actions][1][value]" elementType="HTTPArgument">
  103978. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103979. <stringProp name="Argument.value">1</stringProp>
  103980. <stringProp name="Argument.metadata">=</stringProp>
  103981. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103982. <stringProp name="Argument.name">rule[actions][1][value]</stringProp>
  103983. </elementProp>
  103984. <elementProp name="rule[actions][1][new_child]" elementType="HTTPArgument">
  103985. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103986. <stringProp name="Argument.value"/>
  103987. <stringProp name="Argument.metadata">=</stringProp>
  103988. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103989. <stringProp name="Argument.name">rule[actions][1][new_child]</stringProp>
  103990. </elementProp>
  103991. <elementProp name="store_labels[1]" elementType="HTTPArgument">
  103992. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  103993. <stringProp name="Argument.value"/>
  103994. <stringProp name="Argument.metadata">=</stringProp>
  103995. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  103996. <stringProp name="Argument.name">store_labels[1]</stringProp>
  103997. </elementProp>
  103998. <elementProp name="store_labels[2]" elementType="HTTPArgument">
  103999. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104000. <stringProp name="Argument.value"/>
  104001. <stringProp name="Argument.metadata">=</stringProp>
  104002. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104003. <stringProp name="Argument.name">store_labels[2]</stringProp>
  104004. </elementProp>
  104005. <elementProp name="related_banners" elementType="HTTPArgument">
  104006. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104007. <stringProp name="Argument.value"/>
  104008. <stringProp name="Argument.metadata">=</stringProp>
  104009. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104010. <stringProp name="Argument.name">related_banners</stringProp>
  104011. </elementProp>
  104012. <elementProp name="form_key" elementType="HTTPArgument">
  104013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104014. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  104015. <stringProp name="Argument.metadata">=</stringProp>
  104016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104017. <stringProp name="Argument.name">form_key</stringProp>
  104018. </elementProp>
  104019. </collectionProp>
  104020. </elementProp>
  104021. <stringProp name="HTTPSampler.domain"/>
  104022. <stringProp name="HTTPSampler.port"/>
  104023. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104024. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104025. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104026. <stringProp name="HTTPSampler.contentEncoding"/>
  104027. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/save/</stringProp>
  104028. <stringProp name="HTTPSampler.method">POST</stringProp>
  104029. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104030. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104031. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104032. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104033. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104034. <stringProp name="HTTPSampler.embedded_url_re"/>
  104035. </HTTPSamplerProxy>
  104036. <hashTree>
  104037. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  104038. <collectionProp name="Asserion.test_strings">
  104039. <stringProp name="-396438583">You saved the rule.</stringProp>
  104040. </collectionProp>
  104041. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104042. <boolProp name="Assertion.assume_success">false</boolProp>
  104043. <intProp name="Assertion.test_type">16</intProp>
  104044. </ResponseAssertion>
  104045. <hashTree/>
  104046. </hashTree>
  104047. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  104048. <intProp name="ActionProcessor.action">1</intProp>
  104049. <intProp name="ActionProcessor.target">0</intProp>
  104050. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))}</stringProp>
  104051. </TestAction>
  104052. <hashTree/>
  104053. </hashTree>
  104054. </hashTree>
  104055. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  104056. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  104057. <collectionProp name="Arguments.arguments"/>
  104058. </elementProp>
  104059. <stringProp name="HTTPSampler.domain"/>
  104060. <stringProp name="HTTPSampler.port"/>
  104061. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104062. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104063. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104064. <stringProp name="HTTPSampler.contentEncoding"/>
  104065. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  104066. <stringProp name="HTTPSampler.method">GET</stringProp>
  104067. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104068. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104069. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104070. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104071. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104072. <stringProp name="HTTPSampler.embedded_url_re"/>
  104073. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  104074. <hashTree>
  104075. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  104076. <boolProp name="resetInterpreter">false</boolProp>
  104077. <stringProp name="parameters"/>
  104078. <stringProp name="filename"/>
  104079. <stringProp name="script">
  104080. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  104081. if (adminUsersDistribution == 1) {
  104082. adminUserList = props.get("adminUserList");
  104083. adminUserList.add(vars.get("admin_user"));
  104084. }
  104085. </stringProp>
  104086. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  104087. <hashTree/>
  104088. </hashTree>
  104089. </hashTree>
  104090. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Customer Management" enabled="true">
  104091. <intProp name="ThroughputController.style">1</intProp>
  104092. <boolProp name="ThroughputController.perThread">false</boolProp>
  104093. <intProp name="ThroughputController.maxThroughput">1</intProp>
  104094. <stringProp name="ThroughputController.percentThroughput">${cAdminCustomerManagementPercentage}</stringProp>
  104095. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  104096. <hashTree>
  104097. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  104098. <stringProp name="script">
  104099. var tmpLabel = vars.get("testLabel")
  104100. if (tmpLabel) {
  104101. var testLabel = " (" + tmpLabel + ")"
  104102. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  104103. if (sampler.getName().indexOf(testLabel) == -1) {
  104104. sampler.setName(sampler.getName() + testLabel);
  104105. }
  104106. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  104107. sampler.setName("SetUp - " + sampler.getName());
  104108. }
  104109. } else {
  104110. testLabel = ""
  104111. }
  104112. </stringProp>
  104113. <stringProp name="scriptLanguage">javascript</stringProp>
  104114. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  104115. <hashTree/>
  104116. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  104117. <stringProp name="BeanShellSampler.query">
  104118. vars.put("testLabel", "[REST API C] Admin Customer Management");
  104119. </stringProp>
  104120. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  104121. </BeanShellSampler>
  104122. <hashTree/>
  104123. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  104124. <stringProp name="script">
  104125. function getFormKeyFromResponse()
  104126. {
  104127. var url = prev.getUrlAsString(),
  104128. responseCode = prev.getResponseCode(),
  104129. formKey = null;
  104130. searchPattern = /var FORM_KEY = '(.+)'/;
  104131. if (responseCode == "200" &amp;&amp; url) {
  104132. response = prev.getResponseDataAsString();
  104133. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  104134. }
  104135. return formKey;
  104136. }
  104137. formKey = vars.get("form_key_storage");
  104138. currentFormKey = getFormKeyFromResponse();
  104139. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  104140. vars.put("form_key_storage", currentFormKey);
  104141. }
  104142. </stringProp>
  104143. <stringProp name="scriptLanguage">javascript</stringProp>
  104144. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  104145. <hashTree/>
  104146. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  104147. <stringProp name="script">
  104148. formKey = vars.get("form_key_storage");
  104149. if (formKey
  104150. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  104151. &amp;&amp; sampler.getMethod() == "POST")
  104152. {
  104153. arguments = sampler.getArguments();
  104154. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  104155. {
  104156. argument = arguments.getArgument(i);
  104157. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  104158. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  104159. argument.setValue(formKey);
  104160. }
  104161. }
  104162. }
  104163. </stringProp>
  104164. <stringProp name="scriptLanguage">javascript</stringProp>
  104165. </JSR223PreProcessor>
  104166. <hashTree/>
  104167. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  104168. <collectionProp name="CookieManager.cookies"/>
  104169. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  104170. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  104171. <hashTree/>
  104172. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  104173. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  104174. </GenericController>
  104175. <hashTree>
  104176. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  104177. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  104178. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  104179. <hashTree>
  104180. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  104181. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  104182. <stringProp name="BeanShellSampler.query">
  104183. adminUser = "none";
  104184. adminUserList = props.get("adminUserList");
  104185. adminUserListIterator = props.get("adminUserListIterator");
  104186. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  104187. if (adminUsersDistribution == 1) {
  104188. adminUser = adminUserList.poll();
  104189. } else {
  104190. if (!adminUserListIterator.hasNext()) {
  104191. adminUserListIterator = adminUserList.descendingIterator();
  104192. }
  104193. adminUser = adminUserListIterator.next();
  104194. }
  104195. if (adminUser == "none") {
  104196. SampleResult.setResponseMessage("adminUser list is empty");
  104197. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  104198. IsSuccess=false;
  104199. SampleResult.setSuccessful(false);
  104200. SampleResult.setStopThread(true);
  104201. }
  104202. vars.put("admin_user", adminUser);
  104203. </stringProp>
  104204. <stringProp name="BeanShellSampler.filename"/>
  104205. <stringProp name="BeanShellSampler.parameters"/>
  104206. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  104207. </BeanShellSampler>
  104208. <hashTree/>
  104209. </hashTree>
  104210. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  104211. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  104212. <collectionProp name="Arguments.arguments"/>
  104213. </elementProp>
  104214. <stringProp name="HTTPSampler.domain"/>
  104215. <stringProp name="HTTPSampler.port"/>
  104216. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104217. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104218. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104219. <stringProp name="HTTPSampler.contentEncoding"/>
  104220. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  104221. <stringProp name="HTTPSampler.method">GET</stringProp>
  104222. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104223. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104224. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104225. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104226. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104227. <stringProp name="HTTPSampler.embedded_url_re"/>
  104228. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  104229. <hashTree>
  104230. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  104231. <collectionProp name="Asserion.test_strings">
  104232. <stringProp name="-1397214398">Welcome</stringProp>
  104233. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  104234. </collectionProp>
  104235. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104236. <boolProp name="Assertion.assume_success">false</boolProp>
  104237. <intProp name="Assertion.test_type">2</intProp>
  104238. </ResponseAssertion>
  104239. <hashTree/>
  104240. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  104241. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104242. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  104243. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  104244. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104245. <stringProp name="RegexExtractor.default"/>
  104246. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104247. </RegexExtractor>
  104248. <hashTree/>
  104249. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  104250. <collectionProp name="Asserion.test_strings">
  104251. <stringProp name="2845929">^.+$</stringProp>
  104252. </collectionProp>
  104253. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104254. <boolProp name="Assertion.assume_success">false</boolProp>
  104255. <intProp name="Assertion.test_type">1</intProp>
  104256. <stringProp name="Assertion.scope">variable</stringProp>
  104257. <stringProp name="Scope.variable">admin_form_key</stringProp>
  104258. </ResponseAssertion>
  104259. <hashTree/>
  104260. </hashTree>
  104261. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  104262. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  104263. <collectionProp name="Arguments.arguments">
  104264. <elementProp name="dummy" elementType="HTTPArgument">
  104265. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104266. <stringProp name="Argument.value"/>
  104267. <stringProp name="Argument.metadata">=</stringProp>
  104268. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104269. <stringProp name="Argument.name">dummy</stringProp>
  104270. </elementProp>
  104271. <elementProp name="form_key" elementType="HTTPArgument">
  104272. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104273. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  104274. <stringProp name="Argument.metadata">=</stringProp>
  104275. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104276. <stringProp name="Argument.name">form_key</stringProp>
  104277. </elementProp>
  104278. <elementProp name="login[password]" elementType="HTTPArgument">
  104279. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104280. <stringProp name="Argument.value">${admin_password}</stringProp>
  104281. <stringProp name="Argument.metadata">=</stringProp>
  104282. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104283. <stringProp name="Argument.name">login[password]</stringProp>
  104284. </elementProp>
  104285. <elementProp name="login[username]" elementType="HTTPArgument">
  104286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104287. <stringProp name="Argument.value">${admin_user}</stringProp>
  104288. <stringProp name="Argument.metadata">=</stringProp>
  104289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104290. <stringProp name="Argument.name">login[username]</stringProp>
  104291. </elementProp>
  104292. </collectionProp>
  104293. </elementProp>
  104294. <stringProp name="HTTPSampler.domain"/>
  104295. <stringProp name="HTTPSampler.port"/>
  104296. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104297. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104298. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104299. <stringProp name="HTTPSampler.contentEncoding"/>
  104300. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  104301. <stringProp name="HTTPSampler.method">POST</stringProp>
  104302. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104303. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104304. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104305. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104306. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  104307. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104308. <stringProp name="HTTPSampler.embedded_url_re"/>
  104309. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  104310. </HTTPSamplerProxy>
  104311. <hashTree>
  104312. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  104313. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104314. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  104315. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  104316. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104317. <stringProp name="RegexExtractor.default"/>
  104318. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104319. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  104320. <hashTree/>
  104321. </hashTree>
  104322. </hashTree>
  104323. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  104324. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  104325. </GenericController>
  104326. <hashTree>
  104327. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Customer Management" enabled="true">
  104328. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_customer_management/admin_customer_management.jmx</stringProp>
  104329. </TestFragmentController>
  104330. <hashTree>
  104331. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  104332. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  104333. <collectionProp name="Arguments.arguments"/>
  104334. </elementProp>
  104335. <stringProp name="HTTPSampler.domain"/>
  104336. <stringProp name="HTTPSampler.port"/>
  104337. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104338. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104339. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104340. <stringProp name="HTTPSampler.contentEncoding"/>
  104341. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index</stringProp>
  104342. <stringProp name="HTTPSampler.method">GET</stringProp>
  104343. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104344. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104345. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104346. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104347. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104348. <stringProp name="HTTPSampler.embedded_url_re"/>
  104349. </HTTPSamplerProxy>
  104350. <hashTree>
  104351. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  104352. <collectionProp name="HeaderManager.headers">
  104353. <elementProp name="Accept-Language" elementType="Header">
  104354. <stringProp name="Header.name">Accept-Language</stringProp>
  104355. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  104356. </elementProp>
  104357. <elementProp name="Accept" elementType="Header">
  104358. <stringProp name="Header.name">Accept</stringProp>
  104359. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  104360. </elementProp>
  104361. <elementProp name="User-Agent" elementType="Header">
  104362. <stringProp name="Header.name">User-Agent</stringProp>
  104363. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  104364. </elementProp>
  104365. <elementProp name="Accept-Encoding" elementType="Header">
  104366. <stringProp name="Header.name">Accept-Encoding</stringProp>
  104367. <stringProp name="Header.value">gzip, deflate</stringProp>
  104368. </elementProp>
  104369. </collectionProp>
  104370. </HeaderManager>
  104371. <hashTree/>
  104372. </hashTree>
  104373. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Render" enabled="true">
  104374. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  104375. <collectionProp name="Arguments.arguments">
  104376. <elementProp name="namespace" elementType="HTTPArgument">
  104377. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104378. <stringProp name="Argument.value">customer_listing</stringProp>
  104379. <stringProp name="Argument.metadata">=</stringProp>
  104380. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104381. <stringProp name="Argument.name">namespace</stringProp>
  104382. </elementProp>
  104383. <elementProp name="search" elementType="HTTPArgument">
  104384. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104385. <stringProp name="Argument.value"/>
  104386. <stringProp name="Argument.metadata">=</stringProp>
  104387. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104388. <stringProp name="Argument.name">search</stringProp>
  104389. </elementProp>
  104390. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  104391. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104392. <stringProp name="Argument.value">true</stringProp>
  104393. <stringProp name="Argument.metadata">=</stringProp>
  104394. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104395. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  104396. </elementProp>
  104397. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  104398. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104399. <stringProp name="Argument.value">20</stringProp>
  104400. <stringProp name="Argument.metadata">=</stringProp>
  104401. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104402. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  104403. </elementProp>
  104404. <elementProp name="paging[current]" elementType="HTTPArgument">
  104405. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104406. <stringProp name="Argument.value">1</stringProp>
  104407. <stringProp name="Argument.metadata">=</stringProp>
  104408. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104409. <stringProp name="Argument.name">paging[current]</stringProp>
  104410. </elementProp>
  104411. <elementProp name="sorting[field]" elementType="HTTPArgument">
  104412. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104413. <stringProp name="Argument.value">entity_id</stringProp>
  104414. <stringProp name="Argument.metadata">=</stringProp>
  104415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104416. <stringProp name="Argument.name">sorting[field]</stringProp>
  104417. </elementProp>
  104418. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  104419. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104420. <stringProp name="Argument.value">asc</stringProp>
  104421. <stringProp name="Argument.metadata">=</stringProp>
  104422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104423. <stringProp name="Argument.name">sorting[direction]</stringProp>
  104424. </elementProp>
  104425. <elementProp name="isAjax" elementType="HTTPArgument">
  104426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104427. <stringProp name="Argument.value">true</stringProp>
  104428. <stringProp name="Argument.metadata">=</stringProp>
  104429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104430. <stringProp name="Argument.name">isAjax</stringProp>
  104431. </elementProp>
  104432. </collectionProp>
  104433. </elementProp>
  104434. <stringProp name="HTTPSampler.domain"/>
  104435. <stringProp name="HTTPSampler.port"/>
  104436. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104437. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104438. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104439. <stringProp name="HTTPSampler.contentEncoding"/>
  104440. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  104441. <stringProp name="HTTPSampler.method">GET</stringProp>
  104442. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104443. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104444. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104445. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104446. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104447. <stringProp name="HTTPSampler.embedded_url_re"/>
  104448. </HTTPSamplerProxy>
  104449. <hashTree>
  104450. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  104451. <collectionProp name="HeaderManager.headers">
  104452. <elementProp name="" elementType="Header">
  104453. <stringProp name="Header.name">X-Requested-With</stringProp>
  104454. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  104455. </elementProp>
  104456. </collectionProp>
  104457. </HeaderManager>
  104458. <hashTree/>
  104459. </hashTree>
  104460. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Render" enabled="true">
  104461. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  104462. <collectionProp name="Arguments.arguments">
  104463. <elementProp name="namespace" elementType="HTTPArgument">
  104464. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104465. <stringProp name="Argument.value">customer_listing</stringProp>
  104466. <stringProp name="Argument.metadata">=</stringProp>
  104467. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104468. <stringProp name="Argument.name">namespace</stringProp>
  104469. </elementProp>
  104470. <elementProp name="search" elementType="HTTPArgument">
  104471. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104472. <stringProp name="Argument.value">Lastname</stringProp>
  104473. <stringProp name="Argument.metadata">=</stringProp>
  104474. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104475. <stringProp name="Argument.name">search</stringProp>
  104476. </elementProp>
  104477. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  104478. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104479. <stringProp name="Argument.value">true</stringProp>
  104480. <stringProp name="Argument.metadata">=</stringProp>
  104481. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104482. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  104483. </elementProp>
  104484. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  104485. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104486. <stringProp name="Argument.value">20</stringProp>
  104487. <stringProp name="Argument.metadata">=</stringProp>
  104488. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104489. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  104490. </elementProp>
  104491. <elementProp name="paging[current]" elementType="HTTPArgument">
  104492. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104493. <stringProp name="Argument.value">1</stringProp>
  104494. <stringProp name="Argument.metadata">=</stringProp>
  104495. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104496. <stringProp name="Argument.name">paging[current]</stringProp>
  104497. </elementProp>
  104498. <elementProp name="sorting[field]" elementType="HTTPArgument">
  104499. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104500. <stringProp name="Argument.value">entity_id</stringProp>
  104501. <stringProp name="Argument.metadata">=</stringProp>
  104502. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104503. <stringProp name="Argument.name">sorting[field]</stringProp>
  104504. </elementProp>
  104505. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  104506. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104507. <stringProp name="Argument.value">asc</stringProp>
  104508. <stringProp name="Argument.metadata">=</stringProp>
  104509. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104510. <stringProp name="Argument.name">sorting[direction]</stringProp>
  104511. </elementProp>
  104512. <elementProp name="isAjax" elementType="HTTPArgument">
  104513. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  104514. <stringProp name="Argument.value">true</stringProp>
  104515. <stringProp name="Argument.metadata">=</stringProp>
  104516. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  104517. <stringProp name="Argument.name">isAjax</stringProp>
  104518. </elementProp>
  104519. </collectionProp>
  104520. </elementProp>
  104521. <stringProp name="HTTPSampler.domain"/>
  104522. <stringProp name="HTTPSampler.port"/>
  104523. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104524. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104525. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104526. <stringProp name="HTTPSampler.contentEncoding"/>
  104527. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  104528. <stringProp name="HTTPSampler.method">GET</stringProp>
  104529. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104530. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104531. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104532. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104533. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104534. <stringProp name="HTTPSampler.embedded_url_re"/>
  104535. </HTTPSamplerProxy>
  104536. <hashTree>
  104537. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  104538. <collectionProp name="HeaderManager.headers">
  104539. <elementProp name="" elementType="Header">
  104540. <stringProp name="Header.name">X-Requested-With</stringProp>
  104541. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  104542. </elementProp>
  104543. </collectionProp>
  104544. </HeaderManager>
  104545. <hashTree/>
  104546. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer edit url" enabled="true">
  104547. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104548. <stringProp name="RegexExtractor.refname">customer_edit_url_path</stringProp>
  104549. <stringProp name="RegexExtractor.regex">actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/",</stringProp>
  104550. <stringProp name="RegexExtractor.template">/customer/index/edit/id/$2$/</stringProp>
  104551. <stringProp name="RegexExtractor.default"/>
  104552. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104553. </RegexExtractor>
  104554. <hashTree/>
  104555. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer edit url" enabled="true">
  104556. <collectionProp name="Asserion.test_strings">
  104557. <stringProp name="2845929">^.+$</stringProp>
  104558. </collectionProp>
  104559. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104560. <boolProp name="Assertion.assume_success">false</boolProp>
  104561. <intProp name="Assertion.test_type">1</intProp>
  104562. <stringProp name="Assertion.scope">variable</stringProp>
  104563. <stringProp name="Scope.variable">customer_edit_url_path</stringProp>
  104564. </ResponseAssertion>
  104565. <hashTree/>
  104566. </hashTree>
  104567. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Customer" enabled="true">
  104568. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  104569. <collectionProp name="Arguments.arguments"/>
  104570. </elementProp>
  104571. <stringProp name="HTTPSampler.domain"/>
  104572. <stringProp name="HTTPSampler.port"/>
  104573. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  104574. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  104575. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  104576. <stringProp name="HTTPSampler.contentEncoding"/>
  104577. <stringProp name="HTTPSampler.path">${base_path}${admin_path}${customer_edit_url_path}</stringProp>
  104578. <stringProp name="HTTPSampler.method">GET</stringProp>
  104579. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  104580. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  104581. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  104582. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  104583. <boolProp name="HTTPSampler.monitor">false</boolProp>
  104584. <stringProp name="HTTPSampler.embedded_url_re"/>
  104585. </HTTPSamplerProxy>
  104586. <hashTree>
  104587. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert edit customer page" enabled="true">
  104588. <collectionProp name="Asserion.test_strings">
  104589. <stringProp name="-1422614550">Customer Information</stringProp>
  104590. </collectionProp>
  104591. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104592. <boolProp name="Assertion.assume_success">false</boolProp>
  104593. <intProp name="Assertion.test_type">2</intProp>
  104594. </ResponseAssertion>
  104595. <hashTree/>
  104596. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer entity_id" enabled="true">
  104597. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104598. <stringProp name="RegexExtractor.refname">admin_customer_entity_id</stringProp>
  104599. <stringProp name="RegexExtractor.regex">"entity_id":"(\d+)"</stringProp>
  104600. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104601. <stringProp name="RegexExtractor.default"/>
  104602. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104603. </RegexExtractor>
  104604. <hashTree/>
  104605. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract website_id" enabled="true">
  104606. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104607. <stringProp name="RegexExtractor.refname">admin_customer_website_id</stringProp>
  104608. <stringProp name="RegexExtractor.regex">"website_id":"(\d+)"</stringProp>
  104609. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104610. <stringProp name="RegexExtractor.default"/>
  104611. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104612. </RegexExtractor>
  104613. <hashTree/>
  104614. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer firstname" enabled="true">
  104615. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104616. <stringProp name="RegexExtractor.refname">admin_customer_firstname</stringProp>
  104617. <stringProp name="RegexExtractor.regex">"firstname":"([^"]+)"</stringProp>
  104618. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104619. <stringProp name="RegexExtractor.default"/>
  104620. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104621. </RegexExtractor>
  104622. <hashTree/>
  104623. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer lastname" enabled="true">
  104624. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104625. <stringProp name="RegexExtractor.refname">admin_customer_lastname</stringProp>
  104626. <stringProp name="RegexExtractor.regex">"lastname":"([^"]+)"</stringProp>
  104627. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104628. <stringProp name="RegexExtractor.default"/>
  104629. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104630. </RegexExtractor>
  104631. <hashTree/>
  104632. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer email" enabled="true">
  104633. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104634. <stringProp name="RegexExtractor.refname">admin_customer_email</stringProp>
  104635. <stringProp name="RegexExtractor.regex">"email":"([^\@]+@[^.]+.[^"]+)"</stringProp>
  104636. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104637. <stringProp name="RegexExtractor.default"/>
  104638. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104639. </RegexExtractor>
  104640. <hashTree/>
  104641. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract group_id" enabled="true">
  104642. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104643. <stringProp name="RegexExtractor.refname">admin_customer_group_id</stringProp>
  104644. <stringProp name="RegexExtractor.regex">"group_id":"(\d+)"</stringProp>
  104645. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104646. <stringProp name="RegexExtractor.default"/>
  104647. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104648. </RegexExtractor>
  104649. <hashTree/>
  104650. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract store_id" enabled="true">
  104651. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104652. <stringProp name="RegexExtractor.refname">admin_customer_store_id</stringProp>
  104653. <stringProp name="RegexExtractor.regex">"store_id":"(\d+)"</stringProp>
  104654. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104655. <stringProp name="RegexExtractor.default"/>
  104656. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104657. </RegexExtractor>
  104658. <hashTree/>
  104659. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extact created_at" enabled="true">
  104660. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104661. <stringProp name="RegexExtractor.refname">admin_customer_created_at</stringProp>
  104662. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  104663. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104664. <stringProp name="RegexExtractor.default"/>
  104665. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104666. </RegexExtractor>
  104667. <hashTree/>
  104668. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract updated_at" enabled="true">
  104669. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104670. <stringProp name="RegexExtractor.refname">admin_customer_updated_at</stringProp>
  104671. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  104672. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104673. <stringProp name="RegexExtractor.default"/>
  104674. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104675. </RegexExtractor>
  104676. <hashTree/>
  104677. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract is_active" enabled="true">
  104678. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104679. <stringProp name="RegexExtractor.refname">admin_customer_is_active</stringProp>
  104680. <stringProp name="RegexExtractor.regex">"is_active":"(\d+)"</stringProp>
  104681. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104682. <stringProp name="RegexExtractor.default"/>
  104683. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104684. </RegexExtractor>
  104685. <hashTree/>
  104686. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract disable_auto_group_change" enabled="true">
  104687. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104688. <stringProp name="RegexExtractor.refname">admin_customer_disable_auto_group_change</stringProp>
  104689. <stringProp name="RegexExtractor.regex">"disable_auto_group_change":"(\d+)"</stringProp>
  104690. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104691. <stringProp name="RegexExtractor.default"/>
  104692. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104693. </RegexExtractor>
  104694. <hashTree/>
  104695. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract created_in" enabled="true">
  104696. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104697. <stringProp name="RegexExtractor.refname">admin_customer_created_in</stringProp>
  104698. <stringProp name="RegexExtractor.regex">"created_in":"([^"]+)"</stringProp>
  104699. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104700. <stringProp name="RegexExtractor.default"/>
  104701. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104702. </RegexExtractor>
  104703. <hashTree/>
  104704. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract dob" enabled="true">
  104705. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104706. <stringProp name="RegexExtractor.refname">admin_customer_dob</stringProp>
  104707. <stringProp name="RegexExtractor.regex">"dob":"(\d+)-(\d+)-(\d+)"</stringProp>
  104708. <stringProp name="RegexExtractor.template">$2$/$3$/$1$</stringProp>
  104709. <stringProp name="RegexExtractor.default"/>
  104710. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104711. </RegexExtractor>
  104712. <hashTree/>
  104713. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_billing" enabled="true">
  104714. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104715. <stringProp name="RegexExtractor.refname">admin_customer_default_billing</stringProp>
  104716. <stringProp name="RegexExtractor.regex">"default_billing":"(\d+)"</stringProp>
  104717. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104718. <stringProp name="RegexExtractor.default"/>
  104719. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104720. </RegexExtractor>
  104721. <hashTree/>
  104722. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_shipping" enabled="true">
  104723. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104724. <stringProp name="RegexExtractor.refname">admin_customer_default_shipping</stringProp>
  104725. <stringProp name="RegexExtractor.regex">"default_shipping":"(\d+)"</stringProp>
  104726. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104727. <stringProp name="RegexExtractor.default"/>
  104728. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104729. </RegexExtractor>
  104730. <hashTree/>
  104731. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract gender" enabled="true">
  104732. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104733. <stringProp name="RegexExtractor.refname">admin_customer_gender</stringProp>
  104734. <stringProp name="RegexExtractor.regex">"gender":"(\d+)"</stringProp>
  104735. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104736. <stringProp name="RegexExtractor.default"/>
  104737. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104738. </RegexExtractor>
  104739. <hashTree/>
  104740. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract failures_num" enabled="true">
  104741. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104742. <stringProp name="RegexExtractor.refname">admin_customer_failures_num</stringProp>
  104743. <stringProp name="RegexExtractor.regex">"failures_num":"(\d+)"</stringProp>
  104744. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104745. <stringProp name="RegexExtractor.default"/>
  104746. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104747. </RegexExtractor>
  104748. <hashTree/>
  104749. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_entity_id" enabled="true">
  104750. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104751. <stringProp name="RegexExtractor.refname">admin_customer_address_entity_id</stringProp>
  104752. <stringProp name="RegexExtractor.regex">_address":\{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}"</stringProp>
  104753. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104754. <stringProp name="RegexExtractor.default"/>
  104755. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104756. </RegexExtractor>
  104757. <hashTree/>
  104758. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_created_at" enabled="true">
  104759. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104760. <stringProp name="RegexExtractor.refname">admin_customer_address_created_at</stringProp>
  104761. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)"</stringProp>
  104762. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104763. <stringProp name="RegexExtractor.default"/>
  104764. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104765. </RegexExtractor>
  104766. <hashTree/>
  104767. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_updated_at" enabled="true">
  104768. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104769. <stringProp name="RegexExtractor.refname">admin_customer_address_updated_at</stringProp>
  104770. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)"</stringProp>
  104771. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104772. <stringProp name="RegexExtractor.default"/>
  104773. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104774. </RegexExtractor>
  104775. <hashTree/>
  104776. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_is_active" enabled="true">
  104777. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104778. <stringProp name="RegexExtractor.refname">admin_customer_address_is_active</stringProp>
  104779. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)"</stringProp>
  104780. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104781. <stringProp name="RegexExtractor.default"/>
  104782. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104783. </RegexExtractor>
  104784. <hashTree/>
  104785. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_city" enabled="true">
  104786. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104787. <stringProp name="RegexExtractor.refname">admin_customer_address_city</stringProp>
  104788. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)"</stringProp>
  104789. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104790. <stringProp name="RegexExtractor.default"/>
  104791. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104792. </RegexExtractor>
  104793. <hashTree/>
  104794. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_country_id" enabled="true">
  104795. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104796. <stringProp name="RegexExtractor.refname">admin_customer_address_country_id</stringProp>
  104797. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)"</stringProp>
  104798. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104799. <stringProp name="RegexExtractor.default"/>
  104800. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104801. </RegexExtractor>
  104802. <hashTree/>
  104803. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_firstname" enabled="true">
  104804. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104805. <stringProp name="RegexExtractor.refname">admin_customer_address_firstname</stringProp>
  104806. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)"</stringProp>
  104807. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104808. <stringProp name="RegexExtractor.default"/>
  104809. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104810. </RegexExtractor>
  104811. <hashTree/>
  104812. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_lastname" enabled="true">
  104813. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104814. <stringProp name="RegexExtractor.refname">admin_customer_address_lastname</stringProp>
  104815. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)"</stringProp>
  104816. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104817. <stringProp name="RegexExtractor.default"/>
  104818. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104819. </RegexExtractor>
  104820. <hashTree/>
  104821. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_postcode" enabled="true">
  104822. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104823. <stringProp name="RegexExtractor.refname">admin_customer_address_postcode</stringProp>
  104824. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)"</stringProp>
  104825. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104826. <stringProp name="RegexExtractor.default"/>
  104827. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104828. </RegexExtractor>
  104829. <hashTree/>
  104830. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region" enabled="true">
  104831. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104832. <stringProp name="RegexExtractor.refname">admin_customer_address_region</stringProp>
  104833. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)"</stringProp>
  104834. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104835. <stringProp name="RegexExtractor.default"/>
  104836. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104837. </RegexExtractor>
  104838. <hashTree/>
  104839. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region_id" enabled="true">
  104840. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104841. <stringProp name="RegexExtractor.refname">admin_customer_address_region_id</stringProp>
  104842. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)"</stringProp>
  104843. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104844. <stringProp name="RegexExtractor.default"/>
  104845. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104846. </RegexExtractor>
  104847. <hashTree/>
  104848. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address street" enabled="true">
  104849. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104850. <stringProp name="RegexExtractor.refname">admin_customer_address_street</stringProp>
  104851. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\]</stringProp>
  104852. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104853. <stringProp name="RegexExtractor.default"/>
  104854. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104855. </RegexExtractor>
  104856. <hashTree/>
  104857. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_telephone" enabled="true">
  104858. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104859. <stringProp name="RegexExtractor.refname">admin_customer_address_telephone</stringProp>
  104860. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)"</stringProp>
  104861. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104862. <stringProp name="RegexExtractor.default"/>
  104863. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104864. </RegexExtractor>
  104865. <hashTree/>
  104866. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_customer_id" enabled="true">
  104867. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  104868. <stringProp name="RegexExtractor.refname">admin_customer_address_customer_id</stringProp>
  104869. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)"</stringProp>
  104870. <stringProp name="RegexExtractor.template">$1$</stringProp>
  104871. <stringProp name="RegexExtractor.default"/>
  104872. <stringProp name="RegexExtractor.match_number">1</stringProp>
  104873. </RegexExtractor>
  104874. <hashTree/>
  104875. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer entity_id" enabled="true">
  104876. <collectionProp name="Asserion.test_strings">
  104877. <stringProp name="89649215">^\d+$</stringProp>
  104878. </collectionProp>
  104879. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104880. <boolProp name="Assertion.assume_success">false</boolProp>
  104881. <intProp name="Assertion.test_type">1</intProp>
  104882. <stringProp name="Assertion.scope">variable</stringProp>
  104883. <stringProp name="Scope.variable">admin_customer_entity_id</stringProp>
  104884. </ResponseAssertion>
  104885. <hashTree/>
  104886. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert website_id" enabled="true">
  104887. <collectionProp name="Asserion.test_strings">
  104888. <stringProp name="89649215">^\d+$</stringProp>
  104889. </collectionProp>
  104890. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104891. <boolProp name="Assertion.assume_success">false</boolProp>
  104892. <intProp name="Assertion.test_type">1</intProp>
  104893. <stringProp name="Assertion.scope">variable</stringProp>
  104894. <stringProp name="Scope.variable">admin_customer_website_id</stringProp>
  104895. </ResponseAssertion>
  104896. <hashTree/>
  104897. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer firstname" enabled="true">
  104898. <collectionProp name="Asserion.test_strings">
  104899. <stringProp name="2845929">^.+$</stringProp>
  104900. </collectionProp>
  104901. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104902. <boolProp name="Assertion.assume_success">false</boolProp>
  104903. <intProp name="Assertion.test_type">1</intProp>
  104904. <stringProp name="Assertion.scope">variable</stringProp>
  104905. <stringProp name="Scope.variable">admin_customer_firstname</stringProp>
  104906. </ResponseAssertion>
  104907. <hashTree/>
  104908. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer lastname" enabled="true">
  104909. <collectionProp name="Asserion.test_strings">
  104910. <stringProp name="2845929">^.+$</stringProp>
  104911. </collectionProp>
  104912. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104913. <boolProp name="Assertion.assume_success">false</boolProp>
  104914. <intProp name="Assertion.test_type">1</intProp>
  104915. <stringProp name="Assertion.scope">variable</stringProp>
  104916. <stringProp name="Scope.variable">admin_customer_lastname</stringProp>
  104917. </ResponseAssertion>
  104918. <hashTree/>
  104919. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer email" enabled="true">
  104920. <collectionProp name="Asserion.test_strings">
  104921. <stringProp name="2845929">^.+$</stringProp>
  104922. </collectionProp>
  104923. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104924. <boolProp name="Assertion.assume_success">false</boolProp>
  104925. <intProp name="Assertion.test_type">1</intProp>
  104926. <stringProp name="Assertion.scope">variable</stringProp>
  104927. <stringProp name="Scope.variable">admin_customer_email</stringProp>
  104928. </ResponseAssertion>
  104929. <hashTree/>
  104930. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer group_id" enabled="true">
  104931. <collectionProp name="Asserion.test_strings">
  104932. <stringProp name="89649215">^\d+$</stringProp>
  104933. </collectionProp>
  104934. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104935. <boolProp name="Assertion.assume_success">false</boolProp>
  104936. <intProp name="Assertion.test_type">1</intProp>
  104937. <stringProp name="Assertion.scope">variable</stringProp>
  104938. <stringProp name="Scope.variable">admin_customer_group_id</stringProp>
  104939. </ResponseAssertion>
  104940. <hashTree/>
  104941. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer store_id" enabled="true">
  104942. <collectionProp name="Asserion.test_strings">
  104943. <stringProp name="89649215">^\d+$</stringProp>
  104944. </collectionProp>
  104945. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104946. <boolProp name="Assertion.assume_success">false</boolProp>
  104947. <intProp name="Assertion.test_type">1</intProp>
  104948. <stringProp name="Assertion.scope">variable</stringProp>
  104949. <stringProp name="Scope.variable">admin_customer_store_id</stringProp>
  104950. </ResponseAssertion>
  104951. <hashTree/>
  104952. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_at" enabled="true">
  104953. <collectionProp name="Asserion.test_strings">
  104954. <stringProp name="2845929">^.+$</stringProp>
  104955. </collectionProp>
  104956. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104957. <boolProp name="Assertion.assume_success">false</boolProp>
  104958. <intProp name="Assertion.test_type">1</intProp>
  104959. <stringProp name="Assertion.scope">variable</stringProp>
  104960. <stringProp name="Scope.variable">admin_customer_created_at</stringProp>
  104961. </ResponseAssertion>
  104962. <hashTree/>
  104963. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer updated_at" enabled="true">
  104964. <collectionProp name="Asserion.test_strings">
  104965. <stringProp name="2845929">^.+$</stringProp>
  104966. </collectionProp>
  104967. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104968. <boolProp name="Assertion.assume_success">false</boolProp>
  104969. <intProp name="Assertion.test_type">1</intProp>
  104970. <stringProp name="Assertion.scope">variable</stringProp>
  104971. <stringProp name="Scope.variable">admin_customer_updated_at</stringProp>
  104972. </ResponseAssertion>
  104973. <hashTree/>
  104974. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer is_active" enabled="true">
  104975. <collectionProp name="Asserion.test_strings">
  104976. <stringProp name="89649215">^\d+$</stringProp>
  104977. </collectionProp>
  104978. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104979. <boolProp name="Assertion.assume_success">false</boolProp>
  104980. <intProp name="Assertion.test_type">1</intProp>
  104981. <stringProp name="Assertion.scope">variable</stringProp>
  104982. <stringProp name="Scope.variable">admin_customer_is_active</stringProp>
  104983. </ResponseAssertion>
  104984. <hashTree/>
  104985. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer disable_auto_group_change" enabled="true">
  104986. <collectionProp name="Asserion.test_strings">
  104987. <stringProp name="89649215">^\d+$</stringProp>
  104988. </collectionProp>
  104989. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  104990. <boolProp name="Assertion.assume_success">false</boolProp>
  104991. <intProp name="Assertion.test_type">1</intProp>
  104992. <stringProp name="Assertion.scope">variable</stringProp>
  104993. <stringProp name="Scope.variable">admin_customer_disable_auto_group_change</stringProp>
  104994. </ResponseAssertion>
  104995. <hashTree/>
  104996. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_in" enabled="true">
  104997. <collectionProp name="Asserion.test_strings">
  104998. <stringProp name="2845929">^.+$</stringProp>
  104999. </collectionProp>
  105000. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105001. <boolProp name="Assertion.assume_success">false</boolProp>
  105002. <intProp name="Assertion.test_type">1</intProp>
  105003. <stringProp name="Assertion.scope">variable</stringProp>
  105004. <stringProp name="Scope.variable">admin_customer_created_in</stringProp>
  105005. </ResponseAssertion>
  105006. <hashTree/>
  105007. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer dob" enabled="true">
  105008. <collectionProp name="Asserion.test_strings">
  105009. <stringProp name="221072919">^\d+/\d+/\d+$</stringProp>
  105010. </collectionProp>
  105011. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105012. <boolProp name="Assertion.assume_success">false</boolProp>
  105013. <intProp name="Assertion.test_type">1</intProp>
  105014. <stringProp name="Assertion.scope">variable</stringProp>
  105015. <stringProp name="Scope.variable">admin_customer_dob</stringProp>
  105016. </ResponseAssertion>
  105017. <hashTree/>
  105018. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_billing" enabled="true">
  105019. <collectionProp name="Asserion.test_strings">
  105020. <stringProp name="89649215">^\d+$</stringProp>
  105021. </collectionProp>
  105022. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105023. <boolProp name="Assertion.assume_success">false</boolProp>
  105024. <intProp name="Assertion.test_type">1</intProp>
  105025. <stringProp name="Assertion.scope">variable</stringProp>
  105026. <stringProp name="Scope.variable">admin_customer_default_billing</stringProp>
  105027. </ResponseAssertion>
  105028. <hashTree/>
  105029. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_shipping" enabled="true">
  105030. <collectionProp name="Asserion.test_strings">
  105031. <stringProp name="89649215">^\d+$</stringProp>
  105032. </collectionProp>
  105033. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105034. <boolProp name="Assertion.assume_success">false</boolProp>
  105035. <intProp name="Assertion.test_type">1</intProp>
  105036. <stringProp name="Assertion.scope">variable</stringProp>
  105037. <stringProp name="Scope.variable">admin_customer_default_shipping</stringProp>
  105038. </ResponseAssertion>
  105039. <hashTree/>
  105040. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer gender" enabled="true">
  105041. <collectionProp name="Asserion.test_strings">
  105042. <stringProp name="89649215">^\d+$</stringProp>
  105043. </collectionProp>
  105044. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105045. <boolProp name="Assertion.assume_success">false</boolProp>
  105046. <intProp name="Assertion.test_type">1</intProp>
  105047. <stringProp name="Assertion.scope">variable</stringProp>
  105048. <stringProp name="Scope.variable">admin_customer_gender</stringProp>
  105049. </ResponseAssertion>
  105050. <hashTree/>
  105051. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer failures_num" enabled="true">
  105052. <collectionProp name="Asserion.test_strings">
  105053. <stringProp name="89649215">^\d+$</stringProp>
  105054. </collectionProp>
  105055. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105056. <boolProp name="Assertion.assume_success">false</boolProp>
  105057. <intProp name="Assertion.test_type">1</intProp>
  105058. <stringProp name="Assertion.scope">variable</stringProp>
  105059. <stringProp name="Scope.variable">admin_customer_failures_num</stringProp>
  105060. </ResponseAssertion>
  105061. <hashTree/>
  105062. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_entity_id" enabled="true">
  105063. <collectionProp name="Asserion.test_strings">
  105064. <stringProp name="89649215">^\d+$</stringProp>
  105065. </collectionProp>
  105066. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105067. <boolProp name="Assertion.assume_success">false</boolProp>
  105068. <intProp name="Assertion.test_type">1</intProp>
  105069. <stringProp name="Assertion.scope">variable</stringProp>
  105070. <stringProp name="Scope.variable">admin_customer_address_entity_id</stringProp>
  105071. </ResponseAssertion>
  105072. <hashTree/>
  105073. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_created_at" enabled="true">
  105074. <collectionProp name="Asserion.test_strings">
  105075. <stringProp name="2845929">^.+$</stringProp>
  105076. </collectionProp>
  105077. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105078. <boolProp name="Assertion.assume_success">false</boolProp>
  105079. <intProp name="Assertion.test_type">1</intProp>
  105080. <stringProp name="Assertion.scope">variable</stringProp>
  105081. <stringProp name="Scope.variable">admin_customer_address_created_at</stringProp>
  105082. </ResponseAssertion>
  105083. <hashTree/>
  105084. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_updated_at" enabled="true">
  105085. <collectionProp name="Asserion.test_strings">
  105086. <stringProp name="2845929">^.+$</stringProp>
  105087. </collectionProp>
  105088. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105089. <boolProp name="Assertion.assume_success">false</boolProp>
  105090. <intProp name="Assertion.test_type">1</intProp>
  105091. <stringProp name="Assertion.scope">variable</stringProp>
  105092. <stringProp name="Scope.variable">admin_customer_address_updated_at</stringProp>
  105093. </ResponseAssertion>
  105094. <hashTree/>
  105095. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_is_active" enabled="true">
  105096. <collectionProp name="Asserion.test_strings">
  105097. <stringProp name="89649215">^\d+$</stringProp>
  105098. </collectionProp>
  105099. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105100. <boolProp name="Assertion.assume_success">false</boolProp>
  105101. <intProp name="Assertion.test_type">1</intProp>
  105102. <stringProp name="Assertion.scope">variable</stringProp>
  105103. <stringProp name="Scope.variable">admin_customer_address_is_active</stringProp>
  105104. </ResponseAssertion>
  105105. <hashTree/>
  105106. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_city" enabled="true">
  105107. <collectionProp name="Asserion.test_strings">
  105108. <stringProp name="2845929">^.+$</stringProp>
  105109. </collectionProp>
  105110. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105111. <boolProp name="Assertion.assume_success">false</boolProp>
  105112. <intProp name="Assertion.test_type">1</intProp>
  105113. <stringProp name="Assertion.scope">variable</stringProp>
  105114. <stringProp name="Scope.variable">admin_customer_address_city</stringProp>
  105115. </ResponseAssertion>
  105116. <hashTree/>
  105117. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_country_id" enabled="true">
  105118. <collectionProp name="Asserion.test_strings">
  105119. <stringProp name="2845929">^.+$</stringProp>
  105120. </collectionProp>
  105121. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105122. <boolProp name="Assertion.assume_success">false</boolProp>
  105123. <intProp name="Assertion.test_type">1</intProp>
  105124. <stringProp name="Assertion.scope">variable</stringProp>
  105125. <stringProp name="Scope.variable">admin_customer_address_country_id</stringProp>
  105126. </ResponseAssertion>
  105127. <hashTree/>
  105128. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_firstname" enabled="true">
  105129. <collectionProp name="Asserion.test_strings">
  105130. <stringProp name="2845929">^.+$</stringProp>
  105131. </collectionProp>
  105132. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105133. <boolProp name="Assertion.assume_success">false</boolProp>
  105134. <intProp name="Assertion.test_type">1</intProp>
  105135. <stringProp name="Assertion.scope">variable</stringProp>
  105136. <stringProp name="Scope.variable">admin_customer_address_firstname</stringProp>
  105137. </ResponseAssertion>
  105138. <hashTree/>
  105139. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_lastname" enabled="true">
  105140. <collectionProp name="Asserion.test_strings">
  105141. <stringProp name="2845929">^.+$</stringProp>
  105142. </collectionProp>
  105143. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105144. <boolProp name="Assertion.assume_success">false</boolProp>
  105145. <intProp name="Assertion.test_type">1</intProp>
  105146. <stringProp name="Assertion.scope">variable</stringProp>
  105147. <stringProp name="Scope.variable">admin_customer_address_lastname</stringProp>
  105148. </ResponseAssertion>
  105149. <hashTree/>
  105150. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_postcode" enabled="true">
  105151. <collectionProp name="Asserion.test_strings">
  105152. <stringProp name="2845929">^.+$</stringProp>
  105153. </collectionProp>
  105154. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105155. <boolProp name="Assertion.assume_success">false</boolProp>
  105156. <intProp name="Assertion.test_type">1</intProp>
  105157. <stringProp name="Assertion.scope">variable</stringProp>
  105158. <stringProp name="Scope.variable">admin_customer_address_postcode</stringProp>
  105159. </ResponseAssertion>
  105160. <hashTree/>
  105161. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region" enabled="true">
  105162. <collectionProp name="Asserion.test_strings">
  105163. <stringProp name="2845929">^.+$</stringProp>
  105164. </collectionProp>
  105165. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105166. <boolProp name="Assertion.assume_success">false</boolProp>
  105167. <intProp name="Assertion.test_type">1</intProp>
  105168. <stringProp name="Assertion.scope">variable</stringProp>
  105169. <stringProp name="Scope.variable">admin_customer_address_region</stringProp>
  105170. </ResponseAssertion>
  105171. <hashTree/>
  105172. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region_id" enabled="true">
  105173. <collectionProp name="Asserion.test_strings">
  105174. <stringProp name="89649215">^\d+$</stringProp>
  105175. </collectionProp>
  105176. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105177. <boolProp name="Assertion.assume_success">false</boolProp>
  105178. <intProp name="Assertion.test_type">1</intProp>
  105179. <stringProp name="Assertion.scope">variable</stringProp>
  105180. <stringProp name="Scope.variable">admin_customer_address_region_id</stringProp>
  105181. </ResponseAssertion>
  105182. <hashTree/>
  105183. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_street" enabled="true">
  105184. <collectionProp name="Asserion.test_strings">
  105185. <stringProp name="2845929">^.+$</stringProp>
  105186. </collectionProp>
  105187. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105188. <boolProp name="Assertion.assume_success">false</boolProp>
  105189. <intProp name="Assertion.test_type">1</intProp>
  105190. <stringProp name="Assertion.scope">variable</stringProp>
  105191. <stringProp name="Scope.variable">admin_customer_address_street</stringProp>
  105192. </ResponseAssertion>
  105193. <hashTree/>
  105194. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_telephone" enabled="true">
  105195. <collectionProp name="Asserion.test_strings">
  105196. <stringProp name="2845929">^.+$</stringProp>
  105197. </collectionProp>
  105198. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105199. <boolProp name="Assertion.assume_success">false</boolProp>
  105200. <intProp name="Assertion.test_type">1</intProp>
  105201. <stringProp name="Assertion.scope">variable</stringProp>
  105202. <stringProp name="Scope.variable">admin_customer_address_telephone</stringProp>
  105203. </ResponseAssertion>
  105204. <hashTree/>
  105205. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_customer_id" enabled="true">
  105206. <collectionProp name="Asserion.test_strings">
  105207. <stringProp name="89649215">^\d+$</stringProp>
  105208. </collectionProp>
  105209. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  105210. <boolProp name="Assertion.assume_success">false</boolProp>
  105211. <intProp name="Assertion.test_type">1</intProp>
  105212. <stringProp name="Assertion.scope">variable</stringProp>
  105213. <stringProp name="Scope.variable">admin_customer_address_customer_id</stringProp>
  105214. </ResponseAssertion>
  105215. <hashTree/>
  105216. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  105217. <collectionProp name="HeaderManager.headers">
  105218. <elementProp name="Accept-Language" elementType="Header">
  105219. <stringProp name="Header.name">Accept-Language</stringProp>
  105220. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  105221. </elementProp>
  105222. <elementProp name="Accept" elementType="Header">
  105223. <stringProp name="Header.name">Accept</stringProp>
  105224. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  105225. </elementProp>
  105226. <elementProp name="User-Agent" elementType="Header">
  105227. <stringProp name="Header.name">User-Agent</stringProp>
  105228. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  105229. </elementProp>
  105230. <elementProp name="Accept-Encoding" elementType="Header">
  105231. <stringProp name="Header.name">Accept-Encoding</stringProp>
  105232. <stringProp name="Header.value">gzip, deflate</stringProp>
  105233. </elementProp>
  105234. </collectionProp>
  105235. </HeaderManager>
  105236. <hashTree/>
  105237. </hashTree>
  105238. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Validate" enabled="true">
  105239. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  105240. <collectionProp name="Arguments.arguments">
  105241. <elementProp name="isAjax " elementType="HTTPArgument">
  105242. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105243. <stringProp name="Argument.value">true</stringProp>
  105244. <stringProp name="Argument.metadata">=</stringProp>
  105245. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105246. <stringProp name="Argument.name">isAjax </stringProp>
  105247. </elementProp>
  105248. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  105249. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105250. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  105251. <stringProp name="Argument.metadata">=</stringProp>
  105252. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105253. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  105254. </elementProp>
  105255. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  105256. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105257. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  105258. <stringProp name="Argument.metadata">=</stringProp>
  105259. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105260. <stringProp name="Argument.name">customer[website_id]</stringProp>
  105261. </elementProp>
  105262. <elementProp name="customer[email]" elementType="HTTPArgument">
  105263. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105264. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  105265. <stringProp name="Argument.metadata">=</stringProp>
  105266. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105267. <stringProp name="Argument.name">customer[email]</stringProp>
  105268. </elementProp>
  105269. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  105270. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105271. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  105272. <stringProp name="Argument.metadata">=</stringProp>
  105273. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105274. <stringProp name="Argument.name">customer[group_id]</stringProp>
  105275. </elementProp>
  105276. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  105277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105278. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  105279. <stringProp name="Argument.metadata">=</stringProp>
  105280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105281. <stringProp name="Argument.name">customer[store_id]</stringProp>
  105282. </elementProp>
  105283. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  105284. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105285. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  105286. <stringProp name="Argument.metadata">=</stringProp>
  105287. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105288. <stringProp name="Argument.name">customer[created_at]</stringProp>
  105289. </elementProp>
  105290. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  105291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105292. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  105293. <stringProp name="Argument.metadata">=</stringProp>
  105294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105295. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  105296. </elementProp>
  105297. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  105298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105299. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  105300. <stringProp name="Argument.metadata">=</stringProp>
  105301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105302. <stringProp name="Argument.name">customer[is_active]</stringProp>
  105303. </elementProp>
  105304. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  105305. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105306. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  105307. <stringProp name="Argument.metadata">=</stringProp>
  105308. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105309. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  105310. </elementProp>
  105311. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  105312. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105313. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  105314. <stringProp name="Argument.metadata">=</stringProp>
  105315. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105316. <stringProp name="Argument.name">customer[created_in]</stringProp>
  105317. </elementProp>
  105318. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  105319. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105320. <stringProp name="Argument.value"/>
  105321. <stringProp name="Argument.metadata">=</stringProp>
  105322. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105323. <stringProp name="Argument.name">customer[prefix]</stringProp>
  105324. </elementProp>
  105325. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  105326. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105327. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  105328. <stringProp name="Argument.metadata">=</stringProp>
  105329. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105330. <stringProp name="Argument.name">customer[firstname]</stringProp>
  105331. </elementProp>
  105332. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  105333. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105334. <stringProp name="Argument.value"/>
  105335. <stringProp name="Argument.metadata">=</stringProp>
  105336. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105337. <stringProp name="Argument.name">customer[middlename]</stringProp>
  105338. </elementProp>
  105339. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  105340. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105341. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  105342. <stringProp name="Argument.metadata">=</stringProp>
  105343. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105344. <stringProp name="Argument.name">customer[lastname]</stringProp>
  105345. </elementProp>
  105346. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  105347. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105348. <stringProp name="Argument.value"/>
  105349. <stringProp name="Argument.metadata">=</stringProp>
  105350. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105351. <stringProp name="Argument.name">customer[suffix]</stringProp>
  105352. </elementProp>
  105353. <elementProp name="customer[dob]" elementType="HTTPArgument">
  105354. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105355. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  105356. <stringProp name="Argument.metadata">=</stringProp>
  105357. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105358. <stringProp name="Argument.name">customer[dob]</stringProp>
  105359. </elementProp>
  105360. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  105361. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105362. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  105363. <stringProp name="Argument.metadata">=</stringProp>
  105364. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105365. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  105366. </elementProp>
  105367. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  105368. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105369. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  105370. <stringProp name="Argument.metadata">=</stringProp>
  105371. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105372. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  105373. </elementProp>
  105374. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  105375. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105376. <stringProp name="Argument.value"/>
  105377. <stringProp name="Argument.metadata">=</stringProp>
  105378. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105379. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  105380. </elementProp>
  105381. <elementProp name="customer[gender]" elementType="HTTPArgument">
  105382. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105383. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  105384. <stringProp name="Argument.metadata">=</stringProp>
  105385. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105386. <stringProp name="Argument.name">customer[gender]</stringProp>
  105387. </elementProp>
  105388. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  105389. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105390. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  105391. <stringProp name="Argument.metadata">=</stringProp>
  105392. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105393. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  105394. </elementProp>
  105395. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  105396. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105397. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  105398. <stringProp name="Argument.metadata">=</stringProp>
  105399. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105400. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  105401. </elementProp>
  105402. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  105403. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105404. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  105405. <stringProp name="Argument.metadata">=</stringProp>
  105406. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105407. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  105408. </elementProp>
  105409. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  105410. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105411. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  105412. <stringProp name="Argument.metadata">=</stringProp>
  105413. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105414. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  105415. </elementProp>
  105416. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  105417. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105418. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  105419. <stringProp name="Argument.metadata">=</stringProp>
  105420. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105421. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  105422. </elementProp>
  105423. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  105424. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105425. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  105426. <stringProp name="Argument.metadata">=</stringProp>
  105427. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105428. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  105429. </elementProp>
  105430. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  105431. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105432. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  105433. <stringProp name="Argument.metadata">=</stringProp>
  105434. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105435. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  105436. </elementProp>
  105437. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  105438. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105439. <stringProp name="Argument.value"/>
  105440. <stringProp name="Argument.metadata">=</stringProp>
  105441. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105442. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  105443. </elementProp>
  105444. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  105445. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105446. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  105447. <stringProp name="Argument.metadata">=</stringProp>
  105448. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105449. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  105450. </elementProp>
  105451. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  105452. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105453. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  105454. <stringProp name="Argument.metadata">=</stringProp>
  105455. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105456. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  105457. </elementProp>
  105458. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  105459. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105460. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  105461. <stringProp name="Argument.metadata">=</stringProp>
  105462. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105463. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  105464. </elementProp>
  105465. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  105466. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105467. <stringProp name="Argument.value"/>
  105468. <stringProp name="Argument.metadata">=</stringProp>
  105469. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105470. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  105471. </elementProp>
  105472. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  105473. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105474. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  105475. <stringProp name="Argument.metadata">=</stringProp>
  105476. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105477. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  105478. </elementProp>
  105479. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  105480. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105481. <stringProp name="Argument.value"/>
  105482. <stringProp name="Argument.metadata">=</stringProp>
  105483. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105484. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  105485. </elementProp>
  105486. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  105487. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105488. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  105489. <stringProp name="Argument.metadata">=</stringProp>
  105490. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105491. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  105492. </elementProp>
  105493. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  105494. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105495. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  105496. <stringProp name="Argument.metadata">=</stringProp>
  105497. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105498. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  105499. </elementProp>
  105500. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  105501. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105502. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  105503. <stringProp name="Argument.metadata">=</stringProp>
  105504. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105505. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  105506. </elementProp>
  105507. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  105508. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105509. <stringProp name="Argument.value"/>
  105510. <stringProp name="Argument.metadata">=</stringProp>
  105511. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105512. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  105513. </elementProp>
  105514. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  105515. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105516. <stringProp name="Argument.value"/>
  105517. <stringProp name="Argument.metadata">=</stringProp>
  105518. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105519. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  105520. </elementProp>
  105521. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  105522. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105523. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  105524. <stringProp name="Argument.metadata">=</stringProp>
  105525. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105526. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  105527. </elementProp>
  105528. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  105529. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105530. <stringProp name="Argument.value"/>
  105531. <stringProp name="Argument.metadata">=</stringProp>
  105532. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105533. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  105534. </elementProp>
  105535. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  105536. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105537. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  105538. <stringProp name="Argument.metadata">=</stringProp>
  105539. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105540. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  105541. </elementProp>
  105542. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  105543. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105544. <stringProp name="Argument.value">true</stringProp>
  105545. <stringProp name="Argument.metadata">=</stringProp>
  105546. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105547. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  105548. </elementProp>
  105549. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  105550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105551. <stringProp name="Argument.value">true</stringProp>
  105552. <stringProp name="Argument.metadata">=</stringProp>
  105553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105554. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  105555. </elementProp>
  105556. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  105557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105558. <stringProp name="Argument.value"/>
  105559. <stringProp name="Argument.metadata">=</stringProp>
  105560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105561. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  105562. </elementProp>
  105563. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  105564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105565. <stringProp name="Argument.value">John</stringProp>
  105566. <stringProp name="Argument.metadata">=</stringProp>
  105567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105568. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  105569. </elementProp>
  105570. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  105571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105572. <stringProp name="Argument.value"/>
  105573. <stringProp name="Argument.metadata">=</stringProp>
  105574. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105575. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  105576. </elementProp>
  105577. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  105578. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105579. <stringProp name="Argument.value">Doe</stringProp>
  105580. <stringProp name="Argument.metadata">=</stringProp>
  105581. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105582. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  105583. </elementProp>
  105584. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  105585. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105586. <stringProp name="Argument.value"/>
  105587. <stringProp name="Argument.metadata">=</stringProp>
  105588. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105589. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  105590. </elementProp>
  105591. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  105592. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105593. <stringProp name="Argument.value">Test Company</stringProp>
  105594. <stringProp name="Argument.metadata">=</stringProp>
  105595. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105596. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  105597. </elementProp>
  105598. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  105599. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105600. <stringProp name="Argument.value">Folsom</stringProp>
  105601. <stringProp name="Argument.metadata">=</stringProp>
  105602. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105603. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  105604. </elementProp>
  105605. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  105606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105607. <stringProp name="Argument.value">95630</stringProp>
  105608. <stringProp name="Argument.metadata">=</stringProp>
  105609. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105610. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  105611. </elementProp>
  105612. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  105613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105614. <stringProp name="Argument.value">1234567890</stringProp>
  105615. <stringProp name="Argument.metadata">=</stringProp>
  105616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105617. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  105618. </elementProp>
  105619. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  105620. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105621. <stringProp name="Argument.value"/>
  105622. <stringProp name="Argument.metadata">=</stringProp>
  105623. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105624. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  105625. </elementProp>
  105626. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  105627. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105628. <stringProp name="Argument.value">false</stringProp>
  105629. <stringProp name="Argument.metadata">=</stringProp>
  105630. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105631. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  105632. </elementProp>
  105633. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  105634. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105635. <stringProp name="Argument.value">false</stringProp>
  105636. <stringProp name="Argument.metadata">=</stringProp>
  105637. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105638. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  105639. </elementProp>
  105640. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  105641. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105642. <stringProp name="Argument.value">123 Main</stringProp>
  105643. <stringProp name="Argument.metadata">=</stringProp>
  105644. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105645. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  105646. </elementProp>
  105647. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  105648. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105649. <stringProp name="Argument.value"/>
  105650. <stringProp name="Argument.metadata">=</stringProp>
  105651. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105652. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  105653. </elementProp>
  105654. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  105655. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105656. <stringProp name="Argument.value"/>
  105657. <stringProp name="Argument.metadata">=</stringProp>
  105658. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105659. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  105660. </elementProp>
  105661. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  105662. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105663. <stringProp name="Argument.value">US</stringProp>
  105664. <stringProp name="Argument.metadata">=</stringProp>
  105665. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105666. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  105667. </elementProp>
  105668. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  105669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105670. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  105671. <stringProp name="Argument.metadata">=</stringProp>
  105672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105673. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  105674. </elementProp>
  105675. <elementProp name="form_key" elementType="HTTPArgument">
  105676. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105677. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  105678. <stringProp name="Argument.metadata">=</stringProp>
  105679. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105680. <stringProp name="Argument.name">form_key</stringProp>
  105681. </elementProp>
  105682. </collectionProp>
  105683. </elementProp>
  105684. <stringProp name="HTTPSampler.domain"/>
  105685. <stringProp name="HTTPSampler.port"/>
  105686. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  105687. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  105688. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  105689. <stringProp name="HTTPSampler.contentEncoding"/>
  105690. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/validate/</stringProp>
  105691. <stringProp name="HTTPSampler.method">POST</stringProp>
  105692. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  105693. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  105694. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  105695. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  105696. <boolProp name="HTTPSampler.monitor">false</boolProp>
  105697. <stringProp name="HTTPSampler.embedded_url_re"/>
  105698. </HTTPSamplerProxy>
  105699. <hashTree>
  105700. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  105701. <collectionProp name="Asserion.test_strings">
  105702. <stringProp name="49586">200</stringProp>
  105703. </collectionProp>
  105704. <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
  105705. <boolProp name="Assertion.assume_success">false</boolProp>
  105706. <intProp name="Assertion.test_type">16</intProp>
  105707. </ResponseAssertion>
  105708. <hashTree/>
  105709. </hashTree>
  105710. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Save" enabled="true">
  105711. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  105712. <collectionProp name="Arguments.arguments">
  105713. <elementProp name="isAjax " elementType="HTTPArgument">
  105714. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105715. <stringProp name="Argument.value">true</stringProp>
  105716. <stringProp name="Argument.metadata">=</stringProp>
  105717. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105718. <stringProp name="Argument.name">isAjax </stringProp>
  105719. </elementProp>
  105720. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  105721. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105722. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  105723. <stringProp name="Argument.metadata">=</stringProp>
  105724. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105725. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  105726. </elementProp>
  105727. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  105728. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105729. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  105730. <stringProp name="Argument.metadata">=</stringProp>
  105731. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105732. <stringProp name="Argument.name">customer[website_id]</stringProp>
  105733. </elementProp>
  105734. <elementProp name="customer[email]" elementType="HTTPArgument">
  105735. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105736. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  105737. <stringProp name="Argument.metadata">=</stringProp>
  105738. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105739. <stringProp name="Argument.name">customer[email]</stringProp>
  105740. </elementProp>
  105741. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  105742. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105743. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  105744. <stringProp name="Argument.metadata">=</stringProp>
  105745. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105746. <stringProp name="Argument.name">customer[group_id]</stringProp>
  105747. </elementProp>
  105748. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  105749. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105750. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  105751. <stringProp name="Argument.metadata">=</stringProp>
  105752. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105753. <stringProp name="Argument.name">customer[store_id]</stringProp>
  105754. </elementProp>
  105755. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  105756. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105757. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  105758. <stringProp name="Argument.metadata">=</stringProp>
  105759. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105760. <stringProp name="Argument.name">customer[created_at]</stringProp>
  105761. </elementProp>
  105762. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  105763. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105764. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  105765. <stringProp name="Argument.metadata">=</stringProp>
  105766. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105767. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  105768. </elementProp>
  105769. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  105770. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105771. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  105772. <stringProp name="Argument.metadata">=</stringProp>
  105773. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105774. <stringProp name="Argument.name">customer[is_active]</stringProp>
  105775. </elementProp>
  105776. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  105777. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105778. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  105779. <stringProp name="Argument.metadata">=</stringProp>
  105780. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105781. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  105782. </elementProp>
  105783. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  105784. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105785. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  105786. <stringProp name="Argument.metadata">=</stringProp>
  105787. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105788. <stringProp name="Argument.name">customer[created_in]</stringProp>
  105789. </elementProp>
  105790. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  105791. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105792. <stringProp name="Argument.value"/>
  105793. <stringProp name="Argument.metadata">=</stringProp>
  105794. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105795. <stringProp name="Argument.name">customer[prefix]</stringProp>
  105796. </elementProp>
  105797. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  105798. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105799. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  105800. <stringProp name="Argument.metadata">=</stringProp>
  105801. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105802. <stringProp name="Argument.name">customer[firstname]</stringProp>
  105803. </elementProp>
  105804. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  105805. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105806. <stringProp name="Argument.value"/>
  105807. <stringProp name="Argument.metadata">=</stringProp>
  105808. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105809. <stringProp name="Argument.name">customer[middlename]</stringProp>
  105810. </elementProp>
  105811. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  105812. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105813. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  105814. <stringProp name="Argument.metadata">=</stringProp>
  105815. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105816. <stringProp name="Argument.name">customer[lastname]</stringProp>
  105817. </elementProp>
  105818. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  105819. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105820. <stringProp name="Argument.value"/>
  105821. <stringProp name="Argument.metadata">=</stringProp>
  105822. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105823. <stringProp name="Argument.name">customer[suffix]</stringProp>
  105824. </elementProp>
  105825. <elementProp name="customer[dob]" elementType="HTTPArgument">
  105826. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105827. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  105828. <stringProp name="Argument.metadata">=</stringProp>
  105829. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105830. <stringProp name="Argument.name">customer[dob]</stringProp>
  105831. </elementProp>
  105832. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  105833. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105834. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  105835. <stringProp name="Argument.metadata">=</stringProp>
  105836. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105837. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  105838. </elementProp>
  105839. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  105840. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105841. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  105842. <stringProp name="Argument.metadata">=</stringProp>
  105843. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105844. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  105845. </elementProp>
  105846. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  105847. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105848. <stringProp name="Argument.value"/>
  105849. <stringProp name="Argument.metadata">=</stringProp>
  105850. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105851. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  105852. </elementProp>
  105853. <elementProp name="customer[gender]" elementType="HTTPArgument">
  105854. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105855. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  105856. <stringProp name="Argument.metadata">=</stringProp>
  105857. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105858. <stringProp name="Argument.name">customer[gender]</stringProp>
  105859. </elementProp>
  105860. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  105861. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105862. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  105863. <stringProp name="Argument.metadata">=</stringProp>
  105864. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105865. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  105866. </elementProp>
  105867. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  105868. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105869. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  105870. <stringProp name="Argument.metadata">=</stringProp>
  105871. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105872. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  105873. </elementProp>
  105874. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  105875. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105876. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  105877. <stringProp name="Argument.metadata">=</stringProp>
  105878. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105879. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  105880. </elementProp>
  105881. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  105882. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105883. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  105884. <stringProp name="Argument.metadata">=</stringProp>
  105885. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105886. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  105887. </elementProp>
  105888. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  105889. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105890. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  105891. <stringProp name="Argument.metadata">=</stringProp>
  105892. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105893. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  105894. </elementProp>
  105895. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  105896. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105897. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  105898. <stringProp name="Argument.metadata">=</stringProp>
  105899. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105900. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  105901. </elementProp>
  105902. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  105903. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105904. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  105905. <stringProp name="Argument.metadata">=</stringProp>
  105906. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105907. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  105908. </elementProp>
  105909. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  105910. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105911. <stringProp name="Argument.value"/>
  105912. <stringProp name="Argument.metadata">=</stringProp>
  105913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105914. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  105915. </elementProp>
  105916. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  105917. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105918. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  105919. <stringProp name="Argument.metadata">=</stringProp>
  105920. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105921. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  105922. </elementProp>
  105923. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  105924. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105925. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  105926. <stringProp name="Argument.metadata">=</stringProp>
  105927. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105928. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  105929. </elementProp>
  105930. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  105931. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105932. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  105933. <stringProp name="Argument.metadata">=</stringProp>
  105934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105935. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  105936. </elementProp>
  105937. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  105938. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105939. <stringProp name="Argument.value"/>
  105940. <stringProp name="Argument.metadata">=</stringProp>
  105941. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105942. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  105943. </elementProp>
  105944. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  105945. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105946. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  105947. <stringProp name="Argument.metadata">=</stringProp>
  105948. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105949. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  105950. </elementProp>
  105951. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  105952. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105953. <stringProp name="Argument.value"/>
  105954. <stringProp name="Argument.metadata">=</stringProp>
  105955. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105956. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  105957. </elementProp>
  105958. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  105959. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105960. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  105961. <stringProp name="Argument.metadata">=</stringProp>
  105962. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105963. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  105964. </elementProp>
  105965. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  105966. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105967. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  105968. <stringProp name="Argument.metadata">=</stringProp>
  105969. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105970. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  105971. </elementProp>
  105972. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  105973. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105974. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  105975. <stringProp name="Argument.metadata">=</stringProp>
  105976. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105977. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  105978. </elementProp>
  105979. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  105980. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105981. <stringProp name="Argument.value"/>
  105982. <stringProp name="Argument.metadata">=</stringProp>
  105983. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105984. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  105985. </elementProp>
  105986. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  105987. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105988. <stringProp name="Argument.value"/>
  105989. <stringProp name="Argument.metadata">=</stringProp>
  105990. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105991. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  105992. </elementProp>
  105993. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  105994. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  105995. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  105996. <stringProp name="Argument.metadata">=</stringProp>
  105997. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  105998. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  105999. </elementProp>
  106000. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  106001. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106002. <stringProp name="Argument.value"/>
  106003. <stringProp name="Argument.metadata">=</stringProp>
  106004. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106005. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  106006. </elementProp>
  106007. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  106008. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106009. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  106010. <stringProp name="Argument.metadata">=</stringProp>
  106011. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106012. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  106013. </elementProp>
  106014. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  106015. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106016. <stringProp name="Argument.value">true</stringProp>
  106017. <stringProp name="Argument.metadata">=</stringProp>
  106018. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106019. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  106020. </elementProp>
  106021. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  106022. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106023. <stringProp name="Argument.value">true</stringProp>
  106024. <stringProp name="Argument.metadata">=</stringProp>
  106025. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106026. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  106027. </elementProp>
  106028. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  106029. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106030. <stringProp name="Argument.value"/>
  106031. <stringProp name="Argument.metadata">=</stringProp>
  106032. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106033. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  106034. </elementProp>
  106035. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  106036. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106037. <stringProp name="Argument.value">John</stringProp>
  106038. <stringProp name="Argument.metadata">=</stringProp>
  106039. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106040. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  106041. </elementProp>
  106042. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  106043. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106044. <stringProp name="Argument.value"/>
  106045. <stringProp name="Argument.metadata">=</stringProp>
  106046. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106047. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  106048. </elementProp>
  106049. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  106050. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106051. <stringProp name="Argument.value">Doe</stringProp>
  106052. <stringProp name="Argument.metadata">=</stringProp>
  106053. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106054. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  106055. </elementProp>
  106056. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  106057. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106058. <stringProp name="Argument.value"/>
  106059. <stringProp name="Argument.metadata">=</stringProp>
  106060. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106061. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  106062. </elementProp>
  106063. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  106064. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106065. <stringProp name="Argument.value">Test Company</stringProp>
  106066. <stringProp name="Argument.metadata">=</stringProp>
  106067. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106068. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  106069. </elementProp>
  106070. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  106071. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106072. <stringProp name="Argument.value">Folsom</stringProp>
  106073. <stringProp name="Argument.metadata">=</stringProp>
  106074. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106075. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  106076. </elementProp>
  106077. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  106078. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106079. <stringProp name="Argument.value">95630</stringProp>
  106080. <stringProp name="Argument.metadata">=</stringProp>
  106081. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106082. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  106083. </elementProp>
  106084. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  106085. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106086. <stringProp name="Argument.value">1234567890</stringProp>
  106087. <stringProp name="Argument.metadata">=</stringProp>
  106088. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106089. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  106090. </elementProp>
  106091. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  106092. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106093. <stringProp name="Argument.value"/>
  106094. <stringProp name="Argument.metadata">=</stringProp>
  106095. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106096. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  106097. </elementProp>
  106098. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  106099. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106100. <stringProp name="Argument.value">false</stringProp>
  106101. <stringProp name="Argument.metadata">=</stringProp>
  106102. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106103. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  106104. </elementProp>
  106105. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  106106. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106107. <stringProp name="Argument.value">false</stringProp>
  106108. <stringProp name="Argument.metadata">=</stringProp>
  106109. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106110. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  106111. </elementProp>
  106112. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  106113. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106114. <stringProp name="Argument.value">123 Main</stringProp>
  106115. <stringProp name="Argument.metadata">=</stringProp>
  106116. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106117. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  106118. </elementProp>
  106119. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  106120. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106121. <stringProp name="Argument.value"/>
  106122. <stringProp name="Argument.metadata">=</stringProp>
  106123. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106124. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  106125. </elementProp>
  106126. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  106127. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106128. <stringProp name="Argument.value"/>
  106129. <stringProp name="Argument.metadata">=</stringProp>
  106130. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106131. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  106132. </elementProp>
  106133. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  106134. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106135. <stringProp name="Argument.value">US</stringProp>
  106136. <stringProp name="Argument.metadata">=</stringProp>
  106137. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106138. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  106139. </elementProp>
  106140. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  106141. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106142. <stringProp name="Argument.value">12</stringProp>
  106143. <stringProp name="Argument.metadata">=</stringProp>
  106144. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106145. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  106146. </elementProp>
  106147. <elementProp name="form_key" elementType="HTTPArgument">
  106148. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106149. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  106150. <stringProp name="Argument.metadata">=</stringProp>
  106151. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106152. <stringProp name="Argument.name">form_key</stringProp>
  106153. </elementProp>
  106154. </collectionProp>
  106155. </elementProp>
  106156. <stringProp name="HTTPSampler.domain"/>
  106157. <stringProp name="HTTPSampler.port"/>
  106158. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106159. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106160. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106161. <stringProp name="HTTPSampler.contentEncoding"/>
  106162. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/save/</stringProp>
  106163. <stringProp name="HTTPSampler.method">POST</stringProp>
  106164. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106165. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106166. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106167. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  106168. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106169. <stringProp name="HTTPSampler.embedded_url_re"/>
  106170. </HTTPSamplerProxy>
  106171. <hashTree>
  106172. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer saved" enabled="true">
  106173. <collectionProp name="Asserion.test_strings">
  106174. <stringProp name="292987815">You saved the customer.</stringProp>
  106175. </collectionProp>
  106176. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106177. <boolProp name="Assertion.assume_success">false</boolProp>
  106178. <intProp name="Assertion.test_type">2</intProp>
  106179. </ResponseAssertion>
  106180. <hashTree/>
  106181. </hashTree>
  106182. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  106183. <intProp name="ActionProcessor.action">1</intProp>
  106184. <intProp name="ActionProcessor.target">0</intProp>
  106185. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))}</stringProp>
  106186. </TestAction>
  106187. <hashTree/>
  106188. </hashTree>
  106189. </hashTree>
  106190. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  106191. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106192. <collectionProp name="Arguments.arguments"/>
  106193. </elementProp>
  106194. <stringProp name="HTTPSampler.domain"/>
  106195. <stringProp name="HTTPSampler.port"/>
  106196. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106197. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106198. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106199. <stringProp name="HTTPSampler.contentEncoding"/>
  106200. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  106201. <stringProp name="HTTPSampler.method">GET</stringProp>
  106202. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106203. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106204. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106205. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106206. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106207. <stringProp name="HTTPSampler.embedded_url_re"/>
  106208. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  106209. <hashTree>
  106210. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  106211. <boolProp name="resetInterpreter">false</boolProp>
  106212. <stringProp name="parameters"/>
  106213. <stringProp name="filename"/>
  106214. <stringProp name="script">
  106215. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  106216. if (adminUsersDistribution == 1) {
  106217. adminUserList = props.get("adminUserList");
  106218. adminUserList.add(vars.get("admin_user"));
  106219. }
  106220. </stringProp>
  106221. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  106222. <hashTree/>
  106223. </hashTree>
  106224. </hashTree>
  106225. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="[REST API C] Admin Edit Order" enabled="true">
  106226. <intProp name="ThroughputController.style">1</intProp>
  106227. <boolProp name="ThroughputController.perThread">false</boolProp>
  106228. <intProp name="ThroughputController.maxThroughput">1</intProp>
  106229. <stringProp name="ThroughputController.percentThroughput">${cAdminEditOrderPercentage}</stringProp>
  106230. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  106231. <hashTree>
  106232. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  106233. <stringProp name="script">
  106234. var tmpLabel = vars.get("testLabel")
  106235. if (tmpLabel) {
  106236. var testLabel = " (" + tmpLabel + ")"
  106237. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  106238. if (sampler.getName().indexOf(testLabel) == -1) {
  106239. sampler.setName(sampler.getName() + testLabel);
  106240. }
  106241. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  106242. sampler.setName("SetUp - " + sampler.getName());
  106243. }
  106244. } else {
  106245. testLabel = ""
  106246. }
  106247. </stringProp>
  106248. <stringProp name="scriptLanguage">javascript</stringProp>
  106249. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  106250. <hashTree/>
  106251. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  106252. <stringProp name="BeanShellSampler.query">
  106253. vars.put("testLabel", "[REST API C] Admin Edit Order");
  106254. </stringProp>
  106255. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  106256. </BeanShellSampler>
  106257. <hashTree/>
  106258. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  106259. <stringProp name="script">
  106260. function getFormKeyFromResponse()
  106261. {
  106262. var url = prev.getUrlAsString(),
  106263. responseCode = prev.getResponseCode(),
  106264. formKey = null;
  106265. searchPattern = /var FORM_KEY = '(.+)'/;
  106266. if (responseCode == "200" &amp;&amp; url) {
  106267. response = prev.getResponseDataAsString();
  106268. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  106269. }
  106270. return formKey;
  106271. }
  106272. formKey = vars.get("form_key_storage");
  106273. currentFormKey = getFormKeyFromResponse();
  106274. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  106275. vars.put("form_key_storage", currentFormKey);
  106276. }
  106277. </stringProp>
  106278. <stringProp name="scriptLanguage">javascript</stringProp>
  106279. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  106280. <hashTree/>
  106281. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  106282. <stringProp name="script">
  106283. formKey = vars.get("form_key_storage");
  106284. if (formKey
  106285. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  106286. &amp;&amp; sampler.getMethod() == "POST")
  106287. {
  106288. arguments = sampler.getArguments();
  106289. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  106290. {
  106291. argument = arguments.getArgument(i);
  106292. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  106293. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  106294. argument.setValue(formKey);
  106295. }
  106296. }
  106297. }
  106298. </stringProp>
  106299. <stringProp name="scriptLanguage">javascript</stringProp>
  106300. </JSR223PreProcessor>
  106301. <hashTree/>
  106302. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  106303. <collectionProp name="CookieManager.cookies"/>
  106304. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  106305. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  106306. <hashTree/>
  106307. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  106308. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  106309. </GenericController>
  106310. <hashTree>
  106311. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  106312. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  106313. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  106314. <hashTree>
  106315. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  106316. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  106317. <stringProp name="BeanShellSampler.query">
  106318. adminUser = "none";
  106319. adminUserList = props.get("adminUserList");
  106320. adminUserListIterator = props.get("adminUserListIterator");
  106321. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  106322. if (adminUsersDistribution == 1) {
  106323. adminUser = adminUserList.poll();
  106324. } else {
  106325. if (!adminUserListIterator.hasNext()) {
  106326. adminUserListIterator = adminUserList.descendingIterator();
  106327. }
  106328. adminUser = adminUserListIterator.next();
  106329. }
  106330. if (adminUser == "none") {
  106331. SampleResult.setResponseMessage("adminUser list is empty");
  106332. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  106333. IsSuccess=false;
  106334. SampleResult.setSuccessful(false);
  106335. SampleResult.setStopThread(true);
  106336. }
  106337. vars.put("admin_user", adminUser);
  106338. </stringProp>
  106339. <stringProp name="BeanShellSampler.filename"/>
  106340. <stringProp name="BeanShellSampler.parameters"/>
  106341. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  106342. </BeanShellSampler>
  106343. <hashTree/>
  106344. </hashTree>
  106345. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  106346. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106347. <collectionProp name="Arguments.arguments"/>
  106348. </elementProp>
  106349. <stringProp name="HTTPSampler.domain"/>
  106350. <stringProp name="HTTPSampler.port"/>
  106351. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106352. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106353. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106354. <stringProp name="HTTPSampler.contentEncoding"/>
  106355. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  106356. <stringProp name="HTTPSampler.method">GET</stringProp>
  106357. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106358. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106359. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106360. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106361. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106362. <stringProp name="HTTPSampler.embedded_url_re"/>
  106363. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  106364. <hashTree>
  106365. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  106366. <collectionProp name="Asserion.test_strings">
  106367. <stringProp name="-1397214398">Welcome</stringProp>
  106368. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  106369. </collectionProp>
  106370. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106371. <boolProp name="Assertion.assume_success">false</boolProp>
  106372. <intProp name="Assertion.test_type">2</intProp>
  106373. </ResponseAssertion>
  106374. <hashTree/>
  106375. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  106376. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  106377. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  106378. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  106379. <stringProp name="RegexExtractor.template">$1$</stringProp>
  106380. <stringProp name="RegexExtractor.default"/>
  106381. <stringProp name="RegexExtractor.match_number">1</stringProp>
  106382. </RegexExtractor>
  106383. <hashTree/>
  106384. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  106385. <collectionProp name="Asserion.test_strings">
  106386. <stringProp name="2845929">^.+$</stringProp>
  106387. </collectionProp>
  106388. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106389. <boolProp name="Assertion.assume_success">false</boolProp>
  106390. <intProp name="Assertion.test_type">1</intProp>
  106391. <stringProp name="Assertion.scope">variable</stringProp>
  106392. <stringProp name="Scope.variable">admin_form_key</stringProp>
  106393. </ResponseAssertion>
  106394. <hashTree/>
  106395. </hashTree>
  106396. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  106397. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106398. <collectionProp name="Arguments.arguments">
  106399. <elementProp name="dummy" elementType="HTTPArgument">
  106400. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106401. <stringProp name="Argument.value"/>
  106402. <stringProp name="Argument.metadata">=</stringProp>
  106403. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106404. <stringProp name="Argument.name">dummy</stringProp>
  106405. </elementProp>
  106406. <elementProp name="form_key" elementType="HTTPArgument">
  106407. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106408. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  106409. <stringProp name="Argument.metadata">=</stringProp>
  106410. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106411. <stringProp name="Argument.name">form_key</stringProp>
  106412. </elementProp>
  106413. <elementProp name="login[password]" elementType="HTTPArgument">
  106414. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106415. <stringProp name="Argument.value">${admin_password}</stringProp>
  106416. <stringProp name="Argument.metadata">=</stringProp>
  106417. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106418. <stringProp name="Argument.name">login[password]</stringProp>
  106419. </elementProp>
  106420. <elementProp name="login[username]" elementType="HTTPArgument">
  106421. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106422. <stringProp name="Argument.value">${admin_user}</stringProp>
  106423. <stringProp name="Argument.metadata">=</stringProp>
  106424. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106425. <stringProp name="Argument.name">login[username]</stringProp>
  106426. </elementProp>
  106427. </collectionProp>
  106428. </elementProp>
  106429. <stringProp name="HTTPSampler.domain"/>
  106430. <stringProp name="HTTPSampler.port"/>
  106431. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106432. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106433. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106434. <stringProp name="HTTPSampler.contentEncoding"/>
  106435. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  106436. <stringProp name="HTTPSampler.method">POST</stringProp>
  106437. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106438. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106439. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106440. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106441. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  106442. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106443. <stringProp name="HTTPSampler.embedded_url_re"/>
  106444. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  106445. </HTTPSamplerProxy>
  106446. <hashTree>
  106447. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  106448. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  106449. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  106450. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  106451. <stringProp name="RegexExtractor.template">$1$</stringProp>
  106452. <stringProp name="RegexExtractor.default"/>
  106453. <stringProp name="RegexExtractor.match_number">1</stringProp>
  106454. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  106455. <hashTree/>
  106456. </hashTree>
  106457. </hashTree>
  106458. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  106459. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  106460. </GenericController>
  106461. <hashTree>
  106462. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  106463. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106464. <collectionProp name="Arguments.arguments"/>
  106465. </elementProp>
  106466. <stringProp name="HTTPSampler.domain"/>
  106467. <stringProp name="HTTPSampler.port"/>
  106468. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106469. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106470. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106471. <stringProp name="HTTPSampler.contentEncoding"/>
  106472. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  106473. <stringProp name="HTTPSampler.method">GET</stringProp>
  106474. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106475. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106476. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106477. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106478. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106479. <stringProp name="HTTPSampler.embedded_url_re"/>
  106480. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  106481. <hashTree>
  106482. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  106483. <collectionProp name="Asserion.test_strings">
  106484. <stringProp name="1204796042">Create New Order</stringProp>
  106485. </collectionProp>
  106486. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106487. <boolProp name="Assertion.assume_success">false</boolProp>
  106488. <intProp name="Assertion.test_type">2</intProp>
  106489. </ResponseAssertion>
  106490. <hashTree/>
  106491. </hashTree>
  106492. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  106493. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106494. <collectionProp name="Arguments.arguments">
  106495. <elementProp name="namespace" elementType="HTTPArgument">
  106496. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106497. <stringProp name="Argument.value">sales_order_grid</stringProp>
  106498. <stringProp name="Argument.metadata">=</stringProp>
  106499. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106500. <stringProp name="Argument.name">namespace</stringProp>
  106501. </elementProp>
  106502. <elementProp name="search" elementType="HTTPArgument">
  106503. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106504. <stringProp name="Argument.value"/>
  106505. <stringProp name="Argument.metadata">=</stringProp>
  106506. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106507. <stringProp name="Argument.name">search</stringProp>
  106508. </elementProp>
  106509. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  106510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106511. <stringProp name="Argument.value">true</stringProp>
  106512. <stringProp name="Argument.metadata">=</stringProp>
  106513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106514. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  106515. </elementProp>
  106516. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  106517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106518. <stringProp name="Argument.value">200</stringProp>
  106519. <stringProp name="Argument.metadata">=</stringProp>
  106520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106521. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  106522. </elementProp>
  106523. <elementProp name="paging[current]" elementType="HTTPArgument">
  106524. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106525. <stringProp name="Argument.value">1</stringProp>
  106526. <stringProp name="Argument.metadata">=</stringProp>
  106527. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106528. <stringProp name="Argument.name">paging[current]</stringProp>
  106529. </elementProp>
  106530. <elementProp name="sorting[field]" elementType="HTTPArgument">
  106531. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106532. <stringProp name="Argument.value">increment_id</stringProp>
  106533. <stringProp name="Argument.metadata">=</stringProp>
  106534. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106535. <stringProp name="Argument.name">sorting[field]</stringProp>
  106536. </elementProp>
  106537. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  106538. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106539. <stringProp name="Argument.value">desc</stringProp>
  106540. <stringProp name="Argument.metadata">=</stringProp>
  106541. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106542. <stringProp name="Argument.name">sorting[direction]</stringProp>
  106543. </elementProp>
  106544. <elementProp name="isAjax" elementType="HTTPArgument">
  106545. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106546. <stringProp name="Argument.value">true</stringProp>
  106547. <stringProp name="Argument.metadata">=</stringProp>
  106548. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106549. <stringProp name="Argument.name">isAjax</stringProp>
  106550. </elementProp>
  106551. <elementProp name="form_key" elementType="HTTPArgument">
  106552. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106553. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  106554. <stringProp name="Argument.metadata">=</stringProp>
  106555. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106556. <stringProp name="Argument.name">form_key</stringProp>
  106557. <stringProp name="Argument.desc">false</stringProp>
  106558. </elementProp>
  106559. <elementProp name="filters[status]" elementType="HTTPArgument">
  106560. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106561. <stringProp name="Argument.value">pending</stringProp>
  106562. <stringProp name="Argument.metadata">=</stringProp>
  106563. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106564. <stringProp name="Argument.name">filters[status]</stringProp>
  106565. <stringProp name="Argument.desc">true</stringProp>
  106566. </elementProp>
  106567. <elementProp name="_" elementType="HTTPArgument">
  106568. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106569. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  106570. <stringProp name="Argument.metadata">=</stringProp>
  106571. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106572. <stringProp name="Argument.name">_</stringProp>
  106573. </elementProp>
  106574. </collectionProp>
  106575. </elementProp>
  106576. <stringProp name="HTTPSampler.domain"/>
  106577. <stringProp name="HTTPSampler.port"/>
  106578. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106579. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106580. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106581. <stringProp name="HTTPSampler.contentEncoding"/>
  106582. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  106583. <stringProp name="HTTPSampler.method">GET</stringProp>
  106584. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106585. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106586. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106587. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106588. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106589. <stringProp name="HTTPSampler.embedded_url_re"/>
  106590. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  106591. <hashTree>
  106592. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  106593. <collectionProp name="Asserion.test_strings">
  106594. <stringProp name="1637639774">totalRecords</stringProp>
  106595. </collectionProp>
  106596. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106597. <boolProp name="Assertion.assume_success">false</boolProp>
  106598. <intProp name="Assertion.test_type">2</intProp>
  106599. </ResponseAssertion>
  106600. <hashTree/>
  106601. </hashTree>
  106602. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  106603. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106604. <collectionProp name="Arguments.arguments">
  106605. <elementProp name="form_key" elementType="HTTPArgument">
  106606. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106607. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  106608. <stringProp name="Argument.metadata">=</stringProp>
  106609. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106610. <stringProp name="Argument.name">form_key</stringProp>
  106611. </elementProp>
  106612. <elementProp name="namespace" elementType="HTTPArgument">
  106613. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106614. <stringProp name="Argument.value">sales_order_grid</stringProp>
  106615. <stringProp name="Argument.metadata">=</stringProp>
  106616. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106617. <stringProp name="Argument.name">namespace</stringProp>
  106618. <stringProp name="Argument.desc">true</stringProp>
  106619. </elementProp>
  106620. <elementProp name="search" elementType="HTTPArgument">
  106621. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106622. <stringProp name="Argument.value"/>
  106623. <stringProp name="Argument.metadata">=</stringProp>
  106624. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106625. <stringProp name="Argument.name">search</stringProp>
  106626. <stringProp name="Argument.desc">true</stringProp>
  106627. </elementProp>
  106628. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  106629. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106630. <stringProp name="Argument.value">true</stringProp>
  106631. <stringProp name="Argument.metadata">=</stringProp>
  106632. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106633. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  106634. <stringProp name="Argument.desc">true</stringProp>
  106635. </elementProp>
  106636. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  106637. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106638. <stringProp name="Argument.value">200</stringProp>
  106639. <stringProp name="Argument.metadata">=</stringProp>
  106640. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106641. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  106642. <stringProp name="Argument.desc">true</stringProp>
  106643. </elementProp>
  106644. <elementProp name="paging[current]" elementType="HTTPArgument">
  106645. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106646. <stringProp name="Argument.value">1</stringProp>
  106647. <stringProp name="Argument.metadata">=</stringProp>
  106648. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106649. <stringProp name="Argument.name">paging[current]</stringProp>
  106650. <stringProp name="Argument.desc">true</stringProp>
  106651. </elementProp>
  106652. <elementProp name="sorting[field]" elementType="HTTPArgument">
  106653. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106654. <stringProp name="Argument.value">increment_id</stringProp>
  106655. <stringProp name="Argument.metadata">=</stringProp>
  106656. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106657. <stringProp name="Argument.name">sorting[field]</stringProp>
  106658. <stringProp name="Argument.desc">true</stringProp>
  106659. </elementProp>
  106660. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  106661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106662. <stringProp name="Argument.value">asc</stringProp>
  106663. <stringProp name="Argument.metadata">=</stringProp>
  106664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106665. <stringProp name="Argument.name">sorting[direction]</stringProp>
  106666. <stringProp name="Argument.desc">true</stringProp>
  106667. </elementProp>
  106668. <elementProp name="isAjax" elementType="HTTPArgument">
  106669. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106670. <stringProp name="Argument.value">true</stringProp>
  106671. <stringProp name="Argument.metadata">=</stringProp>
  106672. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106673. <stringProp name="Argument.name">isAjax</stringProp>
  106674. <stringProp name="Argument.desc">true</stringProp>
  106675. </elementProp>
  106676. <elementProp name="filters[status]" elementType="HTTPArgument">
  106677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106678. <stringProp name="Argument.value">pending</stringProp>
  106679. <stringProp name="Argument.metadata">=</stringProp>
  106680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106681. <stringProp name="Argument.name">filters[status]</stringProp>
  106682. </elementProp>
  106683. <elementProp name="_" elementType="HTTPArgument">
  106684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106685. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  106686. <stringProp name="Argument.metadata">=</stringProp>
  106687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106688. <stringProp name="Argument.name">_</stringProp>
  106689. </elementProp>
  106690. </collectionProp>
  106691. </elementProp>
  106692. <stringProp name="HTTPSampler.domain"/>
  106693. <stringProp name="HTTPSampler.port"/>
  106694. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106695. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106696. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106697. <stringProp name="HTTPSampler.contentEncoding"/>
  106698. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  106699. <stringProp name="HTTPSampler.method">GET</stringProp>
  106700. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106701. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106702. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106703. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106704. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106705. <stringProp name="HTTPSampler.embedded_url_re"/>
  106706. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  106707. <hashTree>
  106708. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  106709. <collectionProp name="Asserion.test_strings">
  106710. <stringProp name="1637639774">totalRecords</stringProp>
  106711. </collectionProp>
  106712. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106713. <boolProp name="Assertion.assume_success">false</boolProp>
  106714. <intProp name="Assertion.test_type">2</intProp>
  106715. </ResponseAssertion>
  106716. <hashTree/>
  106717. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  106718. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  106719. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  106720. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  106721. <stringProp name="RegexExtractor.template">$1$</stringProp>
  106722. <stringProp name="RegexExtractor.default"/>
  106723. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  106724. <stringProp name="Scope.variable">simple_products</stringProp>
  106725. </RegexExtractor>
  106726. <hashTree/>
  106727. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  106728. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  106729. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  106730. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  106731. <stringProp name="RegexExtractor.template">$1$</stringProp>
  106732. <stringProp name="RegexExtractor.default"/>
  106733. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  106734. <stringProp name="Scope.variable">simple_products</stringProp>
  106735. </RegexExtractor>
  106736. <hashTree/>
  106737. </hashTree>
  106738. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  106739. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  106740. <stringProp name="BeanShellSampler.query">
  106741. import java.util.ArrayList;
  106742. import java.util.HashMap;
  106743. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  106744. import java.util.Random;
  106745. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  106746. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  106747. int clusterLength;
  106748. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  106749. if (threadsNumber == 0) {
  106750. //Number of orders for one thread
  106751. clusterLength = ordersCount;
  106752. } else {
  106753. clusterLength = Math.round(ordersCount / threadsNumber);
  106754. if (clusterLength == 0) {
  106755. clusterLength = 1;
  106756. }
  106757. }
  106758. //Current thread number starts from 0
  106759. int currentThreadNum = ctx.getThreadNum();
  106760. //Index of the current product from the cluster
  106761. Random random = new Random();
  106762. if (${seedForRandom} &gt; 0) {
  106763. random.setSeed(${seedForRandom} + ${__threadNum});
  106764. }
  106765. int iterator = random.nextInt(clusterLength);
  106766. if (iterator == 0) {
  106767. iterator = 1;
  106768. }
  106769. int i = clusterLength * currentThreadNum + iterator;
  106770. orderNumber = vars.get("order_numbers_" + i.toString());
  106771. orderId = vars.get("order_ids_" + i.toString());
  106772. vars.put("order_number", orderNumber);
  106773. vars.put("order_id", orderId);
  106774. </stringProp>
  106775. <stringProp name="BeanShellSampler.filename"/>
  106776. <stringProp name="BeanShellSampler.parameters"/>
  106777. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  106778. </BeanShellSampler>
  106779. <hashTree/>
  106780. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  106781. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106782. <collectionProp name="Arguments.arguments"/>
  106783. </elementProp>
  106784. <stringProp name="HTTPSampler.domain"/>
  106785. <stringProp name="HTTPSampler.port"/>
  106786. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106787. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106788. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106789. <stringProp name="HTTPSampler.contentEncoding"/>
  106790. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  106791. <stringProp name="HTTPSampler.method">GET</stringProp>
  106792. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106793. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106794. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106795. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106796. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106797. <stringProp name="HTTPSampler.embedded_url_re"/>
  106798. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  106799. <hashTree>
  106800. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  106801. <collectionProp name="Asserion.test_strings">
  106802. <stringProp name="2103620713">#${order_number}</stringProp>
  106803. </collectionProp>
  106804. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106805. <boolProp name="Assertion.assume_success">false</boolProp>
  106806. <intProp name="Assertion.test_type">2</intProp>
  106807. </ResponseAssertion>
  106808. <hashTree/>
  106809. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  106810. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  106811. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  106812. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  106813. <stringProp name="RegexExtractor.template">$1$</stringProp>
  106814. <stringProp name="RegexExtractor.default"/>
  106815. <stringProp name="RegexExtractor.match_number">1</stringProp>
  106816. <stringProp name="Scope.variable">simple_products</stringProp>
  106817. </RegexExtractor>
  106818. <hashTree/>
  106819. </hashTree>
  106820. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  106821. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  106822. <boolProp name="IfController.evaluateAll">false</boolProp>
  106823. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  106824. <hashTree>
  106825. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Comment" enabled="true">
  106826. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106827. <collectionProp name="Arguments.arguments">
  106828. <elementProp name="history[status]" elementType="HTTPArgument">
  106829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106830. <stringProp name="Argument.value">pending</stringProp>
  106831. <stringProp name="Argument.metadata">=</stringProp>
  106832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106833. <stringProp name="Argument.name">history[status]</stringProp>
  106834. <stringProp name="Argument.desc">false</stringProp>
  106835. </elementProp>
  106836. <elementProp name="history[comment]" elementType="HTTPArgument">
  106837. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106838. <stringProp name="Argument.value">Some text</stringProp>
  106839. <stringProp name="Argument.metadata">=</stringProp>
  106840. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106841. <stringProp name="Argument.name">history[comment]</stringProp>
  106842. </elementProp>
  106843. <elementProp name="form_key" elementType="HTTPArgument">
  106844. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106845. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  106846. <stringProp name="Argument.metadata">=</stringProp>
  106847. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106848. <stringProp name="Argument.name">form_key</stringProp>
  106849. <stringProp name="Argument.desc">false</stringProp>
  106850. </elementProp>
  106851. </collectionProp>
  106852. </elementProp>
  106853. <stringProp name="HTTPSampler.domain"/>
  106854. <stringProp name="HTTPSampler.port"/>
  106855. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106856. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106857. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106858. <stringProp name="HTTPSampler.contentEncoding"/>
  106859. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true</stringProp>
  106860. <stringProp name="HTTPSampler.method">POST</stringProp>
  106861. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106862. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106863. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106864. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106865. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106866. <stringProp name="HTTPSampler.embedded_url_re"/>
  106867. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/add_comment.jmx</stringProp></HTTPSamplerProxy>
  106868. <hashTree>
  106869. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  106870. <collectionProp name="Asserion.test_strings">
  106871. <stringProp name="-2089278331">Not Notified</stringProp>
  106872. </collectionProp>
  106873. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106874. <boolProp name="Assertion.assume_success">false</boolProp>
  106875. <intProp name="Assertion.test_type">2</intProp>
  106876. </ResponseAssertion>
  106877. <hashTree/>
  106878. </hashTree>
  106879. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  106880. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106881. <collectionProp name="Arguments.arguments"/>
  106882. </elementProp>
  106883. <stringProp name="HTTPSampler.domain"/>
  106884. <stringProp name="HTTPSampler.port"/>
  106885. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106886. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106887. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106888. <stringProp name="HTTPSampler.contentEncoding"/>
  106889. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  106890. <stringProp name="HTTPSampler.method">GET</stringProp>
  106891. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106892. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106893. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106894. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106895. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106896. <stringProp name="HTTPSampler.embedded_url_re"/>
  106897. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  106898. <hashTree>
  106899. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  106900. <collectionProp name="Asserion.test_strings">
  106901. <stringProp name="-1233850814">Invoice Totals</stringProp>
  106902. </collectionProp>
  106903. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106904. <boolProp name="Assertion.assume_success">false</boolProp>
  106905. <intProp name="Assertion.test_type">2</intProp>
  106906. </ResponseAssertion>
  106907. <hashTree/>
  106908. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  106909. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  106910. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  106911. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  106912. <stringProp name="RegexExtractor.template">$1$</stringProp>
  106913. <stringProp name="RegexExtractor.default"/>
  106914. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  106915. <stringProp name="Scope.variable">simple_products</stringProp>
  106916. </RegexExtractor>
  106917. <hashTree/>
  106918. </hashTree>
  106919. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  106920. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106921. <collectionProp name="Arguments.arguments">
  106922. <elementProp name="form_key" elementType="HTTPArgument">
  106923. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106924. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  106925. <stringProp name="Argument.metadata">=</stringProp>
  106926. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106927. <stringProp name="Argument.name">form_key</stringProp>
  106928. <stringProp name="Argument.desc">false</stringProp>
  106929. </elementProp>
  106930. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  106931. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106932. <stringProp name="Argument.value">1</stringProp>
  106933. <stringProp name="Argument.metadata">=</stringProp>
  106934. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106935. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  106936. </elementProp>
  106937. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  106938. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106939. <stringProp name="Argument.value">1</stringProp>
  106940. <stringProp name="Argument.metadata">=</stringProp>
  106941. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106942. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  106943. </elementProp>
  106944. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  106945. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  106946. <stringProp name="Argument.value">Invoiced</stringProp>
  106947. <stringProp name="Argument.metadata">=</stringProp>
  106948. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  106949. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  106950. </elementProp>
  106951. </collectionProp>
  106952. </elementProp>
  106953. <stringProp name="HTTPSampler.domain"/>
  106954. <stringProp name="HTTPSampler.port"/>
  106955. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106956. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106957. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106958. <stringProp name="HTTPSampler.contentEncoding"/>
  106959. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  106960. <stringProp name="HTTPSampler.method">POST</stringProp>
  106961. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106962. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106963. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106964. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106965. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106966. <stringProp name="HTTPSampler.embedded_url_re"/>
  106967. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  106968. <hashTree>
  106969. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  106970. <collectionProp name="Asserion.test_strings">
  106971. <stringProp name="1740524604">The invoice has been created</stringProp>
  106972. </collectionProp>
  106973. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  106974. <boolProp name="Assertion.assume_success">false</boolProp>
  106975. <intProp name="Assertion.test_type">2</intProp>
  106976. </ResponseAssertion>
  106977. <hashTree/>
  106978. </hashTree>
  106979. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Start" enabled="true">
  106980. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  106981. <collectionProp name="Arguments.arguments"/>
  106982. </elementProp>
  106983. <stringProp name="HTTPSampler.domain"/>
  106984. <stringProp name="HTTPSampler.port"/>
  106985. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  106986. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  106987. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  106988. <stringProp name="HTTPSampler.contentEncoding"/>
  106989. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/</stringProp>
  106990. <stringProp name="HTTPSampler.method">GET</stringProp>
  106991. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  106992. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  106993. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  106994. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  106995. <boolProp name="HTTPSampler.monitor">false</boolProp>
  106996. <stringProp name="HTTPSampler.embedded_url_re"/>
  106997. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_start.jmx</stringProp></HTTPSamplerProxy>
  106998. <hashTree>
  106999. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  107000. <collectionProp name="Asserion.test_strings">
  107001. <stringProp name="304100442">New Shipment</stringProp>
  107002. </collectionProp>
  107003. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107004. <boolProp name="Assertion.assume_success">false</boolProp>
  107005. <intProp name="Assertion.test_type">2</intProp>
  107006. </ResponseAssertion>
  107007. <hashTree/>
  107008. </hashTree>
  107009. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Submit" enabled="true">
  107010. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107011. <collectionProp name="Arguments.arguments">
  107012. <elementProp name="form_key" elementType="HTTPArgument">
  107013. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107014. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  107015. <stringProp name="Argument.metadata">=</stringProp>
  107016. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107017. <stringProp name="Argument.name">form_key</stringProp>
  107018. <stringProp name="Argument.desc">false</stringProp>
  107019. </elementProp>
  107020. <elementProp name="shipment[items][${item_ids_1}]" elementType="HTTPArgument">
  107021. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107022. <stringProp name="Argument.value">1</stringProp>
  107023. <stringProp name="Argument.metadata">=</stringProp>
  107024. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107025. <stringProp name="Argument.name">shipment[items][${item_ids_1}]</stringProp>
  107026. </elementProp>
  107027. <elementProp name="shipment[items][${item_ids_2}]" elementType="HTTPArgument">
  107028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107029. <stringProp name="Argument.value">1</stringProp>
  107030. <stringProp name="Argument.metadata">=</stringProp>
  107031. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107032. <stringProp name="Argument.name">shipment[items][${item_ids_2}]</stringProp>
  107033. </elementProp>
  107034. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  107035. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107036. <stringProp name="Argument.value">Shipped</stringProp>
  107037. <stringProp name="Argument.metadata">=</stringProp>
  107038. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107039. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  107040. </elementProp>
  107041. </collectionProp>
  107042. </elementProp>
  107043. <stringProp name="HTTPSampler.domain"/>
  107044. <stringProp name="HTTPSampler.port"/>
  107045. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107046. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107047. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107048. <stringProp name="HTTPSampler.contentEncoding"/>
  107049. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  107050. <stringProp name="HTTPSampler.method">POST</stringProp>
  107051. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107052. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107053. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107054. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107055. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107056. <stringProp name="HTTPSampler.embedded_url_re"/>
  107057. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_submit.jmx</stringProp></HTTPSamplerProxy>
  107058. <hashTree>
  107059. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  107060. <collectionProp name="Asserion.test_strings">
  107061. <stringProp name="-2089453199">The shipment has been created</stringProp>
  107062. </collectionProp>
  107063. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107064. <boolProp name="Assertion.assume_success">false</boolProp>
  107065. <intProp name="Assertion.test_type">2</intProp>
  107066. </ResponseAssertion>
  107067. <hashTree/>
  107068. </hashTree>
  107069. </hashTree>
  107070. </hashTree>
  107071. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  107072. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107073. <collectionProp name="Arguments.arguments"/>
  107074. </elementProp>
  107075. <stringProp name="HTTPSampler.domain"/>
  107076. <stringProp name="HTTPSampler.port"/>
  107077. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107078. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107079. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107080. <stringProp name="HTTPSampler.contentEncoding"/>
  107081. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  107082. <stringProp name="HTTPSampler.method">GET</stringProp>
  107083. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107084. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107085. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107086. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107087. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107088. <stringProp name="HTTPSampler.embedded_url_re"/>
  107089. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  107090. <hashTree>
  107091. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  107092. <boolProp name="resetInterpreter">false</boolProp>
  107093. <stringProp name="parameters"/>
  107094. <stringProp name="filename"/>
  107095. <stringProp name="script">
  107096. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  107097. if (adminUsersDistribution == 1) {
  107098. adminUserList = props.get("adminUserList");
  107099. adminUserList.add(vars.get("admin_user"));
  107100. }
  107101. </stringProp>
  107102. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  107103. <hashTree/>
  107104. </hashTree>
  107105. </hashTree>
  107106. </hashTree>
  107107. <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="One Thread Scenarios Pool" enabled="true">
  107108. <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
  107109. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  107110. <boolProp name="LoopController.continue_forever">false</boolProp>
  107111. <stringProp name="LoopController.loops">${loops}</stringProp>
  107112. </elementProp>
  107113. <stringProp name="ThreadGroup.num_threads">${oneThreadScenariosPoolUsers}</stringProp>
  107114. <stringProp name="ThreadGroup.ramp_time">${ramp_period}</stringProp>
  107115. <longProp name="ThreadGroup.start_time">1505803944000</longProp>
  107116. <longProp name="ThreadGroup.end_time">1505803944000</longProp>
  107117. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  107118. <stringProp name="ThreadGroup.duration"/>
  107119. <stringProp name="ThreadGroup.delay"/>
  107120. <stringProp name="TestPlan.comments">tool/fragments/_system/thread_group.jmx</stringProp></ThreadGroup>
  107121. <hashTree>
  107122. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Import Products" enabled="true">
  107123. <intProp name="ThroughputController.style">1</intProp>
  107124. <boolProp name="ThroughputController.perThread">false</boolProp>
  107125. <intProp name="ThroughputController.maxThroughput">1</intProp>
  107126. <stringProp name="ThroughputController.percentThroughput">${importProductsPercentage}</stringProp>
  107127. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  107128. <hashTree>
  107129. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  107130. <stringProp name="script">
  107131. var tmpLabel = vars.get("testLabel")
  107132. if (tmpLabel) {
  107133. var testLabel = " (" + tmpLabel + ")"
  107134. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  107135. if (sampler.getName().indexOf(testLabel) == -1) {
  107136. sampler.setName(sampler.getName() + testLabel);
  107137. }
  107138. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  107139. sampler.setName("SetUp - " + sampler.getName());
  107140. }
  107141. } else {
  107142. testLabel = ""
  107143. }
  107144. </stringProp>
  107145. <stringProp name="scriptLanguage">javascript</stringProp>
  107146. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  107147. <hashTree/>
  107148. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  107149. <stringProp name="BeanShellSampler.query">
  107150. vars.put("testLabel", "Import Products");
  107151. </stringProp>
  107152. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  107153. </BeanShellSampler>
  107154. <hashTree/>
  107155. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  107156. <stringProp name="script">
  107157. function getFormKeyFromResponse()
  107158. {
  107159. var url = prev.getUrlAsString(),
  107160. responseCode = prev.getResponseCode(),
  107161. formKey = null;
  107162. searchPattern = /var FORM_KEY = '(.+)'/;
  107163. if (responseCode == "200" &amp;&amp; url) {
  107164. response = prev.getResponseDataAsString();
  107165. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  107166. }
  107167. return formKey;
  107168. }
  107169. formKey = vars.get("form_key_storage");
  107170. currentFormKey = getFormKeyFromResponse();
  107171. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  107172. vars.put("form_key_storage", currentFormKey);
  107173. }
  107174. </stringProp>
  107175. <stringProp name="scriptLanguage">javascript</stringProp>
  107176. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  107177. <hashTree/>
  107178. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  107179. <stringProp name="script">
  107180. formKey = vars.get("form_key_storage");
  107181. if (formKey
  107182. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  107183. &amp;&amp; sampler.getMethod() == "POST")
  107184. {
  107185. arguments = sampler.getArguments();
  107186. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  107187. {
  107188. argument = arguments.getArgument(i);
  107189. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  107190. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  107191. argument.setValue(formKey);
  107192. }
  107193. }
  107194. }
  107195. </stringProp>
  107196. <stringProp name="scriptLanguage">javascript</stringProp>
  107197. </JSR223PreProcessor>
  107198. <hashTree/>
  107199. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  107200. <collectionProp name="CookieManager.cookies"/>
  107201. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  107202. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  107203. <hashTree/>
  107204. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  107205. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  107206. </GenericController>
  107207. <hashTree>
  107208. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  107209. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  107210. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  107211. <hashTree>
  107212. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  107213. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  107214. <stringProp name="BeanShellSampler.query">
  107215. adminUser = "none";
  107216. adminUserList = props.get("adminUserList");
  107217. adminUserListIterator = props.get("adminUserListIterator");
  107218. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  107219. if (adminUsersDistribution == 1) {
  107220. adminUser = adminUserList.poll();
  107221. } else {
  107222. if (!adminUserListIterator.hasNext()) {
  107223. adminUserListIterator = adminUserList.descendingIterator();
  107224. }
  107225. adminUser = adminUserListIterator.next();
  107226. }
  107227. if (adminUser == "none") {
  107228. SampleResult.setResponseMessage("adminUser list is empty");
  107229. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  107230. IsSuccess=false;
  107231. SampleResult.setSuccessful(false);
  107232. SampleResult.setStopThread(true);
  107233. }
  107234. vars.put("admin_user", adminUser);
  107235. </stringProp>
  107236. <stringProp name="BeanShellSampler.filename"/>
  107237. <stringProp name="BeanShellSampler.parameters"/>
  107238. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  107239. </BeanShellSampler>
  107240. <hashTree/>
  107241. </hashTree>
  107242. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  107243. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107244. <collectionProp name="Arguments.arguments"/>
  107245. </elementProp>
  107246. <stringProp name="HTTPSampler.domain"/>
  107247. <stringProp name="HTTPSampler.port"/>
  107248. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107249. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107250. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107251. <stringProp name="HTTPSampler.contentEncoding"/>
  107252. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  107253. <stringProp name="HTTPSampler.method">GET</stringProp>
  107254. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107255. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107256. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107257. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107258. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107259. <stringProp name="HTTPSampler.embedded_url_re"/>
  107260. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  107261. <hashTree>
  107262. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  107263. <collectionProp name="Asserion.test_strings">
  107264. <stringProp name="-1397214398">Welcome</stringProp>
  107265. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  107266. </collectionProp>
  107267. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107268. <boolProp name="Assertion.assume_success">false</boolProp>
  107269. <intProp name="Assertion.test_type">2</intProp>
  107270. </ResponseAssertion>
  107271. <hashTree/>
  107272. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  107273. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  107274. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  107275. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  107276. <stringProp name="RegexExtractor.template">$1$</stringProp>
  107277. <stringProp name="RegexExtractor.default"/>
  107278. <stringProp name="RegexExtractor.match_number">1</stringProp>
  107279. </RegexExtractor>
  107280. <hashTree/>
  107281. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  107282. <collectionProp name="Asserion.test_strings">
  107283. <stringProp name="2845929">^.+$</stringProp>
  107284. </collectionProp>
  107285. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107286. <boolProp name="Assertion.assume_success">false</boolProp>
  107287. <intProp name="Assertion.test_type">1</intProp>
  107288. <stringProp name="Assertion.scope">variable</stringProp>
  107289. <stringProp name="Scope.variable">admin_form_key</stringProp>
  107290. </ResponseAssertion>
  107291. <hashTree/>
  107292. </hashTree>
  107293. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  107294. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107295. <collectionProp name="Arguments.arguments">
  107296. <elementProp name="dummy" elementType="HTTPArgument">
  107297. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107298. <stringProp name="Argument.value"/>
  107299. <stringProp name="Argument.metadata">=</stringProp>
  107300. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107301. <stringProp name="Argument.name">dummy</stringProp>
  107302. </elementProp>
  107303. <elementProp name="form_key" elementType="HTTPArgument">
  107304. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107305. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  107306. <stringProp name="Argument.metadata">=</stringProp>
  107307. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107308. <stringProp name="Argument.name">form_key</stringProp>
  107309. </elementProp>
  107310. <elementProp name="login[password]" elementType="HTTPArgument">
  107311. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107312. <stringProp name="Argument.value">${admin_password}</stringProp>
  107313. <stringProp name="Argument.metadata">=</stringProp>
  107314. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107315. <stringProp name="Argument.name">login[password]</stringProp>
  107316. </elementProp>
  107317. <elementProp name="login[username]" elementType="HTTPArgument">
  107318. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107319. <stringProp name="Argument.value">${admin_user}</stringProp>
  107320. <stringProp name="Argument.metadata">=</stringProp>
  107321. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107322. <stringProp name="Argument.name">login[username]</stringProp>
  107323. </elementProp>
  107324. </collectionProp>
  107325. </elementProp>
  107326. <stringProp name="HTTPSampler.domain"/>
  107327. <stringProp name="HTTPSampler.port"/>
  107328. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107329. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107330. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107331. <stringProp name="HTTPSampler.contentEncoding"/>
  107332. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  107333. <stringProp name="HTTPSampler.method">POST</stringProp>
  107334. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107335. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107336. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107337. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107338. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  107339. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107340. <stringProp name="HTTPSampler.embedded_url_re"/>
  107341. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  107342. </HTTPSamplerProxy>
  107343. <hashTree>
  107344. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  107345. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  107346. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  107347. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  107348. <stringProp name="RegexExtractor.template">$1$</stringProp>
  107349. <stringProp name="RegexExtractor.default"/>
  107350. <stringProp name="RegexExtractor.match_number">1</stringProp>
  107351. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  107352. <hashTree/>
  107353. </hashTree>
  107354. </hashTree>
  107355. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  107356. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  107357. </GenericController>
  107358. <hashTree>
  107359. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  107360. <stringProp name="BeanShellSampler.query">vars.put("entity", "catalog_product");
  107361. String behavior = "${adminImportProductBehavior}";
  107362. vars.put("adminImportBehavior", behavior);
  107363. String filepath = "${files_folder}${adminImportProductFilePath}";
  107364. vars.put("adminImportFilePath", filepath); </stringProp>
  107365. <stringProp name="BeanShellSampler.filename"/>
  107366. <stringProp name="BeanShellSampler.parameters"/>
  107367. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  107368. <stringProp name="TestPlan.comments">tool/fragments/ce/import_products/setup.jmx</stringProp></BeanShellSampler>
  107369. <hashTree/>
  107370. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Page" enabled="true">
  107371. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107372. <collectionProp name="Arguments.arguments"/>
  107373. </elementProp>
  107374. <stringProp name="HTTPSampler.domain"/>
  107375. <stringProp name="HTTPSampler.port"/>
  107376. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107377. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107378. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107379. <stringProp name="HTTPSampler.contentEncoding"/>
  107380. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/</stringProp>
  107381. <stringProp name="HTTPSampler.method">GET</stringProp>
  107382. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107383. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107384. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107385. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107386. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107387. <stringProp name="HTTPSampler.embedded_url_re"/>
  107388. <stringProp name="TestPlan.comments">tool/fragments/ce/common/import.jmx</stringProp></HTTPSamplerProxy>
  107389. <hashTree>
  107390. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  107391. <collectionProp name="Asserion.test_strings">
  107392. <stringProp name="1723813687">Import Settings</stringProp>
  107393. </collectionProp>
  107394. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107395. <boolProp name="Assertion.assume_success">false</boolProp>
  107396. <intProp name="Assertion.test_type">2</intProp>
  107397. </ResponseAssertion>
  107398. <hashTree/>
  107399. </hashTree>
  107400. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Validate" enabled="true">
  107401. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107402. <collectionProp name="Arguments.arguments">
  107403. <elementProp name="form_key" elementType="HTTPArgument">
  107404. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107405. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  107406. <stringProp name="Argument.metadata">=</stringProp>
  107407. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107408. <stringProp name="Argument.name">form_key</stringProp>
  107409. <stringProp name="Argument.desc">false</stringProp>
  107410. </elementProp>
  107411. <elementProp name="entity" elementType="HTTPArgument">
  107412. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107413. <stringProp name="Argument.value">${entity}</stringProp>
  107414. <stringProp name="Argument.metadata">=</stringProp>
  107415. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107416. <stringProp name="Argument.name">entity</stringProp>
  107417. </elementProp>
  107418. <elementProp name="behavior" elementType="HTTPArgument">
  107419. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107420. <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
  107421. <stringProp name="Argument.metadata">=</stringProp>
  107422. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107423. <stringProp name="Argument.name">behavior</stringProp>
  107424. </elementProp>
  107425. <elementProp name="validation_strategy" elementType="HTTPArgument">
  107426. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107427. <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
  107428. <stringProp name="Argument.metadata">=</stringProp>
  107429. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107430. <stringProp name="Argument.name">validation_strategy</stringProp>
  107431. </elementProp>
  107432. <elementProp name="allowed_error_count" elementType="HTTPArgument">
  107433. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107434. <stringProp name="Argument.value">10</stringProp>
  107435. <stringProp name="Argument.metadata">=</stringProp>
  107436. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107437. <stringProp name="Argument.name">allowed_error_count</stringProp>
  107438. </elementProp>
  107439. <elementProp name="_import_field_separator" elementType="HTTPArgument">
  107440. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107441. <stringProp name="Argument.value">,</stringProp>
  107442. <stringProp name="Argument.metadata">=</stringProp>
  107443. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107444. <stringProp name="Argument.name">_import_field_separator</stringProp>
  107445. </elementProp>
  107446. <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
  107447. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107448. <stringProp name="Argument.value">,</stringProp>
  107449. <stringProp name="Argument.metadata">=</stringProp>
  107450. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107451. <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
  107452. </elementProp>
  107453. </collectionProp>
  107454. </elementProp>
  107455. <stringProp name="HTTPSampler.domain"/>
  107456. <stringProp name="HTTPSampler.port"/>
  107457. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107458. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107459. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107460. <stringProp name="HTTPSampler.contentEncoding"/>
  107461. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/validate</stringProp>
  107462. <stringProp name="HTTPSampler.method">POST</stringProp>
  107463. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107464. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107465. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107466. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107467. <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
  107468. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  107469. <collectionProp name="HTTPFileArgs.files">
  107470. <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
  107471. <stringProp name="File.path">${adminImportFilePath}</stringProp>
  107472. <stringProp name="File.paramname">import_file</stringProp>
  107473. <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
  107474. </elementProp>
  107475. </collectionProp>
  107476. </elementProp>
  107477. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107478. <stringProp name="HTTPSampler.embedded_url_re"/>
  107479. <stringProp name="TestPlan.comments">tool/fragments/ce/common/import_validate.jmx</stringProp></HTTPSamplerProxy>
  107480. <hashTree>
  107481. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  107482. <collectionProp name="Asserion.test_strings">
  107483. <stringProp name="37280142">File is valid! To start import process</stringProp>
  107484. </collectionProp>
  107485. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107486. <boolProp name="Assertion.assume_success">false</boolProp>
  107487. <intProp name="Assertion.test_type">16</intProp>
  107488. </ResponseAssertion>
  107489. <hashTree/>
  107490. </hashTree>
  107491. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Start" enabled="true">
  107492. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107493. <collectionProp name="Arguments.arguments">
  107494. <elementProp name="form_key" elementType="HTTPArgument">
  107495. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107496. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  107497. <stringProp name="Argument.metadata">=</stringProp>
  107498. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107499. <stringProp name="Argument.name">form_key</stringProp>
  107500. <stringProp name="Argument.desc">false</stringProp>
  107501. </elementProp>
  107502. <elementProp name="entity" elementType="HTTPArgument">
  107503. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107504. <stringProp name="Argument.value">${entity}</stringProp>
  107505. <stringProp name="Argument.metadata">=</stringProp>
  107506. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107507. <stringProp name="Argument.name">entity</stringProp>
  107508. </elementProp>
  107509. <elementProp name="behavior" elementType="HTTPArgument">
  107510. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107511. <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
  107512. <stringProp name="Argument.metadata">=</stringProp>
  107513. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107514. <stringProp name="Argument.name">behavior</stringProp>
  107515. </elementProp>
  107516. <elementProp name="validation_strategy" elementType="HTTPArgument">
  107517. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107518. <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
  107519. <stringProp name="Argument.metadata">=</stringProp>
  107520. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107521. <stringProp name="Argument.name">validation_strategy</stringProp>
  107522. <stringProp name="Argument.desc">false</stringProp>
  107523. </elementProp>
  107524. <elementProp name="allowed_error_count" elementType="HTTPArgument">
  107525. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107526. <stringProp name="Argument.value">10</stringProp>
  107527. <stringProp name="Argument.metadata">=</stringProp>
  107528. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107529. <stringProp name="Argument.name">allowed_error_count</stringProp>
  107530. <stringProp name="Argument.desc">false</stringProp>
  107531. </elementProp>
  107532. <elementProp name="_import_field_separator" elementType="HTTPArgument">
  107533. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107534. <stringProp name="Argument.value">,</stringProp>
  107535. <stringProp name="Argument.metadata">=</stringProp>
  107536. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107537. <stringProp name="Argument.name">_import_field_separator</stringProp>
  107538. <stringProp name="Argument.desc">false</stringProp>
  107539. </elementProp>
  107540. <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
  107541. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107542. <stringProp name="Argument.value">,</stringProp>
  107543. <stringProp name="Argument.metadata">=</stringProp>
  107544. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107545. <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
  107546. <stringProp name="Argument.desc">false</stringProp>
  107547. </elementProp>
  107548. </collectionProp>
  107549. </elementProp>
  107550. <stringProp name="HTTPSampler.domain"/>
  107551. <stringProp name="HTTPSampler.port"/>
  107552. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107553. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107554. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107555. <stringProp name="HTTPSampler.contentEncoding"/>
  107556. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/start</stringProp>
  107557. <stringProp name="HTTPSampler.method">POST</stringProp>
  107558. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107559. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107560. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107561. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107562. <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
  107563. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  107564. <collectionProp name="HTTPFileArgs.files">
  107565. <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
  107566. <stringProp name="File.path">${adminImportFilePath}</stringProp>
  107567. <stringProp name="File.paramname">import_file</stringProp>
  107568. <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
  107569. </elementProp>
  107570. </collectionProp>
  107571. </elementProp>
  107572. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107573. <stringProp name="HTTPSampler.embedded_url_re"/>
  107574. <stringProp name="TestPlan.comments">tool/fragments/ce/common/import_save.jmx</stringProp></HTTPSamplerProxy>
  107575. <hashTree>
  107576. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  107577. <collectionProp name="Asserion.test_strings">
  107578. <stringProp name="-1731221824">Import successfully done</stringProp>
  107579. </collectionProp>
  107580. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107581. <boolProp name="Assertion.assume_success">false</boolProp>
  107582. <intProp name="Assertion.test_type">16</intProp>
  107583. </ResponseAssertion>
  107584. <hashTree/>
  107585. </hashTree>
  107586. </hashTree>
  107587. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  107588. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107589. <collectionProp name="Arguments.arguments"/>
  107590. </elementProp>
  107591. <stringProp name="HTTPSampler.domain"/>
  107592. <stringProp name="HTTPSampler.port"/>
  107593. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107594. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107595. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107596. <stringProp name="HTTPSampler.contentEncoding"/>
  107597. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  107598. <stringProp name="HTTPSampler.method">GET</stringProp>
  107599. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107600. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107601. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107602. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107603. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107604. <stringProp name="HTTPSampler.embedded_url_re"/>
  107605. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  107606. <hashTree>
  107607. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  107608. <boolProp name="resetInterpreter">false</boolProp>
  107609. <stringProp name="parameters"/>
  107610. <stringProp name="filename"/>
  107611. <stringProp name="script">
  107612. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  107613. if (adminUsersDistribution == 1) {
  107614. adminUserList = props.get("adminUserList");
  107615. adminUserList.add(vars.get("admin_user"));
  107616. }
  107617. </stringProp>
  107618. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  107619. <hashTree/>
  107620. </hashTree>
  107621. </hashTree>
  107622. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Import Customers" enabled="true">
  107623. <intProp name="ThroughputController.style">1</intProp>
  107624. <boolProp name="ThroughputController.perThread">false</boolProp>
  107625. <intProp name="ThroughputController.maxThroughput">1</intProp>
  107626. <stringProp name="ThroughputController.percentThroughput">${importCustomersPercentage}</stringProp>
  107627. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  107628. <hashTree>
  107629. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  107630. <stringProp name="script">
  107631. var tmpLabel = vars.get("testLabel")
  107632. if (tmpLabel) {
  107633. var testLabel = " (" + tmpLabel + ")"
  107634. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  107635. if (sampler.getName().indexOf(testLabel) == -1) {
  107636. sampler.setName(sampler.getName() + testLabel);
  107637. }
  107638. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  107639. sampler.setName("SetUp - " + sampler.getName());
  107640. }
  107641. } else {
  107642. testLabel = ""
  107643. }
  107644. </stringProp>
  107645. <stringProp name="scriptLanguage">javascript</stringProp>
  107646. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  107647. <hashTree/>
  107648. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  107649. <stringProp name="BeanShellSampler.query">
  107650. vars.put("testLabel", "Import Customers");
  107651. </stringProp>
  107652. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  107653. </BeanShellSampler>
  107654. <hashTree/>
  107655. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  107656. <stringProp name="script">
  107657. function getFormKeyFromResponse()
  107658. {
  107659. var url = prev.getUrlAsString(),
  107660. responseCode = prev.getResponseCode(),
  107661. formKey = null;
  107662. searchPattern = /var FORM_KEY = '(.+)'/;
  107663. if (responseCode == "200" &amp;&amp; url) {
  107664. response = prev.getResponseDataAsString();
  107665. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  107666. }
  107667. return formKey;
  107668. }
  107669. formKey = vars.get("form_key_storage");
  107670. currentFormKey = getFormKeyFromResponse();
  107671. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  107672. vars.put("form_key_storage", currentFormKey);
  107673. }
  107674. </stringProp>
  107675. <stringProp name="scriptLanguage">javascript</stringProp>
  107676. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  107677. <hashTree/>
  107678. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  107679. <stringProp name="script">
  107680. formKey = vars.get("form_key_storage");
  107681. if (formKey
  107682. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  107683. &amp;&amp; sampler.getMethod() == "POST")
  107684. {
  107685. arguments = sampler.getArguments();
  107686. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  107687. {
  107688. argument = arguments.getArgument(i);
  107689. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  107690. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  107691. argument.setValue(formKey);
  107692. }
  107693. }
  107694. }
  107695. </stringProp>
  107696. <stringProp name="scriptLanguage">javascript</stringProp>
  107697. </JSR223PreProcessor>
  107698. <hashTree/>
  107699. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  107700. <collectionProp name="CookieManager.cookies"/>
  107701. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  107702. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  107703. <hashTree/>
  107704. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  107705. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  107706. </GenericController>
  107707. <hashTree>
  107708. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  107709. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  107710. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  107711. <hashTree>
  107712. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  107713. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  107714. <stringProp name="BeanShellSampler.query">
  107715. adminUser = "none";
  107716. adminUserList = props.get("adminUserList");
  107717. adminUserListIterator = props.get("adminUserListIterator");
  107718. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  107719. if (adminUsersDistribution == 1) {
  107720. adminUser = adminUserList.poll();
  107721. } else {
  107722. if (!adminUserListIterator.hasNext()) {
  107723. adminUserListIterator = adminUserList.descendingIterator();
  107724. }
  107725. adminUser = adminUserListIterator.next();
  107726. }
  107727. if (adminUser == "none") {
  107728. SampleResult.setResponseMessage("adminUser list is empty");
  107729. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  107730. IsSuccess=false;
  107731. SampleResult.setSuccessful(false);
  107732. SampleResult.setStopThread(true);
  107733. }
  107734. vars.put("admin_user", adminUser);
  107735. </stringProp>
  107736. <stringProp name="BeanShellSampler.filename"/>
  107737. <stringProp name="BeanShellSampler.parameters"/>
  107738. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  107739. </BeanShellSampler>
  107740. <hashTree/>
  107741. </hashTree>
  107742. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  107743. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107744. <collectionProp name="Arguments.arguments"/>
  107745. </elementProp>
  107746. <stringProp name="HTTPSampler.domain"/>
  107747. <stringProp name="HTTPSampler.port"/>
  107748. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107749. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107750. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107751. <stringProp name="HTTPSampler.contentEncoding"/>
  107752. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  107753. <stringProp name="HTTPSampler.method">GET</stringProp>
  107754. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107755. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107756. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107757. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107758. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107759. <stringProp name="HTTPSampler.embedded_url_re"/>
  107760. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  107761. <hashTree>
  107762. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  107763. <collectionProp name="Asserion.test_strings">
  107764. <stringProp name="-1397214398">Welcome</stringProp>
  107765. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  107766. </collectionProp>
  107767. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107768. <boolProp name="Assertion.assume_success">false</boolProp>
  107769. <intProp name="Assertion.test_type">2</intProp>
  107770. </ResponseAssertion>
  107771. <hashTree/>
  107772. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  107773. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  107774. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  107775. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  107776. <stringProp name="RegexExtractor.template">$1$</stringProp>
  107777. <stringProp name="RegexExtractor.default"/>
  107778. <stringProp name="RegexExtractor.match_number">1</stringProp>
  107779. </RegexExtractor>
  107780. <hashTree/>
  107781. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  107782. <collectionProp name="Asserion.test_strings">
  107783. <stringProp name="2845929">^.+$</stringProp>
  107784. </collectionProp>
  107785. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107786. <boolProp name="Assertion.assume_success">false</boolProp>
  107787. <intProp name="Assertion.test_type">1</intProp>
  107788. <stringProp name="Assertion.scope">variable</stringProp>
  107789. <stringProp name="Scope.variable">admin_form_key</stringProp>
  107790. </ResponseAssertion>
  107791. <hashTree/>
  107792. </hashTree>
  107793. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  107794. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107795. <collectionProp name="Arguments.arguments">
  107796. <elementProp name="dummy" elementType="HTTPArgument">
  107797. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107798. <stringProp name="Argument.value"/>
  107799. <stringProp name="Argument.metadata">=</stringProp>
  107800. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107801. <stringProp name="Argument.name">dummy</stringProp>
  107802. </elementProp>
  107803. <elementProp name="form_key" elementType="HTTPArgument">
  107804. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107805. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  107806. <stringProp name="Argument.metadata">=</stringProp>
  107807. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107808. <stringProp name="Argument.name">form_key</stringProp>
  107809. </elementProp>
  107810. <elementProp name="login[password]" elementType="HTTPArgument">
  107811. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107812. <stringProp name="Argument.value">${admin_password}</stringProp>
  107813. <stringProp name="Argument.metadata">=</stringProp>
  107814. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107815. <stringProp name="Argument.name">login[password]</stringProp>
  107816. </elementProp>
  107817. <elementProp name="login[username]" elementType="HTTPArgument">
  107818. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107819. <stringProp name="Argument.value">${admin_user}</stringProp>
  107820. <stringProp name="Argument.metadata">=</stringProp>
  107821. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107822. <stringProp name="Argument.name">login[username]</stringProp>
  107823. </elementProp>
  107824. </collectionProp>
  107825. </elementProp>
  107826. <stringProp name="HTTPSampler.domain"/>
  107827. <stringProp name="HTTPSampler.port"/>
  107828. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107829. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107830. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107831. <stringProp name="HTTPSampler.contentEncoding"/>
  107832. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  107833. <stringProp name="HTTPSampler.method">POST</stringProp>
  107834. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107835. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107836. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107837. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107838. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  107839. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107840. <stringProp name="HTTPSampler.embedded_url_re"/>
  107841. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  107842. </HTTPSamplerProxy>
  107843. <hashTree>
  107844. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  107845. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  107846. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  107847. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  107848. <stringProp name="RegexExtractor.template">$1$</stringProp>
  107849. <stringProp name="RegexExtractor.default"/>
  107850. <stringProp name="RegexExtractor.match_number">1</stringProp>
  107851. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  107852. <hashTree/>
  107853. </hashTree>
  107854. </hashTree>
  107855. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  107856. <stringProp name="BeanShellSampler.query">vars.put("entity", "customer");
  107857. String behavior = "${adminImportCustomerBehavior}";
  107858. vars.put("adminImportBehavior", behavior);
  107859. String filepath = "${files_folder}${adminImportCustomerFilePath}";
  107860. vars.put("adminImportFilePath", filepath); </stringProp>
  107861. <stringProp name="BeanShellSampler.filename"/>
  107862. <stringProp name="BeanShellSampler.parameters"/>
  107863. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  107864. <stringProp name="TestPlan.comments">tool/fragments/ce/import_customers/setup.jmx</stringProp></BeanShellSampler>
  107865. <hashTree/>
  107866. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  107867. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  107868. </GenericController>
  107869. <hashTree>
  107870. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Page" enabled="true">
  107871. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107872. <collectionProp name="Arguments.arguments"/>
  107873. </elementProp>
  107874. <stringProp name="HTTPSampler.domain"/>
  107875. <stringProp name="HTTPSampler.port"/>
  107876. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107877. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107878. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107879. <stringProp name="HTTPSampler.contentEncoding"/>
  107880. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/</stringProp>
  107881. <stringProp name="HTTPSampler.method">GET</stringProp>
  107882. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107883. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107884. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107885. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107886. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107887. <stringProp name="HTTPSampler.embedded_url_re"/>
  107888. <stringProp name="TestPlan.comments">tool/fragments/ce/common/import.jmx</stringProp></HTTPSamplerProxy>
  107889. <hashTree>
  107890. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert success" enabled="true">
  107891. <collectionProp name="Asserion.test_strings">
  107892. <stringProp name="1723813687">Import Settings</stringProp>
  107893. </collectionProp>
  107894. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107895. <boolProp name="Assertion.assume_success">false</boolProp>
  107896. <intProp name="Assertion.test_type">2</intProp>
  107897. </ResponseAssertion>
  107898. <hashTree/>
  107899. </hashTree>
  107900. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Validate" enabled="true">
  107901. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107902. <collectionProp name="Arguments.arguments">
  107903. <elementProp name="form_key" elementType="HTTPArgument">
  107904. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107905. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  107906. <stringProp name="Argument.metadata">=</stringProp>
  107907. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107908. <stringProp name="Argument.name">form_key</stringProp>
  107909. <stringProp name="Argument.desc">false</stringProp>
  107910. </elementProp>
  107911. <elementProp name="entity" elementType="HTTPArgument">
  107912. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107913. <stringProp name="Argument.value">${entity}</stringProp>
  107914. <stringProp name="Argument.metadata">=</stringProp>
  107915. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107916. <stringProp name="Argument.name">entity</stringProp>
  107917. </elementProp>
  107918. <elementProp name="behavior" elementType="HTTPArgument">
  107919. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107920. <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
  107921. <stringProp name="Argument.metadata">=</stringProp>
  107922. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107923. <stringProp name="Argument.name">behavior</stringProp>
  107924. </elementProp>
  107925. <elementProp name="validation_strategy" elementType="HTTPArgument">
  107926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107927. <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
  107928. <stringProp name="Argument.metadata">=</stringProp>
  107929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107930. <stringProp name="Argument.name">validation_strategy</stringProp>
  107931. </elementProp>
  107932. <elementProp name="allowed_error_count" elementType="HTTPArgument">
  107933. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107934. <stringProp name="Argument.value">10</stringProp>
  107935. <stringProp name="Argument.metadata">=</stringProp>
  107936. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107937. <stringProp name="Argument.name">allowed_error_count</stringProp>
  107938. </elementProp>
  107939. <elementProp name="_import_field_separator" elementType="HTTPArgument">
  107940. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107941. <stringProp name="Argument.value">,</stringProp>
  107942. <stringProp name="Argument.metadata">=</stringProp>
  107943. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107944. <stringProp name="Argument.name">_import_field_separator</stringProp>
  107945. </elementProp>
  107946. <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
  107947. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107948. <stringProp name="Argument.value">,</stringProp>
  107949. <stringProp name="Argument.metadata">=</stringProp>
  107950. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107951. <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
  107952. </elementProp>
  107953. </collectionProp>
  107954. </elementProp>
  107955. <stringProp name="HTTPSampler.domain"/>
  107956. <stringProp name="HTTPSampler.port"/>
  107957. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  107958. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  107959. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  107960. <stringProp name="HTTPSampler.contentEncoding"/>
  107961. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/validate</stringProp>
  107962. <stringProp name="HTTPSampler.method">POST</stringProp>
  107963. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  107964. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  107965. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  107966. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  107967. <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
  107968. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  107969. <collectionProp name="HTTPFileArgs.files">
  107970. <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
  107971. <stringProp name="File.path">${adminImportFilePath}</stringProp>
  107972. <stringProp name="File.paramname">import_file</stringProp>
  107973. <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
  107974. </elementProp>
  107975. </collectionProp>
  107976. </elementProp>
  107977. <boolProp name="HTTPSampler.monitor">false</boolProp>
  107978. <stringProp name="HTTPSampler.embedded_url_re"/>
  107979. <stringProp name="TestPlan.comments">tool/fragments/ce/common/import_validate.jmx</stringProp></HTTPSamplerProxy>
  107980. <hashTree>
  107981. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  107982. <collectionProp name="Asserion.test_strings">
  107983. <stringProp name="37280142">File is valid! To start import process</stringProp>
  107984. </collectionProp>
  107985. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  107986. <boolProp name="Assertion.assume_success">false</boolProp>
  107987. <intProp name="Assertion.test_type">16</intProp>
  107988. </ResponseAssertion>
  107989. <hashTree/>
  107990. </hashTree>
  107991. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Import Start" enabled="true">
  107992. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  107993. <collectionProp name="Arguments.arguments">
  107994. <elementProp name="form_key" elementType="HTTPArgument">
  107995. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  107996. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  107997. <stringProp name="Argument.metadata">=</stringProp>
  107998. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  107999. <stringProp name="Argument.name">form_key</stringProp>
  108000. <stringProp name="Argument.desc">false</stringProp>
  108001. </elementProp>
  108002. <elementProp name="entity" elementType="HTTPArgument">
  108003. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108004. <stringProp name="Argument.value">${entity}</stringProp>
  108005. <stringProp name="Argument.metadata">=</stringProp>
  108006. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108007. <stringProp name="Argument.name">entity</stringProp>
  108008. </elementProp>
  108009. <elementProp name="behavior" elementType="HTTPArgument">
  108010. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108011. <stringProp name="Argument.value">${adminImportBehavior}</stringProp>
  108012. <stringProp name="Argument.metadata">=</stringProp>
  108013. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108014. <stringProp name="Argument.name">behavior</stringProp>
  108015. </elementProp>
  108016. <elementProp name="validation_strategy" elementType="HTTPArgument">
  108017. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108018. <stringProp name="Argument.value">validation-stop-on-errors</stringProp>
  108019. <stringProp name="Argument.metadata">=</stringProp>
  108020. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108021. <stringProp name="Argument.name">validation_strategy</stringProp>
  108022. <stringProp name="Argument.desc">false</stringProp>
  108023. </elementProp>
  108024. <elementProp name="allowed_error_count" elementType="HTTPArgument">
  108025. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108026. <stringProp name="Argument.value">10</stringProp>
  108027. <stringProp name="Argument.metadata">=</stringProp>
  108028. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108029. <stringProp name="Argument.name">allowed_error_count</stringProp>
  108030. <stringProp name="Argument.desc">false</stringProp>
  108031. </elementProp>
  108032. <elementProp name="_import_field_separator" elementType="HTTPArgument">
  108033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108034. <stringProp name="Argument.value">,</stringProp>
  108035. <stringProp name="Argument.metadata">=</stringProp>
  108036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108037. <stringProp name="Argument.name">_import_field_separator</stringProp>
  108038. <stringProp name="Argument.desc">false</stringProp>
  108039. </elementProp>
  108040. <elementProp name="_import_multiple_value_separator" elementType="HTTPArgument">
  108041. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108042. <stringProp name="Argument.value">,</stringProp>
  108043. <stringProp name="Argument.metadata">=</stringProp>
  108044. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108045. <stringProp name="Argument.name">_import_multiple_value_separator</stringProp>
  108046. <stringProp name="Argument.desc">false</stringProp>
  108047. </elementProp>
  108048. </collectionProp>
  108049. </elementProp>
  108050. <stringProp name="HTTPSampler.domain"/>
  108051. <stringProp name="HTTPSampler.port"/>
  108052. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108053. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108054. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108055. <stringProp name="HTTPSampler.contentEncoding"/>
  108056. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/import/start</stringProp>
  108057. <stringProp name="HTTPSampler.method">POST</stringProp>
  108058. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108059. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108060. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108061. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108062. <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
  108063. <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
  108064. <collectionProp name="HTTPFileArgs.files">
  108065. <elementProp name="${adminImportFilePath}" elementType="HTTPFileArg">
  108066. <stringProp name="File.path">${adminImportFilePath}</stringProp>
  108067. <stringProp name="File.paramname">import_file</stringProp>
  108068. <stringProp name="File.mimetype">application/vnd.ms-excel</stringProp>
  108069. </elementProp>
  108070. </collectionProp>
  108071. </elementProp>
  108072. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108073. <stringProp name="HTTPSampler.embedded_url_re"/>
  108074. <stringProp name="TestPlan.comments">tool/fragments/ce/common/import_save.jmx</stringProp></HTTPSamplerProxy>
  108075. <hashTree>
  108076. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  108077. <collectionProp name="Asserion.test_strings">
  108078. <stringProp name="-1731221824">Import successfully done</stringProp>
  108079. </collectionProp>
  108080. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108081. <boolProp name="Assertion.assume_success">false</boolProp>
  108082. <intProp name="Assertion.test_type">16</intProp>
  108083. </ResponseAssertion>
  108084. <hashTree/>
  108085. </hashTree>
  108086. </hashTree>
  108087. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  108088. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108089. <collectionProp name="Arguments.arguments"/>
  108090. </elementProp>
  108091. <stringProp name="HTTPSampler.domain"/>
  108092. <stringProp name="HTTPSampler.port"/>
  108093. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108094. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108095. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108096. <stringProp name="HTTPSampler.contentEncoding"/>
  108097. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  108098. <stringProp name="HTTPSampler.method">GET</stringProp>
  108099. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108100. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108101. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108102. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108103. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108104. <stringProp name="HTTPSampler.embedded_url_re"/>
  108105. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  108106. <hashTree>
  108107. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  108108. <boolProp name="resetInterpreter">false</boolProp>
  108109. <stringProp name="parameters"/>
  108110. <stringProp name="filename"/>
  108111. <stringProp name="script">
  108112. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  108113. if (adminUsersDistribution == 1) {
  108114. adminUserList = props.get("adminUserList");
  108115. adminUserList.add(vars.get("admin_user"));
  108116. }
  108117. </stringProp>
  108118. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  108119. <hashTree/>
  108120. </hashTree>
  108121. </hashTree>
  108122. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API" enabled="true">
  108123. <intProp name="ThroughputController.style">1</intProp>
  108124. <boolProp name="ThroughputController.perThread">false</boolProp>
  108125. <intProp name="ThroughputController.maxThroughput">1</intProp>
  108126. <stringProp name="ThroughputController.percentThroughput">${apiSinglePercentage}</stringProp>
  108127. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  108128. <hashTree>
  108129. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  108130. <stringProp name="script">
  108131. var tmpLabel = vars.get("testLabel")
  108132. if (tmpLabel) {
  108133. var testLabel = " (" + tmpLabel + ")"
  108134. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  108135. if (sampler.getName().indexOf(testLabel) == -1) {
  108136. sampler.setName(sampler.getName() + testLabel);
  108137. }
  108138. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  108139. sampler.setName("SetUp - " + sampler.getName());
  108140. }
  108141. } else {
  108142. testLabel = ""
  108143. }
  108144. </stringProp>
  108145. <stringProp name="scriptLanguage">javascript</stringProp>
  108146. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  108147. <hashTree/>
  108148. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  108149. <stringProp name="BeanShellSampler.query">
  108150. vars.put("testLabel", "API");
  108151. </stringProp>
  108152. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  108153. </BeanShellSampler>
  108154. <hashTree/>
  108155. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  108156. <collectionProp name="HeaderManager.headers">
  108157. <elementProp name="" elementType="Header">
  108158. <stringProp name="Header.name">Content-Type</stringProp>
  108159. <stringProp name="Header.value">application/json</stringProp>
  108160. </elementProp>
  108161. <elementProp name="" elementType="Header">
  108162. <stringProp name="Header.name">Accept</stringProp>
  108163. <stringProp name="Header.value">*/*</stringProp>
  108164. </elementProp>
  108165. </collectionProp>
  108166. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  108167. <hashTree/>
  108168. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  108169. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  108170. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  108171. <collectionProp name="Arguments.arguments">
  108172. <elementProp name="" elementType="HTTPArgument">
  108173. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  108174. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  108175. <stringProp name="Argument.metadata">=</stringProp>
  108176. </elementProp>
  108177. </collectionProp>
  108178. </elementProp>
  108179. <stringProp name="HTTPSampler.domain"/>
  108180. <stringProp name="HTTPSampler.port"/>
  108181. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108182. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108183. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108184. <stringProp name="HTTPSampler.contentEncoding"/>
  108185. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  108186. <stringProp name="HTTPSampler.method">POST</stringProp>
  108187. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108188. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108189. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108190. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108191. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108192. <stringProp name="HTTPSampler.embedded_url_re"/>
  108193. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  108194. <hashTree>
  108195. <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">
  108196. <stringProp name="VAR">admin_token</stringProp>
  108197. <stringProp name="JSONPATH">$</stringProp>
  108198. <stringProp name="DEFAULT"/>
  108199. <stringProp name="VARIABLE"/>
  108200. <stringProp name="SUBJECT">BODY</stringProp>
  108201. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  108202. <hashTree/>
  108203. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  108204. <collectionProp name="Asserion.test_strings">
  108205. <stringProp name="484395188">^.{10,}$</stringProp>
  108206. </collectionProp>
  108207. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108208. <boolProp name="Assertion.assume_success">false</boolProp>
  108209. <intProp name="Assertion.test_type">1</intProp>
  108210. <stringProp name="Assertion.scope">variable</stringProp>
  108211. <stringProp name="Scope.variable">admin_token</stringProp>
  108212. </ResponseAssertion>
  108213. <hashTree/>
  108214. </hashTree>
  108215. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  108216. <collectionProp name="HeaderManager.headers">
  108217. <elementProp name="" elementType="Header">
  108218. <stringProp name="Header.name">Authorization</stringProp>
  108219. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  108220. </elementProp>
  108221. </collectionProp>
  108222. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  108223. <hashTree/>
  108224. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Process Orders" enabled="true">
  108225. <intProp name="ThroughputController.style">1</intProp>
  108226. <boolProp name="ThroughputController.perThread">false</boolProp>
  108227. <intProp name="ThroughputController.maxThroughput">1</intProp>
  108228. <stringProp name="ThroughputController.percentThroughput">100</stringProp>
  108229. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  108230. <hashTree>
  108231. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  108232. <stringProp name="script">
  108233. var tmpLabel = vars.get("testLabel")
  108234. if (tmpLabel) {
  108235. var testLabel = " (" + tmpLabel + ")"
  108236. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  108237. if (sampler.getName().indexOf(testLabel) == -1) {
  108238. sampler.setName(sampler.getName() + testLabel);
  108239. }
  108240. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  108241. sampler.setName("SetUp - " + sampler.getName());
  108242. }
  108243. } else {
  108244. testLabel = ""
  108245. }
  108246. </stringProp>
  108247. <stringProp name="scriptLanguage">javascript</stringProp>
  108248. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  108249. <hashTree/>
  108250. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  108251. <stringProp name="BeanShellSampler.query">
  108252. vars.put("testLabel", "API Process Orders");
  108253. </stringProp>
  108254. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  108255. </BeanShellSampler>
  108256. <hashTree/>
  108257. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Arguments" enabled="true">
  108258. <stringProp name="BeanShellSampler.query">// Each thread gets an equal number of orders, based on how many orders are available.
  108259. int ordersPerThread = 1;
  108260. int apiProcessOrders = Integer.parseInt("${apiProcessOrders}");
  108261. if (apiProcessOrders &gt; 0) {
  108262. ordersPerThread = apiProcessOrders;
  108263. }
  108264. threadNum = ${__threadNum};
  108265. vars.put("ordersPerThread", String.valueOf(ordersPerThread));
  108266. vars.put("threadNum", String.valueOf(threadNum));
  108267. </stringProp>
  108268. <stringProp name="BeanShellSampler.filename"/>
  108269. <stringProp name="BeanShellSampler.parameters"/>
  108270. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  108271. <stringProp name="TestPlan.comments">tool/fragments/ce/api/process_orders/setup.jmx</stringProp></BeanShellSampler>
  108272. <hashTree/>
  108273. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Orders" enabled="true">
  108274. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108275. <collectionProp name="Arguments.arguments">
  108276. <elementProp name="searchCriteria[filterGroups][0][filters][0][field]" elementType="HTTPArgument">
  108277. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108278. <stringProp name="Argument.value">status</stringProp>
  108279. <stringProp name="Argument.metadata">=</stringProp>
  108280. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108281. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][field]</stringProp>
  108282. </elementProp>
  108283. <elementProp name="searchCriteria[filterGroups][0][filters][0][value]" elementType="HTTPArgument">
  108284. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108285. <stringProp name="Argument.value">Pending</stringProp>
  108286. <stringProp name="Argument.metadata">=</stringProp>
  108287. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108288. <stringProp name="Argument.name">searchCriteria[filterGroups][0][filters][0][value]</stringProp>
  108289. </elementProp>
  108290. <elementProp name="searchCriteria[pageSize]" elementType="HTTPArgument">
  108291. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108292. <stringProp name="Argument.value">${ordersPerThread}</stringProp>
  108293. <stringProp name="Argument.metadata">=</stringProp>
  108294. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108295. <stringProp name="Argument.name">searchCriteria[pageSize]</stringProp>
  108296. </elementProp>
  108297. <elementProp name="searchCriteria[current_page]" elementType="HTTPArgument">
  108298. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108299. <stringProp name="Argument.value">${threadNum}</stringProp>
  108300. <stringProp name="Argument.metadata">=</stringProp>
  108301. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108302. <stringProp name="Argument.name">searchCriteria[current_page]</stringProp>
  108303. </elementProp>
  108304. </collectionProp>
  108305. </elementProp>
  108306. <stringProp name="HTTPSampler.domain"/>
  108307. <stringProp name="HTTPSampler.port"/>
  108308. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108309. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108310. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108311. <stringProp name="HTTPSampler.contentEncoding"/>
  108312. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/orders</stringProp>
  108313. <stringProp name="HTTPSampler.method">GET</stringProp>
  108314. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108315. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108316. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108317. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108318. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108319. <stringProp name="HTTPSampler.embedded_url_re"/>
  108320. <stringProp name="TestPlan.comments">tool/fragments/ce/api/process_orders/get_orders.jmx</stringProp></HTTPSamplerProxy>
  108321. <hashTree>
  108322. <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 entity ids" enabled="true">
  108323. <stringProp name="VAR">entity_ids</stringProp>
  108324. <stringProp name="JSONPATH">$.items[*].entity_id</stringProp>
  108325. <stringProp name="DEFAULT"/>
  108326. <stringProp name="VARIABLE"/>
  108327. <stringProp name="SUBJECT">BODY</stringProp>
  108328. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  108329. <hashTree/>
  108330. </hashTree>
  108331. <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Order" enabled="true">
  108332. <stringProp name="ForeachController.inputVal">entity_ids</stringProp>
  108333. <stringProp name="ForeachController.returnVal">order_id</stringProp>
  108334. <boolProp name="ForeachController.useSeparator">true</boolProp>
  108335. <stringProp name="TestPlan.comments">tool/fragments/ce/api/process_orders/for_each_order.jmx</stringProp></ForeachController>
  108336. <hashTree>
  108337. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Invoice" enabled="true">
  108338. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108339. <collectionProp name="Arguments.arguments"/>
  108340. </elementProp>
  108341. <stringProp name="HTTPSampler.domain"/>
  108342. <stringProp name="HTTPSampler.port"/>
  108343. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108344. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108345. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108346. <stringProp name="HTTPSampler.contentEncoding"/>
  108347. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/order/${order_id}/invoice</stringProp>
  108348. <stringProp name="HTTPSampler.method">POST</stringProp>
  108349. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108350. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108351. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108352. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108353. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108354. <stringProp name="HTTPSampler.embedded_url_re"/>
  108355. <stringProp name="TestPlan.comments">tool/fragments/ce/api/process_orders/create_invoice.jmx</stringProp></HTTPSamplerProxy>
  108356. <hashTree>
  108357. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  108358. <collectionProp name="Asserion.test_strings">
  108359. <stringProp name="34237953">"\d+"</stringProp>
  108360. </collectionProp>
  108361. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108362. <boolProp name="Assertion.assume_success">false</boolProp>
  108363. <intProp name="Assertion.test_type">2</intProp>
  108364. </ResponseAssertion>
  108365. <hashTree/>
  108366. </hashTree>
  108367. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Shipment" enabled="true">
  108368. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108369. <collectionProp name="Arguments.arguments"/>
  108370. </elementProp>
  108371. <stringProp name="HTTPSampler.domain"/>
  108372. <stringProp name="HTTPSampler.port"/>
  108373. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108374. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108375. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108376. <stringProp name="HTTPSampler.contentEncoding"/>
  108377. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/order/${order_id}/ship</stringProp>
  108378. <stringProp name="HTTPSampler.method">POST</stringProp>
  108379. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108380. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108381. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108382. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108383. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108384. <stringProp name="HTTPSampler.embedded_url_re"/>
  108385. <stringProp name="TestPlan.comments">tool/fragments/ce/api/process_orders/create_shipment.jmx</stringProp></HTTPSamplerProxy>
  108386. <hashTree>
  108387. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  108388. <collectionProp name="Asserion.test_strings">
  108389. <stringProp name="34237953">"\d+"</stringProp>
  108390. </collectionProp>
  108391. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108392. <boolProp name="Assertion.assume_success">false</boolProp>
  108393. <intProp name="Assertion.test_type">2</intProp>
  108394. </ResponseAssertion>
  108395. <hashTree/>
  108396. </hashTree>
  108397. </hashTree>
  108398. </hashTree>
  108399. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="API Product Attribute Management" enabled="true">
  108400. <intProp name="ThroughputController.style">1</intProp>
  108401. <boolProp name="ThroughputController.perThread">false</boolProp>
  108402. <intProp name="ThroughputController.maxThroughput">1</intProp>
  108403. <stringProp name="ThroughputController.percentThroughput">100</stringProp>
  108404. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  108405. <hashTree>
  108406. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  108407. <stringProp name="script">
  108408. var tmpLabel = vars.get("testLabel")
  108409. if (tmpLabel) {
  108410. var testLabel = " (" + tmpLabel + ")"
  108411. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  108412. if (sampler.getName().indexOf(testLabel) == -1) {
  108413. sampler.setName(sampler.getName() + testLabel);
  108414. }
  108415. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  108416. sampler.setName("SetUp - " + sampler.getName());
  108417. }
  108418. } else {
  108419. testLabel = ""
  108420. }
  108421. </stringProp>
  108422. <stringProp name="scriptLanguage">javascript</stringProp>
  108423. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  108424. <hashTree/>
  108425. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  108426. <stringProp name="BeanShellSampler.query">
  108427. vars.put("testLabel", "API Product Attribute Management");
  108428. </stringProp>
  108429. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  108430. </BeanShellSampler>
  108431. <hashTree/>
  108432. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute set" enabled="true">
  108433. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  108434. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  108435. <collectionProp name="Arguments.arguments">
  108436. <elementProp name="" elementType="HTTPArgument">
  108437. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  108438. <stringProp name="Argument.value">{&#xD;
  108439. "attributeSet": {&#xD;
  108440. "attribute_set_name": "new_attribute_set_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  108441. "sort_order": 500&#xD;
  108442. },&#xD;
  108443. "skeletonId": "4"&#xD;
  108444. }</stringProp>
  108445. <stringProp name="Argument.metadata">=</stringProp>
  108446. </elementProp>
  108447. </collectionProp>
  108448. </elementProp>
  108449. <stringProp name="HTTPSampler.domain"/>
  108450. <stringProp name="HTTPSampler.port"/>
  108451. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108452. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108453. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108454. <stringProp name="HTTPSampler.contentEncoding"/>
  108455. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/</stringProp>
  108456. <stringProp name="HTTPSampler.method">POST</stringProp>
  108457. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108458. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108459. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108460. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108461. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108462. <stringProp name="HTTPSampler.embedded_url_re"/>
  108463. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_attribute_set.jmx</stringProp></HTTPSamplerProxy>
  108464. <hashTree>
  108465. <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 attribute_set_id" enabled="true">
  108466. <stringProp name="VAR">attribute_set_id</stringProp>
  108467. <stringProp name="JSONPATH">$.attribute_set_id</stringProp>
  108468. <stringProp name="DEFAULT"/>
  108469. <stringProp name="VARIABLE"/>
  108470. <stringProp name="SUBJECT">BODY</stringProp>
  108471. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  108472. <hashTree/>
  108473. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_set_id not null" enabled="true">
  108474. <collectionProp name="Asserion.test_strings">
  108475. <stringProp name="89649215">^\d+$</stringProp>
  108476. </collectionProp>
  108477. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108478. <boolProp name="Assertion.assume_success">false</boolProp>
  108479. <intProp name="Assertion.test_type">1</intProp>
  108480. <stringProp name="Assertion.scope">variable</stringProp>
  108481. <stringProp name="Scope.variable">attribute_set_id</stringProp>
  108482. </ResponseAssertion>
  108483. <hashTree/>
  108484. </hashTree>
  108485. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute group" enabled="true">
  108486. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  108487. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  108488. <collectionProp name="Arguments.arguments">
  108489. <elementProp name="" elementType="HTTPArgument">
  108490. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  108491. <stringProp name="Argument.value">{&#xD;
  108492. "group": {&#xD;
  108493. "attribute_group_name": "empty_attribute_group_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  108494. "attribute_set_id": ${attribute_set_id}&#xD;
  108495. }&#xD;
  108496. }</stringProp>
  108497. <stringProp name="Argument.metadata">=</stringProp>
  108498. </elementProp>
  108499. </collectionProp>
  108500. </elementProp>
  108501. <stringProp name="HTTPSampler.domain"/>
  108502. <stringProp name="HTTPSampler.port"/>
  108503. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108504. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108505. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108506. <stringProp name="HTTPSampler.contentEncoding"/>
  108507. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/groups</stringProp>
  108508. <stringProp name="HTTPSampler.method">POST</stringProp>
  108509. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108510. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108511. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108512. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108513. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108514. <stringProp name="HTTPSampler.embedded_url_re"/>
  108515. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_attribute_group.jmx</stringProp></HTTPSamplerProxy>
  108516. <hashTree>
  108517. <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 attribute_group_id" enabled="true">
  108518. <stringProp name="VAR">attribute_group_id</stringProp>
  108519. <stringProp name="JSONPATH">$.attribute_group_id</stringProp>
  108520. <stringProp name="DEFAULT"/>
  108521. <stringProp name="VARIABLE"/>
  108522. <stringProp name="SUBJECT">BODY</stringProp>
  108523. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  108524. <hashTree/>
  108525. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_group_id not null" enabled="true">
  108526. <collectionProp name="Asserion.test_strings">
  108527. <stringProp name="89649215">^\d+$</stringProp>
  108528. </collectionProp>
  108529. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108530. <boolProp name="Assertion.assume_success">false</boolProp>
  108531. <intProp name="Assertion.test_type">1</intProp>
  108532. <stringProp name="Assertion.scope">variable</stringProp>
  108533. <stringProp name="Scope.variable">attribute_set_id</stringProp>
  108534. </ResponseAssertion>
  108535. <hashTree/>
  108536. </hashTree>
  108537. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create attribute" enabled="true">
  108538. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  108539. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  108540. <collectionProp name="Arguments.arguments">
  108541. <elementProp name="" elementType="HTTPArgument">
  108542. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  108543. <stringProp name="Argument.value">{&#xD;
  108544. "attribute": {&#xD;
  108545. "attribute_code": "attr_code_${__time()}",&#xD;
  108546. "frontend_labels": [&#xD;
  108547. {&#xD;
  108548. "store_id": 0,&#xD;
  108549. "label": "front_lbl_${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}"&#xD;
  108550. }&#xD;
  108551. ],&#xD;
  108552. "default_value": "default value",&#xD;
  108553. "frontend_input": "textarea",&#xD;
  108554. "is_required": 1&#xD;
  108555. }&#xD;
  108556. }</stringProp>
  108557. <stringProp name="Argument.metadata">=</stringProp>
  108558. </elementProp>
  108559. </collectionProp>
  108560. </elementProp>
  108561. <stringProp name="HTTPSampler.domain"/>
  108562. <stringProp name="HTTPSampler.port"/>
  108563. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108564. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108565. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108566. <stringProp name="HTTPSampler.contentEncoding"/>
  108567. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attributes/</stringProp>
  108568. <stringProp name="HTTPSampler.method">POST</stringProp>
  108569. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108570. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108571. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108572. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108573. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108574. <stringProp name="HTTPSampler.embedded_url_re"/>
  108575. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_attribute.jmx</stringProp></HTTPSamplerProxy>
  108576. <hashTree>
  108577. <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 attribute_id" enabled="true">
  108578. <stringProp name="VAR">attribute_id</stringProp>
  108579. <stringProp name="JSONPATH">$.attribute_id</stringProp>
  108580. <stringProp name="DEFAULT"/>
  108581. <stringProp name="VARIABLE"/>
  108582. <stringProp name="SUBJECT">BODY</stringProp>
  108583. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  108584. <hashTree/>
  108585. <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 attribute_code" enabled="true">
  108586. <stringProp name="VAR">attribute_code</stringProp>
  108587. <stringProp name="JSONPATH">$.attribute_code</stringProp>
  108588. <stringProp name="DEFAULT"/>
  108589. <stringProp name="VARIABLE"/>
  108590. <stringProp name="SUBJECT">BODY</stringProp>
  108591. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  108592. <hashTree/>
  108593. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_id not null" enabled="true">
  108594. <collectionProp name="Asserion.test_strings">
  108595. <stringProp name="89649215">^\d+$</stringProp>
  108596. </collectionProp>
  108597. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108598. <boolProp name="Assertion.assume_success">false</boolProp>
  108599. <intProp name="Assertion.test_type">1</intProp>
  108600. <stringProp name="Assertion.scope">variable</stringProp>
  108601. <stringProp name="Scope.variable">attribute_id</stringProp>
  108602. </ResponseAssertion>
  108603. <hashTree/>
  108604. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert attribute_code not null" enabled="true">
  108605. <collectionProp name="Asserion.test_strings">
  108606. <stringProp name="2131456825">^[a-z0-9-_]+$</stringProp>
  108607. </collectionProp>
  108608. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108609. <boolProp name="Assertion.assume_success">false</boolProp>
  108610. <intProp name="Assertion.test_type">1</intProp>
  108611. <stringProp name="Assertion.scope">variable</stringProp>
  108612. <stringProp name="Scope.variable">attribute_code</stringProp>
  108613. </ResponseAssertion>
  108614. <hashTree/>
  108615. </hashTree>
  108616. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add attribute to attribute set" enabled="true">
  108617. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  108618. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  108619. <collectionProp name="Arguments.arguments">
  108620. <elementProp name="" elementType="HTTPArgument">
  108621. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  108622. <stringProp name="Argument.value">{&#xD;
  108623. "attributeSetId": "${attribute_set_id}",&#xD;
  108624. "attributeGroupId": "${attribute_group_id}",&#xD;
  108625. "attributeCode": "${attribute_code}",&#xD;
  108626. "sortOrder": 3&#xD;
  108627. }</stringProp>
  108628. <stringProp name="Argument.metadata">=</stringProp>
  108629. </elementProp>
  108630. </collectionProp>
  108631. </elementProp>
  108632. <stringProp name="HTTPSampler.domain"/>
  108633. <stringProp name="HTTPSampler.port"/>
  108634. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108635. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108636. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108637. <stringProp name="HTTPSampler.contentEncoding"/>
  108638. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/products/attribute-sets/attributes</stringProp>
  108639. <stringProp name="HTTPSampler.method">POST</stringProp>
  108640. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108641. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108642. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108643. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108644. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108645. <stringProp name="HTTPSampler.embedded_url_re"/>
  108646. <stringProp name="TestPlan.comments">tool/fragments/ce/api/add_attribute_to_attribute_set.jmx</stringProp></HTTPSamplerProxy>
  108647. <hashTree>
  108648. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert response is not null" enabled="true">
  108649. <stringProp name="JSON_PATH">$</stringProp>
  108650. <stringProp name="EXPECTED_VALUE">(\d+)</stringProp>
  108651. <boolProp name="JSONVALIDATION">true</boolProp>
  108652. <boolProp name="EXPECT_NULL">false</boolProp>
  108653. <boolProp name="INVERT">false</boolProp>
  108654. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  108655. <hashTree/>
  108656. </hashTree>
  108657. </hashTree>
  108658. </hashTree>
  108659. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Category Management" enabled="true">
  108660. <intProp name="ThroughputController.style">1</intProp>
  108661. <boolProp name="ThroughputController.perThread">false</boolProp>
  108662. <intProp name="ThroughputController.maxThroughput">1</intProp>
  108663. <stringProp name="ThroughputController.percentThroughput">${adminCategoryManagementPercentage}</stringProp>
  108664. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  108665. <hashTree>
  108666. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  108667. <stringProp name="script">
  108668. var tmpLabel = vars.get("testLabel")
  108669. if (tmpLabel) {
  108670. var testLabel = " (" + tmpLabel + ")"
  108671. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  108672. if (sampler.getName().indexOf(testLabel) == -1) {
  108673. sampler.setName(sampler.getName() + testLabel);
  108674. }
  108675. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  108676. sampler.setName("SetUp - " + sampler.getName());
  108677. }
  108678. } else {
  108679. testLabel = ""
  108680. }
  108681. </stringProp>
  108682. <stringProp name="scriptLanguage">javascript</stringProp>
  108683. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  108684. <hashTree/>
  108685. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  108686. <stringProp name="BeanShellSampler.query">
  108687. vars.put("testLabel", "Admin Category Management");
  108688. </stringProp>
  108689. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  108690. </BeanShellSampler>
  108691. <hashTree/>
  108692. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  108693. <stringProp name="script">
  108694. function getFormKeyFromResponse()
  108695. {
  108696. var url = prev.getUrlAsString(),
  108697. responseCode = prev.getResponseCode(),
  108698. formKey = null;
  108699. searchPattern = /var FORM_KEY = '(.+)'/;
  108700. if (responseCode == "200" &amp;&amp; url) {
  108701. response = prev.getResponseDataAsString();
  108702. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  108703. }
  108704. return formKey;
  108705. }
  108706. formKey = vars.get("form_key_storage");
  108707. currentFormKey = getFormKeyFromResponse();
  108708. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  108709. vars.put("form_key_storage", currentFormKey);
  108710. }
  108711. </stringProp>
  108712. <stringProp name="scriptLanguage">javascript</stringProp>
  108713. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  108714. <hashTree/>
  108715. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  108716. <stringProp name="script">
  108717. formKey = vars.get("form_key_storage");
  108718. if (formKey
  108719. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  108720. &amp;&amp; sampler.getMethod() == "POST")
  108721. {
  108722. arguments = sampler.getArguments();
  108723. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  108724. {
  108725. argument = arguments.getArgument(i);
  108726. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  108727. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  108728. argument.setValue(formKey);
  108729. }
  108730. }
  108731. }
  108732. </stringProp>
  108733. <stringProp name="scriptLanguage">javascript</stringProp>
  108734. </JSR223PreProcessor>
  108735. <hashTree/>
  108736. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  108737. <collectionProp name="CookieManager.cookies"/>
  108738. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  108739. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  108740. <hashTree/>
  108741. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  108742. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  108743. </GenericController>
  108744. <hashTree>
  108745. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  108746. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  108747. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  108748. <hashTree>
  108749. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  108750. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  108751. <stringProp name="BeanShellSampler.query">
  108752. adminUser = "none";
  108753. adminUserList = props.get("adminUserList");
  108754. adminUserListIterator = props.get("adminUserListIterator");
  108755. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  108756. if (adminUsersDistribution == 1) {
  108757. adminUser = adminUserList.poll();
  108758. } else {
  108759. if (!adminUserListIterator.hasNext()) {
  108760. adminUserListIterator = adminUserList.descendingIterator();
  108761. }
  108762. adminUser = adminUserListIterator.next();
  108763. }
  108764. if (adminUser == "none") {
  108765. SampleResult.setResponseMessage("adminUser list is empty");
  108766. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  108767. IsSuccess=false;
  108768. SampleResult.setSuccessful(false);
  108769. SampleResult.setStopThread(true);
  108770. }
  108771. vars.put("admin_user", adminUser);
  108772. </stringProp>
  108773. <stringProp name="BeanShellSampler.filename"/>
  108774. <stringProp name="BeanShellSampler.parameters"/>
  108775. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  108776. </BeanShellSampler>
  108777. <hashTree/>
  108778. </hashTree>
  108779. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  108780. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108781. <collectionProp name="Arguments.arguments"/>
  108782. </elementProp>
  108783. <stringProp name="HTTPSampler.domain"/>
  108784. <stringProp name="HTTPSampler.port"/>
  108785. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108786. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108787. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108788. <stringProp name="HTTPSampler.contentEncoding"/>
  108789. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  108790. <stringProp name="HTTPSampler.method">GET</stringProp>
  108791. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108792. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108793. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108794. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108795. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108796. <stringProp name="HTTPSampler.embedded_url_re"/>
  108797. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  108798. <hashTree>
  108799. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  108800. <collectionProp name="Asserion.test_strings">
  108801. <stringProp name="-1397214398">Welcome</stringProp>
  108802. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  108803. </collectionProp>
  108804. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108805. <boolProp name="Assertion.assume_success">false</boolProp>
  108806. <intProp name="Assertion.test_type">2</intProp>
  108807. </ResponseAssertion>
  108808. <hashTree/>
  108809. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  108810. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  108811. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  108812. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  108813. <stringProp name="RegexExtractor.template">$1$</stringProp>
  108814. <stringProp name="RegexExtractor.default"/>
  108815. <stringProp name="RegexExtractor.match_number">1</stringProp>
  108816. </RegexExtractor>
  108817. <hashTree/>
  108818. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  108819. <collectionProp name="Asserion.test_strings">
  108820. <stringProp name="2845929">^.+$</stringProp>
  108821. </collectionProp>
  108822. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  108823. <boolProp name="Assertion.assume_success">false</boolProp>
  108824. <intProp name="Assertion.test_type">1</intProp>
  108825. <stringProp name="Assertion.scope">variable</stringProp>
  108826. <stringProp name="Scope.variable">admin_form_key</stringProp>
  108827. </ResponseAssertion>
  108828. <hashTree/>
  108829. </hashTree>
  108830. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  108831. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108832. <collectionProp name="Arguments.arguments">
  108833. <elementProp name="dummy" elementType="HTTPArgument">
  108834. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108835. <stringProp name="Argument.value"/>
  108836. <stringProp name="Argument.metadata">=</stringProp>
  108837. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108838. <stringProp name="Argument.name">dummy</stringProp>
  108839. </elementProp>
  108840. <elementProp name="form_key" elementType="HTTPArgument">
  108841. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108842. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  108843. <stringProp name="Argument.metadata">=</stringProp>
  108844. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108845. <stringProp name="Argument.name">form_key</stringProp>
  108846. </elementProp>
  108847. <elementProp name="login[password]" elementType="HTTPArgument">
  108848. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108849. <stringProp name="Argument.value">${admin_password}</stringProp>
  108850. <stringProp name="Argument.metadata">=</stringProp>
  108851. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108852. <stringProp name="Argument.name">login[password]</stringProp>
  108853. </elementProp>
  108854. <elementProp name="login[username]" elementType="HTTPArgument">
  108855. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  108856. <stringProp name="Argument.value">${admin_user}</stringProp>
  108857. <stringProp name="Argument.metadata">=</stringProp>
  108858. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  108859. <stringProp name="Argument.name">login[username]</stringProp>
  108860. </elementProp>
  108861. </collectionProp>
  108862. </elementProp>
  108863. <stringProp name="HTTPSampler.domain"/>
  108864. <stringProp name="HTTPSampler.port"/>
  108865. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108866. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108867. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108868. <stringProp name="HTTPSampler.contentEncoding"/>
  108869. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  108870. <stringProp name="HTTPSampler.method">POST</stringProp>
  108871. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108872. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108873. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108874. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108875. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  108876. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108877. <stringProp name="HTTPSampler.embedded_url_re"/>
  108878. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  108879. </HTTPSamplerProxy>
  108880. <hashTree>
  108881. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  108882. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  108883. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  108884. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  108885. <stringProp name="RegexExtractor.template">$1$</stringProp>
  108886. <stringProp name="RegexExtractor.default"/>
  108887. <stringProp name="RegexExtractor.match_number">1</stringProp>
  108888. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  108889. <hashTree/>
  108890. </hashTree>
  108891. </hashTree>
  108892. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  108893. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  108894. </GenericController>
  108895. <hashTree>
  108896. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Category Management" enabled="true">
  108897. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_category_management/admin_category_management.jmx</stringProp>
  108898. </TestFragmentController>
  108899. <hashTree>
  108900. <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Set Arguments" enabled="true">
  108901. <stringProp name="scriptLanguage">javascript</stringProp>
  108902. <stringProp name="parameters"/>
  108903. <stringProp name="filename"/>
  108904. <stringProp name="cacheKey"/>
  108905. <stringProp name="script">random = new java.util.Random();
  108906. if (${seedForRandom} &gt; 0) {
  108907. random.setSeed(${seedForRandom} + ${__threadNum});
  108908. }
  108909. /**
  108910. * Get unique ids for fix concurrent category saving
  108911. */
  108912. function getNextProductNumber(i) {
  108913. number = productsVariationsSize * ${__threadNum} - i;
  108914. if (number &gt;= productsSize) {
  108915. log.info("${testLabel}: capacity of product list is not enough for support all ${adminPoolUsers} threads");
  108916. return random.nextInt(productsSize);
  108917. }
  108918. return productsVariationsSize * ${__threadNum} - i;
  108919. }
  108920. var productsVariationsSize = 5,
  108921. productsSize = props.get("simple_products_list_for_edit").size();
  108922. for (i = 1; i&lt;= productsVariationsSize; i++) {
  108923. var productVariablePrefix = "simple_product_" + i + "_";
  108924. number = getNextProductNumber(i);
  108925. simpleList = props.get("simple_products_list_for_edit").get(number);
  108926. vars.put(productVariablePrefix + "url_key", simpleList.get("url_key"));
  108927. vars.put(productVariablePrefix + "id", simpleList.get("id"));
  108928. vars.put(productVariablePrefix + "name", simpleList.get("title"));
  108929. }
  108930. categoryIndex = random.nextInt(props.get("admin_category_ids_list").size());
  108931. vars.put("parent_category_id", props.get("admin_category_ids_list").get(categoryIndex));
  108932. do {
  108933. categoryIndexNew = random.nextInt(props.get("admin_category_ids_list").size());
  108934. } while(categoryIndex == categoryIndexNew);
  108935. vars.put("new_parent_category_id", props.get("admin_category_ids_list").get(categoryIndexNew));</stringProp>
  108936. </JSR223Sampler>
  108937. <hashTree/>
  108938. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  108939. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108940. <collectionProp name="Arguments.arguments"/>
  108941. </elementProp>
  108942. <stringProp name="HTTPSampler.domain"/>
  108943. <stringProp name="HTTPSampler.port"/>
  108944. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108945. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108946. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108947. <stringProp name="HTTPSampler.contentEncoding"/>
  108948. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/</stringProp>
  108949. <stringProp name="HTTPSampler.method">GET</stringProp>
  108950. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  108951. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  108952. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  108953. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  108954. <boolProp name="HTTPSampler.monitor">false</boolProp>
  108955. <stringProp name="HTTPSampler.embedded_url_re"/>
  108956. </HTTPSamplerProxy>
  108957. <hashTree>
  108958. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  108959. <collectionProp name="HeaderManager.headers">
  108960. <elementProp name="Accept-Language" elementType="Header">
  108961. <stringProp name="Header.name">Accept-Language</stringProp>
  108962. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  108963. </elementProp>
  108964. <elementProp name="Accept" elementType="Header">
  108965. <stringProp name="Header.name">Accept</stringProp>
  108966. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  108967. </elementProp>
  108968. <elementProp name="User-Agent" elementType="Header">
  108969. <stringProp name="Header.name">User-Agent</stringProp>
  108970. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  108971. </elementProp>
  108972. <elementProp name="Accept-Encoding" elementType="Header">
  108973. <stringProp name="Header.name">Accept-Encoding</stringProp>
  108974. <stringProp name="Header.value">gzip, deflate</stringProp>
  108975. </elementProp>
  108976. </collectionProp>
  108977. </HeaderManager>
  108978. <hashTree/>
  108979. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  108980. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  108981. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  108982. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  108983. <stringProp name="RegexExtractor.template">$1$</stringProp>
  108984. <stringProp name="RegexExtractor.default"/>
  108985. <stringProp name="RegexExtractor.match_number">1</stringProp>
  108986. </RegexExtractor>
  108987. <hashTree/>
  108988. </hashTree>
  108989. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select parent category" enabled="true">
  108990. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  108991. <collectionProp name="Arguments.arguments"/>
  108992. </elementProp>
  108993. <stringProp name="HTTPSampler.domain"/>
  108994. <stringProp name="HTTPSampler.port"/>
  108995. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  108996. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  108997. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  108998. <stringProp name="HTTPSampler.contentEncoding"/>
  108999. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${parent_category_id}/</stringProp>
  109000. <stringProp name="HTTPSampler.method">GET</stringProp>
  109001. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109002. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109003. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109004. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109005. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109006. <stringProp name="HTTPSampler.embedded_url_re"/>
  109007. </HTTPSamplerProxy>
  109008. <hashTree>
  109009. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  109010. <collectionProp name="HeaderManager.headers">
  109011. <elementProp name="Accept-Language" elementType="Header">
  109012. <stringProp name="Header.name">Accept-Language</stringProp>
  109013. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  109014. </elementProp>
  109015. <elementProp name="Accept" elementType="Header">
  109016. <stringProp name="Header.name">Accept</stringProp>
  109017. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  109018. </elementProp>
  109019. <elementProp name="User-Agent" elementType="Header">
  109020. <stringProp name="Header.name">User-Agent</stringProp>
  109021. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  109022. </elementProp>
  109023. <elementProp name="Accept-Encoding" elementType="Header">
  109024. <stringProp name="Header.name">Accept-Encoding</stringProp>
  109025. <stringProp name="Header.value">gzip, deflate</stringProp>
  109026. </elementProp>
  109027. </collectionProp>
  109028. </HeaderManager>
  109029. <hashTree/>
  109030. </hashTree>
  109031. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open new category page" enabled="true">
  109032. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109033. <collectionProp name="Arguments.arguments"/>
  109034. </elementProp>
  109035. <stringProp name="HTTPSampler.domain"/>
  109036. <stringProp name="HTTPSampler.port"/>
  109037. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109038. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109039. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109040. <stringProp name="HTTPSampler.contentEncoding"/>
  109041. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/add/store/0/parent/${parent_category_id}</stringProp>
  109042. <stringProp name="HTTPSampler.method">GET</stringProp>
  109043. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109044. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109045. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109046. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109047. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109048. <stringProp name="HTTPSampler.embedded_url_re"/>
  109049. </HTTPSamplerProxy>
  109050. <hashTree>
  109051. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  109052. <collectionProp name="Asserion.test_strings">
  109053. <stringProp name="-1903925024">&lt;title&gt;New Category</stringProp>
  109054. </collectionProp>
  109055. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109056. <boolProp name="Assertion.assume_success">false</boolProp>
  109057. <intProp name="Assertion.test_type">2</intProp>
  109058. </ResponseAssertion>
  109059. <hashTree/>
  109060. </hashTree>
  109061. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create category" enabled="true">
  109062. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109063. <collectionProp name="Arguments.arguments">
  109064. <elementProp name="id" elementType="HTTPArgument">
  109065. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109066. <stringProp name="Argument.value"/>
  109067. <stringProp name="Argument.metadata">=</stringProp>
  109068. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109069. <stringProp name="Argument.name">id</stringProp>
  109070. </elementProp>
  109071. <elementProp name="parent" elementType="HTTPArgument">
  109072. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109073. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  109074. <stringProp name="Argument.metadata">=</stringProp>
  109075. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109076. <stringProp name="Argument.name">parent</stringProp>
  109077. </elementProp>
  109078. <elementProp name="path" elementType="HTTPArgument">
  109079. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109080. <stringProp name="Argument.value"/>
  109081. <stringProp name="Argument.metadata">=</stringProp>
  109082. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109083. <stringProp name="Argument.name">path</stringProp>
  109084. </elementProp>
  109085. <elementProp name="store_id" elementType="HTTPArgument">
  109086. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109087. <stringProp name="Argument.value"/>
  109088. <stringProp name="Argument.metadata">=</stringProp>
  109089. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109090. <stringProp name="Argument.name">store_id</stringProp>
  109091. </elementProp>
  109092. <elementProp name="is_active" elementType="HTTPArgument">
  109093. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109094. <stringProp name="Argument.value">0</stringProp>
  109095. <stringProp name="Argument.metadata">=</stringProp>
  109096. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109097. <stringProp name="Argument.name">is_active</stringProp>
  109098. </elementProp>
  109099. <elementProp name="include_in_menu" elementType="HTTPArgument">
  109100. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109101. <stringProp name="Argument.value">0</stringProp>
  109102. <stringProp name="Argument.metadata">=</stringProp>
  109103. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109104. <stringProp name="Argument.name">include_in_menu</stringProp>
  109105. </elementProp>
  109106. <elementProp name="is_anchor" elementType="HTTPArgument">
  109107. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109108. <stringProp name="Argument.value">1</stringProp>
  109109. <stringProp name="Argument.metadata">=</stringProp>
  109110. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109111. <stringProp name="Argument.name">is_anchor</stringProp>
  109112. </elementProp>
  109113. <elementProp name="use_config[available_sort_by]" elementType="HTTPArgument">
  109114. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109115. <stringProp name="Argument.value">true</stringProp>
  109116. <stringProp name="Argument.metadata">=</stringProp>
  109117. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109118. <stringProp name="Argument.name">use_config[available_sort_by]</stringProp>
  109119. </elementProp>
  109120. <elementProp name="use_config[default_sort_by]" elementType="HTTPArgument">
  109121. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109122. <stringProp name="Argument.value">true</stringProp>
  109123. <stringProp name="Argument.metadata">=</stringProp>
  109124. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109125. <stringProp name="Argument.name">use_config[default_sort_by]</stringProp>
  109126. </elementProp>
  109127. <elementProp name="use_config[filter_price_range]" elementType="HTTPArgument">
  109128. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109129. <stringProp name="Argument.value">true</stringProp>
  109130. <stringProp name="Argument.metadata">=</stringProp>
  109131. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109132. <stringProp name="Argument.name">use_config[filter_price_range]</stringProp>
  109133. </elementProp>
  109134. <elementProp name="use_default[url_key]" elementType="HTTPArgument">
  109135. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109136. <stringProp name="Argument.value">false</stringProp>
  109137. <stringProp name="Argument.metadata">=</stringProp>
  109138. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109139. <stringProp name="Argument.name">use_default[url_key]</stringProp>
  109140. </elementProp>
  109141. <elementProp name="url_key_create_redirect" elementType="HTTPArgument">
  109142. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109143. <stringProp name="Argument.value">0</stringProp>
  109144. <stringProp name="Argument.metadata">=</stringProp>
  109145. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109146. <stringProp name="Argument.name">url_key_create_redirect</stringProp>
  109147. </elementProp>
  109148. <elementProp name="custom_use_parent_settings" elementType="HTTPArgument">
  109149. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109150. <stringProp name="Argument.value">0</stringProp>
  109151. <stringProp name="Argument.metadata">=</stringProp>
  109152. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109153. <stringProp name="Argument.name">custom_use_parent_settings</stringProp>
  109154. </elementProp>
  109155. <elementProp name="custom_apply_to_products" elementType="HTTPArgument">
  109156. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109157. <stringProp name="Argument.value">0</stringProp>
  109158. <stringProp name="Argument.metadata">=</stringProp>
  109159. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109160. <stringProp name="Argument.name">custom_apply_to_products</stringProp>
  109161. </elementProp>
  109162. <elementProp name="name" elementType="HTTPArgument">
  109163. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109164. <stringProp name="Argument.value">Admin Category Management ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  109165. <stringProp name="Argument.metadata">=</stringProp>
  109166. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109167. <stringProp name="Argument.name">name</stringProp>
  109168. </elementProp>
  109169. <elementProp name="url_key" elementType="HTTPArgument">
  109170. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109171. <stringProp name="Argument.value">admin-category-management-${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  109172. <stringProp name="Argument.metadata">=</stringProp>
  109173. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109174. <stringProp name="Argument.name">url_key</stringProp>
  109175. </elementProp>
  109176. <elementProp name="meta_title" elementType="HTTPArgument">
  109177. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109178. <stringProp name="Argument.value"/>
  109179. <stringProp name="Argument.metadata">=</stringProp>
  109180. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109181. <stringProp name="Argument.name">meta_title</stringProp>
  109182. </elementProp>
  109183. <elementProp name="description" elementType="HTTPArgument">
  109184. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109185. <stringProp name="Argument.value"/>
  109186. <stringProp name="Argument.metadata">=</stringProp>
  109187. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109188. <stringProp name="Argument.name">description</stringProp>
  109189. </elementProp>
  109190. <elementProp name="display_mode" elementType="HTTPArgument">
  109191. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109192. <stringProp name="Argument.value">PRODUCTS</stringProp>
  109193. <stringProp name="Argument.metadata">=</stringProp>
  109194. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109195. <stringProp name="Argument.name">display_mode</stringProp>
  109196. </elementProp>
  109197. <elementProp name="default_sort_by" elementType="HTTPArgument">
  109198. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109199. <stringProp name="Argument.value">position</stringProp>
  109200. <stringProp name="Argument.metadata">=</stringProp>
  109201. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109202. <stringProp name="Argument.name">default_sort_by</stringProp>
  109203. </elementProp>
  109204. <elementProp name="meta_keywords" elementType="HTTPArgument">
  109205. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109206. <stringProp name="Argument.value"/>
  109207. <stringProp name="Argument.metadata">=</stringProp>
  109208. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109209. <stringProp name="Argument.name">meta_keywords</stringProp>
  109210. </elementProp>
  109211. <elementProp name="meta_description" elementType="HTTPArgument">
  109212. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109213. <stringProp name="Argument.value"/>
  109214. <stringProp name="Argument.metadata">=</stringProp>
  109215. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109216. <stringProp name="Argument.name">meta_description</stringProp>
  109217. </elementProp>
  109218. <elementProp name="custom_layout_update" elementType="HTTPArgument">
  109219. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109220. <stringProp name="Argument.value"/>
  109221. <stringProp name="Argument.metadata">=</stringProp>
  109222. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109223. <stringProp name="Argument.name">custom_layout_update</stringProp>
  109224. </elementProp>
  109225. <elementProp name="category_products" elementType="HTTPArgument">
  109226. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  109227. <stringProp name="Argument.value">{"${simple_product_1_id}":"","${simple_product_2_id}":"","${simple_product_3_id}":"","${simple_product_4_id}":"","${simple_product_5_id}":""}</stringProp>
  109228. <stringProp name="Argument.metadata">=</stringProp>
  109229. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109230. <stringProp name="Argument.name">category_products</stringProp>
  109231. </elementProp>
  109232. <elementProp name="form_key" elementType="HTTPArgument">
  109233. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109234. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  109235. <stringProp name="Argument.metadata">=</stringProp>
  109236. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109237. <stringProp name="Argument.name">form_key</stringProp>
  109238. </elementProp>
  109239. </collectionProp>
  109240. </elementProp>
  109241. <stringProp name="HTTPSampler.domain"/>
  109242. <stringProp name="HTTPSampler.port"/>
  109243. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109244. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109245. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109246. <stringProp name="HTTPSampler.contentEncoding"/>
  109247. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/save/</stringProp>
  109248. <stringProp name="HTTPSampler.method">POST</stringProp>
  109249. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109250. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109251. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109252. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109253. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109254. <stringProp name="HTTPSampler.embedded_url_re"/>
  109255. </HTTPSamplerProxy>
  109256. <hashTree>
  109257. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category id" enabled="true">
  109258. <stringProp name="RegexExtractor.useHeaders">URL</stringProp>
  109259. <stringProp name="RegexExtractor.refname">admin_category_id</stringProp>
  109260. <stringProp name="RegexExtractor.regex">/catalog/category/edit/id/(\d+)/</stringProp>
  109261. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109262. <stringProp name="RegexExtractor.default"/>
  109263. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109264. </RegexExtractor>
  109265. <hashTree/>
  109266. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category id" enabled="true">
  109267. <collectionProp name="Asserion.test_strings">
  109268. <stringProp name="89649215">^\d+$</stringProp>
  109269. </collectionProp>
  109270. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109271. <boolProp name="Assertion.assume_success">false</boolProp>
  109272. <intProp name="Assertion.test_type">1</intProp>
  109273. <stringProp name="Assertion.scope">variable</stringProp>
  109274. <stringProp name="Scope.variable">admin_category_id</stringProp>
  109275. </ResponseAssertion>
  109276. <hashTree/>
  109277. </hashTree>
  109278. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Select created category" enabled="true">
  109279. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109280. <collectionProp name="Arguments.arguments"/>
  109281. </elementProp>
  109282. <stringProp name="HTTPSampler.domain"/>
  109283. <stringProp name="HTTPSampler.port"/>
  109284. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109285. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109286. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109287. <stringProp name="HTTPSampler.contentEncoding"/>
  109288. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/edit/id/${admin_category_id}/</stringProp>
  109289. <stringProp name="HTTPSampler.method">GET</stringProp>
  109290. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109291. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109292. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109293. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109294. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109295. <stringProp name="HTTPSampler.embedded_url_re"/>
  109296. </HTTPSamplerProxy>
  109297. <hashTree>
  109298. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  109299. <collectionProp name="HeaderManager.headers">
  109300. <elementProp name="Accept-Language" elementType="Header">
  109301. <stringProp name="Header.name">Accept-Language</stringProp>
  109302. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  109303. </elementProp>
  109304. <elementProp name="Accept" elementType="Header">
  109305. <stringProp name="Header.name">Accept</stringProp>
  109306. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  109307. </elementProp>
  109308. <elementProp name="User-Agent" elementType="Header">
  109309. <stringProp name="Header.name">User-Agent</stringProp>
  109310. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  109311. </elementProp>
  109312. <elementProp name="Accept-Encoding" elementType="Header">
  109313. <stringProp name="Header.name">Accept-Encoding</stringProp>
  109314. <stringProp name="Header.value">gzip, deflate</stringProp>
  109315. </elementProp>
  109316. </collectionProp>
  109317. </HeaderManager>
  109318. <hashTree/>
  109319. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category row id" enabled="true">
  109320. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109321. <stringProp name="RegexExtractor.refname">admin_category_entity_id</stringProp>
  109322. <stringProp name="RegexExtractor.regex">"entity_id":"([^"]+)"</stringProp>
  109323. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109324. <stringProp name="RegexExtractor.default"/>
  109325. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109326. </RegexExtractor>
  109327. <hashTree/>
  109328. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category attribute set id" enabled="true">
  109329. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109330. <stringProp name="RegexExtractor.refname">admin_category_attribute_set_id</stringProp>
  109331. <stringProp name="RegexExtractor.regex">"attribute_set_id":"([^"]+)"</stringProp>
  109332. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109333. <stringProp name="RegexExtractor.default"/>
  109334. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109335. </RegexExtractor>
  109336. <hashTree/>
  109337. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category parent Id" enabled="true">
  109338. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109339. <stringProp name="RegexExtractor.refname">admin_category_parent_id</stringProp>
  109340. <stringProp name="RegexExtractor.regex">"parent_id":"([^"]+)"</stringProp>
  109341. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109342. <stringProp name="RegexExtractor.default"/>
  109343. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109344. </RegexExtractor>
  109345. <hashTree/>
  109346. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category created at" enabled="true">
  109347. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109348. <stringProp name="RegexExtractor.refname">admin_category_created_at</stringProp>
  109349. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  109350. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109351. <stringProp name="RegexExtractor.default"/>
  109352. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109353. </RegexExtractor>
  109354. <hashTree/>
  109355. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category updated at" enabled="true">
  109356. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109357. <stringProp name="RegexExtractor.refname">admin_category_updated_at</stringProp>
  109358. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  109359. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109360. <stringProp name="RegexExtractor.default"/>
  109361. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109362. </RegexExtractor>
  109363. <hashTree/>
  109364. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category path" enabled="true">
  109365. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109366. <stringProp name="RegexExtractor.refname">admin_category_path</stringProp>
  109367. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"path":"([^\"]+)"</stringProp>
  109368. <stringProp name="RegexExtractor.template">$2$</stringProp>
  109369. <stringProp name="RegexExtractor.default"/>
  109370. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109371. </RegexExtractor>
  109372. <hashTree/>
  109373. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category level" enabled="true">
  109374. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109375. <stringProp name="RegexExtractor.refname">admin_category_level</stringProp>
  109376. <stringProp name="RegexExtractor.regex">"level":"([^"]+)"</stringProp>
  109377. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109378. <stringProp name="RegexExtractor.default"/>
  109379. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109380. </RegexExtractor>
  109381. <hashTree/>
  109382. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category name" enabled="true">
  109383. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109384. <stringProp name="RegexExtractor.refname">admin_category_name</stringProp>
  109385. <stringProp name="RegexExtractor.regex">"entity_id":(.+)"name":"([^"]+)"</stringProp>
  109386. <stringProp name="RegexExtractor.template">$2$</stringProp>
  109387. <stringProp name="RegexExtractor.default"/>
  109388. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109389. </RegexExtractor>
  109390. <hashTree/>
  109391. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url key" enabled="true">
  109392. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109393. <stringProp name="RegexExtractor.refname">admin_category_url_key</stringProp>
  109394. <stringProp name="RegexExtractor.regex">"url_key":"([^"]+)"</stringProp>
  109395. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109396. <stringProp name="RegexExtractor.default"/>
  109397. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109398. </RegexExtractor>
  109399. <hashTree/>
  109400. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract category url path" enabled="true">
  109401. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109402. <stringProp name="RegexExtractor.refname">admin_category_url_path</stringProp>
  109403. <stringProp name="RegexExtractor.regex">"url_path":"([^"]+)"</stringProp>
  109404. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109405. <stringProp name="RegexExtractor.default"/>
  109406. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109407. </RegexExtractor>
  109408. <hashTree/>
  109409. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category row id" enabled="true">
  109410. <collectionProp name="Asserion.test_strings">
  109411. <stringProp name="89649215">^\d+$</stringProp>
  109412. </collectionProp>
  109413. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109414. <boolProp name="Assertion.assume_success">false</boolProp>
  109415. <intProp name="Assertion.test_type">1</intProp>
  109416. <stringProp name="Assertion.scope">variable</stringProp>
  109417. <stringProp name="Scope.variable">admin_category_entity_id</stringProp>
  109418. </ResponseAssertion>
  109419. <hashTree/>
  109420. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category attribute set id" enabled="true">
  109421. <collectionProp name="Asserion.test_strings">
  109422. <stringProp name="89649215">^\d+$</stringProp>
  109423. </collectionProp>
  109424. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109425. <boolProp name="Assertion.assume_success">false</boolProp>
  109426. <intProp name="Assertion.test_type">1</intProp>
  109427. <stringProp name="Assertion.scope">variable</stringProp>
  109428. <stringProp name="Scope.variable">admin_category_attribute_set_id</stringProp>
  109429. </ResponseAssertion>
  109430. <hashTree/>
  109431. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category parent id" enabled="true">
  109432. <collectionProp name="Asserion.test_strings">
  109433. <stringProp name="89649215">^\d+$</stringProp>
  109434. </collectionProp>
  109435. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109436. <boolProp name="Assertion.assume_success">false</boolProp>
  109437. <intProp name="Assertion.test_type">1</intProp>
  109438. <stringProp name="Assertion.scope">variable</stringProp>
  109439. <stringProp name="Scope.variable">admin_category_parent_id</stringProp>
  109440. </ResponseAssertion>
  109441. <hashTree/>
  109442. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category created at" enabled="true">
  109443. <collectionProp name="Asserion.test_strings">
  109444. <stringProp name="2845929">^.+$</stringProp>
  109445. </collectionProp>
  109446. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109447. <boolProp name="Assertion.assume_success">false</boolProp>
  109448. <intProp name="Assertion.test_type">1</intProp>
  109449. <stringProp name="Assertion.scope">variable</stringProp>
  109450. <stringProp name="Scope.variable">admin_category_created_at</stringProp>
  109451. </ResponseAssertion>
  109452. <hashTree/>
  109453. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category updated at" enabled="true">
  109454. <collectionProp name="Asserion.test_strings">
  109455. <stringProp name="2845929">^.+$</stringProp>
  109456. </collectionProp>
  109457. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109458. <boolProp name="Assertion.assume_success">false</boolProp>
  109459. <intProp name="Assertion.test_type">1</intProp>
  109460. <stringProp name="Assertion.scope">variable</stringProp>
  109461. <stringProp name="Scope.variable">admin_category_updated_at</stringProp>
  109462. </ResponseAssertion>
  109463. <hashTree/>
  109464. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category path" enabled="true">
  109465. <collectionProp name="Asserion.test_strings">
  109466. <stringProp name="59022110">^[\d\\\/]+$</stringProp>
  109467. </collectionProp>
  109468. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109469. <boolProp name="Assertion.assume_success">false</boolProp>
  109470. <intProp name="Assertion.test_type">1</intProp>
  109471. <stringProp name="Assertion.scope">variable</stringProp>
  109472. <stringProp name="Scope.variable">admin_category_path</stringProp>
  109473. </ResponseAssertion>
  109474. <hashTree/>
  109475. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category level" enabled="true">
  109476. <collectionProp name="Asserion.test_strings">
  109477. <stringProp name="89649215">^\d+$</stringProp>
  109478. </collectionProp>
  109479. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109480. <boolProp name="Assertion.assume_success">false</boolProp>
  109481. <intProp name="Assertion.test_type">1</intProp>
  109482. <stringProp name="Assertion.scope">variable</stringProp>
  109483. <stringProp name="Scope.variable">admin_category_level</stringProp>
  109484. </ResponseAssertion>
  109485. <hashTree/>
  109486. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category name" enabled="true">
  109487. <collectionProp name="Asserion.test_strings">
  109488. <stringProp name="2845929">^.+$</stringProp>
  109489. </collectionProp>
  109490. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109491. <boolProp name="Assertion.assume_success">false</boolProp>
  109492. <intProp name="Assertion.test_type">1</intProp>
  109493. <stringProp name="Assertion.scope">variable</stringProp>
  109494. <stringProp name="Scope.variable">admin_category_name</stringProp>
  109495. </ResponseAssertion>
  109496. <hashTree/>
  109497. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url key" enabled="true">
  109498. <collectionProp name="Asserion.test_strings">
  109499. <stringProp name="2845929">^.+$</stringProp>
  109500. </collectionProp>
  109501. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109502. <boolProp name="Assertion.assume_success">false</boolProp>
  109503. <intProp name="Assertion.test_type">1</intProp>
  109504. <stringProp name="Assertion.scope">variable</stringProp>
  109505. <stringProp name="Scope.variable">admin_category_url_key</stringProp>
  109506. </ResponseAssertion>
  109507. <hashTree/>
  109508. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category url path" enabled="true">
  109509. <collectionProp name="Asserion.test_strings">
  109510. <stringProp name="2845929">^.+$</stringProp>
  109511. </collectionProp>
  109512. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109513. <boolProp name="Assertion.assume_success">false</boolProp>
  109514. <intProp name="Assertion.test_type">1</intProp>
  109515. <stringProp name="Assertion.scope">variable</stringProp>
  109516. <stringProp name="Scope.variable">admin_category_url_path</stringProp>
  109517. </ResponseAssertion>
  109518. <hashTree/>
  109519. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert products added" enabled="true">
  109520. <collectionProp name="Asserion.test_strings">
  109521. <stringProp name="417284990">${simple_product_1_name}</stringProp>
  109522. <stringProp name="1304788671">${simple_product_2_name}</stringProp>
  109523. <stringProp name="-2102674944">${simple_product_3_name}</stringProp>
  109524. <stringProp name="-1215171263">${simple_product_4_name}</stringProp>
  109525. <stringProp name="-327667582">${simple_product_5_name}</stringProp>
  109526. </collectionProp>
  109527. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109528. <boolProp name="Assertion.assume_success">false</boolProp>
  109529. <intProp name="Assertion.test_type">2</intProp>
  109530. </ResponseAssertion>
  109531. <hashTree/>
  109532. </hashTree>
  109533. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Move category" enabled="true">
  109534. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109535. <collectionProp name="Arguments.arguments">
  109536. <elementProp name="id" elementType="HTTPArgument">
  109537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109538. <stringProp name="Argument.value">${admin_category_id}</stringProp>
  109539. <stringProp name="Argument.metadata">=</stringProp>
  109540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109541. <stringProp name="Argument.name">id</stringProp>
  109542. </elementProp>
  109543. <elementProp name="form_key" elementType="HTTPArgument">
  109544. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109545. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  109546. <stringProp name="Argument.metadata">=</stringProp>
  109547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109548. <stringProp name="Argument.name">form_key</stringProp>
  109549. </elementProp>
  109550. <elementProp name="point" elementType="HTTPArgument">
  109551. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109552. <stringProp name="Argument.value">append</stringProp>
  109553. <stringProp name="Argument.metadata">=</stringProp>
  109554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109555. <stringProp name="Argument.name">point</stringProp>
  109556. </elementProp>
  109557. <elementProp name="pid" elementType="HTTPArgument">
  109558. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109559. <stringProp name="Argument.value">${new_parent_category_id}</stringProp>
  109560. <stringProp name="Argument.metadata">=</stringProp>
  109561. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109562. <stringProp name="Argument.name">pid</stringProp>
  109563. </elementProp>
  109564. <elementProp name="paid" elementType="HTTPArgument">
  109565. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109566. <stringProp name="Argument.value">${parent_category_id}</stringProp>
  109567. <stringProp name="Argument.metadata">=</stringProp>
  109568. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109569. <stringProp name="Argument.name">paid</stringProp>
  109570. </elementProp>
  109571. <elementProp name="aid" elementType="HTTPArgument">
  109572. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109573. <stringProp name="Argument.value">0</stringProp>
  109574. <stringProp name="Argument.metadata">=</stringProp>
  109575. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109576. <stringProp name="Argument.name">aid</stringProp>
  109577. </elementProp>
  109578. <elementProp name="isAjax" elementType="HTTPArgument">
  109579. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109580. <stringProp name="Argument.value">true</stringProp>
  109581. <stringProp name="Argument.metadata">=</stringProp>
  109582. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109583. <stringProp name="Argument.name">isAjax</stringProp>
  109584. </elementProp>
  109585. </collectionProp>
  109586. </elementProp>
  109587. <stringProp name="HTTPSampler.domain"/>
  109588. <stringProp name="HTTPSampler.port"/>
  109589. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109590. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109591. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109592. <stringProp name="HTTPSampler.contentEncoding"/>
  109593. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/move/</stringProp>
  109594. <stringProp name="HTTPSampler.method">POST</stringProp>
  109595. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109596. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109597. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109598. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109599. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109600. <stringProp name="HTTPSampler.embedded_url_re"/>
  109601. </HTTPSamplerProxy>
  109602. <hashTree/>
  109603. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete category" enabled="true">
  109604. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109605. <collectionProp name="Arguments.arguments">
  109606. <elementProp name="form_key" elementType="HTTPArgument">
  109607. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109608. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  109609. <stringProp name="Argument.metadata">=</stringProp>
  109610. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109611. <stringProp name="Argument.name">form_key</stringProp>
  109612. </elementProp>
  109613. </collectionProp>
  109614. </elementProp>
  109615. <stringProp name="HTTPSampler.domain"/>
  109616. <stringProp name="HTTPSampler.port"/>
  109617. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109618. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109619. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109620. <stringProp name="HTTPSampler.contentEncoding"/>
  109621. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/catalog/category/delete/id/${admin_category_id}/</stringProp>
  109622. <stringProp name="HTTPSampler.method">POST</stringProp>
  109623. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109624. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109625. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109626. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109627. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109628. <stringProp name="HTTPSampler.embedded_url_re"/>
  109629. </HTTPSamplerProxy>
  109630. <hashTree>
  109631. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert category deleted" enabled="true">
  109632. <collectionProp name="Asserion.test_strings">
  109633. <stringProp name="1277069529">You deleted the category.</stringProp>
  109634. </collectionProp>
  109635. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109636. <boolProp name="Assertion.assume_success">false</boolProp>
  109637. <intProp name="Assertion.test_type">2</intProp>
  109638. </ResponseAssertion>
  109639. <hashTree/>
  109640. </hashTree>
  109641. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  109642. <intProp name="ActionProcessor.action">1</intProp>
  109643. <intProp name="ActionProcessor.target">0</intProp>
  109644. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCategoryManagementDelay}*1000))}</stringProp>
  109645. </TestAction>
  109646. <hashTree/>
  109647. </hashTree>
  109648. </hashTree>
  109649. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  109650. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109651. <collectionProp name="Arguments.arguments"/>
  109652. </elementProp>
  109653. <stringProp name="HTTPSampler.domain"/>
  109654. <stringProp name="HTTPSampler.port"/>
  109655. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109656. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109657. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109658. <stringProp name="HTTPSampler.contentEncoding"/>
  109659. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  109660. <stringProp name="HTTPSampler.method">GET</stringProp>
  109661. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109662. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109663. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109664. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109665. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109666. <stringProp name="HTTPSampler.embedded_url_re"/>
  109667. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  109668. <hashTree>
  109669. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  109670. <boolProp name="resetInterpreter">false</boolProp>
  109671. <stringProp name="parameters"/>
  109672. <stringProp name="filename"/>
  109673. <stringProp name="script">
  109674. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  109675. if (adminUsersDistribution == 1) {
  109676. adminUserList = props.get("adminUserList");
  109677. adminUserList.add(vars.get("admin_user"));
  109678. }
  109679. </stringProp>
  109680. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  109681. <hashTree/>
  109682. </hashTree>
  109683. </hashTree>
  109684. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Promotion Rules" enabled="true">
  109685. <intProp name="ThroughputController.style">1</intProp>
  109686. <boolProp name="ThroughputController.perThread">false</boolProp>
  109687. <intProp name="ThroughputController.maxThroughput">1</intProp>
  109688. <stringProp name="ThroughputController.percentThroughput">${adminPromotionRulesPercentage}</stringProp>
  109689. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  109690. <hashTree>
  109691. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  109692. <stringProp name="script">
  109693. var tmpLabel = vars.get("testLabel")
  109694. if (tmpLabel) {
  109695. var testLabel = " (" + tmpLabel + ")"
  109696. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  109697. if (sampler.getName().indexOf(testLabel) == -1) {
  109698. sampler.setName(sampler.getName() + testLabel);
  109699. }
  109700. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  109701. sampler.setName("SetUp - " + sampler.getName());
  109702. }
  109703. } else {
  109704. testLabel = ""
  109705. }
  109706. </stringProp>
  109707. <stringProp name="scriptLanguage">javascript</stringProp>
  109708. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  109709. <hashTree/>
  109710. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  109711. <stringProp name="BeanShellSampler.query">
  109712. vars.put("testLabel", "Admin Promotion Rules");
  109713. </stringProp>
  109714. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  109715. </BeanShellSampler>
  109716. <hashTree/>
  109717. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  109718. <stringProp name="script">
  109719. function getFormKeyFromResponse()
  109720. {
  109721. var url = prev.getUrlAsString(),
  109722. responseCode = prev.getResponseCode(),
  109723. formKey = null;
  109724. searchPattern = /var FORM_KEY = '(.+)'/;
  109725. if (responseCode == "200" &amp;&amp; url) {
  109726. response = prev.getResponseDataAsString();
  109727. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  109728. }
  109729. return formKey;
  109730. }
  109731. formKey = vars.get("form_key_storage");
  109732. currentFormKey = getFormKeyFromResponse();
  109733. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  109734. vars.put("form_key_storage", currentFormKey);
  109735. }
  109736. </stringProp>
  109737. <stringProp name="scriptLanguage">javascript</stringProp>
  109738. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  109739. <hashTree/>
  109740. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  109741. <stringProp name="script">
  109742. formKey = vars.get("form_key_storage");
  109743. if (formKey
  109744. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  109745. &amp;&amp; sampler.getMethod() == "POST")
  109746. {
  109747. arguments = sampler.getArguments();
  109748. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  109749. {
  109750. argument = arguments.getArgument(i);
  109751. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  109752. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  109753. argument.setValue(formKey);
  109754. }
  109755. }
  109756. }
  109757. </stringProp>
  109758. <stringProp name="scriptLanguage">javascript</stringProp>
  109759. </JSR223PreProcessor>
  109760. <hashTree/>
  109761. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  109762. <collectionProp name="CookieManager.cookies"/>
  109763. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  109764. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  109765. <hashTree/>
  109766. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  109767. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  109768. </GenericController>
  109769. <hashTree>
  109770. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  109771. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  109772. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  109773. <hashTree>
  109774. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  109775. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  109776. <stringProp name="BeanShellSampler.query">
  109777. adminUser = "none";
  109778. adminUserList = props.get("adminUserList");
  109779. adminUserListIterator = props.get("adminUserListIterator");
  109780. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  109781. if (adminUsersDistribution == 1) {
  109782. adminUser = adminUserList.poll();
  109783. } else {
  109784. if (!adminUserListIterator.hasNext()) {
  109785. adminUserListIterator = adminUserList.descendingIterator();
  109786. }
  109787. adminUser = adminUserListIterator.next();
  109788. }
  109789. if (adminUser == "none") {
  109790. SampleResult.setResponseMessage("adminUser list is empty");
  109791. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  109792. IsSuccess=false;
  109793. SampleResult.setSuccessful(false);
  109794. SampleResult.setStopThread(true);
  109795. }
  109796. vars.put("admin_user", adminUser);
  109797. </stringProp>
  109798. <stringProp name="BeanShellSampler.filename"/>
  109799. <stringProp name="BeanShellSampler.parameters"/>
  109800. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  109801. </BeanShellSampler>
  109802. <hashTree/>
  109803. </hashTree>
  109804. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  109805. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109806. <collectionProp name="Arguments.arguments"/>
  109807. </elementProp>
  109808. <stringProp name="HTTPSampler.domain"/>
  109809. <stringProp name="HTTPSampler.port"/>
  109810. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109811. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109812. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109813. <stringProp name="HTTPSampler.contentEncoding"/>
  109814. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  109815. <stringProp name="HTTPSampler.method">GET</stringProp>
  109816. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109817. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109818. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109819. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109820. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109821. <stringProp name="HTTPSampler.embedded_url_re"/>
  109822. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  109823. <hashTree>
  109824. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  109825. <collectionProp name="Asserion.test_strings">
  109826. <stringProp name="-1397214398">Welcome</stringProp>
  109827. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  109828. </collectionProp>
  109829. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109830. <boolProp name="Assertion.assume_success">false</boolProp>
  109831. <intProp name="Assertion.test_type">2</intProp>
  109832. </ResponseAssertion>
  109833. <hashTree/>
  109834. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  109835. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109836. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  109837. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  109838. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109839. <stringProp name="RegexExtractor.default"/>
  109840. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109841. </RegexExtractor>
  109842. <hashTree/>
  109843. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  109844. <collectionProp name="Asserion.test_strings">
  109845. <stringProp name="2845929">^.+$</stringProp>
  109846. </collectionProp>
  109847. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  109848. <boolProp name="Assertion.assume_success">false</boolProp>
  109849. <intProp name="Assertion.test_type">1</intProp>
  109850. <stringProp name="Assertion.scope">variable</stringProp>
  109851. <stringProp name="Scope.variable">admin_form_key</stringProp>
  109852. </ResponseAssertion>
  109853. <hashTree/>
  109854. </hashTree>
  109855. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  109856. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109857. <collectionProp name="Arguments.arguments">
  109858. <elementProp name="dummy" elementType="HTTPArgument">
  109859. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109860. <stringProp name="Argument.value"/>
  109861. <stringProp name="Argument.metadata">=</stringProp>
  109862. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109863. <stringProp name="Argument.name">dummy</stringProp>
  109864. </elementProp>
  109865. <elementProp name="form_key" elementType="HTTPArgument">
  109866. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109867. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  109868. <stringProp name="Argument.metadata">=</stringProp>
  109869. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109870. <stringProp name="Argument.name">form_key</stringProp>
  109871. </elementProp>
  109872. <elementProp name="login[password]" elementType="HTTPArgument">
  109873. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109874. <stringProp name="Argument.value">${admin_password}</stringProp>
  109875. <stringProp name="Argument.metadata">=</stringProp>
  109876. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109877. <stringProp name="Argument.name">login[password]</stringProp>
  109878. </elementProp>
  109879. <elementProp name="login[username]" elementType="HTTPArgument">
  109880. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109881. <stringProp name="Argument.value">${admin_user}</stringProp>
  109882. <stringProp name="Argument.metadata">=</stringProp>
  109883. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109884. <stringProp name="Argument.name">login[username]</stringProp>
  109885. </elementProp>
  109886. </collectionProp>
  109887. </elementProp>
  109888. <stringProp name="HTTPSampler.domain"/>
  109889. <stringProp name="HTTPSampler.port"/>
  109890. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109891. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109892. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109893. <stringProp name="HTTPSampler.contentEncoding"/>
  109894. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  109895. <stringProp name="HTTPSampler.method">POST</stringProp>
  109896. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109897. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109898. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109899. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109900. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  109901. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109902. <stringProp name="HTTPSampler.embedded_url_re"/>
  109903. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  109904. </HTTPSamplerProxy>
  109905. <hashTree>
  109906. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  109907. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  109908. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  109909. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  109910. <stringProp name="RegexExtractor.template">$1$</stringProp>
  109911. <stringProp name="RegexExtractor.default"/>
  109912. <stringProp name="RegexExtractor.match_number">1</stringProp>
  109913. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  109914. <hashTree/>
  109915. </hashTree>
  109916. </hashTree>
  109917. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  109918. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  109919. </GenericController>
  109920. <hashTree>
  109921. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Promotions Management" enabled="true">
  109922. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_promotions_management/admin_promotions_management.jmx</stringProp>
  109923. </TestFragmentController>
  109924. <hashTree>
  109925. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  109926. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109927. <collectionProp name="Arguments.arguments"/>
  109928. </elementProp>
  109929. <stringProp name="HTTPSampler.domain"/>
  109930. <stringProp name="HTTPSampler.port"/>
  109931. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109932. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109933. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109934. <stringProp name="HTTPSampler.contentEncoding"/>
  109935. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/</stringProp>
  109936. <stringProp name="HTTPSampler.method">GET</stringProp>
  109937. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109938. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109939. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109940. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109941. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109942. <stringProp name="HTTPSampler.embedded_url_re"/>
  109943. </HTTPSamplerProxy>
  109944. <hashTree/>
  109945. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  109946. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109947. <collectionProp name="Arguments.arguments"/>
  109948. </elementProp>
  109949. <stringProp name="HTTPSampler.domain"/>
  109950. <stringProp name="HTTPSampler.port"/>
  109951. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  109952. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  109953. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  109954. <stringProp name="HTTPSampler.contentEncoding"/>
  109955. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/new</stringProp>
  109956. <stringProp name="HTTPSampler.method">GET</stringProp>
  109957. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  109958. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  109959. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  109960. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  109961. <boolProp name="HTTPSampler.monitor">false</boolProp>
  109962. <stringProp name="HTTPSampler.embedded_url_re"/>
  109963. </HTTPSamplerProxy>
  109964. <hashTree/>
  109965. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New Conditional" enabled="true">
  109966. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  109967. <collectionProp name="Arguments.arguments">
  109968. <elementProp name="isAjax" elementType="HTTPArgument">
  109969. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109970. <stringProp name="Argument.value">true</stringProp>
  109971. <stringProp name="Argument.metadata">=</stringProp>
  109972. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109973. <stringProp name="Argument.name">isAjax</stringProp>
  109974. </elementProp>
  109975. <elementProp name="form_key" elementType="HTTPArgument">
  109976. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109977. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  109978. <stringProp name="Argument.metadata">=</stringProp>
  109979. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109980. <stringProp name="Argument.name">form_key</stringProp>
  109981. <stringProp name="Argument.desc">true</stringProp>
  109982. </elementProp>
  109983. <elementProp name="id" elementType="HTTPArgument">
  109984. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109985. <stringProp name="Argument.value">1--1</stringProp>
  109986. <stringProp name="Argument.metadata">=</stringProp>
  109987. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109988. <stringProp name="Argument.name">id</stringProp>
  109989. </elementProp>
  109990. <elementProp name="type" elementType="HTTPArgument">
  109991. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  109992. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address|base_subtotal</stringProp>
  109993. <stringProp name="Argument.metadata">=</stringProp>
  109994. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  109995. <stringProp name="Argument.name">type</stringProp>
  109996. </elementProp>
  109997. </collectionProp>
  109998. </elementProp>
  109999. <stringProp name="HTTPSampler.domain"/>
  110000. <stringProp name="HTTPSampler.port"/>
  110001. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110002. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110003. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110004. <stringProp name="HTTPSampler.contentEncoding"/>
  110005. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/newConditionHtml/form/sales_rule_formrule_conditions_fieldset_/form_namespace/sales_rule_form</stringProp>
  110006. <stringProp name="HTTPSampler.method">POST</stringProp>
  110007. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110008. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110009. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110010. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110011. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110012. <stringProp name="HTTPSampler.embedded_url_re"/>
  110013. </HTTPSamplerProxy>
  110014. <hashTree/>
  110015. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  110016. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110017. <collectionProp name="Arguments.arguments">
  110018. <elementProp name="name" elementType="HTTPArgument">
  110019. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110020. <stringProp name="Argument.value">Rule Name ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  110021. <stringProp name="Argument.metadata">=</stringProp>
  110022. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110023. <stringProp name="Argument.name">name</stringProp>
  110024. </elementProp>
  110025. <elementProp name="is_active" elementType="HTTPArgument">
  110026. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110027. <stringProp name="Argument.value">0</stringProp>
  110028. <stringProp name="Argument.metadata">=</stringProp>
  110029. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110030. <stringProp name="Argument.name">is_active</stringProp>
  110031. </elementProp>
  110032. <elementProp name="use_auto_generation" elementType="HTTPArgument">
  110033. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110034. <stringProp name="Argument.value">0</stringProp>
  110035. <stringProp name="Argument.metadata">=</stringProp>
  110036. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110037. <stringProp name="Argument.name">use_auto_generation</stringProp>
  110038. </elementProp>
  110039. <elementProp name="is_rss" elementType="HTTPArgument">
  110040. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110041. <stringProp name="Argument.value">1</stringProp>
  110042. <stringProp name="Argument.metadata">=</stringProp>
  110043. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110044. <stringProp name="Argument.name">is_rss</stringProp>
  110045. </elementProp>
  110046. <elementProp name="apply_to_shipping" elementType="HTTPArgument">
  110047. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110048. <stringProp name="Argument.value">0</stringProp>
  110049. <stringProp name="Argument.metadata">=</stringProp>
  110050. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110051. <stringProp name="Argument.name">apply_to_shipping</stringProp>
  110052. </elementProp>
  110053. <elementProp name="stop_rules_processing" elementType="HTTPArgument">
  110054. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110055. <stringProp name="Argument.value">0</stringProp>
  110056. <stringProp name="Argument.metadata">=</stringProp>
  110057. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110058. <stringProp name="Argument.name">stop_rules_processing</stringProp>
  110059. </elementProp>
  110060. <elementProp name="coupon_code" elementType="HTTPArgument">
  110061. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110062. <stringProp name="Argument.value"/>
  110063. <stringProp name="Argument.metadata">=</stringProp>
  110064. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110065. <stringProp name="Argument.name">coupon_code</stringProp>
  110066. </elementProp>
  110067. <elementProp name="uses_per_coupon" elementType="HTTPArgument">
  110068. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110069. <stringProp name="Argument.value"/>
  110070. <stringProp name="Argument.metadata">=</stringProp>
  110071. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110072. <stringProp name="Argument.name">uses_per_coupon</stringProp>
  110073. </elementProp>
  110074. <elementProp name="uses_per_customer" elementType="HTTPArgument">
  110075. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110076. <stringProp name="Argument.value"/>
  110077. <stringProp name="Argument.metadata">=</stringProp>
  110078. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110079. <stringProp name="Argument.name">uses_per_customer</stringProp>
  110080. </elementProp>
  110081. <elementProp name="sort_order" elementType="HTTPArgument">
  110082. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110083. <stringProp name="Argument.value"/>
  110084. <stringProp name="Argument.metadata">=</stringProp>
  110085. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110086. <stringProp name="Argument.name">sort_order</stringProp>
  110087. </elementProp>
  110088. <elementProp name="discount_amount" elementType="HTTPArgument">
  110089. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110090. <stringProp name="Argument.value">5</stringProp>
  110091. <stringProp name="Argument.metadata">=</stringProp>
  110092. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110093. <stringProp name="Argument.name">discount_amount</stringProp>
  110094. </elementProp>
  110095. <elementProp name="discount_qty" elementType="HTTPArgument">
  110096. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110097. <stringProp name="Argument.value">0</stringProp>
  110098. <stringProp name="Argument.metadata">=</stringProp>
  110099. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110100. <stringProp name="Argument.name">discount_qty</stringProp>
  110101. </elementProp>
  110102. <elementProp name="discount_step" elementType="HTTPArgument">
  110103. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110104. <stringProp name="Argument.value"/>
  110105. <stringProp name="Argument.metadata">=</stringProp>
  110106. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110107. <stringProp name="Argument.name">discount_step</stringProp>
  110108. </elementProp>
  110109. <elementProp name="reward_points_delta" elementType="HTTPArgument">
  110110. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110111. <stringProp name="Argument.value"/>
  110112. <stringProp name="Argument.metadata">=</stringProp>
  110113. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110114. <stringProp name="Argument.name">reward_points_delta</stringProp>
  110115. </elementProp>
  110116. <elementProp name="store_labels[0]" elementType="HTTPArgument">
  110117. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110118. <stringProp name="Argument.value"/>
  110119. <stringProp name="Argument.metadata">=</stringProp>
  110120. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110121. <stringProp name="Argument.name">store_labels[0]</stringProp>
  110122. </elementProp>
  110123. <elementProp name="description" elementType="HTTPArgument">
  110124. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110125. <stringProp name="Argument.value">Rule Description ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  110126. <stringProp name="Argument.metadata">=</stringProp>
  110127. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110128. <stringProp name="Argument.name">description</stringProp>
  110129. </elementProp>
  110130. <elementProp name="coupon_type" elementType="HTTPArgument">
  110131. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110132. <stringProp name="Argument.value">1</stringProp>
  110133. <stringProp name="Argument.metadata">=</stringProp>
  110134. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110135. <stringProp name="Argument.name">coupon_type</stringProp>
  110136. </elementProp>
  110137. <elementProp name="simple_action" elementType="HTTPArgument">
  110138. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110139. <stringProp name="Argument.value">cart_fixed</stringProp>
  110140. <stringProp name="Argument.metadata">=</stringProp>
  110141. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110142. <stringProp name="Argument.name">simple_action</stringProp>
  110143. </elementProp>
  110144. <elementProp name="website_ids[0]" elementType="HTTPArgument">
  110145. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110146. <stringProp name="Argument.value">1</stringProp>
  110147. <stringProp name="Argument.metadata">=</stringProp>
  110148. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110149. <stringProp name="Argument.name">website_ids[0]</stringProp>
  110150. </elementProp>
  110151. <elementProp name="customer_group_ids[0]" elementType="HTTPArgument">
  110152. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110153. <stringProp name="Argument.value">0</stringProp>
  110154. <stringProp name="Argument.metadata">=</stringProp>
  110155. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110156. <stringProp name="Argument.name">customer_group_ids[0]</stringProp>
  110157. </elementProp>
  110158. <elementProp name="from_date" elementType="HTTPArgument">
  110159. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110160. <stringProp name="Argument.value"/>
  110161. <stringProp name="Argument.metadata">=</stringProp>
  110162. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110163. <stringProp name="Argument.name">from_date</stringProp>
  110164. </elementProp>
  110165. <elementProp name="to_date" elementType="HTTPArgument">
  110166. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110167. <stringProp name="Argument.value"/>
  110168. <stringProp name="Argument.metadata">=</stringProp>
  110169. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110170. <stringProp name="Argument.name">to_date</stringProp>
  110171. </elementProp>
  110172. <elementProp name="rule[conditions][1][type]" elementType="HTTPArgument">
  110173. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110174. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Combine</stringProp>
  110175. <stringProp name="Argument.metadata">=</stringProp>
  110176. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110177. <stringProp name="Argument.name">rule[conditions][1][type]</stringProp>
  110178. </elementProp>
  110179. <elementProp name="rule[conditions][1][aggregator]" elementType="HTTPArgument">
  110180. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110181. <stringProp name="Argument.value">all</stringProp>
  110182. <stringProp name="Argument.metadata">=</stringProp>
  110183. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110184. <stringProp name="Argument.name">rule[conditions][1][aggregator]</stringProp>
  110185. </elementProp>
  110186. <elementProp name="rule[conditions][1][value]" elementType="HTTPArgument">
  110187. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110188. <stringProp name="Argument.value">1</stringProp>
  110189. <stringProp name="Argument.metadata">=</stringProp>
  110190. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110191. <stringProp name="Argument.name">rule[conditions][1][value]</stringProp>
  110192. </elementProp>
  110193. <elementProp name="rule[conditions][1--1][type]" elementType="HTTPArgument">
  110194. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110195. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Address</stringProp>
  110196. <stringProp name="Argument.metadata">=</stringProp>
  110197. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110198. <stringProp name="Argument.name">rule[conditions][1--1][type]</stringProp>
  110199. </elementProp>
  110200. <elementProp name="rule[conditions][1--1][attribute]" elementType="HTTPArgument">
  110201. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110202. <stringProp name="Argument.value">base_subtotal</stringProp>
  110203. <stringProp name="Argument.metadata">=</stringProp>
  110204. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110205. <stringProp name="Argument.name">rule[conditions][1--1][attribute]</stringProp>
  110206. </elementProp>
  110207. <elementProp name="rule[conditions][1--1][operator]" elementType="HTTPArgument">
  110208. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110209. <stringProp name="Argument.value">&gt;=</stringProp>
  110210. <stringProp name="Argument.metadata">=</stringProp>
  110211. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110212. <stringProp name="Argument.name">rule[conditions][1--1][operator]</stringProp>
  110213. </elementProp>
  110214. <elementProp name="rule[conditions][1--1][value]" elementType="HTTPArgument">
  110215. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110216. <stringProp name="Argument.value">100</stringProp>
  110217. <stringProp name="Argument.metadata">=</stringProp>
  110218. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110219. <stringProp name="Argument.name">rule[conditions][1--1][value]</stringProp>
  110220. </elementProp>
  110221. <elementProp name="rule[conditions][1][new_chlid]" elementType="HTTPArgument">
  110222. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110223. <stringProp name="Argument.value"/>
  110224. <stringProp name="Argument.metadata">=</stringProp>
  110225. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110226. <stringProp name="Argument.name">rule[conditions][1][new_chlid]</stringProp>
  110227. </elementProp>
  110228. <elementProp name="rule[actions][1][type]" elementType="HTTPArgument">
  110229. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110230. <stringProp name="Argument.value">Magento\SalesRule\Model\Rule\Condition\Product\Combine</stringProp>
  110231. <stringProp name="Argument.metadata">=</stringProp>
  110232. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110233. <stringProp name="Argument.name">rule[actions][1][type]</stringProp>
  110234. </elementProp>
  110235. <elementProp name="rule[actions][1][aggregator]" elementType="HTTPArgument">
  110236. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110237. <stringProp name="Argument.value">all</stringProp>
  110238. <stringProp name="Argument.metadata">=</stringProp>
  110239. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110240. <stringProp name="Argument.name">rule[actions][1][aggregator]</stringProp>
  110241. </elementProp>
  110242. <elementProp name="rule[actions][1][value]" elementType="HTTPArgument">
  110243. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110244. <stringProp name="Argument.value">1</stringProp>
  110245. <stringProp name="Argument.metadata">=</stringProp>
  110246. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110247. <stringProp name="Argument.name">rule[actions][1][value]</stringProp>
  110248. </elementProp>
  110249. <elementProp name="rule[actions][1][new_child]" elementType="HTTPArgument">
  110250. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110251. <stringProp name="Argument.value"/>
  110252. <stringProp name="Argument.metadata">=</stringProp>
  110253. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110254. <stringProp name="Argument.name">rule[actions][1][new_child]</stringProp>
  110255. </elementProp>
  110256. <elementProp name="store_labels[1]" elementType="HTTPArgument">
  110257. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110258. <stringProp name="Argument.value"/>
  110259. <stringProp name="Argument.metadata">=</stringProp>
  110260. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110261. <stringProp name="Argument.name">store_labels[1]</stringProp>
  110262. </elementProp>
  110263. <elementProp name="store_labels[2]" elementType="HTTPArgument">
  110264. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110265. <stringProp name="Argument.value"/>
  110266. <stringProp name="Argument.metadata">=</stringProp>
  110267. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110268. <stringProp name="Argument.name">store_labels[2]</stringProp>
  110269. </elementProp>
  110270. <elementProp name="related_banners" elementType="HTTPArgument">
  110271. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110272. <stringProp name="Argument.value"/>
  110273. <stringProp name="Argument.metadata">=</stringProp>
  110274. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110275. <stringProp name="Argument.name">related_banners</stringProp>
  110276. </elementProp>
  110277. <elementProp name="form_key" elementType="HTTPArgument">
  110278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110279. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  110280. <stringProp name="Argument.metadata">=</stringProp>
  110281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110282. <stringProp name="Argument.name">form_key</stringProp>
  110283. </elementProp>
  110284. </collectionProp>
  110285. </elementProp>
  110286. <stringProp name="HTTPSampler.domain"/>
  110287. <stringProp name="HTTPSampler.port"/>
  110288. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110289. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110290. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110291. <stringProp name="HTTPSampler.contentEncoding"/>
  110292. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales_rule/promo_quote/save/</stringProp>
  110293. <stringProp name="HTTPSampler.method">POST</stringProp>
  110294. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110295. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110296. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110297. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110298. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110299. <stringProp name="HTTPSampler.embedded_url_re"/>
  110300. </HTTPSamplerProxy>
  110301. <hashTree>
  110302. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  110303. <collectionProp name="Asserion.test_strings">
  110304. <stringProp name="-396438583">You saved the rule.</stringProp>
  110305. </collectionProp>
  110306. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  110307. <boolProp name="Assertion.assume_success">false</boolProp>
  110308. <intProp name="Assertion.test_type">16</intProp>
  110309. </ResponseAssertion>
  110310. <hashTree/>
  110311. </hashTree>
  110312. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  110313. <intProp name="ActionProcessor.action">1</intProp>
  110314. <intProp name="ActionProcessor.target">0</intProp>
  110315. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminPromotionsManagementDelay}*1000))}</stringProp>
  110316. </TestAction>
  110317. <hashTree/>
  110318. </hashTree>
  110319. </hashTree>
  110320. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  110321. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110322. <collectionProp name="Arguments.arguments"/>
  110323. </elementProp>
  110324. <stringProp name="HTTPSampler.domain"/>
  110325. <stringProp name="HTTPSampler.port"/>
  110326. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110327. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110328. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110329. <stringProp name="HTTPSampler.contentEncoding"/>
  110330. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  110331. <stringProp name="HTTPSampler.method">GET</stringProp>
  110332. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110333. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110334. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110335. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110336. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110337. <stringProp name="HTTPSampler.embedded_url_re"/>
  110338. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  110339. <hashTree>
  110340. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  110341. <boolProp name="resetInterpreter">false</boolProp>
  110342. <stringProp name="parameters"/>
  110343. <stringProp name="filename"/>
  110344. <stringProp name="script">
  110345. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  110346. if (adminUsersDistribution == 1) {
  110347. adminUserList = props.get("adminUserList");
  110348. adminUserList.add(vars.get("admin_user"));
  110349. }
  110350. </stringProp>
  110351. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  110352. <hashTree/>
  110353. </hashTree>
  110354. </hashTree>
  110355. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Customer Management" enabled="true">
  110356. <intProp name="ThroughputController.style">1</intProp>
  110357. <boolProp name="ThroughputController.perThread">false</boolProp>
  110358. <intProp name="ThroughputController.maxThroughput">1</intProp>
  110359. <stringProp name="ThroughputController.percentThroughput">${adminCustomerManagementPercentage}</stringProp>
  110360. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  110361. <hashTree>
  110362. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  110363. <stringProp name="script">
  110364. var tmpLabel = vars.get("testLabel")
  110365. if (tmpLabel) {
  110366. var testLabel = " (" + tmpLabel + ")"
  110367. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  110368. if (sampler.getName().indexOf(testLabel) == -1) {
  110369. sampler.setName(sampler.getName() + testLabel);
  110370. }
  110371. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  110372. sampler.setName("SetUp - " + sampler.getName());
  110373. }
  110374. } else {
  110375. testLabel = ""
  110376. }
  110377. </stringProp>
  110378. <stringProp name="scriptLanguage">javascript</stringProp>
  110379. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  110380. <hashTree/>
  110381. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  110382. <stringProp name="BeanShellSampler.query">
  110383. vars.put("testLabel", "Admin Customer Management");
  110384. </stringProp>
  110385. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  110386. </BeanShellSampler>
  110387. <hashTree/>
  110388. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  110389. <stringProp name="script">
  110390. function getFormKeyFromResponse()
  110391. {
  110392. var url = prev.getUrlAsString(),
  110393. responseCode = prev.getResponseCode(),
  110394. formKey = null;
  110395. searchPattern = /var FORM_KEY = '(.+)'/;
  110396. if (responseCode == "200" &amp;&amp; url) {
  110397. response = prev.getResponseDataAsString();
  110398. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  110399. }
  110400. return formKey;
  110401. }
  110402. formKey = vars.get("form_key_storage");
  110403. currentFormKey = getFormKeyFromResponse();
  110404. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  110405. vars.put("form_key_storage", currentFormKey);
  110406. }
  110407. </stringProp>
  110408. <stringProp name="scriptLanguage">javascript</stringProp>
  110409. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  110410. <hashTree/>
  110411. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  110412. <stringProp name="script">
  110413. formKey = vars.get("form_key_storage");
  110414. if (formKey
  110415. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  110416. &amp;&amp; sampler.getMethod() == "POST")
  110417. {
  110418. arguments = sampler.getArguments();
  110419. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  110420. {
  110421. argument = arguments.getArgument(i);
  110422. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  110423. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  110424. argument.setValue(formKey);
  110425. }
  110426. }
  110427. }
  110428. </stringProp>
  110429. <stringProp name="scriptLanguage">javascript</stringProp>
  110430. </JSR223PreProcessor>
  110431. <hashTree/>
  110432. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  110433. <collectionProp name="CookieManager.cookies"/>
  110434. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  110435. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  110436. <hashTree/>
  110437. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  110438. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  110439. </GenericController>
  110440. <hashTree>
  110441. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  110442. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  110443. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  110444. <hashTree>
  110445. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  110446. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  110447. <stringProp name="BeanShellSampler.query">
  110448. adminUser = "none";
  110449. adminUserList = props.get("adminUserList");
  110450. adminUserListIterator = props.get("adminUserListIterator");
  110451. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  110452. if (adminUsersDistribution == 1) {
  110453. adminUser = adminUserList.poll();
  110454. } else {
  110455. if (!adminUserListIterator.hasNext()) {
  110456. adminUserListIterator = adminUserList.descendingIterator();
  110457. }
  110458. adminUser = adminUserListIterator.next();
  110459. }
  110460. if (adminUser == "none") {
  110461. SampleResult.setResponseMessage("adminUser list is empty");
  110462. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  110463. IsSuccess=false;
  110464. SampleResult.setSuccessful(false);
  110465. SampleResult.setStopThread(true);
  110466. }
  110467. vars.put("admin_user", adminUser);
  110468. </stringProp>
  110469. <stringProp name="BeanShellSampler.filename"/>
  110470. <stringProp name="BeanShellSampler.parameters"/>
  110471. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  110472. </BeanShellSampler>
  110473. <hashTree/>
  110474. </hashTree>
  110475. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  110476. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110477. <collectionProp name="Arguments.arguments"/>
  110478. </elementProp>
  110479. <stringProp name="HTTPSampler.domain"/>
  110480. <stringProp name="HTTPSampler.port"/>
  110481. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110482. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110483. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110484. <stringProp name="HTTPSampler.contentEncoding"/>
  110485. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  110486. <stringProp name="HTTPSampler.method">GET</stringProp>
  110487. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110488. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110489. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110490. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110491. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110492. <stringProp name="HTTPSampler.embedded_url_re"/>
  110493. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  110494. <hashTree>
  110495. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  110496. <collectionProp name="Asserion.test_strings">
  110497. <stringProp name="-1397214398">Welcome</stringProp>
  110498. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  110499. </collectionProp>
  110500. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  110501. <boolProp name="Assertion.assume_success">false</boolProp>
  110502. <intProp name="Assertion.test_type">2</intProp>
  110503. </ResponseAssertion>
  110504. <hashTree/>
  110505. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  110506. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110507. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  110508. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  110509. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110510. <stringProp name="RegexExtractor.default"/>
  110511. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110512. </RegexExtractor>
  110513. <hashTree/>
  110514. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  110515. <collectionProp name="Asserion.test_strings">
  110516. <stringProp name="2845929">^.+$</stringProp>
  110517. </collectionProp>
  110518. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  110519. <boolProp name="Assertion.assume_success">false</boolProp>
  110520. <intProp name="Assertion.test_type">1</intProp>
  110521. <stringProp name="Assertion.scope">variable</stringProp>
  110522. <stringProp name="Scope.variable">admin_form_key</stringProp>
  110523. </ResponseAssertion>
  110524. <hashTree/>
  110525. </hashTree>
  110526. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  110527. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110528. <collectionProp name="Arguments.arguments">
  110529. <elementProp name="dummy" elementType="HTTPArgument">
  110530. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110531. <stringProp name="Argument.value"/>
  110532. <stringProp name="Argument.metadata">=</stringProp>
  110533. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110534. <stringProp name="Argument.name">dummy</stringProp>
  110535. </elementProp>
  110536. <elementProp name="form_key" elementType="HTTPArgument">
  110537. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110538. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  110539. <stringProp name="Argument.metadata">=</stringProp>
  110540. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110541. <stringProp name="Argument.name">form_key</stringProp>
  110542. </elementProp>
  110543. <elementProp name="login[password]" elementType="HTTPArgument">
  110544. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110545. <stringProp name="Argument.value">${admin_password}</stringProp>
  110546. <stringProp name="Argument.metadata">=</stringProp>
  110547. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110548. <stringProp name="Argument.name">login[password]</stringProp>
  110549. </elementProp>
  110550. <elementProp name="login[username]" elementType="HTTPArgument">
  110551. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110552. <stringProp name="Argument.value">${admin_user}</stringProp>
  110553. <stringProp name="Argument.metadata">=</stringProp>
  110554. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110555. <stringProp name="Argument.name">login[username]</stringProp>
  110556. </elementProp>
  110557. </collectionProp>
  110558. </elementProp>
  110559. <stringProp name="HTTPSampler.domain"/>
  110560. <stringProp name="HTTPSampler.port"/>
  110561. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110562. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110563. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110564. <stringProp name="HTTPSampler.contentEncoding"/>
  110565. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  110566. <stringProp name="HTTPSampler.method">POST</stringProp>
  110567. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110568. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110569. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110570. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110571. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  110572. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110573. <stringProp name="HTTPSampler.embedded_url_re"/>
  110574. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  110575. </HTTPSamplerProxy>
  110576. <hashTree>
  110577. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  110578. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110579. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  110580. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  110581. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110582. <stringProp name="RegexExtractor.default"/>
  110583. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110584. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  110585. <hashTree/>
  110586. </hashTree>
  110587. </hashTree>
  110588. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  110589. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  110590. </GenericController>
  110591. <hashTree>
  110592. <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Admin Customer Management" enabled="true">
  110593. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_customer_management/admin_customer_management.jmx</stringProp>
  110594. </TestFragmentController>
  110595. <hashTree>
  110596. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Landing Page" enabled="true">
  110597. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110598. <collectionProp name="Arguments.arguments"/>
  110599. </elementProp>
  110600. <stringProp name="HTTPSampler.domain"/>
  110601. <stringProp name="HTTPSampler.port"/>
  110602. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110603. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110604. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110605. <stringProp name="HTTPSampler.contentEncoding"/>
  110606. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index</stringProp>
  110607. <stringProp name="HTTPSampler.method">GET</stringProp>
  110608. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110609. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110610. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110611. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110612. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110613. <stringProp name="HTTPSampler.embedded_url_re"/>
  110614. </HTTPSamplerProxy>
  110615. <hashTree>
  110616. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  110617. <collectionProp name="HeaderManager.headers">
  110618. <elementProp name="Accept-Language" elementType="Header">
  110619. <stringProp name="Header.name">Accept-Language</stringProp>
  110620. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  110621. </elementProp>
  110622. <elementProp name="Accept" elementType="Header">
  110623. <stringProp name="Header.name">Accept</stringProp>
  110624. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  110625. </elementProp>
  110626. <elementProp name="User-Agent" elementType="Header">
  110627. <stringProp name="Header.name">User-Agent</stringProp>
  110628. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  110629. </elementProp>
  110630. <elementProp name="Accept-Encoding" elementType="Header">
  110631. <stringProp name="Header.name">Accept-Encoding</stringProp>
  110632. <stringProp name="Header.value">gzip, deflate</stringProp>
  110633. </elementProp>
  110634. </collectionProp>
  110635. </HeaderManager>
  110636. <hashTree/>
  110637. </hashTree>
  110638. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Render" enabled="true">
  110639. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110640. <collectionProp name="Arguments.arguments">
  110641. <elementProp name="namespace" elementType="HTTPArgument">
  110642. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110643. <stringProp name="Argument.value">customer_listing</stringProp>
  110644. <stringProp name="Argument.metadata">=</stringProp>
  110645. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110646. <stringProp name="Argument.name">namespace</stringProp>
  110647. </elementProp>
  110648. <elementProp name="search" elementType="HTTPArgument">
  110649. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110650. <stringProp name="Argument.value"/>
  110651. <stringProp name="Argument.metadata">=</stringProp>
  110652. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110653. <stringProp name="Argument.name">search</stringProp>
  110654. </elementProp>
  110655. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  110656. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110657. <stringProp name="Argument.value">true</stringProp>
  110658. <stringProp name="Argument.metadata">=</stringProp>
  110659. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110660. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  110661. </elementProp>
  110662. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  110663. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110664. <stringProp name="Argument.value">20</stringProp>
  110665. <stringProp name="Argument.metadata">=</stringProp>
  110666. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110667. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  110668. </elementProp>
  110669. <elementProp name="paging[current]" elementType="HTTPArgument">
  110670. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110671. <stringProp name="Argument.value">1</stringProp>
  110672. <stringProp name="Argument.metadata">=</stringProp>
  110673. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110674. <stringProp name="Argument.name">paging[current]</stringProp>
  110675. </elementProp>
  110676. <elementProp name="sorting[field]" elementType="HTTPArgument">
  110677. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110678. <stringProp name="Argument.value">entity_id</stringProp>
  110679. <stringProp name="Argument.metadata">=</stringProp>
  110680. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110681. <stringProp name="Argument.name">sorting[field]</stringProp>
  110682. </elementProp>
  110683. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  110684. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110685. <stringProp name="Argument.value">asc</stringProp>
  110686. <stringProp name="Argument.metadata">=</stringProp>
  110687. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110688. <stringProp name="Argument.name">sorting[direction]</stringProp>
  110689. </elementProp>
  110690. <elementProp name="isAjax" elementType="HTTPArgument">
  110691. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110692. <stringProp name="Argument.value">true</stringProp>
  110693. <stringProp name="Argument.metadata">=</stringProp>
  110694. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110695. <stringProp name="Argument.name">isAjax</stringProp>
  110696. </elementProp>
  110697. </collectionProp>
  110698. </elementProp>
  110699. <stringProp name="HTTPSampler.domain"/>
  110700. <stringProp name="HTTPSampler.port"/>
  110701. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110702. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110703. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110704. <stringProp name="HTTPSampler.contentEncoding"/>
  110705. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  110706. <stringProp name="HTTPSampler.method">GET</stringProp>
  110707. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110708. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110709. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110710. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110711. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110712. <stringProp name="HTTPSampler.embedded_url_re"/>
  110713. </HTTPSamplerProxy>
  110714. <hashTree>
  110715. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  110716. <collectionProp name="HeaderManager.headers">
  110717. <elementProp name="" elementType="Header">
  110718. <stringProp name="Header.name">X-Requested-With</stringProp>
  110719. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  110720. </elementProp>
  110721. </collectionProp>
  110722. </HeaderManager>
  110723. <hashTree/>
  110724. </hashTree>
  110725. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Render" enabled="true">
  110726. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110727. <collectionProp name="Arguments.arguments">
  110728. <elementProp name="namespace" elementType="HTTPArgument">
  110729. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110730. <stringProp name="Argument.value">customer_listing</stringProp>
  110731. <stringProp name="Argument.metadata">=</stringProp>
  110732. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110733. <stringProp name="Argument.name">namespace</stringProp>
  110734. </elementProp>
  110735. <elementProp name="search" elementType="HTTPArgument">
  110736. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110737. <stringProp name="Argument.value">Lastname</stringProp>
  110738. <stringProp name="Argument.metadata">=</stringProp>
  110739. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110740. <stringProp name="Argument.name">search</stringProp>
  110741. </elementProp>
  110742. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  110743. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110744. <stringProp name="Argument.value">true</stringProp>
  110745. <stringProp name="Argument.metadata">=</stringProp>
  110746. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110747. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  110748. </elementProp>
  110749. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  110750. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110751. <stringProp name="Argument.value">20</stringProp>
  110752. <stringProp name="Argument.metadata">=</stringProp>
  110753. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110754. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  110755. </elementProp>
  110756. <elementProp name="paging[current]" elementType="HTTPArgument">
  110757. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110758. <stringProp name="Argument.value">1</stringProp>
  110759. <stringProp name="Argument.metadata">=</stringProp>
  110760. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110761. <stringProp name="Argument.name">paging[current]</stringProp>
  110762. </elementProp>
  110763. <elementProp name="sorting[field]" elementType="HTTPArgument">
  110764. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110765. <stringProp name="Argument.value">entity_id</stringProp>
  110766. <stringProp name="Argument.metadata">=</stringProp>
  110767. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110768. <stringProp name="Argument.name">sorting[field]</stringProp>
  110769. </elementProp>
  110770. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  110771. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110772. <stringProp name="Argument.value">asc</stringProp>
  110773. <stringProp name="Argument.metadata">=</stringProp>
  110774. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110775. <stringProp name="Argument.name">sorting[direction]</stringProp>
  110776. </elementProp>
  110777. <elementProp name="isAjax" elementType="HTTPArgument">
  110778. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  110779. <stringProp name="Argument.value">true</stringProp>
  110780. <stringProp name="Argument.metadata">=</stringProp>
  110781. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  110782. <stringProp name="Argument.name">isAjax</stringProp>
  110783. </elementProp>
  110784. </collectionProp>
  110785. </elementProp>
  110786. <stringProp name="HTTPSampler.domain"/>
  110787. <stringProp name="HTTPSampler.port"/>
  110788. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110789. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110790. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110791. <stringProp name="HTTPSampler.contentEncoding"/>
  110792. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  110793. <stringProp name="HTTPSampler.method">GET</stringProp>
  110794. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110795. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110796. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110797. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110798. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110799. <stringProp name="HTTPSampler.embedded_url_re"/>
  110800. </HTTPSamplerProxy>
  110801. <hashTree>
  110802. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  110803. <collectionProp name="HeaderManager.headers">
  110804. <elementProp name="" elementType="Header">
  110805. <stringProp name="Header.name">X-Requested-With</stringProp>
  110806. <stringProp name="Header.value">XMLHttpRequest</stringProp>
  110807. </elementProp>
  110808. </collectionProp>
  110809. </HeaderManager>
  110810. <hashTree/>
  110811. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer edit url" enabled="true">
  110812. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110813. <stringProp name="RegexExtractor.refname">customer_edit_url_path</stringProp>
  110814. <stringProp name="RegexExtractor.regex">actions":\{"edit":\{"href":"(?:http|https):\\/\\/(.*?)\\/customer\\/index\\/edit\\/id\\/(\d+)\\/",</stringProp>
  110815. <stringProp name="RegexExtractor.template">/customer/index/edit/id/$2$/</stringProp>
  110816. <stringProp name="RegexExtractor.default"/>
  110817. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110818. </RegexExtractor>
  110819. <hashTree/>
  110820. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer edit url" enabled="true">
  110821. <collectionProp name="Asserion.test_strings">
  110822. <stringProp name="2845929">^.+$</stringProp>
  110823. </collectionProp>
  110824. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  110825. <boolProp name="Assertion.assume_success">false</boolProp>
  110826. <intProp name="Assertion.test_type">1</intProp>
  110827. <stringProp name="Assertion.scope">variable</stringProp>
  110828. <stringProp name="Scope.variable">customer_edit_url_path</stringProp>
  110829. </ResponseAssertion>
  110830. <hashTree/>
  110831. </hashTree>
  110832. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Edit Customer" enabled="true">
  110833. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  110834. <collectionProp name="Arguments.arguments"/>
  110835. </elementProp>
  110836. <stringProp name="HTTPSampler.domain"/>
  110837. <stringProp name="HTTPSampler.port"/>
  110838. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  110839. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  110840. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  110841. <stringProp name="HTTPSampler.contentEncoding"/>
  110842. <stringProp name="HTTPSampler.path">${base_path}${admin_path}${customer_edit_url_path}</stringProp>
  110843. <stringProp name="HTTPSampler.method">GET</stringProp>
  110844. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  110845. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  110846. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  110847. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  110848. <boolProp name="HTTPSampler.monitor">false</boolProp>
  110849. <stringProp name="HTTPSampler.embedded_url_re"/>
  110850. </HTTPSamplerProxy>
  110851. <hashTree>
  110852. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert edit customer page" enabled="true">
  110853. <collectionProp name="Asserion.test_strings">
  110854. <stringProp name="-1422614550">Customer Information</stringProp>
  110855. </collectionProp>
  110856. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  110857. <boolProp name="Assertion.assume_success">false</boolProp>
  110858. <intProp name="Assertion.test_type">2</intProp>
  110859. </ResponseAssertion>
  110860. <hashTree/>
  110861. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer entity_id" enabled="true">
  110862. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110863. <stringProp name="RegexExtractor.refname">admin_customer_entity_id</stringProp>
  110864. <stringProp name="RegexExtractor.regex">"entity_id":"(\d+)"</stringProp>
  110865. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110866. <stringProp name="RegexExtractor.default"/>
  110867. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110868. </RegexExtractor>
  110869. <hashTree/>
  110870. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract website_id" enabled="true">
  110871. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110872. <stringProp name="RegexExtractor.refname">admin_customer_website_id</stringProp>
  110873. <stringProp name="RegexExtractor.regex">"website_id":"(\d+)"</stringProp>
  110874. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110875. <stringProp name="RegexExtractor.default"/>
  110876. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110877. </RegexExtractor>
  110878. <hashTree/>
  110879. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer firstname" enabled="true">
  110880. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110881. <stringProp name="RegexExtractor.refname">admin_customer_firstname</stringProp>
  110882. <stringProp name="RegexExtractor.regex">"firstname":"([^"]+)"</stringProp>
  110883. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110884. <stringProp name="RegexExtractor.default"/>
  110885. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110886. </RegexExtractor>
  110887. <hashTree/>
  110888. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer lastname" enabled="true">
  110889. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110890. <stringProp name="RegexExtractor.refname">admin_customer_lastname</stringProp>
  110891. <stringProp name="RegexExtractor.regex">"lastname":"([^"]+)"</stringProp>
  110892. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110893. <stringProp name="RegexExtractor.default"/>
  110894. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110895. </RegexExtractor>
  110896. <hashTree/>
  110897. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract customer email" enabled="true">
  110898. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110899. <stringProp name="RegexExtractor.refname">admin_customer_email</stringProp>
  110900. <stringProp name="RegexExtractor.regex">"email":"([^\@]+@[^.]+.[^"]+)"</stringProp>
  110901. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110902. <stringProp name="RegexExtractor.default"/>
  110903. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110904. </RegexExtractor>
  110905. <hashTree/>
  110906. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract group_id" enabled="true">
  110907. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110908. <stringProp name="RegexExtractor.refname">admin_customer_group_id</stringProp>
  110909. <stringProp name="RegexExtractor.regex">"group_id":"(\d+)"</stringProp>
  110910. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110911. <stringProp name="RegexExtractor.default"/>
  110912. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110913. </RegexExtractor>
  110914. <hashTree/>
  110915. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract store_id" enabled="true">
  110916. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110917. <stringProp name="RegexExtractor.refname">admin_customer_store_id</stringProp>
  110918. <stringProp name="RegexExtractor.regex">"store_id":"(\d+)"</stringProp>
  110919. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110920. <stringProp name="RegexExtractor.default"/>
  110921. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110922. </RegexExtractor>
  110923. <hashTree/>
  110924. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extact created_at" enabled="true">
  110925. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110926. <stringProp name="RegexExtractor.refname">admin_customer_created_at</stringProp>
  110927. <stringProp name="RegexExtractor.regex">"created_at":"([^"]+)"</stringProp>
  110928. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110929. <stringProp name="RegexExtractor.default"/>
  110930. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110931. </RegexExtractor>
  110932. <hashTree/>
  110933. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract updated_at" enabled="true">
  110934. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110935. <stringProp name="RegexExtractor.refname">admin_customer_updated_at</stringProp>
  110936. <stringProp name="RegexExtractor.regex">"updated_at":"([^"]+)"</stringProp>
  110937. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110938. <stringProp name="RegexExtractor.default"/>
  110939. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110940. </RegexExtractor>
  110941. <hashTree/>
  110942. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract is_active" enabled="true">
  110943. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110944. <stringProp name="RegexExtractor.refname">admin_customer_is_active</stringProp>
  110945. <stringProp name="RegexExtractor.regex">"is_active":"(\d+)"</stringProp>
  110946. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110947. <stringProp name="RegexExtractor.default"/>
  110948. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110949. </RegexExtractor>
  110950. <hashTree/>
  110951. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract disable_auto_group_change" enabled="true">
  110952. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110953. <stringProp name="RegexExtractor.refname">admin_customer_disable_auto_group_change</stringProp>
  110954. <stringProp name="RegexExtractor.regex">"disable_auto_group_change":"(\d+)"</stringProp>
  110955. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110956. <stringProp name="RegexExtractor.default"/>
  110957. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110958. </RegexExtractor>
  110959. <hashTree/>
  110960. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract created_in" enabled="true">
  110961. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110962. <stringProp name="RegexExtractor.refname">admin_customer_created_in</stringProp>
  110963. <stringProp name="RegexExtractor.regex">"created_in":"([^"]+)"</stringProp>
  110964. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110965. <stringProp name="RegexExtractor.default"/>
  110966. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110967. </RegexExtractor>
  110968. <hashTree/>
  110969. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract dob" enabled="true">
  110970. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110971. <stringProp name="RegexExtractor.refname">admin_customer_dob</stringProp>
  110972. <stringProp name="RegexExtractor.regex">"dob":"(\d+)-(\d+)-(\d+)"</stringProp>
  110973. <stringProp name="RegexExtractor.template">$2$/$3$/$1$</stringProp>
  110974. <stringProp name="RegexExtractor.default"/>
  110975. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110976. </RegexExtractor>
  110977. <hashTree/>
  110978. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_billing" enabled="true">
  110979. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110980. <stringProp name="RegexExtractor.refname">admin_customer_default_billing</stringProp>
  110981. <stringProp name="RegexExtractor.regex">"default_billing":"(\d+)"</stringProp>
  110982. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110983. <stringProp name="RegexExtractor.default"/>
  110984. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110985. </RegexExtractor>
  110986. <hashTree/>
  110987. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract default_shipping" enabled="true">
  110988. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110989. <stringProp name="RegexExtractor.refname">admin_customer_default_shipping</stringProp>
  110990. <stringProp name="RegexExtractor.regex">"default_shipping":"(\d+)"</stringProp>
  110991. <stringProp name="RegexExtractor.template">$1$</stringProp>
  110992. <stringProp name="RegexExtractor.default"/>
  110993. <stringProp name="RegexExtractor.match_number">1</stringProp>
  110994. </RegexExtractor>
  110995. <hashTree/>
  110996. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract gender" enabled="true">
  110997. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  110998. <stringProp name="RegexExtractor.refname">admin_customer_gender</stringProp>
  110999. <stringProp name="RegexExtractor.regex">"gender":"(\d+)"</stringProp>
  111000. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111001. <stringProp name="RegexExtractor.default"/>
  111002. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111003. </RegexExtractor>
  111004. <hashTree/>
  111005. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract failures_num" enabled="true">
  111006. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111007. <stringProp name="RegexExtractor.refname">admin_customer_failures_num</stringProp>
  111008. <stringProp name="RegexExtractor.regex">"failures_num":"(\d+)"</stringProp>
  111009. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111010. <stringProp name="RegexExtractor.default"/>
  111011. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111012. </RegexExtractor>
  111013. <hashTree/>
  111014. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_entity_id" enabled="true">
  111015. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111016. <stringProp name="RegexExtractor.refname">admin_customer_address_entity_id</stringProp>
  111017. <stringProp name="RegexExtractor.regex">_address":\{"entity_id":"(\d+)".+?"parent_id":"${admin_customer_entity_id}"</stringProp>
  111018. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111019. <stringProp name="RegexExtractor.default"/>
  111020. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111021. </RegexExtractor>
  111022. <hashTree/>
  111023. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_created_at" enabled="true">
  111024. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111025. <stringProp name="RegexExtractor.refname">admin_customer_address_created_at</stringProp>
  111026. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"created_at":"([^"]+)"</stringProp>
  111027. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111028. <stringProp name="RegexExtractor.default"/>
  111029. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111030. </RegexExtractor>
  111031. <hashTree/>
  111032. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_updated_at" enabled="true">
  111033. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111034. <stringProp name="RegexExtractor.refname">admin_customer_address_updated_at</stringProp>
  111035. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"updated_at":"([^"]+)"</stringProp>
  111036. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111037. <stringProp name="RegexExtractor.default"/>
  111038. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111039. </RegexExtractor>
  111040. <hashTree/>
  111041. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_is_active" enabled="true">
  111042. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111043. <stringProp name="RegexExtractor.refname">admin_customer_address_is_active</stringProp>
  111044. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"is_active":"(\d+)"</stringProp>
  111045. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111046. <stringProp name="RegexExtractor.default"/>
  111047. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111048. </RegexExtractor>
  111049. <hashTree/>
  111050. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_city" enabled="true">
  111051. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111052. <stringProp name="RegexExtractor.refname">admin_customer_address_city</stringProp>
  111053. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"city":"([^"]+)"</stringProp>
  111054. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111055. <stringProp name="RegexExtractor.default"/>
  111056. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111057. </RegexExtractor>
  111058. <hashTree/>
  111059. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_country_id" enabled="true">
  111060. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111061. <stringProp name="RegexExtractor.refname">admin_customer_address_country_id</stringProp>
  111062. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"country_id":"([^"]+)"</stringProp>
  111063. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111064. <stringProp name="RegexExtractor.default"/>
  111065. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111066. </RegexExtractor>
  111067. <hashTree/>
  111068. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_firstname" enabled="true">
  111069. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111070. <stringProp name="RegexExtractor.refname">admin_customer_address_firstname</stringProp>
  111071. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"firstname":"([^"]+)"</stringProp>
  111072. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111073. <stringProp name="RegexExtractor.default"/>
  111074. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111075. </RegexExtractor>
  111076. <hashTree/>
  111077. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_lastname" enabled="true">
  111078. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111079. <stringProp name="RegexExtractor.refname">admin_customer_address_lastname</stringProp>
  111080. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"lastname":"([^"]+)"</stringProp>
  111081. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111082. <stringProp name="RegexExtractor.default"/>
  111083. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111084. </RegexExtractor>
  111085. <hashTree/>
  111086. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_postcode" enabled="true">
  111087. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111088. <stringProp name="RegexExtractor.refname">admin_customer_address_postcode</stringProp>
  111089. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"postcode":"([^"]+)"</stringProp>
  111090. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111091. <stringProp name="RegexExtractor.default"/>
  111092. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111093. </RegexExtractor>
  111094. <hashTree/>
  111095. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region" enabled="true">
  111096. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111097. <stringProp name="RegexExtractor.refname">admin_customer_address_region</stringProp>
  111098. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region":"([^"]+)"</stringProp>
  111099. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111100. <stringProp name="RegexExtractor.default"/>
  111101. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111102. </RegexExtractor>
  111103. <hashTree/>
  111104. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_region_id" enabled="true">
  111105. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111106. <stringProp name="RegexExtractor.refname">admin_customer_address_region_id</stringProp>
  111107. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"region_id":"([^"]+)"</stringProp>
  111108. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111109. <stringProp name="RegexExtractor.default"/>
  111110. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111111. </RegexExtractor>
  111112. <hashTree/>
  111113. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address street" enabled="true">
  111114. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111115. <stringProp name="RegexExtractor.refname">admin_customer_address_street</stringProp>
  111116. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"street":\["([^"]+)"\]</stringProp>
  111117. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111118. <stringProp name="RegexExtractor.default"/>
  111119. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111120. </RegexExtractor>
  111121. <hashTree/>
  111122. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_telephone" enabled="true">
  111123. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111124. <stringProp name="RegexExtractor.refname">admin_customer_address_telephone</stringProp>
  111125. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"telephone":"([^"]+)"</stringProp>
  111126. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111127. <stringProp name="RegexExtractor.default"/>
  111128. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111129. </RegexExtractor>
  111130. <hashTree/>
  111131. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract address_customer_id" enabled="true">
  111132. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  111133. <stringProp name="RegexExtractor.refname">admin_customer_address_customer_id</stringProp>
  111134. <stringProp name="RegexExtractor.regex">_address":\{.+?"parent_id":"${admin_customer_entity_id}".+?"customer_id":"([^"]+)"</stringProp>
  111135. <stringProp name="RegexExtractor.template">$1$</stringProp>
  111136. <stringProp name="RegexExtractor.default"/>
  111137. <stringProp name="RegexExtractor.match_number">1</stringProp>
  111138. </RegexExtractor>
  111139. <hashTree/>
  111140. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer entity_id" enabled="true">
  111141. <collectionProp name="Asserion.test_strings">
  111142. <stringProp name="89649215">^\d+$</stringProp>
  111143. </collectionProp>
  111144. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111145. <boolProp name="Assertion.assume_success">false</boolProp>
  111146. <intProp name="Assertion.test_type">1</intProp>
  111147. <stringProp name="Assertion.scope">variable</stringProp>
  111148. <stringProp name="Scope.variable">admin_customer_entity_id</stringProp>
  111149. </ResponseAssertion>
  111150. <hashTree/>
  111151. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert website_id" enabled="true">
  111152. <collectionProp name="Asserion.test_strings">
  111153. <stringProp name="89649215">^\d+$</stringProp>
  111154. </collectionProp>
  111155. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111156. <boolProp name="Assertion.assume_success">false</boolProp>
  111157. <intProp name="Assertion.test_type">1</intProp>
  111158. <stringProp name="Assertion.scope">variable</stringProp>
  111159. <stringProp name="Scope.variable">admin_customer_website_id</stringProp>
  111160. </ResponseAssertion>
  111161. <hashTree/>
  111162. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer firstname" enabled="true">
  111163. <collectionProp name="Asserion.test_strings">
  111164. <stringProp name="2845929">^.+$</stringProp>
  111165. </collectionProp>
  111166. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111167. <boolProp name="Assertion.assume_success">false</boolProp>
  111168. <intProp name="Assertion.test_type">1</intProp>
  111169. <stringProp name="Assertion.scope">variable</stringProp>
  111170. <stringProp name="Scope.variable">admin_customer_firstname</stringProp>
  111171. </ResponseAssertion>
  111172. <hashTree/>
  111173. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer lastname" enabled="true">
  111174. <collectionProp name="Asserion.test_strings">
  111175. <stringProp name="2845929">^.+$</stringProp>
  111176. </collectionProp>
  111177. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111178. <boolProp name="Assertion.assume_success">false</boolProp>
  111179. <intProp name="Assertion.test_type">1</intProp>
  111180. <stringProp name="Assertion.scope">variable</stringProp>
  111181. <stringProp name="Scope.variable">admin_customer_lastname</stringProp>
  111182. </ResponseAssertion>
  111183. <hashTree/>
  111184. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer email" enabled="true">
  111185. <collectionProp name="Asserion.test_strings">
  111186. <stringProp name="2845929">^.+$</stringProp>
  111187. </collectionProp>
  111188. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111189. <boolProp name="Assertion.assume_success">false</boolProp>
  111190. <intProp name="Assertion.test_type">1</intProp>
  111191. <stringProp name="Assertion.scope">variable</stringProp>
  111192. <stringProp name="Scope.variable">admin_customer_email</stringProp>
  111193. </ResponseAssertion>
  111194. <hashTree/>
  111195. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer group_id" enabled="true">
  111196. <collectionProp name="Asserion.test_strings">
  111197. <stringProp name="89649215">^\d+$</stringProp>
  111198. </collectionProp>
  111199. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111200. <boolProp name="Assertion.assume_success">false</boolProp>
  111201. <intProp name="Assertion.test_type">1</intProp>
  111202. <stringProp name="Assertion.scope">variable</stringProp>
  111203. <stringProp name="Scope.variable">admin_customer_group_id</stringProp>
  111204. </ResponseAssertion>
  111205. <hashTree/>
  111206. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer store_id" enabled="true">
  111207. <collectionProp name="Asserion.test_strings">
  111208. <stringProp name="89649215">^\d+$</stringProp>
  111209. </collectionProp>
  111210. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111211. <boolProp name="Assertion.assume_success">false</boolProp>
  111212. <intProp name="Assertion.test_type">1</intProp>
  111213. <stringProp name="Assertion.scope">variable</stringProp>
  111214. <stringProp name="Scope.variable">admin_customer_store_id</stringProp>
  111215. </ResponseAssertion>
  111216. <hashTree/>
  111217. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_at" enabled="true">
  111218. <collectionProp name="Asserion.test_strings">
  111219. <stringProp name="2845929">^.+$</stringProp>
  111220. </collectionProp>
  111221. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111222. <boolProp name="Assertion.assume_success">false</boolProp>
  111223. <intProp name="Assertion.test_type">1</intProp>
  111224. <stringProp name="Assertion.scope">variable</stringProp>
  111225. <stringProp name="Scope.variable">admin_customer_created_at</stringProp>
  111226. </ResponseAssertion>
  111227. <hashTree/>
  111228. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer updated_at" enabled="true">
  111229. <collectionProp name="Asserion.test_strings">
  111230. <stringProp name="2845929">^.+$</stringProp>
  111231. </collectionProp>
  111232. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111233. <boolProp name="Assertion.assume_success">false</boolProp>
  111234. <intProp name="Assertion.test_type">1</intProp>
  111235. <stringProp name="Assertion.scope">variable</stringProp>
  111236. <stringProp name="Scope.variable">admin_customer_updated_at</stringProp>
  111237. </ResponseAssertion>
  111238. <hashTree/>
  111239. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer is_active" enabled="true">
  111240. <collectionProp name="Asserion.test_strings">
  111241. <stringProp name="89649215">^\d+$</stringProp>
  111242. </collectionProp>
  111243. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111244. <boolProp name="Assertion.assume_success">false</boolProp>
  111245. <intProp name="Assertion.test_type">1</intProp>
  111246. <stringProp name="Assertion.scope">variable</stringProp>
  111247. <stringProp name="Scope.variable">admin_customer_is_active</stringProp>
  111248. </ResponseAssertion>
  111249. <hashTree/>
  111250. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer disable_auto_group_change" enabled="true">
  111251. <collectionProp name="Asserion.test_strings">
  111252. <stringProp name="89649215">^\d+$</stringProp>
  111253. </collectionProp>
  111254. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111255. <boolProp name="Assertion.assume_success">false</boolProp>
  111256. <intProp name="Assertion.test_type">1</intProp>
  111257. <stringProp name="Assertion.scope">variable</stringProp>
  111258. <stringProp name="Scope.variable">admin_customer_disable_auto_group_change</stringProp>
  111259. </ResponseAssertion>
  111260. <hashTree/>
  111261. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer created_in" enabled="true">
  111262. <collectionProp name="Asserion.test_strings">
  111263. <stringProp name="2845929">^.+$</stringProp>
  111264. </collectionProp>
  111265. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111266. <boolProp name="Assertion.assume_success">false</boolProp>
  111267. <intProp name="Assertion.test_type">1</intProp>
  111268. <stringProp name="Assertion.scope">variable</stringProp>
  111269. <stringProp name="Scope.variable">admin_customer_created_in</stringProp>
  111270. </ResponseAssertion>
  111271. <hashTree/>
  111272. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer dob" enabled="true">
  111273. <collectionProp name="Asserion.test_strings">
  111274. <stringProp name="221072919">^\d+/\d+/\d+$</stringProp>
  111275. </collectionProp>
  111276. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111277. <boolProp name="Assertion.assume_success">false</boolProp>
  111278. <intProp name="Assertion.test_type">1</intProp>
  111279. <stringProp name="Assertion.scope">variable</stringProp>
  111280. <stringProp name="Scope.variable">admin_customer_dob</stringProp>
  111281. </ResponseAssertion>
  111282. <hashTree/>
  111283. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_billing" enabled="true">
  111284. <collectionProp name="Asserion.test_strings">
  111285. <stringProp name="89649215">^\d+$</stringProp>
  111286. </collectionProp>
  111287. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111288. <boolProp name="Assertion.assume_success">false</boolProp>
  111289. <intProp name="Assertion.test_type">1</intProp>
  111290. <stringProp name="Assertion.scope">variable</stringProp>
  111291. <stringProp name="Scope.variable">admin_customer_default_billing</stringProp>
  111292. </ResponseAssertion>
  111293. <hashTree/>
  111294. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer default_shipping" enabled="true">
  111295. <collectionProp name="Asserion.test_strings">
  111296. <stringProp name="89649215">^\d+$</stringProp>
  111297. </collectionProp>
  111298. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111299. <boolProp name="Assertion.assume_success">false</boolProp>
  111300. <intProp name="Assertion.test_type">1</intProp>
  111301. <stringProp name="Assertion.scope">variable</stringProp>
  111302. <stringProp name="Scope.variable">admin_customer_default_shipping</stringProp>
  111303. </ResponseAssertion>
  111304. <hashTree/>
  111305. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer gender" enabled="true">
  111306. <collectionProp name="Asserion.test_strings">
  111307. <stringProp name="89649215">^\d+$</stringProp>
  111308. </collectionProp>
  111309. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111310. <boolProp name="Assertion.assume_success">false</boolProp>
  111311. <intProp name="Assertion.test_type">1</intProp>
  111312. <stringProp name="Assertion.scope">variable</stringProp>
  111313. <stringProp name="Scope.variable">admin_customer_gender</stringProp>
  111314. </ResponseAssertion>
  111315. <hashTree/>
  111316. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer failures_num" enabled="true">
  111317. <collectionProp name="Asserion.test_strings">
  111318. <stringProp name="89649215">^\d+$</stringProp>
  111319. </collectionProp>
  111320. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111321. <boolProp name="Assertion.assume_success">false</boolProp>
  111322. <intProp name="Assertion.test_type">1</intProp>
  111323. <stringProp name="Assertion.scope">variable</stringProp>
  111324. <stringProp name="Scope.variable">admin_customer_failures_num</stringProp>
  111325. </ResponseAssertion>
  111326. <hashTree/>
  111327. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_entity_id" enabled="true">
  111328. <collectionProp name="Asserion.test_strings">
  111329. <stringProp name="89649215">^\d+$</stringProp>
  111330. </collectionProp>
  111331. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111332. <boolProp name="Assertion.assume_success">false</boolProp>
  111333. <intProp name="Assertion.test_type">1</intProp>
  111334. <stringProp name="Assertion.scope">variable</stringProp>
  111335. <stringProp name="Scope.variable">admin_customer_address_entity_id</stringProp>
  111336. </ResponseAssertion>
  111337. <hashTree/>
  111338. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_created_at" enabled="true">
  111339. <collectionProp name="Asserion.test_strings">
  111340. <stringProp name="2845929">^.+$</stringProp>
  111341. </collectionProp>
  111342. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111343. <boolProp name="Assertion.assume_success">false</boolProp>
  111344. <intProp name="Assertion.test_type">1</intProp>
  111345. <stringProp name="Assertion.scope">variable</stringProp>
  111346. <stringProp name="Scope.variable">admin_customer_address_created_at</stringProp>
  111347. </ResponseAssertion>
  111348. <hashTree/>
  111349. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_updated_at" enabled="true">
  111350. <collectionProp name="Asserion.test_strings">
  111351. <stringProp name="2845929">^.+$</stringProp>
  111352. </collectionProp>
  111353. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111354. <boolProp name="Assertion.assume_success">false</boolProp>
  111355. <intProp name="Assertion.test_type">1</intProp>
  111356. <stringProp name="Assertion.scope">variable</stringProp>
  111357. <stringProp name="Scope.variable">admin_customer_address_updated_at</stringProp>
  111358. </ResponseAssertion>
  111359. <hashTree/>
  111360. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_is_active" enabled="true">
  111361. <collectionProp name="Asserion.test_strings">
  111362. <stringProp name="89649215">^\d+$</stringProp>
  111363. </collectionProp>
  111364. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111365. <boolProp name="Assertion.assume_success">false</boolProp>
  111366. <intProp name="Assertion.test_type">1</intProp>
  111367. <stringProp name="Assertion.scope">variable</stringProp>
  111368. <stringProp name="Scope.variable">admin_customer_address_is_active</stringProp>
  111369. </ResponseAssertion>
  111370. <hashTree/>
  111371. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_city" enabled="true">
  111372. <collectionProp name="Asserion.test_strings">
  111373. <stringProp name="2845929">^.+$</stringProp>
  111374. </collectionProp>
  111375. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111376. <boolProp name="Assertion.assume_success">false</boolProp>
  111377. <intProp name="Assertion.test_type">1</intProp>
  111378. <stringProp name="Assertion.scope">variable</stringProp>
  111379. <stringProp name="Scope.variable">admin_customer_address_city</stringProp>
  111380. </ResponseAssertion>
  111381. <hashTree/>
  111382. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_country_id" enabled="true">
  111383. <collectionProp name="Asserion.test_strings">
  111384. <stringProp name="2845929">^.+$</stringProp>
  111385. </collectionProp>
  111386. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111387. <boolProp name="Assertion.assume_success">false</boolProp>
  111388. <intProp name="Assertion.test_type">1</intProp>
  111389. <stringProp name="Assertion.scope">variable</stringProp>
  111390. <stringProp name="Scope.variable">admin_customer_address_country_id</stringProp>
  111391. </ResponseAssertion>
  111392. <hashTree/>
  111393. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_firstname" enabled="true">
  111394. <collectionProp name="Asserion.test_strings">
  111395. <stringProp name="2845929">^.+$</stringProp>
  111396. </collectionProp>
  111397. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111398. <boolProp name="Assertion.assume_success">false</boolProp>
  111399. <intProp name="Assertion.test_type">1</intProp>
  111400. <stringProp name="Assertion.scope">variable</stringProp>
  111401. <stringProp name="Scope.variable">admin_customer_address_firstname</stringProp>
  111402. </ResponseAssertion>
  111403. <hashTree/>
  111404. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_lastname" enabled="true">
  111405. <collectionProp name="Asserion.test_strings">
  111406. <stringProp name="2845929">^.+$</stringProp>
  111407. </collectionProp>
  111408. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111409. <boolProp name="Assertion.assume_success">false</boolProp>
  111410. <intProp name="Assertion.test_type">1</intProp>
  111411. <stringProp name="Assertion.scope">variable</stringProp>
  111412. <stringProp name="Scope.variable">admin_customer_address_lastname</stringProp>
  111413. </ResponseAssertion>
  111414. <hashTree/>
  111415. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_postcode" enabled="true">
  111416. <collectionProp name="Asserion.test_strings">
  111417. <stringProp name="2845929">^.+$</stringProp>
  111418. </collectionProp>
  111419. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111420. <boolProp name="Assertion.assume_success">false</boolProp>
  111421. <intProp name="Assertion.test_type">1</intProp>
  111422. <stringProp name="Assertion.scope">variable</stringProp>
  111423. <stringProp name="Scope.variable">admin_customer_address_postcode</stringProp>
  111424. </ResponseAssertion>
  111425. <hashTree/>
  111426. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region" enabled="true">
  111427. <collectionProp name="Asserion.test_strings">
  111428. <stringProp name="2845929">^.+$</stringProp>
  111429. </collectionProp>
  111430. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111431. <boolProp name="Assertion.assume_success">false</boolProp>
  111432. <intProp name="Assertion.test_type">1</intProp>
  111433. <stringProp name="Assertion.scope">variable</stringProp>
  111434. <stringProp name="Scope.variable">admin_customer_address_region</stringProp>
  111435. </ResponseAssertion>
  111436. <hashTree/>
  111437. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_region_id" enabled="true">
  111438. <collectionProp name="Asserion.test_strings">
  111439. <stringProp name="89649215">^\d+$</stringProp>
  111440. </collectionProp>
  111441. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111442. <boolProp name="Assertion.assume_success">false</boolProp>
  111443. <intProp name="Assertion.test_type">1</intProp>
  111444. <stringProp name="Assertion.scope">variable</stringProp>
  111445. <stringProp name="Scope.variable">admin_customer_address_region_id</stringProp>
  111446. </ResponseAssertion>
  111447. <hashTree/>
  111448. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_street" enabled="true">
  111449. <collectionProp name="Asserion.test_strings">
  111450. <stringProp name="2845929">^.+$</stringProp>
  111451. </collectionProp>
  111452. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111453. <boolProp name="Assertion.assume_success">false</boolProp>
  111454. <intProp name="Assertion.test_type">1</intProp>
  111455. <stringProp name="Assertion.scope">variable</stringProp>
  111456. <stringProp name="Scope.variable">admin_customer_address_street</stringProp>
  111457. </ResponseAssertion>
  111458. <hashTree/>
  111459. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_telephone" enabled="true">
  111460. <collectionProp name="Asserion.test_strings">
  111461. <stringProp name="2845929">^.+$</stringProp>
  111462. </collectionProp>
  111463. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111464. <boolProp name="Assertion.assume_success">false</boolProp>
  111465. <intProp name="Assertion.test_type">1</intProp>
  111466. <stringProp name="Assertion.scope">variable</stringProp>
  111467. <stringProp name="Scope.variable">admin_customer_address_telephone</stringProp>
  111468. </ResponseAssertion>
  111469. <hashTree/>
  111470. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert address_customer_id" enabled="true">
  111471. <collectionProp name="Asserion.test_strings">
  111472. <stringProp name="89649215">^\d+$</stringProp>
  111473. </collectionProp>
  111474. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  111475. <boolProp name="Assertion.assume_success">false</boolProp>
  111476. <intProp name="Assertion.test_type">1</intProp>
  111477. <stringProp name="Assertion.scope">variable</stringProp>
  111478. <stringProp name="Scope.variable">admin_customer_address_customer_id</stringProp>
  111479. </ResponseAssertion>
  111480. <hashTree/>
  111481. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  111482. <collectionProp name="HeaderManager.headers">
  111483. <elementProp name="Accept-Language" elementType="Header">
  111484. <stringProp name="Header.name">Accept-Language</stringProp>
  111485. <stringProp name="Header.value">en-US,en;q=0.5</stringProp>
  111486. </elementProp>
  111487. <elementProp name="Accept" elementType="Header">
  111488. <stringProp name="Header.name">Accept</stringProp>
  111489. <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
  111490. </elementProp>
  111491. <elementProp name="User-Agent" elementType="Header">
  111492. <stringProp name="Header.name">User-Agent</stringProp>
  111493. <stringProp name="Header.value">Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0</stringProp>
  111494. </elementProp>
  111495. <elementProp name="Accept-Encoding" elementType="Header">
  111496. <stringProp name="Header.name">Accept-Encoding</stringProp>
  111497. <stringProp name="Header.value">gzip, deflate</stringProp>
  111498. </elementProp>
  111499. </collectionProp>
  111500. </HeaderManager>
  111501. <hashTree/>
  111502. </hashTree>
  111503. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Validate" enabled="true">
  111504. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  111505. <collectionProp name="Arguments.arguments">
  111506. <elementProp name="isAjax " elementType="HTTPArgument">
  111507. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111508. <stringProp name="Argument.value">true</stringProp>
  111509. <stringProp name="Argument.metadata">=</stringProp>
  111510. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111511. <stringProp name="Argument.name">isAjax </stringProp>
  111512. </elementProp>
  111513. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  111514. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111515. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  111516. <stringProp name="Argument.metadata">=</stringProp>
  111517. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111518. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  111519. </elementProp>
  111520. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  111521. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111522. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  111523. <stringProp name="Argument.metadata">=</stringProp>
  111524. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111525. <stringProp name="Argument.name">customer[website_id]</stringProp>
  111526. </elementProp>
  111527. <elementProp name="customer[email]" elementType="HTTPArgument">
  111528. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111529. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  111530. <stringProp name="Argument.metadata">=</stringProp>
  111531. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111532. <stringProp name="Argument.name">customer[email]</stringProp>
  111533. </elementProp>
  111534. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  111535. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111536. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  111537. <stringProp name="Argument.metadata">=</stringProp>
  111538. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111539. <stringProp name="Argument.name">customer[group_id]</stringProp>
  111540. </elementProp>
  111541. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  111542. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111543. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  111544. <stringProp name="Argument.metadata">=</stringProp>
  111545. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111546. <stringProp name="Argument.name">customer[store_id]</stringProp>
  111547. </elementProp>
  111548. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  111549. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111550. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  111551. <stringProp name="Argument.metadata">=</stringProp>
  111552. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111553. <stringProp name="Argument.name">customer[created_at]</stringProp>
  111554. </elementProp>
  111555. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  111556. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111557. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  111558. <stringProp name="Argument.metadata">=</stringProp>
  111559. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111560. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  111561. </elementProp>
  111562. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  111563. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111564. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  111565. <stringProp name="Argument.metadata">=</stringProp>
  111566. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111567. <stringProp name="Argument.name">customer[is_active]</stringProp>
  111568. </elementProp>
  111569. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  111570. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111571. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  111572. <stringProp name="Argument.metadata">=</stringProp>
  111573. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111574. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  111575. </elementProp>
  111576. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  111577. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111578. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  111579. <stringProp name="Argument.metadata">=</stringProp>
  111580. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111581. <stringProp name="Argument.name">customer[created_in]</stringProp>
  111582. </elementProp>
  111583. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  111584. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111585. <stringProp name="Argument.value"/>
  111586. <stringProp name="Argument.metadata">=</stringProp>
  111587. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111588. <stringProp name="Argument.name">customer[prefix]</stringProp>
  111589. </elementProp>
  111590. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  111591. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111592. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  111593. <stringProp name="Argument.metadata">=</stringProp>
  111594. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111595. <stringProp name="Argument.name">customer[firstname]</stringProp>
  111596. </elementProp>
  111597. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  111598. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111599. <stringProp name="Argument.value"/>
  111600. <stringProp name="Argument.metadata">=</stringProp>
  111601. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111602. <stringProp name="Argument.name">customer[middlename]</stringProp>
  111603. </elementProp>
  111604. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  111605. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111606. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  111607. <stringProp name="Argument.metadata">=</stringProp>
  111608. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111609. <stringProp name="Argument.name">customer[lastname]</stringProp>
  111610. </elementProp>
  111611. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  111612. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111613. <stringProp name="Argument.value"/>
  111614. <stringProp name="Argument.metadata">=</stringProp>
  111615. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111616. <stringProp name="Argument.name">customer[suffix]</stringProp>
  111617. </elementProp>
  111618. <elementProp name="customer[dob]" elementType="HTTPArgument">
  111619. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111620. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  111621. <stringProp name="Argument.metadata">=</stringProp>
  111622. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111623. <stringProp name="Argument.name">customer[dob]</stringProp>
  111624. </elementProp>
  111625. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  111626. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111627. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  111628. <stringProp name="Argument.metadata">=</stringProp>
  111629. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111630. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  111631. </elementProp>
  111632. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  111633. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111634. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  111635. <stringProp name="Argument.metadata">=</stringProp>
  111636. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111637. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  111638. </elementProp>
  111639. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  111640. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111641. <stringProp name="Argument.value"/>
  111642. <stringProp name="Argument.metadata">=</stringProp>
  111643. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111644. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  111645. </elementProp>
  111646. <elementProp name="customer[gender]" elementType="HTTPArgument">
  111647. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111648. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  111649. <stringProp name="Argument.metadata">=</stringProp>
  111650. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111651. <stringProp name="Argument.name">customer[gender]</stringProp>
  111652. </elementProp>
  111653. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  111654. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111655. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  111656. <stringProp name="Argument.metadata">=</stringProp>
  111657. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111658. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  111659. </elementProp>
  111660. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  111661. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111662. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  111663. <stringProp name="Argument.metadata">=</stringProp>
  111664. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111665. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  111666. </elementProp>
  111667. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  111668. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111669. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  111670. <stringProp name="Argument.metadata">=</stringProp>
  111671. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111672. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  111673. </elementProp>
  111674. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  111675. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111676. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  111677. <stringProp name="Argument.metadata">=</stringProp>
  111678. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111679. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  111680. </elementProp>
  111681. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  111682. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111683. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  111684. <stringProp name="Argument.metadata">=</stringProp>
  111685. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111686. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  111687. </elementProp>
  111688. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  111689. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111690. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  111691. <stringProp name="Argument.metadata">=</stringProp>
  111692. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111693. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  111694. </elementProp>
  111695. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  111696. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111697. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  111698. <stringProp name="Argument.metadata">=</stringProp>
  111699. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111700. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  111701. </elementProp>
  111702. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  111703. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111704. <stringProp name="Argument.value"/>
  111705. <stringProp name="Argument.metadata">=</stringProp>
  111706. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111707. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  111708. </elementProp>
  111709. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  111710. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111711. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  111712. <stringProp name="Argument.metadata">=</stringProp>
  111713. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111714. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  111715. </elementProp>
  111716. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  111717. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111718. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  111719. <stringProp name="Argument.metadata">=</stringProp>
  111720. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111721. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  111722. </elementProp>
  111723. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  111724. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111725. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  111726. <stringProp name="Argument.metadata">=</stringProp>
  111727. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111728. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  111729. </elementProp>
  111730. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  111731. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111732. <stringProp name="Argument.value"/>
  111733. <stringProp name="Argument.metadata">=</stringProp>
  111734. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111735. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  111736. </elementProp>
  111737. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  111738. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111739. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  111740. <stringProp name="Argument.metadata">=</stringProp>
  111741. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111742. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  111743. </elementProp>
  111744. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  111745. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111746. <stringProp name="Argument.value"/>
  111747. <stringProp name="Argument.metadata">=</stringProp>
  111748. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111749. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  111750. </elementProp>
  111751. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  111752. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111753. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  111754. <stringProp name="Argument.metadata">=</stringProp>
  111755. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111756. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  111757. </elementProp>
  111758. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  111759. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111760. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  111761. <stringProp name="Argument.metadata">=</stringProp>
  111762. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111763. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  111764. </elementProp>
  111765. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  111766. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111767. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  111768. <stringProp name="Argument.metadata">=</stringProp>
  111769. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111770. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  111771. </elementProp>
  111772. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  111773. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111774. <stringProp name="Argument.value"/>
  111775. <stringProp name="Argument.metadata">=</stringProp>
  111776. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111777. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  111778. </elementProp>
  111779. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  111780. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111781. <stringProp name="Argument.value"/>
  111782. <stringProp name="Argument.metadata">=</stringProp>
  111783. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111784. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  111785. </elementProp>
  111786. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  111787. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111788. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  111789. <stringProp name="Argument.metadata">=</stringProp>
  111790. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111791. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  111792. </elementProp>
  111793. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  111794. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111795. <stringProp name="Argument.value"/>
  111796. <stringProp name="Argument.metadata">=</stringProp>
  111797. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111798. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  111799. </elementProp>
  111800. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  111801. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111802. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  111803. <stringProp name="Argument.metadata">=</stringProp>
  111804. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111805. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  111806. </elementProp>
  111807. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  111808. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111809. <stringProp name="Argument.value">true</stringProp>
  111810. <stringProp name="Argument.metadata">=</stringProp>
  111811. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111812. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  111813. </elementProp>
  111814. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  111815. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111816. <stringProp name="Argument.value">true</stringProp>
  111817. <stringProp name="Argument.metadata">=</stringProp>
  111818. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111819. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  111820. </elementProp>
  111821. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  111822. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111823. <stringProp name="Argument.value"/>
  111824. <stringProp name="Argument.metadata">=</stringProp>
  111825. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111826. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  111827. </elementProp>
  111828. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  111829. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111830. <stringProp name="Argument.value">John</stringProp>
  111831. <stringProp name="Argument.metadata">=</stringProp>
  111832. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111833. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  111834. </elementProp>
  111835. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  111836. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111837. <stringProp name="Argument.value"/>
  111838. <stringProp name="Argument.metadata">=</stringProp>
  111839. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111840. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  111841. </elementProp>
  111842. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  111843. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111844. <stringProp name="Argument.value">Doe</stringProp>
  111845. <stringProp name="Argument.metadata">=</stringProp>
  111846. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111847. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  111848. </elementProp>
  111849. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  111850. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111851. <stringProp name="Argument.value"/>
  111852. <stringProp name="Argument.metadata">=</stringProp>
  111853. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111854. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  111855. </elementProp>
  111856. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  111857. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111858. <stringProp name="Argument.value">Test Company</stringProp>
  111859. <stringProp name="Argument.metadata">=</stringProp>
  111860. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111861. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  111862. </elementProp>
  111863. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  111864. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111865. <stringProp name="Argument.value">Folsom</stringProp>
  111866. <stringProp name="Argument.metadata">=</stringProp>
  111867. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111868. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  111869. </elementProp>
  111870. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  111871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111872. <stringProp name="Argument.value">95630</stringProp>
  111873. <stringProp name="Argument.metadata">=</stringProp>
  111874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111875. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  111876. </elementProp>
  111877. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  111878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111879. <stringProp name="Argument.value">1234567890</stringProp>
  111880. <stringProp name="Argument.metadata">=</stringProp>
  111881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111882. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  111883. </elementProp>
  111884. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  111885. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111886. <stringProp name="Argument.value"/>
  111887. <stringProp name="Argument.metadata">=</stringProp>
  111888. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111889. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  111890. </elementProp>
  111891. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  111892. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111893. <stringProp name="Argument.value">false</stringProp>
  111894. <stringProp name="Argument.metadata">=</stringProp>
  111895. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111896. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  111897. </elementProp>
  111898. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  111899. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111900. <stringProp name="Argument.value">false</stringProp>
  111901. <stringProp name="Argument.metadata">=</stringProp>
  111902. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111903. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  111904. </elementProp>
  111905. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  111906. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111907. <stringProp name="Argument.value">123 Main</stringProp>
  111908. <stringProp name="Argument.metadata">=</stringProp>
  111909. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111910. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  111911. </elementProp>
  111912. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  111913. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111914. <stringProp name="Argument.value"/>
  111915. <stringProp name="Argument.metadata">=</stringProp>
  111916. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111917. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  111918. </elementProp>
  111919. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  111920. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111921. <stringProp name="Argument.value"/>
  111922. <stringProp name="Argument.metadata">=</stringProp>
  111923. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111924. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  111925. </elementProp>
  111926. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  111927. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111928. <stringProp name="Argument.value">US</stringProp>
  111929. <stringProp name="Argument.metadata">=</stringProp>
  111930. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111931. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  111932. </elementProp>
  111933. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  111934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111935. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  111936. <stringProp name="Argument.metadata">=</stringProp>
  111937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111938. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  111939. </elementProp>
  111940. <elementProp name="form_key" elementType="HTTPArgument">
  111941. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111942. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  111943. <stringProp name="Argument.metadata">=</stringProp>
  111944. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111945. <stringProp name="Argument.name">form_key</stringProp>
  111946. </elementProp>
  111947. </collectionProp>
  111948. </elementProp>
  111949. <stringProp name="HTTPSampler.domain"/>
  111950. <stringProp name="HTTPSampler.port"/>
  111951. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  111952. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  111953. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  111954. <stringProp name="HTTPSampler.contentEncoding"/>
  111955. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/validate/</stringProp>
  111956. <stringProp name="HTTPSampler.method">POST</stringProp>
  111957. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  111958. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  111959. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  111960. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  111961. <boolProp name="HTTPSampler.monitor">false</boolProp>
  111962. <stringProp name="HTTPSampler.embedded_url_re"/>
  111963. </HTTPSamplerProxy>
  111964. <hashTree>
  111965. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  111966. <collectionProp name="Asserion.test_strings">
  111967. <stringProp name="49586">200</stringProp>
  111968. </collectionProp>
  111969. <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
  111970. <boolProp name="Assertion.assume_success">false</boolProp>
  111971. <intProp name="Assertion.test_type">16</intProp>
  111972. </ResponseAssertion>
  111973. <hashTree/>
  111974. </hashTree>
  111975. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Customer Save" enabled="true">
  111976. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  111977. <collectionProp name="Arguments.arguments">
  111978. <elementProp name="isAjax " elementType="HTTPArgument">
  111979. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111980. <stringProp name="Argument.value">true</stringProp>
  111981. <stringProp name="Argument.metadata">=</stringProp>
  111982. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111983. <stringProp name="Argument.name">isAjax </stringProp>
  111984. </elementProp>
  111985. <elementProp name="customer[entity_id]" elementType="HTTPArgument">
  111986. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111987. <stringProp name="Argument.value">${admin_customer_entity_id}</stringProp>
  111988. <stringProp name="Argument.metadata">=</stringProp>
  111989. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111990. <stringProp name="Argument.name">customer[entity_id]</stringProp>
  111991. </elementProp>
  111992. <elementProp name="customer[website_id]" elementType="HTTPArgument">
  111993. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  111994. <stringProp name="Argument.value">${admin_customer_website_id}</stringProp>
  111995. <stringProp name="Argument.metadata">=</stringProp>
  111996. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  111997. <stringProp name="Argument.name">customer[website_id]</stringProp>
  111998. </elementProp>
  111999. <elementProp name="customer[email]" elementType="HTTPArgument">
  112000. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112001. <stringProp name="Argument.value">${admin_customer_email}</stringProp>
  112002. <stringProp name="Argument.metadata">=</stringProp>
  112003. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112004. <stringProp name="Argument.name">customer[email]</stringProp>
  112005. </elementProp>
  112006. <elementProp name="customer[group_id]" elementType="HTTPArgument">
  112007. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112008. <stringProp name="Argument.value">${admin_customer_group_id}</stringProp>
  112009. <stringProp name="Argument.metadata">=</stringProp>
  112010. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112011. <stringProp name="Argument.name">customer[group_id]</stringProp>
  112012. </elementProp>
  112013. <elementProp name="customer[store_id]" elementType="HTTPArgument">
  112014. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112015. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  112016. <stringProp name="Argument.metadata">=</stringProp>
  112017. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112018. <stringProp name="Argument.name">customer[store_id]</stringProp>
  112019. </elementProp>
  112020. <elementProp name="customer[created_at]" elementType="HTTPArgument">
  112021. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112022. <stringProp name="Argument.value">${admin_customer_created_at}</stringProp>
  112023. <stringProp name="Argument.metadata">=</stringProp>
  112024. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112025. <stringProp name="Argument.name">customer[created_at]</stringProp>
  112026. </elementProp>
  112027. <elementProp name="customer[updated_at]" elementType="HTTPArgument">
  112028. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112029. <stringProp name="Argument.value">${admin_customer_updated_at}</stringProp>
  112030. <stringProp name="Argument.metadata">=</stringProp>
  112031. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112032. <stringProp name="Argument.name">customer[updated_at]</stringProp>
  112033. </elementProp>
  112034. <elementProp name="customer[is_active]" elementType="HTTPArgument">
  112035. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112036. <stringProp name="Argument.value">${admin_customer_is_active}</stringProp>
  112037. <stringProp name="Argument.metadata">=</stringProp>
  112038. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112039. <stringProp name="Argument.name">customer[is_active]</stringProp>
  112040. </elementProp>
  112041. <elementProp name="customer[disable_auto_group_change]" elementType="HTTPArgument">
  112042. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112043. <stringProp name="Argument.value">${admin_customer_disable_auto_group_change}</stringProp>
  112044. <stringProp name="Argument.metadata">=</stringProp>
  112045. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112046. <stringProp name="Argument.name">customer[disable_auto_group_change]</stringProp>
  112047. </elementProp>
  112048. <elementProp name="customer[created_in]" elementType="HTTPArgument">
  112049. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112050. <stringProp name="Argument.value">${admin_customer_created_in}</stringProp>
  112051. <stringProp name="Argument.metadata">=</stringProp>
  112052. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112053. <stringProp name="Argument.name">customer[created_in]</stringProp>
  112054. </elementProp>
  112055. <elementProp name="customer[prefix]" elementType="HTTPArgument">
  112056. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112057. <stringProp name="Argument.value"/>
  112058. <stringProp name="Argument.metadata">=</stringProp>
  112059. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112060. <stringProp name="Argument.name">customer[prefix]</stringProp>
  112061. </elementProp>
  112062. <elementProp name="customer[firstname]" elementType="HTTPArgument">
  112063. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112064. <stringProp name="Argument.value">${admin_customer_firstname} 1</stringProp>
  112065. <stringProp name="Argument.metadata">=</stringProp>
  112066. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112067. <stringProp name="Argument.name">customer[firstname]</stringProp>
  112068. </elementProp>
  112069. <elementProp name="customer[middlename]" elementType="HTTPArgument">
  112070. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112071. <stringProp name="Argument.value"/>
  112072. <stringProp name="Argument.metadata">=</stringProp>
  112073. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112074. <stringProp name="Argument.name">customer[middlename]</stringProp>
  112075. </elementProp>
  112076. <elementProp name="customer[lastname]" elementType="HTTPArgument">
  112077. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112078. <stringProp name="Argument.value">${admin_customer_lastname} 1</stringProp>
  112079. <stringProp name="Argument.metadata">=</stringProp>
  112080. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112081. <stringProp name="Argument.name">customer[lastname]</stringProp>
  112082. </elementProp>
  112083. <elementProp name="customer[suffix]" elementType="HTTPArgument">
  112084. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112085. <stringProp name="Argument.value"/>
  112086. <stringProp name="Argument.metadata">=</stringProp>
  112087. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112088. <stringProp name="Argument.name">customer[suffix]</stringProp>
  112089. </elementProp>
  112090. <elementProp name="customer[dob]" elementType="HTTPArgument">
  112091. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112092. <stringProp name="Argument.value">${admin_customer_dob}</stringProp>
  112093. <stringProp name="Argument.metadata">=</stringProp>
  112094. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112095. <stringProp name="Argument.name">customer[dob]</stringProp>
  112096. </elementProp>
  112097. <elementProp name="customer[default_billing]" elementType="HTTPArgument">
  112098. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112099. <stringProp name="Argument.value">${admin_customer_default_billing}</stringProp>
  112100. <stringProp name="Argument.metadata">=</stringProp>
  112101. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112102. <stringProp name="Argument.name">customer[default_billing]</stringProp>
  112103. </elementProp>
  112104. <elementProp name="customer[default_shipping]" elementType="HTTPArgument">
  112105. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112106. <stringProp name="Argument.value">${admin_customer_default_shipping}</stringProp>
  112107. <stringProp name="Argument.metadata">=</stringProp>
  112108. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112109. <stringProp name="Argument.name">customer[default_shipping]</stringProp>
  112110. </elementProp>
  112111. <elementProp name="customer[taxvat]" elementType="HTTPArgument">
  112112. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112113. <stringProp name="Argument.value"/>
  112114. <stringProp name="Argument.metadata">=</stringProp>
  112115. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112116. <stringProp name="Argument.name">customer[taxvat]</stringProp>
  112117. </elementProp>
  112118. <elementProp name="customer[gender]" elementType="HTTPArgument">
  112119. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112120. <stringProp name="Argument.value">${admin_customer_gender}</stringProp>
  112121. <stringProp name="Argument.metadata">=</stringProp>
  112122. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112123. <stringProp name="Argument.name">customer[gender]</stringProp>
  112124. </elementProp>
  112125. <elementProp name="customer[failures_num]" elementType="HTTPArgument">
  112126. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112127. <stringProp name="Argument.value">${admin_customer_failures_num}</stringProp>
  112128. <stringProp name="Argument.metadata">=</stringProp>
  112129. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112130. <stringProp name="Argument.name">customer[failures_num]</stringProp>
  112131. </elementProp>
  112132. <elementProp name="customer[sendemail_store_id]" elementType="HTTPArgument">
  112133. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112134. <stringProp name="Argument.value">${admin_customer_store_id}</stringProp>
  112135. <stringProp name="Argument.metadata">=</stringProp>
  112136. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112137. <stringProp name="Argument.name">customer[sendemail_store_id]</stringProp>
  112138. </elementProp>
  112139. <elementProp name="address[${admin_customer_address_entity_id}][entity_id]" elementType="HTTPArgument">
  112140. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112141. <stringProp name="Argument.value">${admin_customer_address_entity_id}</stringProp>
  112142. <stringProp name="Argument.metadata">=</stringProp>
  112143. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112144. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][entity_id]</stringProp>
  112145. </elementProp>
  112146. <elementProp name="address[${admin_customer_address_entity_id}][created_at]" elementType="HTTPArgument">
  112147. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112148. <stringProp name="Argument.value">${admin_customer_address_created_at}</stringProp>
  112149. <stringProp name="Argument.metadata">=</stringProp>
  112150. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112151. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][created_at]</stringProp>
  112152. </elementProp>
  112153. <elementProp name="address[${admin_customer_address_entity_id}][updated_at]" elementType="HTTPArgument">
  112154. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112155. <stringProp name="Argument.value">${admin_customer_address_updated_at}</stringProp>
  112156. <stringProp name="Argument.metadata">=</stringProp>
  112157. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112158. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][updated_at]</stringProp>
  112159. </elementProp>
  112160. <elementProp name="address[${admin_customer_address_entity_id}][is_active]" elementType="HTTPArgument">
  112161. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112162. <stringProp name="Argument.value">${admin_customer_address_is_active}</stringProp>
  112163. <stringProp name="Argument.metadata">=</stringProp>
  112164. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112165. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][is_active]</stringProp>
  112166. </elementProp>
  112167. <elementProp name="address[${admin_customer_address_entity_id}][city]" elementType="HTTPArgument">
  112168. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112169. <stringProp name="Argument.value">${admin_customer_address_city}</stringProp>
  112170. <stringProp name="Argument.metadata">=</stringProp>
  112171. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112172. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][city]</stringProp>
  112173. </elementProp>
  112174. <elementProp name="address[${admin_customer_address_entity_id}][company]" elementType="HTTPArgument">
  112175. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112176. <stringProp name="Argument.value"/>
  112177. <stringProp name="Argument.metadata">=</stringProp>
  112178. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112179. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][company]</stringProp>
  112180. </elementProp>
  112181. <elementProp name="address[${admin_customer_address_entity_id}][country_id]" elementType="HTTPArgument">
  112182. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112183. <stringProp name="Argument.value">${admin_customer_address_country_id}</stringProp>
  112184. <stringProp name="Argument.metadata">=</stringProp>
  112185. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112186. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][country_id]</stringProp>
  112187. </elementProp>
  112188. <elementProp name="address[${admin_customer_address_entity_id}][firstname]" elementType="HTTPArgument">
  112189. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112190. <stringProp name="Argument.value">${admin_customer_address_firstname}</stringProp>
  112191. <stringProp name="Argument.metadata">=</stringProp>
  112192. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112193. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][firstname]</stringProp>
  112194. </elementProp>
  112195. <elementProp name="address[${admin_customer_address_entity_id}][lastname]" elementType="HTTPArgument">
  112196. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112197. <stringProp name="Argument.value">${admin_customer_address_lastname}</stringProp>
  112198. <stringProp name="Argument.metadata">=</stringProp>
  112199. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112200. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][lastname]</stringProp>
  112201. </elementProp>
  112202. <elementProp name="address[${admin_customer_address_entity_id}][middlename]" elementType="HTTPArgument">
  112203. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112204. <stringProp name="Argument.value"/>
  112205. <stringProp name="Argument.metadata">=</stringProp>
  112206. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112207. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][middlename]</stringProp>
  112208. </elementProp>
  112209. <elementProp name="address[${admin_customer_address_entity_id}][postcode]" elementType="HTTPArgument">
  112210. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112211. <stringProp name="Argument.value">${admin_customer_address_postcode}</stringProp>
  112212. <stringProp name="Argument.metadata">=</stringProp>
  112213. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112214. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][postcode]</stringProp>
  112215. </elementProp>
  112216. <elementProp name="address[${admin_customer_address_entity_id}][prefix]" elementType="HTTPArgument">
  112217. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112218. <stringProp name="Argument.value"/>
  112219. <stringProp name="Argument.metadata">=</stringProp>
  112220. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112221. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][prefix]</stringProp>
  112222. </elementProp>
  112223. <elementProp name="address[${admin_customer_address_entity_id}][region]" elementType="HTTPArgument">
  112224. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112225. <stringProp name="Argument.value">${admin_customer_address_region}</stringProp>
  112226. <stringProp name="Argument.metadata">=</stringProp>
  112227. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112228. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region]</stringProp>
  112229. </elementProp>
  112230. <elementProp name="address[${admin_customer_address_entity_id}][region_id]" elementType="HTTPArgument">
  112231. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112232. <stringProp name="Argument.value">${admin_customer_address_region_id}</stringProp>
  112233. <stringProp name="Argument.metadata">=</stringProp>
  112234. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112235. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][region_id]</stringProp>
  112236. </elementProp>
  112237. <elementProp name="address[${admin_customer_address_entity_id}][street][0]" elementType="HTTPArgument">
  112238. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112239. <stringProp name="Argument.value">${admin_customer_address_street}</stringProp>
  112240. <stringProp name="Argument.metadata">=</stringProp>
  112241. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112242. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][0]</stringProp>
  112243. </elementProp>
  112244. <elementProp name="address[${admin_customer_address_entity_id}][street][1]" elementType="HTTPArgument">
  112245. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112246. <stringProp name="Argument.value"/>
  112247. <stringProp name="Argument.metadata">=</stringProp>
  112248. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112249. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][street][1]</stringProp>
  112250. </elementProp>
  112251. <elementProp name="address[${admin_customer_address_entity_id}][suffix]" elementType="HTTPArgument">
  112252. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112253. <stringProp name="Argument.value"/>
  112254. <stringProp name="Argument.metadata">=</stringProp>
  112255. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112256. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][suffix]</stringProp>
  112257. </elementProp>
  112258. <elementProp name="address[${admin_customer_address_entity_id}][telephone]" elementType="HTTPArgument">
  112259. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112260. <stringProp name="Argument.value">${admin_customer_address_telephone}</stringProp>
  112261. <stringProp name="Argument.metadata">=</stringProp>
  112262. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112263. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][telephone]</stringProp>
  112264. </elementProp>
  112265. <elementProp name="address[${admin_customer_address_entity_id}][vat_id]" elementType="HTTPArgument">
  112266. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112267. <stringProp name="Argument.value"/>
  112268. <stringProp name="Argument.metadata">=</stringProp>
  112269. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112270. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][vat_id]</stringProp>
  112271. </elementProp>
  112272. <elementProp name="address[${admin_customer_address_entity_id}][customer_id]" elementType="HTTPArgument">
  112273. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112274. <stringProp name="Argument.value">${admin_customer_address_customer_id}</stringProp>
  112275. <stringProp name="Argument.metadata">=</stringProp>
  112276. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112277. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][customer_id]</stringProp>
  112278. </elementProp>
  112279. <elementProp name="address[${admin_customer_address_entity_id}][default_billing]" elementType="HTTPArgument">
  112280. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112281. <stringProp name="Argument.value">true</stringProp>
  112282. <stringProp name="Argument.metadata">=</stringProp>
  112283. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112284. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_billing]</stringProp>
  112285. </elementProp>
  112286. <elementProp name="address[${admin_customer_address_entity_id}][default_shipping]" elementType="HTTPArgument">
  112287. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112288. <stringProp name="Argument.value">true</stringProp>
  112289. <stringProp name="Argument.metadata">=</stringProp>
  112290. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112291. <stringProp name="Argument.name">address[${admin_customer_address_entity_id}][default_shipping]</stringProp>
  112292. </elementProp>
  112293. <elementProp name="address[new_0][prefix]" elementType="HTTPArgument">
  112294. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112295. <stringProp name="Argument.value"/>
  112296. <stringProp name="Argument.metadata">=</stringProp>
  112297. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112298. <stringProp name="Argument.name">address[new_0][prefix]</stringProp>
  112299. </elementProp>
  112300. <elementProp name="address[new_0][firstname]" elementType="HTTPArgument">
  112301. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112302. <stringProp name="Argument.value">John</stringProp>
  112303. <stringProp name="Argument.metadata">=</stringProp>
  112304. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112305. <stringProp name="Argument.name">address[new_0][firstname]</stringProp>
  112306. </elementProp>
  112307. <elementProp name="address[new_0][middlename]" elementType="HTTPArgument">
  112308. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112309. <stringProp name="Argument.value"/>
  112310. <stringProp name="Argument.metadata">=</stringProp>
  112311. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112312. <stringProp name="Argument.name">address[new_0][middlename]</stringProp>
  112313. </elementProp>
  112314. <elementProp name="address[new_0][lastname]" elementType="HTTPArgument">
  112315. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112316. <stringProp name="Argument.value">Doe</stringProp>
  112317. <stringProp name="Argument.metadata">=</stringProp>
  112318. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112319. <stringProp name="Argument.name">address[new_0][lastname]</stringProp>
  112320. </elementProp>
  112321. <elementProp name="address[new_0][suffix]" elementType="HTTPArgument">
  112322. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112323. <stringProp name="Argument.value"/>
  112324. <stringProp name="Argument.metadata">=</stringProp>
  112325. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112326. <stringProp name="Argument.name">address[new_0][suffix]</stringProp>
  112327. </elementProp>
  112328. <elementProp name="address[new_0][company]" elementType="HTTPArgument">
  112329. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112330. <stringProp name="Argument.value">Test Company</stringProp>
  112331. <stringProp name="Argument.metadata">=</stringProp>
  112332. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112333. <stringProp name="Argument.name">address[new_0][company]</stringProp>
  112334. </elementProp>
  112335. <elementProp name="address[new_0][city]" elementType="HTTPArgument">
  112336. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112337. <stringProp name="Argument.value">Folsom</stringProp>
  112338. <stringProp name="Argument.metadata">=</stringProp>
  112339. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112340. <stringProp name="Argument.name">address[new_0][city]</stringProp>
  112341. </elementProp>
  112342. <elementProp name="address[new_0][postcode]" elementType="HTTPArgument">
  112343. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112344. <stringProp name="Argument.value">95630</stringProp>
  112345. <stringProp name="Argument.metadata">=</stringProp>
  112346. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112347. <stringProp name="Argument.name">address[new_0][postcode]</stringProp>
  112348. </elementProp>
  112349. <elementProp name="address[new_0][telephone]" elementType="HTTPArgument">
  112350. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112351. <stringProp name="Argument.value">1234567890</stringProp>
  112352. <stringProp name="Argument.metadata">=</stringProp>
  112353. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112354. <stringProp name="Argument.name">address[new_0][telephone]</stringProp>
  112355. </elementProp>
  112356. <elementProp name="address[new_0][vat_id]" elementType="HTTPArgument">
  112357. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112358. <stringProp name="Argument.value"/>
  112359. <stringProp name="Argument.metadata">=</stringProp>
  112360. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112361. <stringProp name="Argument.name">address[new_0][vat_id]</stringProp>
  112362. </elementProp>
  112363. <elementProp name="address[new_0][default_billing]" elementType="HTTPArgument">
  112364. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112365. <stringProp name="Argument.value">false</stringProp>
  112366. <stringProp name="Argument.metadata">=</stringProp>
  112367. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112368. <stringProp name="Argument.name">address[new_0][default_billing]</stringProp>
  112369. </elementProp>
  112370. <elementProp name="address[new_0][default_shipping]" elementType="HTTPArgument">
  112371. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112372. <stringProp name="Argument.value">false</stringProp>
  112373. <stringProp name="Argument.metadata">=</stringProp>
  112374. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112375. <stringProp name="Argument.name">address[new_0][default_shipping]</stringProp>
  112376. </elementProp>
  112377. <elementProp name="address[new_0][street][0]" elementType="HTTPArgument">
  112378. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112379. <stringProp name="Argument.value">123 Main</stringProp>
  112380. <stringProp name="Argument.metadata">=</stringProp>
  112381. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112382. <stringProp name="Argument.name">address[new_0][street][0]</stringProp>
  112383. </elementProp>
  112384. <elementProp name="address[new_0][street][1]" elementType="HTTPArgument">
  112385. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112386. <stringProp name="Argument.value"/>
  112387. <stringProp name="Argument.metadata">=</stringProp>
  112388. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112389. <stringProp name="Argument.name">address[new_0][street][1]</stringProp>
  112390. </elementProp>
  112391. <elementProp name="address[new_0][region]" elementType="HTTPArgument">
  112392. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112393. <stringProp name="Argument.value"/>
  112394. <stringProp name="Argument.metadata">=</stringProp>
  112395. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112396. <stringProp name="Argument.name">address[new_0][region]</stringProp>
  112397. </elementProp>
  112398. <elementProp name="address[new_0][country_id]" elementType="HTTPArgument">
  112399. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112400. <stringProp name="Argument.value">US</stringProp>
  112401. <stringProp name="Argument.metadata">=</stringProp>
  112402. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112403. <stringProp name="Argument.name">address[new_0][country_id]</stringProp>
  112404. </elementProp>
  112405. <elementProp name="address[new_0][region_id]" elementType="HTTPArgument">
  112406. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112407. <stringProp name="Argument.value">12</stringProp>
  112408. <stringProp name="Argument.metadata">=</stringProp>
  112409. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112410. <stringProp name="Argument.name">address[new_0][region_id]</stringProp>
  112411. </elementProp>
  112412. <elementProp name="form_key" elementType="HTTPArgument">
  112413. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112414. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  112415. <stringProp name="Argument.metadata">=</stringProp>
  112416. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112417. <stringProp name="Argument.name">form_key</stringProp>
  112418. </elementProp>
  112419. </collectionProp>
  112420. </elementProp>
  112421. <stringProp name="HTTPSampler.domain"/>
  112422. <stringProp name="HTTPSampler.port"/>
  112423. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  112424. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  112425. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  112426. <stringProp name="HTTPSampler.contentEncoding"/>
  112427. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/customer/index/save/</stringProp>
  112428. <stringProp name="HTTPSampler.method">POST</stringProp>
  112429. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  112430. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  112431. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  112432. <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
  112433. <boolProp name="HTTPSampler.monitor">false</boolProp>
  112434. <stringProp name="HTTPSampler.embedded_url_re"/>
  112435. </HTTPSamplerProxy>
  112436. <hashTree>
  112437. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer saved" enabled="true">
  112438. <collectionProp name="Asserion.test_strings">
  112439. <stringProp name="292987815">You saved the customer.</stringProp>
  112440. </collectionProp>
  112441. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  112442. <boolProp name="Assertion.assume_success">false</boolProp>
  112443. <intProp name="Assertion.test_type">2</intProp>
  112444. </ResponseAssertion>
  112445. <hashTree/>
  112446. </hashTree>
  112447. <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Pause" enabled="true">
  112448. <intProp name="ActionProcessor.action">1</intProp>
  112449. <intProp name="ActionProcessor.target">0</intProp>
  112450. <stringProp name="ActionProcessor.duration">${__javaScript(Math.round(${adminCustomerManagementDelay}*1000))}</stringProp>
  112451. </TestAction>
  112452. <hashTree/>
  112453. </hashTree>
  112454. </hashTree>
  112455. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  112456. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  112457. <collectionProp name="Arguments.arguments"/>
  112458. </elementProp>
  112459. <stringProp name="HTTPSampler.domain"/>
  112460. <stringProp name="HTTPSampler.port"/>
  112461. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  112462. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  112463. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  112464. <stringProp name="HTTPSampler.contentEncoding"/>
  112465. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  112466. <stringProp name="HTTPSampler.method">GET</stringProp>
  112467. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  112468. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  112469. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  112470. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  112471. <boolProp name="HTTPSampler.monitor">false</boolProp>
  112472. <stringProp name="HTTPSampler.embedded_url_re"/>
  112473. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  112474. <hashTree>
  112475. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  112476. <boolProp name="resetInterpreter">false</boolProp>
  112477. <stringProp name="parameters"/>
  112478. <stringProp name="filename"/>
  112479. <stringProp name="script">
  112480. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  112481. if (adminUsersDistribution == 1) {
  112482. adminUserList = props.get("adminUserList");
  112483. adminUserList.add(vars.get("admin_user"));
  112484. }
  112485. </stringProp>
  112486. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  112487. <hashTree/>
  112488. </hashTree>
  112489. </hashTree>
  112490. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Admin Edit Order" enabled="true">
  112491. <intProp name="ThroughputController.style">1</intProp>
  112492. <boolProp name="ThroughputController.perThread">false</boolProp>
  112493. <intProp name="ThroughputController.maxThroughput">1</intProp>
  112494. <stringProp name="ThroughputController.percentThroughput">${adminEditOrderPercentage}</stringProp>
  112495. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  112496. <hashTree>
  112497. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  112498. <stringProp name="script">
  112499. var tmpLabel = vars.get("testLabel")
  112500. if (tmpLabel) {
  112501. var testLabel = " (" + tmpLabel + ")"
  112502. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  112503. if (sampler.getName().indexOf(testLabel) == -1) {
  112504. sampler.setName(sampler.getName() + testLabel);
  112505. }
  112506. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  112507. sampler.setName("SetUp - " + sampler.getName());
  112508. }
  112509. } else {
  112510. testLabel = ""
  112511. }
  112512. </stringProp>
  112513. <stringProp name="scriptLanguage">javascript</stringProp>
  112514. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  112515. <hashTree/>
  112516. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  112517. <stringProp name="BeanShellSampler.query">
  112518. vars.put("testLabel", "Admin Edit Order");
  112519. </stringProp>
  112520. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  112521. </BeanShellSampler>
  112522. <hashTree/>
  112523. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  112524. <stringProp name="script">
  112525. function getFormKeyFromResponse()
  112526. {
  112527. var url = prev.getUrlAsString(),
  112528. responseCode = prev.getResponseCode(),
  112529. formKey = null;
  112530. searchPattern = /var FORM_KEY = '(.+)'/;
  112531. if (responseCode == "200" &amp;&amp; url) {
  112532. response = prev.getResponseDataAsString();
  112533. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  112534. }
  112535. return formKey;
  112536. }
  112537. formKey = vars.get("form_key_storage");
  112538. currentFormKey = getFormKeyFromResponse();
  112539. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  112540. vars.put("form_key_storage", currentFormKey);
  112541. }
  112542. </stringProp>
  112543. <stringProp name="scriptLanguage">javascript</stringProp>
  112544. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  112545. <hashTree/>
  112546. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  112547. <stringProp name="script">
  112548. formKey = vars.get("form_key_storage");
  112549. if (formKey
  112550. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  112551. &amp;&amp; sampler.getMethod() == "POST")
  112552. {
  112553. arguments = sampler.getArguments();
  112554. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  112555. {
  112556. argument = arguments.getArgument(i);
  112557. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  112558. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  112559. argument.setValue(formKey);
  112560. }
  112561. }
  112562. }
  112563. </stringProp>
  112564. <stringProp name="scriptLanguage">javascript</stringProp>
  112565. </JSR223PreProcessor>
  112566. <hashTree/>
  112567. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  112568. <collectionProp name="CookieManager.cookies"/>
  112569. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  112570. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  112571. <hashTree/>
  112572. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  112573. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  112574. </GenericController>
  112575. <hashTree>
  112576. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  112577. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  112578. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  112579. <hashTree>
  112580. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  112581. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  112582. <stringProp name="BeanShellSampler.query">
  112583. adminUser = "none";
  112584. adminUserList = props.get("adminUserList");
  112585. adminUserListIterator = props.get("adminUserListIterator");
  112586. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  112587. if (adminUsersDistribution == 1) {
  112588. adminUser = adminUserList.poll();
  112589. } else {
  112590. if (!adminUserListIterator.hasNext()) {
  112591. adminUserListIterator = adminUserList.descendingIterator();
  112592. }
  112593. adminUser = adminUserListIterator.next();
  112594. }
  112595. if (adminUser == "none") {
  112596. SampleResult.setResponseMessage("adminUser list is empty");
  112597. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  112598. IsSuccess=false;
  112599. SampleResult.setSuccessful(false);
  112600. SampleResult.setStopThread(true);
  112601. }
  112602. vars.put("admin_user", adminUser);
  112603. </stringProp>
  112604. <stringProp name="BeanShellSampler.filename"/>
  112605. <stringProp name="BeanShellSampler.parameters"/>
  112606. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  112607. </BeanShellSampler>
  112608. <hashTree/>
  112609. </hashTree>
  112610. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  112611. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  112612. <collectionProp name="Arguments.arguments"/>
  112613. </elementProp>
  112614. <stringProp name="HTTPSampler.domain"/>
  112615. <stringProp name="HTTPSampler.port"/>
  112616. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  112617. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  112618. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  112619. <stringProp name="HTTPSampler.contentEncoding"/>
  112620. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  112621. <stringProp name="HTTPSampler.method">GET</stringProp>
  112622. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  112623. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  112624. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  112625. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  112626. <boolProp name="HTTPSampler.monitor">false</boolProp>
  112627. <stringProp name="HTTPSampler.embedded_url_re"/>
  112628. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  112629. <hashTree>
  112630. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  112631. <collectionProp name="Asserion.test_strings">
  112632. <stringProp name="-1397214398">Welcome</stringProp>
  112633. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  112634. </collectionProp>
  112635. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  112636. <boolProp name="Assertion.assume_success">false</boolProp>
  112637. <intProp name="Assertion.test_type">2</intProp>
  112638. </ResponseAssertion>
  112639. <hashTree/>
  112640. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  112641. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  112642. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  112643. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  112644. <stringProp name="RegexExtractor.template">$1$</stringProp>
  112645. <stringProp name="RegexExtractor.default"/>
  112646. <stringProp name="RegexExtractor.match_number">1</stringProp>
  112647. </RegexExtractor>
  112648. <hashTree/>
  112649. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  112650. <collectionProp name="Asserion.test_strings">
  112651. <stringProp name="2845929">^.+$</stringProp>
  112652. </collectionProp>
  112653. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  112654. <boolProp name="Assertion.assume_success">false</boolProp>
  112655. <intProp name="Assertion.test_type">1</intProp>
  112656. <stringProp name="Assertion.scope">variable</stringProp>
  112657. <stringProp name="Scope.variable">admin_form_key</stringProp>
  112658. </ResponseAssertion>
  112659. <hashTree/>
  112660. </hashTree>
  112661. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  112662. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  112663. <collectionProp name="Arguments.arguments">
  112664. <elementProp name="dummy" elementType="HTTPArgument">
  112665. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112666. <stringProp name="Argument.value"/>
  112667. <stringProp name="Argument.metadata">=</stringProp>
  112668. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112669. <stringProp name="Argument.name">dummy</stringProp>
  112670. </elementProp>
  112671. <elementProp name="form_key" elementType="HTTPArgument">
  112672. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112673. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  112674. <stringProp name="Argument.metadata">=</stringProp>
  112675. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112676. <stringProp name="Argument.name">form_key</stringProp>
  112677. </elementProp>
  112678. <elementProp name="login[password]" elementType="HTTPArgument">
  112679. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112680. <stringProp name="Argument.value">${admin_password}</stringProp>
  112681. <stringProp name="Argument.metadata">=</stringProp>
  112682. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112683. <stringProp name="Argument.name">login[password]</stringProp>
  112684. </elementProp>
  112685. <elementProp name="login[username]" elementType="HTTPArgument">
  112686. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112687. <stringProp name="Argument.value">${admin_user}</stringProp>
  112688. <stringProp name="Argument.metadata">=</stringProp>
  112689. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112690. <stringProp name="Argument.name">login[username]</stringProp>
  112691. </elementProp>
  112692. </collectionProp>
  112693. </elementProp>
  112694. <stringProp name="HTTPSampler.domain"/>
  112695. <stringProp name="HTTPSampler.port"/>
  112696. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  112697. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  112698. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  112699. <stringProp name="HTTPSampler.contentEncoding"/>
  112700. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  112701. <stringProp name="HTTPSampler.method">POST</stringProp>
  112702. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  112703. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  112704. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  112705. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  112706. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  112707. <boolProp name="HTTPSampler.monitor">false</boolProp>
  112708. <stringProp name="HTTPSampler.embedded_url_re"/>
  112709. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  112710. </HTTPSamplerProxy>
  112711. <hashTree>
  112712. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  112713. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  112714. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  112715. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  112716. <stringProp name="RegexExtractor.template">$1$</stringProp>
  112717. <stringProp name="RegexExtractor.default"/>
  112718. <stringProp name="RegexExtractor.match_number">1</stringProp>
  112719. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  112720. <hashTree/>
  112721. </hashTree>
  112722. </hashTree>
  112723. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true">
  112724. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  112725. </GenericController>
  112726. <hashTree>
  112727. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Orders page" enabled="true">
  112728. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  112729. <collectionProp name="Arguments.arguments"/>
  112730. </elementProp>
  112731. <stringProp name="HTTPSampler.domain"/>
  112732. <stringProp name="HTTPSampler.port"/>
  112733. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  112734. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  112735. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  112736. <stringProp name="HTTPSampler.contentEncoding"/>
  112737. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/</stringProp>
  112738. <stringProp name="HTTPSampler.method">GET</stringProp>
  112739. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  112740. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  112741. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  112742. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  112743. <boolProp name="HTTPSampler.monitor">false</boolProp>
  112744. <stringProp name="HTTPSampler.embedded_url_re"/>
  112745. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/orders_page.jmx</stringProp></HTTPSamplerProxy>
  112746. <hashTree>
  112747. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  112748. <collectionProp name="Asserion.test_strings">
  112749. <stringProp name="1204796042">Create New Order</stringProp>
  112750. </collectionProp>
  112751. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  112752. <boolProp name="Assertion.assume_success">false</boolProp>
  112753. <intProp name="Assertion.test_type">2</intProp>
  112754. </ResponseAssertion>
  112755. <hashTree/>
  112756. </hashTree>
  112757. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Orders" enabled="true">
  112758. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  112759. <collectionProp name="Arguments.arguments">
  112760. <elementProp name="namespace" elementType="HTTPArgument">
  112761. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112762. <stringProp name="Argument.value">sales_order_grid</stringProp>
  112763. <stringProp name="Argument.metadata">=</stringProp>
  112764. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112765. <stringProp name="Argument.name">namespace</stringProp>
  112766. </elementProp>
  112767. <elementProp name="search" elementType="HTTPArgument">
  112768. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112769. <stringProp name="Argument.value"/>
  112770. <stringProp name="Argument.metadata">=</stringProp>
  112771. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112772. <stringProp name="Argument.name">search</stringProp>
  112773. </elementProp>
  112774. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  112775. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112776. <stringProp name="Argument.value">true</stringProp>
  112777. <stringProp name="Argument.metadata">=</stringProp>
  112778. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112779. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  112780. </elementProp>
  112781. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  112782. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112783. <stringProp name="Argument.value">200</stringProp>
  112784. <stringProp name="Argument.metadata">=</stringProp>
  112785. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112786. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  112787. </elementProp>
  112788. <elementProp name="paging[current]" elementType="HTTPArgument">
  112789. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112790. <stringProp name="Argument.value">1</stringProp>
  112791. <stringProp name="Argument.metadata">=</stringProp>
  112792. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112793. <stringProp name="Argument.name">paging[current]</stringProp>
  112794. </elementProp>
  112795. <elementProp name="sorting[field]" elementType="HTTPArgument">
  112796. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112797. <stringProp name="Argument.value">increment_id</stringProp>
  112798. <stringProp name="Argument.metadata">=</stringProp>
  112799. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112800. <stringProp name="Argument.name">sorting[field]</stringProp>
  112801. </elementProp>
  112802. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  112803. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112804. <stringProp name="Argument.value">desc</stringProp>
  112805. <stringProp name="Argument.metadata">=</stringProp>
  112806. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112807. <stringProp name="Argument.name">sorting[direction]</stringProp>
  112808. </elementProp>
  112809. <elementProp name="isAjax" elementType="HTTPArgument">
  112810. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112811. <stringProp name="Argument.value">true</stringProp>
  112812. <stringProp name="Argument.metadata">=</stringProp>
  112813. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112814. <stringProp name="Argument.name">isAjax</stringProp>
  112815. </elementProp>
  112816. <elementProp name="form_key" elementType="HTTPArgument">
  112817. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112818. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  112819. <stringProp name="Argument.metadata">=</stringProp>
  112820. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112821. <stringProp name="Argument.name">form_key</stringProp>
  112822. <stringProp name="Argument.desc">false</stringProp>
  112823. </elementProp>
  112824. <elementProp name="filters[status]" elementType="HTTPArgument">
  112825. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112826. <stringProp name="Argument.value">pending</stringProp>
  112827. <stringProp name="Argument.metadata">=</stringProp>
  112828. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112829. <stringProp name="Argument.name">filters[status]</stringProp>
  112830. <stringProp name="Argument.desc">true</stringProp>
  112831. </elementProp>
  112832. <elementProp name="_" elementType="HTTPArgument">
  112833. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112834. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  112835. <stringProp name="Argument.metadata">=</stringProp>
  112836. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112837. <stringProp name="Argument.name">_</stringProp>
  112838. </elementProp>
  112839. </collectionProp>
  112840. </elementProp>
  112841. <stringProp name="HTTPSampler.domain"/>
  112842. <stringProp name="HTTPSampler.port"/>
  112843. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  112844. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  112845. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  112846. <stringProp name="HTTPSampler.contentEncoding"/>
  112847. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  112848. <stringProp name="HTTPSampler.method">GET</stringProp>
  112849. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  112850. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  112851. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  112852. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  112853. <boolProp name="HTTPSampler.monitor">false</boolProp>
  112854. <stringProp name="HTTPSampler.embedded_url_re"/>
  112855. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_orders.jmx</stringProp></HTTPSamplerProxy>
  112856. <hashTree>
  112857. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  112858. <collectionProp name="Asserion.test_strings">
  112859. <stringProp name="1637639774">totalRecords</stringProp>
  112860. </collectionProp>
  112861. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  112862. <boolProp name="Assertion.assume_success">false</boolProp>
  112863. <intProp name="Assertion.test_type">2</intProp>
  112864. </ResponseAssertion>
  112865. <hashTree/>
  112866. </hashTree>
  112867. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Search Pending Orders" enabled="true">
  112868. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  112869. <collectionProp name="Arguments.arguments">
  112870. <elementProp name="form_key" elementType="HTTPArgument">
  112871. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112872. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  112873. <stringProp name="Argument.metadata">=</stringProp>
  112874. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112875. <stringProp name="Argument.name">form_key</stringProp>
  112876. </elementProp>
  112877. <elementProp name="namespace" elementType="HTTPArgument">
  112878. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112879. <stringProp name="Argument.value">sales_order_grid</stringProp>
  112880. <stringProp name="Argument.metadata">=</stringProp>
  112881. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112882. <stringProp name="Argument.name">namespace</stringProp>
  112883. <stringProp name="Argument.desc">true</stringProp>
  112884. </elementProp>
  112885. <elementProp name="search" elementType="HTTPArgument">
  112886. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112887. <stringProp name="Argument.value"/>
  112888. <stringProp name="Argument.metadata">=</stringProp>
  112889. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112890. <stringProp name="Argument.name">search</stringProp>
  112891. <stringProp name="Argument.desc">true</stringProp>
  112892. </elementProp>
  112893. <elementProp name="filters[placeholder]" elementType="HTTPArgument">
  112894. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112895. <stringProp name="Argument.value">true</stringProp>
  112896. <stringProp name="Argument.metadata">=</stringProp>
  112897. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112898. <stringProp name="Argument.name">filters[placeholder]</stringProp>
  112899. <stringProp name="Argument.desc">true</stringProp>
  112900. </elementProp>
  112901. <elementProp name="paging[pageSize]" elementType="HTTPArgument">
  112902. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112903. <stringProp name="Argument.value">200</stringProp>
  112904. <stringProp name="Argument.metadata">=</stringProp>
  112905. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112906. <stringProp name="Argument.name">paging[pageSize]</stringProp>
  112907. <stringProp name="Argument.desc">true</stringProp>
  112908. </elementProp>
  112909. <elementProp name="paging[current]" elementType="HTTPArgument">
  112910. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112911. <stringProp name="Argument.value">1</stringProp>
  112912. <stringProp name="Argument.metadata">=</stringProp>
  112913. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112914. <stringProp name="Argument.name">paging[current]</stringProp>
  112915. <stringProp name="Argument.desc">true</stringProp>
  112916. </elementProp>
  112917. <elementProp name="sorting[field]" elementType="HTTPArgument">
  112918. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112919. <stringProp name="Argument.value">increment_id</stringProp>
  112920. <stringProp name="Argument.metadata">=</stringProp>
  112921. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112922. <stringProp name="Argument.name">sorting[field]</stringProp>
  112923. <stringProp name="Argument.desc">true</stringProp>
  112924. </elementProp>
  112925. <elementProp name="sorting[direction]" elementType="HTTPArgument">
  112926. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112927. <stringProp name="Argument.value">asc</stringProp>
  112928. <stringProp name="Argument.metadata">=</stringProp>
  112929. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112930. <stringProp name="Argument.name">sorting[direction]</stringProp>
  112931. <stringProp name="Argument.desc">true</stringProp>
  112932. </elementProp>
  112933. <elementProp name="isAjax" elementType="HTTPArgument">
  112934. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112935. <stringProp name="Argument.value">true</stringProp>
  112936. <stringProp name="Argument.metadata">=</stringProp>
  112937. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112938. <stringProp name="Argument.name">isAjax</stringProp>
  112939. <stringProp name="Argument.desc">true</stringProp>
  112940. </elementProp>
  112941. <elementProp name="filters[status]" elementType="HTTPArgument">
  112942. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112943. <stringProp name="Argument.value">pending</stringProp>
  112944. <stringProp name="Argument.metadata">=</stringProp>
  112945. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112946. <stringProp name="Argument.name">filters[status]</stringProp>
  112947. </elementProp>
  112948. <elementProp name="_" elementType="HTTPArgument">
  112949. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  112950. <stringProp name="Argument.value">${__time()}${__Random(1,1000000)}</stringProp>
  112951. <stringProp name="Argument.metadata">=</stringProp>
  112952. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  112953. <stringProp name="Argument.name">_</stringProp>
  112954. </elementProp>
  112955. </collectionProp>
  112956. </elementProp>
  112957. <stringProp name="HTTPSampler.domain"/>
  112958. <stringProp name="HTTPSampler.port"/>
  112959. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  112960. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  112961. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  112962. <stringProp name="HTTPSampler.contentEncoding"/>
  112963. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/mui/index/render/</stringProp>
  112964. <stringProp name="HTTPSampler.method">GET</stringProp>
  112965. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  112966. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  112967. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  112968. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  112969. <boolProp name="HTTPSampler.monitor">false</boolProp>
  112970. <stringProp name="HTTPSampler.embedded_url_re"/>
  112971. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/search_orders.jmx</stringProp></HTTPSamplerProxy>
  112972. <hashTree>
  112973. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  112974. <collectionProp name="Asserion.test_strings">
  112975. <stringProp name="1637639774">totalRecords</stringProp>
  112976. </collectionProp>
  112977. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  112978. <boolProp name="Assertion.assume_success">false</boolProp>
  112979. <intProp name="Assertion.test_type">2</intProp>
  112980. </ResponseAssertion>
  112981. <hashTree/>
  112982. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order numbers" enabled="true">
  112983. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  112984. <stringProp name="RegexExtractor.refname">order_numbers</stringProp>
  112985. <stringProp name="RegexExtractor.regex">\"increment_id\":\"(\d+)\"\,</stringProp>
  112986. <stringProp name="RegexExtractor.template">$1$</stringProp>
  112987. <stringProp name="RegexExtractor.default"/>
  112988. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  112989. <stringProp name="Scope.variable">simple_products</stringProp>
  112990. </RegexExtractor>
  112991. <hashTree/>
  112992. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order ids" enabled="true">
  112993. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  112994. <stringProp name="RegexExtractor.refname">order_ids</stringProp>
  112995. <stringProp name="RegexExtractor.regex">\"entity_id\":\"(\d+)\"\,</stringProp>
  112996. <stringProp name="RegexExtractor.template">$1$</stringProp>
  112997. <stringProp name="RegexExtractor.default"/>
  112998. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  112999. <stringProp name="Scope.variable">simple_products</stringProp>
  113000. </RegexExtractor>
  113001. <hashTree/>
  113002. </hashTree>
  113003. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Generate Unique Ids for each Thread" enabled="true">
  113004. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/setup.jmx</stringProp>
  113005. <stringProp name="BeanShellSampler.query">
  113006. import java.util.ArrayList;
  113007. import java.util.HashMap;
  113008. import org.apache.jmeter.protocol.http.util.Base64Encoder;
  113009. import java.util.Random;
  113010. // get count of "order_numbers" variable defined in "Search Pending Orders Limit"
  113011. int ordersCount = Integer.parseInt(vars.get("order_numbers_matchNr"));
  113012. int clusterLength;
  113013. int threadsNumber = ctx.getThreadGroup().getNumThreads();
  113014. if (threadsNumber == 0) {
  113015. //Number of orders for one thread
  113016. clusterLength = ordersCount;
  113017. } else {
  113018. clusterLength = Math.round(ordersCount / threadsNumber);
  113019. if (clusterLength == 0) {
  113020. clusterLength = 1;
  113021. }
  113022. }
  113023. //Current thread number starts from 0
  113024. int currentThreadNum = ctx.getThreadNum();
  113025. //Index of the current product from the cluster
  113026. Random random = new Random();
  113027. if (${seedForRandom} &gt; 0) {
  113028. random.setSeed(${seedForRandom} + ${__threadNum});
  113029. }
  113030. int iterator = random.nextInt(clusterLength);
  113031. if (iterator == 0) {
  113032. iterator = 1;
  113033. }
  113034. int i = clusterLength * currentThreadNum + iterator;
  113035. orderNumber = vars.get("order_numbers_" + i.toString());
  113036. orderId = vars.get("order_ids_" + i.toString());
  113037. vars.put("order_number", orderNumber);
  113038. vars.put("order_id", orderId);
  113039. </stringProp>
  113040. <stringProp name="BeanShellSampler.filename"/>
  113041. <stringProp name="BeanShellSampler.parameters"/>
  113042. <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
  113043. </BeanShellSampler>
  113044. <hashTree/>
  113045. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Open Order" enabled="true">
  113046. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113047. <collectionProp name="Arguments.arguments"/>
  113048. </elementProp>
  113049. <stringProp name="HTTPSampler.domain"/>
  113050. <stringProp name="HTTPSampler.port"/>
  113051. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113052. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113053. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113054. <stringProp name="HTTPSampler.contentEncoding"/>
  113055. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/view/order_id/${order_id}/</stringProp>
  113056. <stringProp name="HTTPSampler.method">GET</stringProp>
  113057. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113058. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113059. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113060. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113061. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113062. <stringProp name="HTTPSampler.embedded_url_re"/>
  113063. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/open_order.jmx</stringProp></HTTPSamplerProxy>
  113064. <hashTree>
  113065. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  113066. <collectionProp name="Asserion.test_strings">
  113067. <stringProp name="2103620713">#${order_number}</stringProp>
  113068. </collectionProp>
  113069. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113070. <boolProp name="Assertion.assume_success">false</boolProp>
  113071. <intProp name="Assertion.test_type">2</intProp>
  113072. </ResponseAssertion>
  113073. <hashTree/>
  113074. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract order status" enabled="true">
  113075. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  113076. <stringProp name="RegexExtractor.refname">order_status</stringProp>
  113077. <stringProp name="RegexExtractor.regex">&lt;span id="order_status"&gt;([^&lt;]+)&lt;/span&gt;</stringProp>
  113078. <stringProp name="RegexExtractor.template">$1$</stringProp>
  113079. <stringProp name="RegexExtractor.default"/>
  113080. <stringProp name="RegexExtractor.match_number">1</stringProp>
  113081. <stringProp name="Scope.variable">simple_products</stringProp>
  113082. </RegexExtractor>
  113083. <hashTree/>
  113084. </hashTree>
  113085. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
  113086. <stringProp name="IfController.condition">"${order_status}" == "Pending"</stringProp>
  113087. <boolProp name="IfController.evaluateAll">false</boolProp>
  113088. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/if_controller.jmx</stringProp></IfController>
  113089. <hashTree>
  113090. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Add Comment" enabled="true">
  113091. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113092. <collectionProp name="Arguments.arguments">
  113093. <elementProp name="history[status]" elementType="HTTPArgument">
  113094. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113095. <stringProp name="Argument.value">pending</stringProp>
  113096. <stringProp name="Argument.metadata">=</stringProp>
  113097. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113098. <stringProp name="Argument.name">history[status]</stringProp>
  113099. <stringProp name="Argument.desc">false</stringProp>
  113100. </elementProp>
  113101. <elementProp name="history[comment]" elementType="HTTPArgument">
  113102. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113103. <stringProp name="Argument.value">Some text</stringProp>
  113104. <stringProp name="Argument.metadata">=</stringProp>
  113105. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113106. <stringProp name="Argument.name">history[comment]</stringProp>
  113107. </elementProp>
  113108. <elementProp name="form_key" elementType="HTTPArgument">
  113109. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113110. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  113111. <stringProp name="Argument.metadata">=</stringProp>
  113112. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113113. <stringProp name="Argument.name">form_key</stringProp>
  113114. <stringProp name="Argument.desc">false</stringProp>
  113115. </elementProp>
  113116. </collectionProp>
  113117. </elementProp>
  113118. <stringProp name="HTTPSampler.domain"/>
  113119. <stringProp name="HTTPSampler.port"/>
  113120. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113121. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113122. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113123. <stringProp name="HTTPSampler.contentEncoding"/>
  113124. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order/addComment/order_id/${order_id}/?isAjax=true</stringProp>
  113125. <stringProp name="HTTPSampler.method">POST</stringProp>
  113126. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113127. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113128. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113129. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113130. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113131. <stringProp name="HTTPSampler.embedded_url_re"/>
  113132. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/add_comment.jmx</stringProp></HTTPSamplerProxy>
  113133. <hashTree>
  113134. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  113135. <collectionProp name="Asserion.test_strings">
  113136. <stringProp name="-2089278331">Not Notified</stringProp>
  113137. </collectionProp>
  113138. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113139. <boolProp name="Assertion.assume_success">false</boolProp>
  113140. <intProp name="Assertion.test_type">2</intProp>
  113141. </ResponseAssertion>
  113142. <hashTree/>
  113143. </hashTree>
  113144. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Start" enabled="true">
  113145. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113146. <collectionProp name="Arguments.arguments"/>
  113147. </elementProp>
  113148. <stringProp name="HTTPSampler.domain"/>
  113149. <stringProp name="HTTPSampler.port"/>
  113150. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113151. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113152. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113153. <stringProp name="HTTPSampler.contentEncoding"/>
  113154. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/start/order_id/${order_id}/</stringProp>
  113155. <stringProp name="HTTPSampler.method">GET</stringProp>
  113156. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113157. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113158. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113159. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113160. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113161. <stringProp name="HTTPSampler.embedded_url_re"/>
  113162. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_start.jmx</stringProp></HTTPSamplerProxy>
  113163. <hashTree>
  113164. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  113165. <collectionProp name="Asserion.test_strings">
  113166. <stringProp name="-1233850814">Invoice Totals</stringProp>
  113167. </collectionProp>
  113168. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113169. <boolProp name="Assertion.assume_success">false</boolProp>
  113170. <intProp name="Assertion.test_type">2</intProp>
  113171. </ResponseAssertion>
  113172. <hashTree/>
  113173. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract ordered items ids" enabled="true">
  113174. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  113175. <stringProp name="RegexExtractor.refname">item_ids</stringProp>
  113176. <stringProp name="RegexExtractor.regex">&lt;div id="order_item_(\d+)_title"\s*class="product-title"&gt;</stringProp>
  113177. <stringProp name="RegexExtractor.template">$1$</stringProp>
  113178. <stringProp name="RegexExtractor.default"/>
  113179. <stringProp name="RegexExtractor.match_number">-1</stringProp>
  113180. <stringProp name="Scope.variable">simple_products</stringProp>
  113181. </RegexExtractor>
  113182. <hashTree/>
  113183. </hashTree>
  113184. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Invoice Submit" enabled="true">
  113185. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113186. <collectionProp name="Arguments.arguments">
  113187. <elementProp name="form_key" elementType="HTTPArgument">
  113188. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113189. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  113190. <stringProp name="Argument.metadata">=</stringProp>
  113191. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113192. <stringProp name="Argument.name">form_key</stringProp>
  113193. <stringProp name="Argument.desc">false</stringProp>
  113194. </elementProp>
  113195. <elementProp name="invoice[items][${item_ids_1}]" elementType="HTTPArgument">
  113196. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113197. <stringProp name="Argument.value">1</stringProp>
  113198. <stringProp name="Argument.metadata">=</stringProp>
  113199. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113200. <stringProp name="Argument.name">invoice[items][${item_ids_1}]</stringProp>
  113201. </elementProp>
  113202. <elementProp name="invoice[items][${item_ids_2}]" elementType="HTTPArgument">
  113203. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113204. <stringProp name="Argument.value">1</stringProp>
  113205. <stringProp name="Argument.metadata">=</stringProp>
  113206. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113207. <stringProp name="Argument.name">invoice[items][${item_ids_2}]</stringProp>
  113208. </elementProp>
  113209. <elementProp name="invoice[comment_text]" elementType="HTTPArgument">
  113210. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113211. <stringProp name="Argument.value">Invoiced</stringProp>
  113212. <stringProp name="Argument.metadata">=</stringProp>
  113213. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113214. <stringProp name="Argument.name">invoice[comment_text]</stringProp>
  113215. </elementProp>
  113216. </collectionProp>
  113217. </elementProp>
  113218. <stringProp name="HTTPSampler.domain"/>
  113219. <stringProp name="HTTPSampler.port"/>
  113220. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113221. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113222. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113223. <stringProp name="HTTPSampler.contentEncoding"/>
  113224. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/sales/order_invoice/save/order_id/${order_id}/</stringProp>
  113225. <stringProp name="HTTPSampler.method">POST</stringProp>
  113226. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113227. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113228. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113229. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113230. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113231. <stringProp name="HTTPSampler.embedded_url_re"/>
  113232. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_create_process_returns/invoice_submit.jmx</stringProp></HTTPSamplerProxy>
  113233. <hashTree>
  113234. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  113235. <collectionProp name="Asserion.test_strings">
  113236. <stringProp name="1740524604">The invoice has been created</stringProp>
  113237. </collectionProp>
  113238. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113239. <boolProp name="Assertion.assume_success">false</boolProp>
  113240. <intProp name="Assertion.test_type">2</intProp>
  113241. </ResponseAssertion>
  113242. <hashTree/>
  113243. </hashTree>
  113244. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Start" enabled="true">
  113245. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113246. <collectionProp name="Arguments.arguments"/>
  113247. </elementProp>
  113248. <stringProp name="HTTPSampler.domain"/>
  113249. <stringProp name="HTTPSampler.port"/>
  113250. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113251. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113252. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113253. <stringProp name="HTTPSampler.contentEncoding"/>
  113254. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/start/order_id/${order_id}/</stringProp>
  113255. <stringProp name="HTTPSampler.method">GET</stringProp>
  113256. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113257. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113258. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113259. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113260. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113261. <stringProp name="HTTPSampler.embedded_url_re"/>
  113262. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_start.jmx</stringProp></HTTPSamplerProxy>
  113263. <hashTree>
  113264. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  113265. <collectionProp name="Asserion.test_strings">
  113266. <stringProp name="304100442">New Shipment</stringProp>
  113267. </collectionProp>
  113268. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113269. <boolProp name="Assertion.assume_success">false</boolProp>
  113270. <intProp name="Assertion.test_type">2</intProp>
  113271. </ResponseAssertion>
  113272. <hashTree/>
  113273. </hashTree>
  113274. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Shipment Submit" enabled="true">
  113275. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113276. <collectionProp name="Arguments.arguments">
  113277. <elementProp name="form_key" elementType="HTTPArgument">
  113278. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113279. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  113280. <stringProp name="Argument.metadata">=</stringProp>
  113281. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113282. <stringProp name="Argument.name">form_key</stringProp>
  113283. <stringProp name="Argument.desc">false</stringProp>
  113284. </elementProp>
  113285. <elementProp name="shipment[items][${item_ids_1}]" elementType="HTTPArgument">
  113286. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113287. <stringProp name="Argument.value">1</stringProp>
  113288. <stringProp name="Argument.metadata">=</stringProp>
  113289. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113290. <stringProp name="Argument.name">shipment[items][${item_ids_1}]</stringProp>
  113291. </elementProp>
  113292. <elementProp name="shipment[items][${item_ids_2}]" elementType="HTTPArgument">
  113293. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113294. <stringProp name="Argument.value">1</stringProp>
  113295. <stringProp name="Argument.metadata">=</stringProp>
  113296. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113297. <stringProp name="Argument.name">shipment[items][${item_ids_2}]</stringProp>
  113298. </elementProp>
  113299. <elementProp name="shipment[comment_text]" elementType="HTTPArgument">
  113300. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113301. <stringProp name="Argument.value">Shipped</stringProp>
  113302. <stringProp name="Argument.metadata">=</stringProp>
  113303. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113304. <stringProp name="Argument.name">shipment[comment_text]</stringProp>
  113305. </elementProp>
  113306. </collectionProp>
  113307. </elementProp>
  113308. <stringProp name="HTTPSampler.domain"/>
  113309. <stringProp name="HTTPSampler.port"/>
  113310. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113311. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113312. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113313. <stringProp name="HTTPSampler.contentEncoding"/>
  113314. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/order_shipment/save/order_id/${order_id}/</stringProp>
  113315. <stringProp name="HTTPSampler.method">POST</stringProp>
  113316. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113317. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113318. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113319. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113320. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113321. <stringProp name="HTTPSampler.embedded_url_re"/>
  113322. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_edit_order/shipment_submit.jmx</stringProp></HTTPSamplerProxy>
  113323. <hashTree>
  113324. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  113325. <collectionProp name="Asserion.test_strings">
  113326. <stringProp name="-2089453199">The shipment has been created</stringProp>
  113327. </collectionProp>
  113328. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113329. <boolProp name="Assertion.assume_success">false</boolProp>
  113330. <intProp name="Assertion.test_type">2</intProp>
  113331. </ResponseAssertion>
  113332. <hashTree/>
  113333. </hashTree>
  113334. </hashTree>
  113335. </hashTree>
  113336. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  113337. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113338. <collectionProp name="Arguments.arguments"/>
  113339. </elementProp>
  113340. <stringProp name="HTTPSampler.domain"/>
  113341. <stringProp name="HTTPSampler.port"/>
  113342. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113343. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113344. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113345. <stringProp name="HTTPSampler.contentEncoding"/>
  113346. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  113347. <stringProp name="HTTPSampler.method">GET</stringProp>
  113348. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113349. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113350. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113351. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113352. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113353. <stringProp name="HTTPSampler.embedded_url_re"/>
  113354. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  113355. <hashTree>
  113356. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  113357. <boolProp name="resetInterpreter">false</boolProp>
  113358. <stringProp name="parameters"/>
  113359. <stringProp name="filename"/>
  113360. <stringProp name="script">
  113361. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  113362. if (adminUsersDistribution == 1) {
  113363. adminUserList = props.get("adminUserList");
  113364. adminUserList.add(vars.get("admin_user"));
  113365. }
  113366. </stringProp>
  113367. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  113368. <hashTree/>
  113369. </hashTree>
  113370. </hashTree>
  113371. <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Catalog GraphQL" enabled="true">
  113372. <intProp name="ThroughputController.style">1</intProp>
  113373. <boolProp name="ThroughputController.perThread">false</boolProp>
  113374. <intProp name="ThroughputController.maxThroughput">1</intProp>
  113375. <stringProp name="ThroughputController.percentThroughput">${catalogGraphQLPercentage}</stringProp>
  113376. <stringProp name="TestPlan.comments">tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
  113377. <hashTree>
  113378. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
  113379. <stringProp name="script">
  113380. var tmpLabel = vars.get("testLabel")
  113381. if (tmpLabel) {
  113382. var testLabel = " (" + tmpLabel + ")"
  113383. if (sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy') {
  113384. if (sampler.getName().indexOf(testLabel) == -1) {
  113385. sampler.setName(sampler.getName() + testLabel);
  113386. }
  113387. } else if (sampler.getName().indexOf("SetUp - ") == -1) {
  113388. sampler.setName("SetUp - " + sampler.getName());
  113389. }
  113390. } else {
  113391. testLabel = ""
  113392. }
  113393. </stringProp>
  113394. <stringProp name="scriptLanguage">javascript</stringProp>
  113395. <stringProp name="TestPlan.comments">tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
  113396. <hashTree/>
  113397. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
  113398. <stringProp name="BeanShellSampler.query">
  113399. vars.put("testLabel", "Catalog GraphQL");
  113400. </stringProp>
  113401. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  113402. </BeanShellSampler>
  113403. <hashTree/>
  113404. <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Admin Controller" enabled="true">
  113405. <stringProp name="TestPlan.comments">tool/fragments/ce/once_only_controller.jmx</stringProp>
  113406. </OnceOnlyController>
  113407. <hashTree>
  113408. <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Get admin form key PostProcessor" enabled="true">
  113409. <stringProp name="script">
  113410. function getFormKeyFromResponse()
  113411. {
  113412. var url = prev.getUrlAsString(),
  113413. responseCode = prev.getResponseCode(),
  113414. formKey = null;
  113415. searchPattern = /var FORM_KEY = '(.+)'/;
  113416. if (responseCode == "200" &amp;&amp; url) {
  113417. response = prev.getResponseDataAsString();
  113418. formKey = response &amp;&amp; response.match(searchPattern) ? response.match(searchPattern)[1] : null;
  113419. }
  113420. return formKey;
  113421. }
  113422. formKey = vars.get("form_key_storage");
  113423. currentFormKey = getFormKeyFromResponse();
  113424. if (currentFormKey != null &amp;&amp; currentFormKey != formKey) {
  113425. vars.put("form_key_storage", currentFormKey);
  113426. }
  113427. </stringProp>
  113428. <stringProp name="scriptLanguage">javascript</stringProp>
  113429. <stringProp name="TestPlan.comments">tool/fragments/ce/admin/handle_admin_form_key.jmx</stringProp></JSR223PostProcessor>
  113430. <hashTree/>
  113431. <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set admin form key PreProcessor" enabled="true">
  113432. <stringProp name="script">
  113433. formKey = vars.get("form_key_storage");
  113434. if (formKey
  113435. &amp;&amp; sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
  113436. &amp;&amp; sampler.getMethod() == "POST")
  113437. {
  113438. arguments = sampler.getArguments();
  113439. for (i=0; i&lt;arguments.getArgumentCount(); i++)
  113440. {
  113441. argument = arguments.getArgument(i);
  113442. if (argument.getName() == 'form_key' &amp;&amp; argument.getValue() != formKey) {
  113443. log.info("admin form key updated: " + argument.getValue() + " =&gt; " + formKey);
  113444. argument.setValue(formKey);
  113445. }
  113446. }
  113447. }
  113448. </stringProp>
  113449. <stringProp name="scriptLanguage">javascript</stringProp>
  113450. </JSR223PreProcessor>
  113451. <hashTree/>
  113452. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  113453. <collectionProp name="CookieManager.cookies"/>
  113454. <boolProp name="CookieManager.clearEachIteration">false</boolProp>
  113455. <stringProp name="TestPlan.comments">tool/fragments/ce/http_cookie_manager_without_clear_each_iteration.jmx</stringProp></CookieManager>
  113456. <hashTree/>
  113457. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin Login" enabled="true">
  113458. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  113459. </GenericController>
  113460. <hashTree>
  113461. <CriticalSectionController guiclass="CriticalSectionControllerGui" testclass="CriticalSectionController" testname="Admin Login Lock" enabled="true">
  113462. <stringProp name="CriticalSectionController.lockName">get-admin-email</stringProp>
  113463. <stringProp name="TestPlan.comments">tool/fragments/ce/lock_controller.jmx</stringProp></CriticalSectionController>
  113464. <hashTree>
  113465. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get Admin Email" enabled="true">
  113466. <stringProp name="TestPlan.comments">tool/fragments/ce/get_admin_email.jmx</stringProp>
  113467. <stringProp name="BeanShellSampler.query">
  113468. adminUser = "none";
  113469. adminUserList = props.get("adminUserList");
  113470. adminUserListIterator = props.get("adminUserListIterator");
  113471. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  113472. if (adminUsersDistribution == 1) {
  113473. adminUser = adminUserList.poll();
  113474. } else {
  113475. if (!adminUserListIterator.hasNext()) {
  113476. adminUserListIterator = adminUserList.descendingIterator();
  113477. }
  113478. adminUser = adminUserListIterator.next();
  113479. }
  113480. if (adminUser == "none") {
  113481. SampleResult.setResponseMessage("adminUser list is empty");
  113482. SampleResult.setResponseData("adminUser list is empty","UTF-8");
  113483. IsSuccess=false;
  113484. SampleResult.setSuccessful(false);
  113485. SampleResult.setStopThread(true);
  113486. }
  113487. vars.put("admin_user", adminUser);
  113488. </stringProp>
  113489. <stringProp name="BeanShellSampler.filename"/>
  113490. <stringProp name="BeanShellSampler.parameters"/>
  113491. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  113492. </BeanShellSampler>
  113493. <hashTree/>
  113494. </hashTree>
  113495. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login" enabled="true">
  113496. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113497. <collectionProp name="Arguments.arguments"/>
  113498. </elementProp>
  113499. <stringProp name="HTTPSampler.domain"/>
  113500. <stringProp name="HTTPSampler.port"/>
  113501. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113502. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113503. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113504. <stringProp name="HTTPSampler.contentEncoding"/>
  113505. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/</stringProp>
  113506. <stringProp name="HTTPSampler.method">GET</stringProp>
  113507. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113508. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113509. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113510. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113511. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113512. <stringProp name="HTTPSampler.embedded_url_re"/>
  113513. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login.jmx</stringProp></HTTPSamplerProxy>
  113514. <hashTree>
  113515. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert login form shown" enabled="true">
  113516. <collectionProp name="Asserion.test_strings">
  113517. <stringProp name="-1397214398">Welcome</stringProp>
  113518. <stringProp name="-515240035">&lt;title&gt;Magento Admin&lt;/title&gt;</stringProp>
  113519. </collectionProp>
  113520. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113521. <boolProp name="Assertion.assume_success">false</boolProp>
  113522. <intProp name="Assertion.test_type">2</intProp>
  113523. </ResponseAssertion>
  113524. <hashTree/>
  113525. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  113526. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  113527. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  113528. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  113529. <stringProp name="RegexExtractor.template">$1$</stringProp>
  113530. <stringProp name="RegexExtractor.default"/>
  113531. <stringProp name="RegexExtractor.match_number">1</stringProp>
  113532. </RegexExtractor>
  113533. <hashTree/>
  113534. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert form_key extracted" enabled="true">
  113535. <collectionProp name="Asserion.test_strings">
  113536. <stringProp name="2845929">^.+$</stringProp>
  113537. </collectionProp>
  113538. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113539. <boolProp name="Assertion.assume_success">false</boolProp>
  113540. <intProp name="Assertion.test_type">1</intProp>
  113541. <stringProp name="Assertion.scope">variable</stringProp>
  113542. <stringProp name="Scope.variable">admin_form_key</stringProp>
  113543. </ResponseAssertion>
  113544. <hashTree/>
  113545. </hashTree>
  113546. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Login Submit Form" enabled="true">
  113547. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113548. <collectionProp name="Arguments.arguments">
  113549. <elementProp name="dummy" elementType="HTTPArgument">
  113550. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113551. <stringProp name="Argument.value"/>
  113552. <stringProp name="Argument.metadata">=</stringProp>
  113553. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113554. <stringProp name="Argument.name">dummy</stringProp>
  113555. </elementProp>
  113556. <elementProp name="form_key" elementType="HTTPArgument">
  113557. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113558. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  113559. <stringProp name="Argument.metadata">=</stringProp>
  113560. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113561. <stringProp name="Argument.name">form_key</stringProp>
  113562. </elementProp>
  113563. <elementProp name="login[password]" elementType="HTTPArgument">
  113564. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113565. <stringProp name="Argument.value">${admin_password}</stringProp>
  113566. <stringProp name="Argument.metadata">=</stringProp>
  113567. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113568. <stringProp name="Argument.name">login[password]</stringProp>
  113569. </elementProp>
  113570. <elementProp name="login[username]" elementType="HTTPArgument">
  113571. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113572. <stringProp name="Argument.value">${admin_user}</stringProp>
  113573. <stringProp name="Argument.metadata">=</stringProp>
  113574. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113575. <stringProp name="Argument.name">login[username]</stringProp>
  113576. </elementProp>
  113577. </collectionProp>
  113578. </elementProp>
  113579. <stringProp name="HTTPSampler.domain"/>
  113580. <stringProp name="HTTPSampler.port"/>
  113581. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113582. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113583. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113584. <stringProp name="HTTPSampler.contentEncoding"/>
  113585. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/dashboard/</stringProp>
  113586. <stringProp name="HTTPSampler.method">POST</stringProp>
  113587. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113588. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113589. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113590. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113591. <stringProp name="HTTPSampler.implementation">Java</stringProp>
  113592. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113593. <stringProp name="HTTPSampler.embedded_url_re"/>
  113594. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_login_submit_form.jmx</stringProp>
  113595. </HTTPSamplerProxy>
  113596. <hashTree>
  113597. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract form key" enabled="true">
  113598. <stringProp name="RegexExtractor.useHeaders">false</stringProp>
  113599. <stringProp name="RegexExtractor.refname">admin_form_key</stringProp>
  113600. <stringProp name="RegexExtractor.regex">&lt;input name="form_key" type="hidden" value="([^'"]+)" /&gt;</stringProp>
  113601. <stringProp name="RegexExtractor.template">$1$</stringProp>
  113602. <stringProp name="RegexExtractor.default"/>
  113603. <stringProp name="RegexExtractor.match_number">1</stringProp>
  113604. <stringProp name="TestPlan.comments">tool/fragments/ce/admin_login/admin_retrieve_form_key.jmx</stringProp></RegexExtractor>
  113605. <hashTree/>
  113606. </hashTree>
  113607. </hashTree>
  113608. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Admin fixtures" enabled="true">
  113609. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  113610. </GenericController>
  113611. <hashTree>
  113612. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Create Cms Page with Page Builder Product List" enabled="true">
  113613. <stringProp name="TestPlan.comments">tool/fragments/ee/admin_create_cms_page_with_page_builder_product_list/admin_create_cms_page_with_page_builder_product_list.jmx</stringProp>
  113614. </GenericController>
  113615. <hashTree>
  113616. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create New" enabled="true">
  113617. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113618. <collectionProp name="Arguments.arguments"/>
  113619. </elementProp>
  113620. <stringProp name="HTTPSampler.domain"/>
  113621. <stringProp name="HTTPSampler.port"/>
  113622. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113623. <stringProp name="HTTPSampler.contentEncoding"/>
  113624. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/new</stringProp>
  113625. <stringProp name="HTTPSampler.method">GET</stringProp>
  113626. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113627. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113628. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113629. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113630. <stringProp name="HTTPSampler.embedded_url_re"/>
  113631. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113632. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113633. </HTTPSamplerProxy>
  113634. <hashTree/>
  113635. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Save" enabled="true">
  113636. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113637. <collectionProp name="Arguments.arguments">
  113638. <elementProp name="content" elementType="HTTPArgument">
  113639. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113640. <stringProp name="Argument.value">&lt;div data-content-type="row" data-appearance="contained" data-element="main"&gt;&lt;div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-element="inner" style="justify-content: flex-start; display: flex; flex-direction: column; background-position: left top; background-size: cover; background-repeat: no-repeat; background-attachment: scroll; border-style: none; border-width: 1px; border-radius: 0px; margin: 0px 0px 10px; padding: 10px;"&gt;&lt;div data-content-type="products" data-appearance="grid" data-element="main" style="border-style: none; border-width: 1px; border-radius: 0px; margin: 0px; padding: 0px;"&gt;{{widget type="Magento\CatalogWidget\Block\Product\ProductsList" template="Magento_CatalogWidget::product/widget/content/grid.phtml" anchor_text="" id_path="" show_pager="0" products_count="5" sort_order="date_newest_top" type_name="Catalog Products List" conditions_encoded="^[`1`:^[`type`:`Magento||CatalogWidget||Model||Rule||Condition||Combine`,`aggregator`:`any`,`value`:`1`,`new_child`:``^]^]"}}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</stringProp>
  113641. <stringProp name="Argument.metadata">=</stringProp>
  113642. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113643. <stringProp name="Argument.name">content</stringProp>
  113644. </elementProp>
  113645. <elementProp name="content_heading" elementType="HTTPArgument">
  113646. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113647. <stringProp name="Argument.value"/>
  113648. <stringProp name="Argument.metadata">=</stringProp>
  113649. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113650. <stringProp name="Argument.name">content_heading</stringProp>
  113651. </elementProp>
  113652. <elementProp name="form_key" elementType="HTTPArgument">
  113653. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113654. <stringProp name="Argument.value">${admin_form_key}</stringProp>
  113655. <stringProp name="Argument.metadata">=</stringProp>
  113656. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113657. <stringProp name="Argument.name">form_key</stringProp>
  113658. </elementProp>
  113659. <elementProp name="identifier" elementType="HTTPArgument">
  113660. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113661. <stringProp name="Argument.value"/>
  113662. <stringProp name="Argument.metadata">=</stringProp>
  113663. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113664. <stringProp name="Argument.name">identifier</stringProp>
  113665. </elementProp>
  113666. <elementProp name="is_active" elementType="HTTPArgument">
  113667. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113668. <stringProp name="Argument.value">1</stringProp>
  113669. <stringProp name="Argument.metadata">=</stringProp>
  113670. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113671. <stringProp name="Argument.name">is_active</stringProp>
  113672. </elementProp>
  113673. <elementProp name="layout_update_xml" elementType="HTTPArgument">
  113674. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113675. <stringProp name="Argument.value"/>
  113676. <stringProp name="Argument.metadata">=</stringProp>
  113677. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113678. <stringProp name="Argument.name">layout_update_xml</stringProp>
  113679. </elementProp>
  113680. <elementProp name="meta_description" elementType="HTTPArgument">
  113681. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113682. <stringProp name="Argument.value"/>
  113683. <stringProp name="Argument.metadata">=</stringProp>
  113684. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113685. <stringProp name="Argument.name">meta_description</stringProp>
  113686. </elementProp>
  113687. <elementProp name="meta_keywords" elementType="HTTPArgument">
  113688. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113689. <stringProp name="Argument.value"/>
  113690. <stringProp name="Argument.metadata">=</stringProp>
  113691. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113692. <stringProp name="Argument.name">meta_keywords</stringProp>
  113693. </elementProp>
  113694. <elementProp name="meta_title" elementType="HTTPArgument">
  113695. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113696. <stringProp name="Argument.value"/>
  113697. <stringProp name="Argument.metadata">=</stringProp>
  113698. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113699. <stringProp name="Argument.name">meta_title</stringProp>
  113700. </elementProp>
  113701. <elementProp name="nodes_data" elementType="HTTPArgument">
  113702. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  113703. <stringProp name="Argument.value">{}</stringProp>
  113704. <stringProp name="Argument.metadata">=</stringProp>
  113705. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113706. <stringProp name="Argument.name">nodes_data</stringProp>
  113707. </elementProp>
  113708. <elementProp name="node_ids" elementType="HTTPArgument">
  113709. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113710. <stringProp name="Argument.value"/>
  113711. <stringProp name="Argument.metadata">=</stringProp>
  113712. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113713. <stringProp name="Argument.name">node_ids</stringProp>
  113714. </elementProp>
  113715. <elementProp name="page_id" elementType="HTTPArgument">
  113716. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113717. <stringProp name="Argument.value"/>
  113718. <stringProp name="Argument.metadata">=</stringProp>
  113719. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113720. <stringProp name="Argument.name">page_id</stringProp>
  113721. </elementProp>
  113722. <elementProp name="page_layout" elementType="HTTPArgument">
  113723. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113724. <stringProp name="Argument.value">1column</stringProp>
  113725. <stringProp name="Argument.metadata">=</stringProp>
  113726. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113727. <stringProp name="Argument.name">page_layout</stringProp>
  113728. </elementProp>
  113729. <elementProp name="store_id[0]" elementType="HTTPArgument">
  113730. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113731. <stringProp name="Argument.value">0</stringProp>
  113732. <stringProp name="Argument.metadata">=</stringProp>
  113733. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113734. <stringProp name="Argument.name">store_id[0]</stringProp>
  113735. </elementProp>
  113736. <elementProp name="title" elementType="HTTPArgument">
  113737. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113738. <stringProp name="Argument.value">Page Builder Products ${__time(YMDHMS)}-${__threadNum}-${__Random(1,1000000)}</stringProp>
  113739. <stringProp name="Argument.metadata">=</stringProp>
  113740. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113741. <stringProp name="Argument.name">title</stringProp>
  113742. </elementProp>
  113743. <elementProp name="website_root" elementType="HTTPArgument">
  113744. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  113745. <stringProp name="Argument.value">0</stringProp>
  113746. <stringProp name="Argument.metadata">=</stringProp>
  113747. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  113748. <stringProp name="Argument.name">website_root</stringProp>
  113749. </elementProp>
  113750. </collectionProp>
  113751. </elementProp>
  113752. <stringProp name="HTTPSampler.domain"/>
  113753. <stringProp name="HTTPSampler.port"/>
  113754. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113755. <stringProp name="HTTPSampler.contentEncoding"/>
  113756. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/cms/page/save/back/edit</stringProp>
  113757. <stringProp name="HTTPSampler.method">POST</stringProp>
  113758. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113759. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113760. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113761. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113762. <stringProp name="HTTPSampler.embedded_url_re"/>
  113763. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113764. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113765. </HTTPSamplerProxy>
  113766. <hashTree>
  113767. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
  113768. <collectionProp name="Asserion.test_strings">
  113769. <stringProp name="-398886250">You saved the page.</stringProp>
  113770. </collectionProp>
  113771. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113772. <boolProp name="Assertion.assume_success">false</boolProp>
  113773. <intProp name="Assertion.test_type">16</intProp>
  113774. </ResponseAssertion>
  113775. <hashTree/>
  113776. <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
  113777. <stringProp name="RegexExtractor.useHeaders">URL</stringProp>
  113778. <stringProp name="RegexExtractor.refname">cms_page_id</stringProp>
  113779. <stringProp name="RegexExtractor.regex">/page_id\/([0-9]*)\/back/</stringProp>
  113780. <stringProp name="RegexExtractor.template">$1$</stringProp>
  113781. <stringProp name="RegexExtractor.default"/>
  113782. <stringProp name="RegexExtractor.match_number">1</stringProp>
  113783. </RegexExtractor>
  113784. <hashTree/>
  113785. </hashTree>
  113786. </hashTree>
  113787. </hashTree>
  113788. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
  113789. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  113790. <collectionProp name="Arguments.arguments"/>
  113791. </elementProp>
  113792. <stringProp name="HTTPSampler.domain"/>
  113793. <stringProp name="HTTPSampler.port"/>
  113794. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113795. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113796. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113797. <stringProp name="HTTPSampler.contentEncoding"/>
  113798. <stringProp name="HTTPSampler.path">${base_path}${admin_path}/admin/auth/logout/</stringProp>
  113799. <stringProp name="HTTPSampler.method">GET</stringProp>
  113800. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113801. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113802. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113803. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113804. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113805. <stringProp name="HTTPSampler.embedded_url_re"/>
  113806. <stringProp name="TestPlan.comments">tool/fragments/ce/setup/admin_logout.jmx</stringProp></HTTPSamplerProxy>
  113807. <hashTree>
  113808. <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Return Admin to Pool" enabled="true">
  113809. <boolProp name="resetInterpreter">false</boolProp>
  113810. <stringProp name="parameters"/>
  113811. <stringProp name="filename"/>
  113812. <stringProp name="script">
  113813. adminUsersDistribution = Integer.parseInt(vars.get("admin_users_distribution_per_admin_pool"));
  113814. if (adminUsersDistribution == 1) {
  113815. adminUserList = props.get("adminUserList");
  113816. adminUserList.add(vars.get("admin_user"));
  113817. }
  113818. </stringProp>
  113819. <stringProp name="TestPlan.comments">tool/fragments/ce/common/return_admin_email_to_pool.jmx</stringProp></BeanShellPostProcessor>
  113820. <hashTree/>
  113821. </hashTree>
  113822. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Product Fixtures Controller" enabled="true">
  113823. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  113824. </GenericController>
  113825. <hashTree>
  113826. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  113827. <collectionProp name="HeaderManager.headers">
  113828. <elementProp name="" elementType="Header">
  113829. <stringProp name="Header.name">Content-Type</stringProp>
  113830. <stringProp name="Header.value">application/json</stringProp>
  113831. </elementProp>
  113832. <elementProp name="" elementType="Header">
  113833. <stringProp name="Header.name">Accept</stringProp>
  113834. <stringProp name="Header.value">*/*</stringProp>
  113835. </elementProp>
  113836. </collectionProp>
  113837. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  113838. <hashTree/>
  113839. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
  113840. <stringProp name="TestPlan.comments">tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
  113841. <stringProp name="BeanShellSampler.query">
  113842. import java.util.Random;
  113843. Random random = new Random();
  113844. if (${seedForRandom} &gt; 0) {
  113845. random.setSeed(${seedForRandom} + ${__threadNum});
  113846. }
  113847. vars.putObject("randomIntGenerator", random);
  113848. </stringProp>
  113849. <stringProp name="BeanShellSampler.filename"/>
  113850. <stringProp name="BeanShellSampler.parameters"/>
  113851. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  113852. </BeanShellSampler>
  113853. <hashTree/>
  113854. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  113855. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  113856. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  113857. <collectionProp name="Arguments.arguments">
  113858. <elementProp name="" elementType="HTTPArgument">
  113859. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  113860. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  113861. <stringProp name="Argument.metadata">=</stringProp>
  113862. </elementProp>
  113863. </collectionProp>
  113864. </elementProp>
  113865. <stringProp name="HTTPSampler.domain"/>
  113866. <stringProp name="HTTPSampler.port"/>
  113867. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113868. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113869. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113870. <stringProp name="HTTPSampler.contentEncoding"/>
  113871. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  113872. <stringProp name="HTTPSampler.method">POST</stringProp>
  113873. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113874. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113875. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113876. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113877. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113878. <stringProp name="HTTPSampler.embedded_url_re"/>
  113879. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  113880. <hashTree>
  113881. <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">
  113882. <stringProp name="VAR">admin_token</stringProp>
  113883. <stringProp name="JSONPATH">$</stringProp>
  113884. <stringProp name="DEFAULT"/>
  113885. <stringProp name="VARIABLE"/>
  113886. <stringProp name="SUBJECT">BODY</stringProp>
  113887. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  113888. <hashTree/>
  113889. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  113890. <collectionProp name="Asserion.test_strings">
  113891. <stringProp name="484395188">^.{10,}$</stringProp>
  113892. </collectionProp>
  113893. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113894. <boolProp name="Assertion.assume_success">false</boolProp>
  113895. <intProp name="Assertion.test_type">1</intProp>
  113896. <stringProp name="Assertion.scope">variable</stringProp>
  113897. <stringProp name="Scope.variable">admin_token</stringProp>
  113898. </ResponseAssertion>
  113899. <hashTree/>
  113900. </hashTree>
  113901. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get simple product" enabled="true">
  113902. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/simple_products_setup.jmx</stringProp>
  113903. <stringProp name="BeanShellSampler.query">
  113904. import java.util.Random;
  113905. Random random = vars.getObject("randomIntGenerator");
  113906. number = random.nextInt(props.get("simple_products_list").size());
  113907. product = props.get("simple_products_list").get(number);
  113908. vars.put("simple_product_id", product.get("id"));
  113909. vars.put("simple_product_sku", product.get("sku"));
  113910. </stringProp>
  113911. <stringProp name="BeanShellSampler.filename"/>
  113912. <stringProp name="BeanShellSampler.parameters"/>
  113913. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  113914. </BeanShellSampler>
  113915. <hashTree/>
  113916. <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Get configurable product" enabled="true">
  113917. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/configurable_products_setup.jmx</stringProp>
  113918. <stringProp name="BeanShellSampler.query">
  113919. import java.util.Random;
  113920. Random random = vars.getObject("randomIntGenerator");
  113921. number = random.nextInt(props.get("configurable_products_list").size());
  113922. product = props.get("simple_products_list").get(number);
  113923. vars.put("configurable_product_id", product.get("id"));
  113924. vars.put("configurable_product_sku", product.get("sku"));
  113925. </stringProp>
  113926. <stringProp name="BeanShellSampler.filename"/>
  113927. <stringProp name="BeanShellSampler.parameters"/>
  113928. <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
  113929. </BeanShellSampler>
  113930. <hashTree/>
  113931. </hashTree>
  113932. </hashTree>
  113933. <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Graphql Query Controller" enabled="true">
  113934. <stringProp name="TestPlan.comments">tool/fragments/ce/simple_controller.jmx</stringProp>
  113935. </GenericController>
  113936. <hashTree>
  113937. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  113938. <collectionProp name="HeaderManager.headers">
  113939. <elementProp name="" elementType="Header">
  113940. <stringProp name="Header.name">Content-Type</stringProp>
  113941. <stringProp name="Header.value">application/json</stringProp>
  113942. </elementProp>
  113943. <elementProp name="" elementType="Header">
  113944. <stringProp name="Header.name">Accept</stringProp>
  113945. <stringProp name="Header.value">*/*</stringProp>
  113946. </elementProp>
  113947. </collectionProp>
  113948. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
  113949. <hashTree/>
  113950. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="SetUp - Admin Token Retrieval" enabled="true">
  113951. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  113952. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  113953. <collectionProp name="Arguments.arguments">
  113954. <elementProp name="" elementType="HTTPArgument">
  113955. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  113956. <stringProp name="Argument.value">{"username":"${admin_user}","password":"${admin_password}"}</stringProp>
  113957. <stringProp name="Argument.metadata">=</stringProp>
  113958. </elementProp>
  113959. </collectionProp>
  113960. </elementProp>
  113961. <stringProp name="HTTPSampler.domain"/>
  113962. <stringProp name="HTTPSampler.port"/>
  113963. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  113964. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  113965. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  113966. <stringProp name="HTTPSampler.contentEncoding"/>
  113967. <stringProp name="HTTPSampler.path">${base_path}rest/V1/integration/admin/token</stringProp>
  113968. <stringProp name="HTTPSampler.method">POST</stringProp>
  113969. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  113970. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  113971. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  113972. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  113973. <boolProp name="HTTPSampler.monitor">false</boolProp>
  113974. <stringProp name="HTTPSampler.embedded_url_re"/>
  113975. <stringProp name="TestPlan.comments">tool/fragments/ce/api/admin_token_retrieval.jmx</stringProp></HTTPSamplerProxy>
  113976. <hashTree>
  113977. <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">
  113978. <stringProp name="VAR">admin_token</stringProp>
  113979. <stringProp name="JSONPATH">$</stringProp>
  113980. <stringProp name="DEFAULT"/>
  113981. <stringProp name="VARIABLE"/>
  113982. <stringProp name="SUBJECT">BODY</stringProp>
  113983. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  113984. <hashTree/>
  113985. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert token not null" enabled="true">
  113986. <collectionProp name="Asserion.test_strings">
  113987. <stringProp name="484395188">^.{10,}$</stringProp>
  113988. </collectionProp>
  113989. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  113990. <boolProp name="Assertion.assume_success">false</boolProp>
  113991. <intProp name="Assertion.test_type">1</intProp>
  113992. <stringProp name="Assertion.scope">variable</stringProp>
  113993. <stringProp name="Scope.variable">admin_token</stringProp>
  113994. </ResponseAssertion>
  113995. <hashTree/>
  113996. </hashTree>
  113997. <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
  113998. <collectionProp name="HeaderManager.headers">
  113999. <elementProp name="" elementType="Header">
  114000. <stringProp name="Header.name">Authorization</stringProp>
  114001. <stringProp name="Header.value">Bearer ${admin_token}</stringProp>
  114002. </elementProp>
  114003. </collectionProp>
  114004. <stringProp name="TestPlan.comments">tool/fragments/ce/api/header_manager.jmx</stringProp></HeaderManager>
  114005. <hashTree/>
  114006. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query multiple products" enabled="true">
  114007. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114008. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114009. <collectionProp name="Arguments.arguments">
  114010. <elementProp name="" elementType="HTTPArgument">
  114011. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114012. <stringProp name="Argument.value">{"query":"{\n products(\n filter: {\n price: {from: \"5\"}\n name:{match:\"Product\"}\n }\n pageSize: 20\n currentPage: 1\n sort: {\n price: ASC\n name:DESC\n }\n ) {\n total_count\n items {\n attribute_set_id\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n short_description {\n html\n }\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n \t... on PhysicalProductInterface {\n \tweight\n \t}\n }\n page_info {\n page_size\n current_page\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  114013. <stringProp name="Argument.metadata">=</stringProp>
  114014. </elementProp>
  114015. </collectionProp>
  114016. </elementProp>
  114017. <stringProp name="HTTPSampler.domain"/>
  114018. <stringProp name="HTTPSampler.port"/>
  114019. <stringProp name="HTTPSampler.connect_timeout"/>
  114020. <stringProp name="HTTPSampler.response_timeout"/>
  114021. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114022. <stringProp name="HTTPSampler.contentEncoding"/>
  114023. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114024. <stringProp name="HTTPSampler.method">POST</stringProp>
  114025. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114026. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114027. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114028. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114029. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114030. <stringProp name="HTTPSampler.embedded_url_re"/>
  114031. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_filter_only.jmx</stringProp>
  114032. </HTTPSamplerProxy>
  114033. <hashTree>
  114034. <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 total_count" enabled="true">
  114035. <stringProp name="VAR">graphql_multiple_products_query_total_count</stringProp>
  114036. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114037. <stringProp name="DEFAULT"/>
  114038. <stringProp name="VARIABLE"/>
  114039. <stringProp name="SUBJECT">BODY</stringProp>
  114040. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114041. <hashTree/>
  114042. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 200" enabled="true">
  114043. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_multiple_products_query_total_count");
  114044. if (totalCount == null) {
  114045. Failure = true;
  114046. FailureMessage = "Not Expected \"totalCount\" to be null";
  114047. } else {
  114048. if (Integer.parseInt(totalCount) &lt; 200) {
  114049. Failure = true;
  114050. FailureMessage = "Expected \"totalCount\" to be greater than 200, Actual: " + totalCount;
  114051. } else {
  114052. Failure = false;
  114053. }
  114054. }
  114055. </stringProp>
  114056. <stringProp name="BeanShellAssertion.filename"/>
  114057. <stringProp name="BeanShellAssertion.parameters"/>
  114058. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114059. </BeanShellAssertion>
  114060. <hashTree/>
  114061. </hashTree>
  114062. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query simple product" enabled="true">
  114063. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114064. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114065. <collectionProp name="Arguments.arguments">
  114066. <elementProp name="" elementType="HTTPArgument">
  114067. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114068. <stringProp name="Argument.value">{"query":"{\n products(filter: {sku: { eq: \"${simple_product_sku}\" } },sort: {name: ASC})\n {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t }\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  114069. <stringProp name="Argument.metadata">=</stringProp>
  114070. </elementProp>
  114071. </collectionProp>
  114072. </elementProp>
  114073. <stringProp name="HTTPSampler.domain"/>
  114074. <stringProp name="HTTPSampler.port"/>
  114075. <stringProp name="HTTPSampler.connect_timeout"/>
  114076. <stringProp name="HTTPSampler.response_timeout"/>
  114077. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114078. <stringProp name="HTTPSampler.contentEncoding"/>
  114079. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114080. <stringProp name="HTTPSampler.method">POST</stringProp>
  114081. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114082. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114083. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114084. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114085. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114086. <stringProp name="HTTPSampler.embedded_url_re"/>
  114087. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_simple_product_with_extensible_data_objects.jmx</stringProp>
  114088. </HTTPSamplerProxy>
  114089. <hashTree>
  114090. <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 total_count" enabled="true">
  114091. <stringProp name="VAR">graphql_simple_products_query_total_count</stringProp>
  114092. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114093. <stringProp name="DEFAULT"/>
  114094. <stringProp name="VARIABLE"/>
  114095. <stringProp name="SUBJECT">BODY</stringProp>
  114096. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114097. <hashTree/>
  114098. <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 response" enabled="true">
  114099. <stringProp name="VAR">graphql_multiple_products_query_response</stringProp>
  114100. <stringProp name="JSONPATH">$</stringProp>
  114101. <stringProp name="DEFAULT"/>
  114102. <stringProp name="VARIABLE"/>
  114103. <stringProp name="SUBJECT">BODY</stringProp>
  114104. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114105. <hashTree/>
  114106. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count = 1" enabled="true">
  114107. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_simple_products_query_total_count");
  114108. if (totalCount == null) {
  114109. Failure = true;
  114110. FailureMessage = "Not Expected \"totalCount\" to be null";
  114111. } else {
  114112. if (Integer.parseInt(totalCount) != 1) {
  114113. Failure = true;
  114114. FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount;
  114115. } else {
  114116. Failure = false;
  114117. }
  114118. }
  114119. </stringProp>
  114120. <stringProp name="BeanShellAssertion.filename"/>
  114121. <stringProp name="BeanShellAssertion.parameters"/>
  114122. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114123. </BeanShellAssertion>
  114124. <hashTree/>
  114125. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert product sku" enabled="true">
  114126. <stringProp name="JSON_PATH">$.data.products.items[0].sku</stringProp>
  114127. <stringProp name="EXPECTED_VALUE">${simple_product_sku}</stringProp>
  114128. <boolProp name="JSONVALIDATION">true</boolProp>
  114129. <boolProp name="EXPECT_NULL">false</boolProp>
  114130. <boolProp name="INVERT">false</boolProp>
  114131. <boolProp name="ISREGEX">true</boolProp>
  114132. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  114133. <hashTree/>
  114134. </hashTree>
  114135. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query configurable product" enabled="true">
  114136. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114137. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114138. <collectionProp name="Arguments.arguments">
  114139. <elementProp name="" elementType="HTTPArgument">
  114140. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114141. <stringProp name="Argument.value">{"query":"{\n products(filter: {sku: {eq:\"${configurable_product_sku}\"} }, sort: {name: ASC}) {\n total_count\n items {\n ... on PhysicalProductInterface {\n weight\n }\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  114142. <stringProp name="Argument.metadata">=</stringProp>
  114143. </elementProp>
  114144. </collectionProp>
  114145. </elementProp>
  114146. <stringProp name="HTTPSampler.domain"/>
  114147. <stringProp name="HTTPSampler.port"/>
  114148. <stringProp name="HTTPSampler.connect_timeout"/>
  114149. <stringProp name="HTTPSampler.response_timeout"/>
  114150. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114151. <stringProp name="HTTPSampler.contentEncoding"/>
  114152. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114153. <stringProp name="HTTPSampler.method">POST</stringProp>
  114154. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114155. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114156. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114157. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114158. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114159. <stringProp name="HTTPSampler.embedded_url_re"/>
  114160. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_configurable_product_with_extensible_data_objects.jmx</stringProp>
  114161. </HTTPSamplerProxy>
  114162. <hashTree>
  114163. <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 total_count" enabled="true">
  114164. <stringProp name="VAR">graphql_configurable_products_query_total_count</stringProp>
  114165. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114166. <stringProp name="DEFAULT"/>
  114167. <stringProp name="VARIABLE"/>
  114168. <stringProp name="SUBJECT">BODY</stringProp>
  114169. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114170. <hashTree/>
  114171. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count = 1" enabled="true">
  114172. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_configurable_products_query_total_count");
  114173. if (totalCount == null) {
  114174. Failure = true;
  114175. FailureMessage = "Not Expected \"totalCount\" to be null";
  114176. } else {
  114177. if (Integer.parseInt(totalCount) != 1) {
  114178. Failure = true;
  114179. FailureMessage = "Expected \"totalCount\" to be equal to 1, Actual: " + totalCount;
  114180. } else {
  114181. Failure = false;
  114182. }
  114183. }
  114184. </stringProp>
  114185. <stringProp name="BeanShellAssertion.filename"/>
  114186. <stringProp name="BeanShellAssertion.parameters"/>
  114187. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114188. </BeanShellAssertion>
  114189. <hashTree/>
  114190. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert configurable product sku" enabled="true">
  114191. <stringProp name="JSON_PATH">$.data.products.items[0].sku</stringProp>
  114192. <stringProp name="EXPECTED_VALUE">${configurable_product_sku}</stringProp>
  114193. <boolProp name="JSONVALIDATION">true</boolProp>
  114194. <boolProp name="EXPECT_NULL">false</boolProp>
  114195. <boolProp name="INVERT">false</boolProp>
  114196. <boolProp name="ISREGEX">true</boolProp>
  114197. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  114198. <hashTree/>
  114199. </hashTree>
  114200. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query products with full text search and filter" enabled="true">
  114201. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114202. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114203. <collectionProp name="Arguments.arguments">
  114204. <elementProp name="" elementType="HTTPArgument">
  114205. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114206. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"configurable\"\n filter: {name: {match: \"Configurable Product\"} }\n sort: {name: ASC}\n ) {\n total_count\n page_info {\n current_page\n page_size\n total_pages\n }\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  114207. <stringProp name="Argument.metadata">=</stringProp>
  114208. </elementProp>
  114209. </collectionProp>
  114210. </elementProp>
  114211. <stringProp name="HTTPSampler.domain"/>
  114212. <stringProp name="HTTPSampler.port"/>
  114213. <stringProp name="HTTPSampler.connect_timeout"/>
  114214. <stringProp name="HTTPSampler.response_timeout"/>
  114215. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114216. <stringProp name="HTTPSampler.contentEncoding"/>
  114217. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114218. <stringProp name="HTTPSampler.method">POST</stringProp>
  114219. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114220. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114221. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114222. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114223. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114224. <stringProp name="HTTPSampler.embedded_url_re"/>
  114225. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_filter.jmx</stringProp>
  114226. </HTTPSamplerProxy>
  114227. <hashTree>
  114228. <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 total_count" enabled="true">
  114229. <stringProp name="VAR">graphql_search_products_query_total_count_fulltext_filter</stringProp>
  114230. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114231. <stringProp name="DEFAULT"/>
  114232. <stringProp name="VARIABLE"/>
  114233. <stringProp name="SUBJECT">BODY</stringProp>
  114234. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114235. <hashTree/>
  114236. <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 total_pages" enabled="true">
  114237. <stringProp name="VAR">graphql_search_products_query_total_pages_fulltext_filter</stringProp>
  114238. <stringProp name="JSONPATH">$.data.products.page_info.total_pages</stringProp>
  114239. <stringProp name="DEFAULT"/>
  114240. <stringProp name="VARIABLE"/>
  114241. <stringProp name="SUBJECT">BODY</stringProp>
  114242. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114243. <hashTree/>
  114244. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  114245. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count_fulltext_filter");
  114246. if (totalCount == null) {
  114247. Failure = true;
  114248. FailureMessage = "Not Expected \"totalCount\" to be null";
  114249. } else {
  114250. if (Integer.parseInt(totalCount) &lt; 1) {
  114251. Failure = true;
  114252. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  114253. } else {
  114254. Failure = false;
  114255. }
  114256. }
  114257. </stringProp>
  114258. <stringProp name="BeanShellAssertion.filename"/>
  114259. <stringProp name="BeanShellAssertion.parameters"/>
  114260. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114261. </BeanShellAssertion>
  114262. <hashTree/>
  114263. </hashTree>
  114264. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query products with full text search and filter last page" enabled="true">
  114265. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114266. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114267. <collectionProp name="Arguments.arguments">
  114268. <elementProp name="" elementType="HTTPArgument">
  114269. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114270. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n currentPage:${graphql_search_products_query_total_pages_fulltext_filter}\n search: \"configurable\"\n filter: {name: {match: \"Configurable Product\"} }\n sort: {name: ASC}\n ) {\n total_count\n page_info {\n current_page\n page_size\n total_pages\n }\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  114271. <stringProp name="Argument.metadata">=</stringProp>
  114272. </elementProp>
  114273. </collectionProp>
  114274. </elementProp>
  114275. <stringProp name="HTTPSampler.domain"/>
  114276. <stringProp name="HTTPSampler.port"/>
  114277. <stringProp name="HTTPSampler.connect_timeout"/>
  114278. <stringProp name="HTTPSampler.response_timeout"/>
  114279. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114280. <stringProp name="HTTPSampler.contentEncoding"/>
  114281. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114282. <stringProp name="HTTPSampler.method">POST</stringProp>
  114283. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114284. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114285. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114286. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114287. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114288. <stringProp name="HTTPSampler.embedded_url_re"/>
  114289. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_filter_last_page.jmx</stringProp>
  114290. </HTTPSamplerProxy>
  114291. <hashTree>
  114292. <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 total_count" enabled="true">
  114293. <stringProp name="VAR">graphql_search_products_query_total_count_fulltext_filter</stringProp>
  114294. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114295. <stringProp name="DEFAULT"/>
  114296. <stringProp name="VARIABLE"/>
  114297. <stringProp name="SUBJECT">BODY</stringProp>
  114298. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114299. <hashTree/>
  114300. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  114301. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count_fulltext_filter");
  114302. if (totalCount == null) {
  114303. Failure = true;
  114304. FailureMessage = "Not Expected \"totalCount\" to be null";
  114305. } else {
  114306. if (Integer.parseInt(totalCount) &lt; 1) {
  114307. Failure = true;
  114308. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  114309. } else {
  114310. Failure = false;
  114311. }
  114312. }
  114313. </stringProp>
  114314. <stringProp name="BeanShellAssertion.filename"/>
  114315. <stringProp name="BeanShellAssertion.parameters"/>
  114316. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114317. </BeanShellAssertion>
  114318. <hashTree/>
  114319. </hashTree>
  114320. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query products with full text search only" enabled="true">
  114321. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114322. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114323. <collectionProp name="Arguments.arguments">
  114324. <elementProp name="" elementType="HTTPArgument">
  114325. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114326. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"configurable\"\n sort: {name: ASC}) {\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n \t\t\tweight\n \t\t\t}\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}\n","variables":null,"operationName":null}</stringProp>
  114327. <stringProp name="Argument.metadata">=</stringProp>
  114328. </elementProp>
  114329. </collectionProp>
  114330. </elementProp>
  114331. <stringProp name="HTTPSampler.domain"/>
  114332. <stringProp name="HTTPSampler.port"/>
  114333. <stringProp name="HTTPSampler.connect_timeout"/>
  114334. <stringProp name="HTTPSampler.response_timeout"/>
  114335. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114336. <stringProp name="HTTPSampler.contentEncoding"/>
  114337. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114338. <stringProp name="HTTPSampler.method">POST</stringProp>
  114339. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114340. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114341. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114342. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114343. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114344. <stringProp name="HTTPSampler.embedded_url_re"/>
  114345. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_only.jmx</stringProp>
  114346. </HTTPSamplerProxy>
  114347. <hashTree>
  114348. <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 total_count" enabled="true">
  114349. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  114350. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114351. <stringProp name="DEFAULT"/>
  114352. <stringProp name="VARIABLE"/>
  114353. <stringProp name="SUBJECT">BODY</stringProp>
  114354. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114355. <hashTree/>
  114356. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  114357. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  114358. if (totalCount == null) {
  114359. Failure = true;
  114360. FailureMessage = "Not Expected \"totalCount\" to be null";
  114361. } else {
  114362. if (Integer.parseInt(totalCount) &lt; 1) {
  114363. Failure = true;
  114364. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  114365. } else {
  114366. Failure = false;
  114367. }
  114368. }
  114369. </stringProp>
  114370. <stringProp name="BeanShellAssertion.filename"/>
  114371. <stringProp name="BeanShellAssertion.parameters"/>
  114372. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114373. </BeanShellAssertion>
  114374. <hashTree/>
  114375. </hashTree>
  114376. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query products with full text search and filters" enabled="true">
  114377. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114378. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114379. <collectionProp name="Arguments.arguments">
  114380. <elementProp name="" elementType="HTTPArgument">
  114381. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114382. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"Option 1\"\n sort: {name: ASC}) {\n filters {\n name\n filter_items_count\n request_var\n filter_items {\n label\n value_string\n items_count\n ... on SwatchLayerFilterItemInterface {\n swatch_data {\n type\n value\n }\n }\n }\n }\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n weight\n }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  114383. <stringProp name="Argument.metadata">=</stringProp>
  114384. </elementProp>
  114385. </collectionProp>
  114386. </elementProp>
  114387. <stringProp name="HTTPSampler.domain"/>
  114388. <stringProp name="HTTPSampler.port"/>
  114389. <stringProp name="HTTPSampler.connect_timeout"/>
  114390. <stringProp name="HTTPSampler.response_timeout"/>
  114391. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114392. <stringProp name="HTTPSampler.contentEncoding"/>
  114393. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114394. <stringProp name="HTTPSampler.method">POST</stringProp>
  114395. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114396. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114397. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114398. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114399. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114400. <stringProp name="HTTPSampler.embedded_url_re"/>
  114401. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_filters.jmx</stringProp>
  114402. </HTTPSamplerProxy>
  114403. <hashTree>
  114404. <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 total_count" enabled="true">
  114405. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  114406. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114407. <stringProp name="DEFAULT"/>
  114408. <stringProp name="VARIABLE"/>
  114409. <stringProp name="SUBJECT">BODY</stringProp>
  114410. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114411. <hashTree/>
  114412. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  114413. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  114414. if (totalCount == null) {
  114415. Failure = true;
  114416. FailureMessage = "Not Expected \"totalCount\" to be null";
  114417. } else {
  114418. if (Integer.parseInt(totalCount) &lt; 1) {
  114419. Failure = true;
  114420. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  114421. } else {
  114422. Failure = false;
  114423. }
  114424. }
  114425. </stringProp>
  114426. <stringProp name="BeanShellAssertion.filename"/>
  114427. <stringProp name="BeanShellAssertion.parameters"/>
  114428. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114429. </BeanShellAssertion>
  114430. <hashTree/>
  114431. </hashTree>
  114432. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query products with full text search and aggregations" enabled="true">
  114433. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114434. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114435. <collectionProp name="Arguments.arguments">
  114436. <elementProp name="" elementType="HTTPArgument">
  114437. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114438. <stringProp name="Argument.value">{"query":"{\n products(\n pageSize:20\n currentPage:1\n search: \"Option 1\"\n sort: {name: ASC}) {\n aggregations{\n attribute_code\n count\n label\n options{\n count\n label\n value\n }\n }\n total_count\n items {\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n ... on PhysicalProductInterface {\n weight\n }\n ... on ConfigurableProduct {\n configurable_options {\n id\n attribute_id\n label\n position\n use_default\n attribute_code\n values {\n value_index\n label\n store_label\n default_label\n use_default_value\n }\n product_id\n }\n variants {\n product {\n ... on PhysicalProductInterface {\n weight\n }\n sku\n color\n attribute_set_id\n categories\n {\n id\n position\n }\n country_of_manufacture\n created_at\n description {\n html\n }\n gift_message_available\n id\n image\n {\n url\n label\n }\n meta_description\n meta_keyword\n meta_title\n media_gallery_entries\n {\n disabled\n file\n id\n label\n media_type\n position\n types\n content\n {\n base64_encoded_data\n type\n name\n }\n video_content\n {\n media_type\n video_description\n video_metadata\n video_provider\n video_title\n video_url\n }\n }\n name\n new_from_date\n new_to_date\n options_container\n ... on CustomizableProductInterface {\n options\n {\n title\n required\n sort_order\n }\n }\n \n price {\n minimalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n maximalPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n regularPrice {\n amount {\n value\n currency\n }\n adjustments {\n amount {\n value\n currency\n }\n code\n description\n }\n }\n }\n product_links\n {\n link_type\n linked_product_sku\n linked_product_type\n position\n sku\n }\n short_description {\n html\n }\n sku\n small_image\n {\n url\n label\n }\n special_from_date\n special_price\n special_to_date\n swatch_image\n thumbnail\n {\n url\n label\n }\n tier_price\n tier_prices\n {\n customer_group_id\n percentage_value\n qty\n value\n website_id\n }\n type_id\n updated_at\n url_key\n url_path\n websites { id name code sort_order default_group_id is_default }\n\n\n }\n attributes {\n label\n code\n value_index\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  114439. <stringProp name="Argument.metadata">=</stringProp>
  114440. </elementProp>
  114441. </collectionProp>
  114442. </elementProp>
  114443. <stringProp name="HTTPSampler.domain"/>
  114444. <stringProp name="HTTPSampler.port"/>
  114445. <stringProp name="HTTPSampler.connect_timeout"/>
  114446. <stringProp name="HTTPSampler.response_timeout"/>
  114447. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114448. <stringProp name="HTTPSampler.contentEncoding"/>
  114449. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114450. <stringProp name="HTTPSampler.method">POST</stringProp>
  114451. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114452. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114453. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114454. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114455. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114456. <stringProp name="HTTPSampler.embedded_url_re"/>
  114457. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_multiple_products_with_extensible_data_objects_using_full_text_and_aggregations.jmx</stringProp>
  114458. </HTTPSamplerProxy>
  114459. <hashTree>
  114460. <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 total_count" enabled="true">
  114461. <stringProp name="VAR">graphql_search_products_query_total_count</stringProp>
  114462. <stringProp name="JSONPATH">$.data.products.total_count</stringProp>
  114463. <stringProp name="DEFAULT"/>
  114464. <stringProp name="VARIABLE"/>
  114465. <stringProp name="SUBJECT">BODY</stringProp>
  114466. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114467. <hashTree/>
  114468. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="Assert total count &gt; 0" enabled="true">
  114469. <stringProp name="BeanShellAssertion.query">String totalCount=vars.get("graphql_search_products_query_total_count");
  114470. if (totalCount == null) {
  114471. Failure = true;
  114472. FailureMessage = "Not Expected \"totalCount\" to be null";
  114473. } else {
  114474. if (Integer.parseInt(totalCount) &lt; 1) {
  114475. Failure = true;
  114476. FailureMessage = "Expected \"totalCount\" to be greater than zero, Actual: " + totalCount;
  114477. } else {
  114478. Failure = false;
  114479. }
  114480. }
  114481. </stringProp>
  114482. <stringProp name="BeanShellAssertion.filename"/>
  114483. <stringProp name="BeanShellAssertion.parameters"/>
  114484. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114485. </BeanShellAssertion>
  114486. <hashTree/>
  114487. </hashTree>
  114488. <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Query Customer" enabled="true"/>
  114489. <hashTree>
  114490. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create customer" enabled="true">
  114491. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114492. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114493. <collectionProp name="Arguments.arguments">
  114494. <elementProp name="" elementType="HTTPArgument">
  114495. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114496. <stringProp name="Argument.value">{&#xD;
  114497. "customer": {&#xD;
  114498. &#xD;
  114499. "email": "customer_${__time()}-${__threadNum}-${__Random(1,1000000)}@example.com",&#xD;
  114500. "firstname": "test_${__time()}-${__threadNum}-${__Random(1,1000000)}",&#xD;
  114501. "lastname": "Doe"&#xD;
  114502. },&#xD;
  114503. "password": "test@123"&#xD;
  114504. }</stringProp>
  114505. <stringProp name="Argument.metadata">=</stringProp>
  114506. </elementProp>
  114507. </collectionProp>
  114508. </elementProp>
  114509. <stringProp name="HTTPSampler.domain"/>
  114510. <stringProp name="HTTPSampler.port"/>
  114511. <stringProp name="HTTPSampler.connect_timeout"/>
  114512. <stringProp name="HTTPSampler.response_timeout"/>
  114513. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114514. <stringProp name="HTTPSampler.contentEncoding"/>
  114515. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers</stringProp>
  114516. <stringProp name="HTTPSampler.method">POST</stringProp>
  114517. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114518. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114519. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114520. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114521. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114522. <stringProp name="HTTPSampler.embedded_url_re"/>
  114523. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_frontend_customer.jmx</stringProp>
  114524. </HTTPSamplerProxy>
  114525. <hashTree>
  114526. <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 customer id" enabled="true">
  114527. <stringProp name="VAR">customer_id</stringProp>
  114528. <stringProp name="JSONPATH">$.id</stringProp>
  114529. <stringProp name="DEFAULT"/>
  114530. <stringProp name="VARIABLE"/>
  114531. <stringProp name="SUBJECT">BODY</stringProp>
  114532. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114533. <hashTree/>
  114534. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert customer id not null" enabled="true">
  114535. <collectionProp name="Asserion.test_strings">
  114536. <stringProp name="89649215">^\d+$</stringProp>
  114537. </collectionProp>
  114538. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  114539. <boolProp name="Assertion.assume_success">false</boolProp>
  114540. <intProp name="Assertion.test_type">1</intProp>
  114541. <stringProp name="Assertion.scope">variable</stringProp>
  114542. <stringProp name="Scope.variable">customer_id</stringProp>
  114543. </ResponseAssertion>
  114544. <hashTree/>
  114545. </hashTree>
  114546. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Check customer" enabled="true">
  114547. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  114548. <collectionProp name="Arguments.arguments"/>
  114549. </elementProp>
  114550. <stringProp name="HTTPSampler.domain"/>
  114551. <stringProp name="HTTPSampler.port"/>
  114552. <stringProp name="HTTPSampler.connect_timeout"/>
  114553. <stringProp name="HTTPSampler.response_timeout"/>
  114554. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114555. <stringProp name="HTTPSampler.contentEncoding"/>
  114556. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/customers/${customer_id}</stringProp>
  114557. <stringProp name="HTTPSampler.method">GET</stringProp>
  114558. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114559. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114560. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114561. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114562. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114563. <stringProp name="HTTPSampler.embedded_url_re"/>
  114564. <stringProp name="TestPlan.comments">tool/fragments/ce/api/check_customer.jmx</stringProp>
  114565. </HTTPSamplerProxy>
  114566. <hashTree>
  114567. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  114568. <stringProp name="JSON_PATH">$.id</stringProp>
  114569. <stringProp name="EXPECTED_VALUE">${customer_id}</stringProp>
  114570. <boolProp name="JSONVALIDATION">true</boolProp>
  114571. <boolProp name="EXPECT_NULL">false</boolProp>
  114572. <boolProp name="INVERT">false</boolProp>
  114573. <boolProp name="ISREGEX">true</boolProp>
  114574. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  114575. <hashTree/>
  114576. <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 customer email" enabled="true">
  114577. <stringProp name="VAR">customer_email</stringProp>
  114578. <stringProp name="JSONPATH">$.email</stringProp>
  114579. <stringProp name="DEFAULT"/>
  114580. <stringProp name="VARIABLE"/>
  114581. <stringProp name="SUBJECT">BODY</stringProp>
  114582. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114583. <hashTree/>
  114584. </hashTree>
  114585. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create customer token" enabled="true">
  114586. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114587. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114588. <collectionProp name="Arguments.arguments">
  114589. <elementProp name="" elementType="HTTPArgument">
  114590. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114591. <stringProp name="Argument.value">{&#xD;
  114592. "username":"${customer_email}",&#xD;
  114593. "password":"test@123"&#xD;
  114594. }&#xD;
  114595. </stringProp>
  114596. <stringProp name="Argument.metadata">=</stringProp>
  114597. </elementProp>
  114598. </collectionProp>
  114599. </elementProp>
  114600. <stringProp name="HTTPSampler.domain"/>
  114601. <stringProp name="HTTPSampler.port"/>
  114602. <stringProp name="HTTPSampler.connect_timeout"/>
  114603. <stringProp name="HTTPSampler.response_timeout"/>
  114604. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114605. <stringProp name="HTTPSampler.contentEncoding"/>
  114606. <stringProp name="HTTPSampler.path">${base_path}rest/default/V1/integration/customer/token</stringProp>
  114607. <stringProp name="HTTPSampler.method">POST</stringProp>
  114608. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114609. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114610. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114611. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114612. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114613. <stringProp name="HTTPSampler.embedded_url_re"/>
  114614. <stringProp name="TestPlan.comments">tool/fragments/ce/api/create_customer.jmx</stringProp>
  114615. </HTTPSamplerProxy>
  114616. <hashTree>
  114617. <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 customer token" enabled="true">
  114618. <stringProp name="VAR">customer_token</stringProp>
  114619. <stringProp name="JSONPATH">$</stringProp>
  114620. <stringProp name="DEFAULT"/>
  114621. <stringProp name="VARIABLE"/>
  114622. <stringProp name="SUBJECT">BODY</stringProp>
  114623. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114624. <hashTree/>
  114625. </hashTree>
  114626. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query customer with token" enabled="true">
  114627. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114628. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114629. <collectionProp name="Arguments.arguments">
  114630. <elementProp name="" elementType="HTTPArgument">
  114631. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114632. <stringProp name="Argument.value">{"query":"{\n customer {\n created_at\n group_id\n\n prefix\n firstname\n middlename\n lastname\n suffix\n email\n default_billing\n default_shipping\n\n dob\n taxvat\n\n id\n addresses {\n id\n customer_id\n region {\n region_code\n region\n region_id\n }\n region_id\n country_id\n street \n company\n telephone\n fax\n postcode\n city\n firstname\n lastname\n middlename\n prefix\n suffix\n vat_id\n default_shipping\n default_billing\n }\n is_subscribed\n }\n}","variables":null,"operationName":null}</stringProp>
  114633. <stringProp name="Argument.metadata">=</stringProp>
  114634. </elementProp>
  114635. </collectionProp>
  114636. </elementProp>
  114637. <stringProp name="HTTPSampler.domain"/>
  114638. <stringProp name="HTTPSampler.port"/>
  114639. <stringProp name="HTTPSampler.connect_timeout"/>
  114640. <stringProp name="HTTPSampler.response_timeout"/>
  114641. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114642. <stringProp name="HTTPSampler.contentEncoding"/>
  114643. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114644. <stringProp name="HTTPSampler.method">POST</stringProp>
  114645. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114646. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114647. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114648. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114649. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114650. <stringProp name="HTTPSampler.embedded_url_re"/>
  114651. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_frontend_customer.jmx</stringProp>
  114652. </HTTPSamplerProxy>
  114653. <hashTree>
  114654. <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="Set Customer Token" enabled="true">
  114655. <boolProp name="resetInterpreter">false</boolProp>
  114656. <stringProp name="parameters"/>
  114657. <stringProp name="filename"/>
  114658. <stringProp name="script">import org.apache.jmeter.protocol.http.control.Header;
  114659. sampler.getHeaderManager().removeHeaderNamed("Authorization");
  114660. sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("customer_token")));</stringProp>
  114661. </BeanShellPreProcessor>
  114662. <hashTree/>
  114663. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="Assert customer lastname" enabled="true">
  114664. <stringProp name="JSON_PATH">$.data.customer.lastname</stringProp>
  114665. <stringProp name="EXPECTED_VALUE">Doe</stringProp>
  114666. <boolProp name="JSONVALIDATION">true</boolProp>
  114667. <boolProp name="EXPECT_NULL">false</boolProp>
  114668. <boolProp name="INVERT">false</boolProp>
  114669. <boolProp name="ISREGEX">true</boolProp>
  114670. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  114671. <hashTree/>
  114672. </hashTree>
  114673. </hashTree>
  114674. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query Category" enabled="true">
  114675. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114676. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114677. <collectionProp name="Arguments.arguments">
  114678. <elementProp name="" elementType="HTTPArgument">
  114679. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114680. <stringProp name="Argument.value">{"query":"{\n category(id: 1) {\n name\n id\n level\n description\n path\n path_in_store\n url_key\n url_path\n children {\n id\n description\n default_sort_by\n children {\n id\n description\n level\n children {\n level\n id\n children {\n id\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  114681. <stringProp name="Argument.metadata">=</stringProp>
  114682. </elementProp>
  114683. </collectionProp>
  114684. </elementProp>
  114685. <stringProp name="HTTPSampler.domain"/>
  114686. <stringProp name="HTTPSampler.port"/>
  114687. <stringProp name="HTTPSampler.connect_timeout"/>
  114688. <stringProp name="HTTPSampler.response_timeout"/>
  114689. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114690. <stringProp name="HTTPSampler.contentEncoding"/>
  114691. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114692. <stringProp name="HTTPSampler.method">POST</stringProp>
  114693. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114694. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114695. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114696. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114697. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114698. <stringProp name="HTTPSampler.embedded_url_re"/>
  114699. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_root_category.jmx</stringProp>
  114700. </HTTPSamplerProxy>
  114701. <hashTree>
  114702. <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 total_count" enabled="true">
  114703. <stringProp name="VAR">graphql_category_query_name</stringProp>
  114704. <stringProp name="JSONPATH">$.data.category.name</stringProp>
  114705. <stringProp name="DEFAULT"/>
  114706. <stringProp name="VARIABLE"/>
  114707. <stringProp name="SUBJECT">BODY</stringProp>
  114708. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114709. <hashTree/>
  114710. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
  114711. <stringProp name="BeanShellAssertion.query">String name = vars.get("graphql_category_query_name");
  114712. if (name == null) {
  114713. Failure = true;
  114714. FailureMessage = "Not Expected \"children\" to be null";
  114715. } else {
  114716. if (!name.equals("Root Catalog")) {
  114717. Failure = true;
  114718. FailureMessage = "Expected \"name\" to equal \"Root Catalog\", Actual: " + name;
  114719. } else {
  114720. Failure = false;
  114721. }
  114722. }
  114723. </stringProp>
  114724. <stringProp name="BeanShellAssertion.filename"/>
  114725. <stringProp name="BeanShellAssertion.parameters"/>
  114726. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114727. </BeanShellAssertion>
  114728. <hashTree/>
  114729. </hashTree>
  114730. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Query CategoryList" enabled="true">
  114731. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114732. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114733. <collectionProp name="Arguments.arguments">
  114734. <elementProp name="" elementType="HTTPArgument">
  114735. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114736. <stringProp name="Argument.value">{"query":"{\n categoryList{\n name\n id\n level\n description\n path\n path_in_store\n url_key\n url_path\n children {\n id\n description\n default_sort_by\n children {\n id\n description\n level\n children {\n level\n id\n children {\n id\n }\n }\n }\n }\n }\n}","variables":null,"operationName":null}</stringProp>
  114737. <stringProp name="Argument.metadata">=</stringProp>
  114738. </elementProp>
  114739. </collectionProp>
  114740. </elementProp>
  114741. <stringProp name="HTTPSampler.domain"/>
  114742. <stringProp name="HTTPSampler.port"/>
  114743. <stringProp name="HTTPSampler.connect_timeout"/>
  114744. <stringProp name="HTTPSampler.response_timeout"/>
  114745. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114746. <stringProp name="HTTPSampler.contentEncoding"/>
  114747. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114748. <stringProp name="HTTPSampler.method">POST</stringProp>
  114749. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114750. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114751. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114752. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114753. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114754. <stringProp name="HTTPSampler.embedded_url_re"/>
  114755. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/query_root_category_list.jmx</stringProp>
  114756. </HTTPSamplerProxy>
  114757. <hashTree>
  114758. <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 total_count" enabled="true">
  114759. <stringProp name="VAR">graphql_categoryList_query_name</stringProp>
  114760. <stringProp name="JSONPATH">$.data.categoryList[0].name</stringProp>
  114761. <stringProp name="DEFAULT"/>
  114762. <stringProp name="VARIABLE"/>
  114763. <stringProp name="SUBJECT">BODY</stringProp>
  114764. <stringProp name="INPUT_FORMAT">JSON</stringProp>
  114765. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor>
  114766. <hashTree/>
  114767. <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
  114768. <stringProp name="BeanShellAssertion.query">String name = vars.get("graphql_categoryList_query_name");
  114769. if (name == null) {
  114770. Failure = true;
  114771. FailureMessage = "Not Expected \"children\" to be null";
  114772. } else {
  114773. if (!name.equals("Default Category")) {
  114774. Failure = true;
  114775. FailureMessage = "Expected \"name\" to equal \"Default Category\", Actual: " + name;
  114776. } else {
  114777. Failure = false;
  114778. }
  114779. }
  114780. </stringProp>
  114781. <stringProp name="BeanShellAssertion.filename"/>
  114782. <stringProp name="BeanShellAssertion.parameters"/>
  114783. <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
  114784. </BeanShellAssertion>
  114785. <hashTree/>
  114786. </hashTree>
  114787. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Cms Page by id" enabled="true">
  114788. <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
  114789. <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
  114790. <collectionProp name="Arguments.arguments">
  114791. <elementProp name="" elementType="HTTPArgument">
  114792. <boolProp name="HTTPArgument.always_encode">false</boolProp>
  114793. <stringProp name="Argument.value">
  114794. {"query":"query getCmsPage($id: Int!, $onServer: Boolean!) {\n cmsPage(id: $id) {\n url_key\n content\n content_heading\n title\n page_layout\n meta_title @include(if: $onServer)\n meta_keywords @include(if: $onServer)\n meta_description @include(if: $onServer)\n }\n}","variables":{"id":${cms_page_id},"onServer":false},"operationName":"getCmsPage"}
  114795. </stringProp>
  114796. <stringProp name="Argument.metadata">=</stringProp>
  114797. </elementProp>
  114798. </collectionProp>
  114799. </elementProp>
  114800. <stringProp name="HTTPSampler.domain"/>
  114801. <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
  114802. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  114803. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  114804. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114805. <stringProp name="HTTPSampler.contentEncoding"/>
  114806. <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
  114807. <stringProp name="HTTPSampler.method">POST</stringProp>
  114808. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114809. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114810. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114811. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114812. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114813. <stringProp name="HTTPSampler.embedded_url_re"/>
  114814. <stringProp name="TestPlan.comments">tool/fragments/ce/graphql/get_get_cms_page_by_id.jmx</stringProp></HTTPSamplerProxy>
  114815. <hashTree>
  114816. <com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion guiclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.gui.JSONPathAssertionGui" testclass="com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion" testname="jp@gc - JSON Path Assertion" enabled="true">
  114817. <stringProp name="JSON_PATH">$.data.cmsPage.url_key</stringProp>
  114818. <stringProp name="EXPECTED_VALUE">${cms_page_id}</stringProp>
  114819. <boolProp name="JSONVALIDATION">false</boolProp>
  114820. <boolProp name="EXPECT_NULL">false</boolProp>
  114821. <boolProp name="INVERT">false</boolProp>
  114822. <boolProp name="ISREGEX">false</boolProp>
  114823. </com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion.JSONPathAssertion>
  114824. <hashTree/>
  114825. </hashTree>
  114826. </hashTree>
  114827. </hashTree>
  114828. </hashTree>
  114829. <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="tearDown Thread Group" enabled="true">
  114830. <stringProp name="ThreadGroup.on_sample_error">stoptest</stringProp>
  114831. <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
  114832. <boolProp name="LoopController.continue_forever">false</boolProp>
  114833. <stringProp name="LoopController.loops">1</stringProp>
  114834. </elementProp>
  114835. <stringProp name="ThreadGroup.num_threads">1</stringProp>
  114836. <stringProp name="ThreadGroup.ramp_time">1</stringProp>
  114837. <longProp name="ThreadGroup.start_time">1395324075000</longProp>
  114838. <longProp name="ThreadGroup.end_time">1395324075000</longProp>
  114839. <boolProp name="ThreadGroup.scheduler">false</boolProp>
  114840. <stringProp name="ThreadGroup.duration"/>
  114841. <stringProp name="ThreadGroup.delay"/>
  114842. <stringProp name="TestPlan.comments">tool/fragments/ce/tear_down.jmx</stringProp></PostThreadGroup>
  114843. <hashTree>
  114844. <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller: Dashboard enabled?" enabled="true">
  114845. <stringProp name="IfController.condition">"${dashboard_enabled}" == "1"</stringProp>
  114846. <boolProp name="IfController.evaluateAll">false</boolProp>
  114847. </IfController>
  114848. <hashTree>
  114849. <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Trigger End Event" enabled="true">
  114850. <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
  114851. <collectionProp name="Arguments.arguments">
  114852. <elementProp name="environment" elementType="HTTPArgument">
  114853. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  114854. <stringProp name="Argument.value">${__property(environment)}</stringProp>
  114855. <stringProp name="Argument.metadata">=</stringProp>
  114856. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  114857. <stringProp name="Argument.name">environment</stringProp>
  114858. </elementProp>
  114859. <elementProp name="startTime" elementType="HTTPArgument">
  114860. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  114861. <stringProp name="Argument.value">${start_time}</stringProp>
  114862. <stringProp name="Argument.metadata">=</stringProp>
  114863. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  114864. <stringProp name="Argument.name">startTime</stringProp>
  114865. </elementProp>
  114866. <elementProp name="endTime" elementType="HTTPArgument">
  114867. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  114868. <stringProp name="Argument.value">${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)}</stringProp>
  114869. <stringProp name="Argument.metadata">=</stringProp>
  114870. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  114871. <stringProp name="Argument.name">endTime</stringProp>
  114872. </elementProp>
  114873. <elementProp name="stats_server" elementType="HTTPArgument">
  114874. <boolProp name="HTTPArgument.always_encode">true</boolProp>
  114875. <stringProp name="Argument.value">${redis_host}</stringProp>
  114876. <stringProp name="Argument.metadata">=</stringProp>
  114877. <boolProp name="HTTPArgument.use_equals">true</boolProp>
  114878. <stringProp name="Argument.name">stats_server</stringProp>
  114879. </elementProp>
  114880. </collectionProp>
  114881. </elementProp>
  114882. <stringProp name="HTTPSampler.domain"/>
  114883. <stringProp name="HTTPSampler.port"/>
  114884. <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
  114885. <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
  114886. <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
  114887. <stringProp name="HTTPSampler.contentEncoding"/>
  114888. <stringProp name="HTTPSampler.path">${base_path}DeploymentEvent.php</stringProp>
  114889. <stringProp name="HTTPSampler.method">POST</stringProp>
  114890. <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
  114891. <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
  114892. <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
  114893. <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
  114894. <boolProp name="HTTPSampler.monitor">false</boolProp>
  114895. <stringProp name="HTTPSampler.embedded_url_re"/>
  114896. </HTTPSamplerProxy>
  114897. <hashTree/>
  114898. <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Assert curl call was successful" enabled="true">
  114899. <collectionProp name="Asserion.test_strings">
  114900. <stringProp name="185669135">Errors:</stringProp>
  114901. </collectionProp>
  114902. <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
  114903. <boolProp name="Assertion.assume_success">false</boolProp>
  114904. <intProp name="Assertion.test_type">6</intProp>
  114905. </ResponseAssertion>
  114906. <hashTree/>
  114907. </hashTree>
  114908. <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
  114909. <collectionProp name="CookieManager.cookies">
  114910. <elementProp name="product_list_limit" elementType="Cookie" testname="product_list_limit">
  114911. <stringProp name="Cookie.value">30</stringProp>
  114912. <stringProp name="Cookie.domain">${host}</stringProp>
  114913. <stringProp name="Cookie.path">/</stringProp>
  114914. <boolProp name="Cookie.secure">false</boolProp>
  114915. <longProp name="Cookie.expires">0</longProp>
  114916. <boolProp name="Cookie.path_specified">true</boolProp>
  114917. <boolProp name="Cookie.domain_specified">true</boolProp>
  114918. </elementProp>
  114919. </collectionProp>
  114920. <boolProp name="CookieManager.clearEachIteration">true</boolProp>
  114921. </CookieManager>
  114922. <hashTree/>
  114923. </hashTree>
  114924. <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="false">
  114925. <boolProp name="ResultCollector.error_logging">false</boolProp>
  114926. <objProp>
  114927. <name>saveConfig</name>
  114928. <value class="SampleSaveConfiguration">
  114929. <time>true</time>
  114930. <latency>true</latency>
  114931. <timestamp>true</timestamp>
  114932. <success>true</success>
  114933. <label>true</label>
  114934. <code>true</code>
  114935. <message>true</message>
  114936. <threadName>true</threadName>
  114937. <dataType>true</dataType>
  114938. <encoding>false</encoding>
  114939. <assertions>true</assertions>
  114940. <subresults>true</subresults>
  114941. <responseData>false</responseData>
  114942. <samplerData>false</samplerData>
  114943. <xml>false</xml>
  114944. <fieldNames>false</fieldNames>
  114945. <responseHeaders>false</responseHeaders>
  114946. <requestHeaders>false</requestHeaders>
  114947. <responseDataOnError>false</responseDataOnError>
  114948. <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
  114949. <assertionsResultsToSave>0</assertionsResultsToSave>
  114950. <bytes>true</bytes>
  114951. <hostname>true</hostname>
  114952. <threadCounts>true</threadCounts>
  114953. <sampleCount>true</sampleCount>
  114954. </value>
  114955. </objProp>
  114956. <stringProp name="filename">${response_time_file_name}</stringProp>
  114957. <stringProp name="TestPlan.comments">tool/fragments/ce/common/aggregate_graph.jmx</stringProp></ResultCollector>
  114958. <hashTree/>
  114959. <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="false">
  114960. <boolProp name="displayJMeterProperties">false</boolProp>
  114961. <boolProp name="displayJMeterVariables">true</boolProp>
  114962. <boolProp name="displaySamplerProperties">true</boolProp>
  114963. <boolProp name="displaySystemProperties">false</boolProp>
  114964. <stringProp name="TestPlan.comments">tool/fragments/_system/debug.jmx</stringProp></DebugPostProcessor>
  114965. <hashTree/>
  114966. </hashTree>
  114967. <WorkBench guiclass="WorkBenchGui" testclass="WorkBench" testname="WorkBench" enabled="true">
  114968. <boolProp name="WorkBench.save">true</boolProp>
  114969. </WorkBench>
  114970. </hashTree>
  114971. </jmeterTestPlan>