@@ -40573,6 +40573,154 @@ function assertCategoryChildren(category, response) {
40573
40573
</hashTree>
40574
40574
40575
40575
40576
+ <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Multiple Categories" enabled="true">
40577
+ <intProp name="ThroughputController.style">1</intProp>
40578
+ <boolProp name="ThroughputController.perThread">false</boolProp>
40579
+ <intProp name="ThroughputController.maxThroughput">1</intProp>
40580
+ <stringProp name="ThroughputController.percentThroughput">${graphqlGetCategoryListByCategoryIdPercentage}</stringProp>
40581
+ <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/scenario_controller_tmpl.jmx</stringProp></ThroughputController>
40582
+ <hashTree>
40583
+ <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="Set Test Label" enabled="true">
40584
+ <stringProp name="script">
40585
+ var testLabel = "${testLabel}" ? " (${testLabel})" : "";
40586
+ if (testLabel
40587
+ && sampler.getClass().getName() == 'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
40588
+ ) {
40589
+ if (sampler.getName().indexOf(testLabel) == -1) {
40590
+ sampler.setName(sampler.getName() + testLabel);
40591
+ }
40592
+ } else if (sampler.getName().indexOf("SetUp - ") == -1) {
40593
+ sampler.setName("SetUp - " + sampler.getName());
40594
+ }
40595
+ </stringProp>
40596
+ <stringProp name="scriptLanguage">javascript</stringProp>
40597
+ <stringProp name="TestPlan.comments">mpaf/tool/fragments/_system/setup_label.jmx</stringProp></JSR223PreProcessor>
40598
+ <hashTree/>
40599
+ <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Set Label" enabled="true">
40600
+ <stringProp name="BeanShellSampler.query">
40601
+ vars.put("testLabel", "GraphQL Get Multiple Categories");
40602
+ </stringProp>
40603
+ <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
40604
+ </BeanShellSampler>
40605
+ <hashTree/>
40606
+
40607
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
40608
+ <collectionProp name="HeaderManager.headers">
40609
+ <elementProp name="" elementType="Header">
40610
+ <stringProp name="Header.name">Content-Type</stringProp>
40611
+ <stringProp name="Header.value">application/json</stringProp>
40612
+ </elementProp>
40613
+ <elementProp name="" elementType="Header">
40614
+ <stringProp name="Header.name">Accept</stringProp>
40615
+ <stringProp name="Header.value">*/*</stringProp>
40616
+ </elementProp>
40617
+ </collectionProp>
40618
+ <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/api/header_manager_before_token.jmx</stringProp></HeaderManager>
40619
+ <hashTree/>
40620
+
40621
+ <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="SetUp - Init Random Generator" enabled="true">
40622
+ <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/init_random_generator_setup.jmx</stringProp>
40623
+ <stringProp name="BeanShellSampler.query">
40624
+ import java.util.Random;
40625
+
40626
+ Random random = new Random();
40627
+ if (${seedForRandom} > 0) {
40628
+ random.setSeed(${seedForRandom} + ${__threadNum});
40629
+ }
40630
+
40631
+ vars.putObject("randomIntGenerator", random);
40632
+ </stringProp>
40633
+ <stringProp name="BeanShellSampler.filename"/>
40634
+ <stringProp name="BeanShellSampler.parameters"/>
40635
+ <boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
40636
+ </BeanShellSampler>
40637
+ <hashTree/>
40638
+
40639
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="SetUp - Prepare Category Data" enabled="true">
40640
+ <stringProp name="scriptLanguage">javascript</stringProp>
40641
+ <stringProp name="parameters"/>
40642
+ <stringProp name="filename"/>
40643
+ <stringProp name="cacheKey"/>
40644
+ <stringProp name="script">random = vars.getObject("randomIntGenerator");
40645
+
40646
+ var categories = props.get("categories");
40647
+
40648
+ var numbers = [];
40649
+
40650
+ var sanity = 0;
40651
+ for(var i = 0; i < 4; i++){
40652
+ sanity++;
40653
+ if(sanity > 100){
40654
+ break;
40655
+ }
40656
+ var number = random.nextInt(categories.length)
40657
+ if(numbers.indexOf(number) >= 0){
40658
+ i--;
40659
+ continue;
40660
+ }
40661
+ numbers.push(number);
40662
+ }
40663
+
40664
+ vars.put("category_id_1", categories[numbers[0]].id);
40665
+ vars.put("category_id_2", categories[numbers[1]].id);
40666
+ vars.put("category_id_3", categories[numbers[2]].id);
40667
+ vars.put("category_id_4", categories[numbers[3]].id);
40668
+ </stringProp>
40669
+ <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/common/extract_multiple_categories_setup.jmx</stringProp>
40670
+ </JSR223Sampler>
40671
+ <hashTree/>
40672
+
40673
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get multiple categories by ID" enabled="true">
40674
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
40675
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
40676
+ <collectionProp name="Arguments.arguments">
40677
+ <elementProp name="" elementType="HTTPArgument">
40678
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
40679
+ <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>
40680
+ <stringProp name="Argument.metadata">=</stringProp>
40681
+ </elementProp>
40682
+ </collectionProp>
40683
+ </elementProp>
40684
+ <stringProp name="HTTPSampler.domain"/>
40685
+ <stringProp name="HTTPSampler.port">${graphql_port_number}</stringProp>
40686
+ <stringProp name="HTTPSampler.connect_timeout">60000</stringProp>
40687
+ <stringProp name="HTTPSampler.response_timeout">200000</stringProp>
40688
+ <stringProp name="HTTPSampler.protocol">${request_protocol}</stringProp>
40689
+ <stringProp name="HTTPSampler.contentEncoding"/>
40690
+ <stringProp name="HTTPSampler.path">${base_path}graphql</stringProp>
40691
+ <stringProp name="HTTPSampler.method">POST</stringProp>
40692
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
40693
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
40694
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
40695
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
40696
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
40697
+ <stringProp name="HTTPSampler.embedded_url_re"/>
40698
+ <stringProp name="TestPlan.comments">mpaf/tool/fragments/ce/graphql/get_multiple_categories_by_id.jmx</stringProp>
40699
+ </HTTPSamplerProxy>
40700
+ <hashTree>
40701
+ <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="Assert category count" enabled="true">
40702
+ <stringProp name="scriptLanguage">javascript</stringProp>
40703
+ <stringProp name="parameters"/>
40704
+ <stringProp name="filename"/>
40705
+ <stringProp name="cacheKey"/>
40706
+ <stringProp name="script">var response = JSON.parse(prev.getResponseDataAsString());
40707
+
40708
+ if(response.data == undefined || response.data.categoryList == undefined){
40709
+ AssertionResult.setFailureMessage("CategoryList results are empty.");
40710
+ AssertionResult.setFailure(true);
40711
+ }
40712
+
40713
+ if(response.data.categoryList.length !== 4){
40714
+ AssertionResult.setFailureMessage("CategoryList query expected to find 4 categories. " + response.data.categoryList.length + " returned.");
40715
+ AssertionResult.setFailure(true);
40716
+ }
40717
+ </stringProp>
40718
+ </JSR223Assertion>
40719
+ <hashTree/>
40720
+ </hashTree>
40721
+ </hashTree>
40722
+
40723
+
40576
40724
<ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Url Info by url_key" enabled="true">
40577
40725
<intProp name="ThroughputController.style">1</intProp>
40578
40726
<boolProp name="ThroughputController.perThread">false</boolProp>
0 commit comments