Skip to content

Commit e5a83c0

Browse files
committed
MC-15986: Category Filtering
- Add performance test for multiple categories
1 parent b856a17 commit e5a83c0

File tree

1 file changed

+148
-0
lines changed

1 file changed

+148
-0
lines changed

setup/performance-toolkit/benchmark.jmx

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40573,6 +40573,154 @@ function assertCategoryChildren(category, response) {
4057340573
</hashTree>
4057440574

4057540575

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+
&amp;&amp; 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} &gt; 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 &lt; 4; i++){
40652+
sanity++;
40653+
if(sanity &gt; 100){
40654+
break;
40655+
}
40656+
var number = random.nextInt(categories.length)
40657+
if(numbers.indexOf(number) &gt;= 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+
4057640724
<ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="GraphQL Get Url Info by url_key" enabled="true">
4057740725
<intProp name="ThroughputController.style">1</intProp>
4057840726
<boolProp name="ThroughputController.perThread">false</boolProp>

0 commit comments

Comments
 (0)