Skip to content

Commit

Permalink
CC-34875: Dev performance Phase 2. SAPI tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
bohdanyevtukhov committed Mar 3, 2025
1 parent f2ab244 commit cd5fbb8
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 1 deletion.
7 changes: 6 additions & 1 deletion dashboards/k6-load-testing-results.json
Original file line number Diff line number Diff line change
Expand Up @@ -1664,9 +1664,14 @@
"selected": false,
"text": "SAPI2_get_catalog_search",
"value": "SAPI2_get_catalog_search"
},
{
"selected": false,
"text": "SAPI3_get_concrete_products",
"value": "SAPI3_get_concrete_products"
}
],
"query": "http_req_duration,http_req_blocked,http_req_connecting,http_req_looking_up,http_req_receiving,http_req_sending,http_req_waiting,SAPI7_post_checkout,SAPI9_post_checkout,SAPI15_post_cart_reorder,SAPI19_post_cart_reorder,SAPI16_post_cart_reorder,SAPI17_delete_carts,SAPI18_post_checkout,SAPI20_post_cart_reorder,SAPI21_delete_carts,SAPI22_post_checkout,S2_get_search,M8_get_mp_dashboard,SAPI2_get_catalog_search",
"query": "http_req_duration,http_req_blocked,http_req_connecting,http_req_looking_up,http_req_receiving,http_req_sending,http_req_waiting,SAPI7_post_checkout,SAPI9_post_checkout,SAPI15_post_cart_reorder,SAPI19_post_cart_reorder,SAPI16_post_cart_reorder,SAPI17_delete_carts,SAPI18_post_checkout,SAPI20_post_cart_reorder,SAPI21_delete_carts,SAPI22_post_checkout,S2_get_search,M8_get_mp_dashboard,SAPI2_get_catalog_search,SAPI3_get_concrete_products",
"type": "custom"
}
]
Expand Down
7 changes: 7 additions & 0 deletions src/resources/concrete-products.resource.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import AbstractResource from './abstract.resource';

export default class ConcreteProductsResource extends AbstractResource {
get(sku) {
return this.getRequest(`concrete-products/${sku}`);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { group } from 'k6';
import OptionsUtil from '../../utils/options.util';
import { createMetrics } from '../../utils/metric.util';
import { ProductFixture } from '../../fixtures/product.fixture';
import EnvironmentUtil from '../../utils/environment.util';
import ConcreteProductsResource from '../../resources/concrete-products.resource';

const testConfiguration = {
...EnvironmentUtil.getDefaultTestConfiguration(),
id: 'SAPI3',
group: 'Product Details',
metrics: ['SAPI3_get_concrete_products'],
thresholds: {
SAPI3_get_concrete_products: {
smoke: ['avg<400'],
load: ['avg<800'],
},
},
};

const { metrics, metricThresholds } = createMetrics(testConfiguration);
export const options = OptionsUtil.loadOptions(testConfiguration, metricThresholds);

export function setup() {
const dynamicFixture = new ProductFixture({
productCount: 1,
});

return dynamicFixture.getData();
}

export default function (data) {
const product = ProductFixture.iterateData(data);

group(testConfiguration.group, () => {
const concreteProductsResource = new ConcreteProductsResource();
const response = concreteProductsResource.get(product.sku);

metrics[testConfiguration.metrics[0]].add(response.timings.duration);
});
}

0 comments on commit cd5fbb8

Please sign in to comment.