Просмотр исходного кода

chore: Add missing benchmark scripts

Michael Bromley 3 лет назад
Родитель
Сommit
62160a7766

+ 28 - 0
packages/dev-server/load-testing/scripts/bm-order-list.js

@@ -0,0 +1,28 @@
+import { check } from 'k6';
+
+import { AdminApiRequest, ShopApiRequest } from '../utils/api-request.js';
+const loginMutation = new AdminApiRequest('admin/login.graphql');
+const variant = __ENV.variant ? `-${__ENV.variant}` : '';
+const ordersQuery = new AdminApiRequest(`admin/get-order-list${variant}.graphql`);
+
+export let options = {
+    stages: [{ duration: '1m', target: 1 }],
+};
+
+export function setup() {
+    const result = loginMutation.post({ username: 'superadmin', password: 'superadmin' });
+    check(result.data, {
+        'logged in': data => data.login.id != null,
+    });
+    return { authToken: loginMutation.authToken };
+}
+
+/**
+ * Performs a simple query to measure baseline request throughput
+ */
+export default function ({ authToken }) {
+    const result = ordersQuery.post({ options: { skip: 0, take: 10 } }, authToken);
+    check(result.data, {
+        'fetched 10 items': data => data.orders.items.length === 10,
+    });
+}

+ 27 - 0
packages/dev-server/load-testing/scripts/bm-prod-list.js

@@ -0,0 +1,27 @@
+import { check } from 'k6';
+
+import { AdminApiRequest, ShopApiRequest } from '../utils/api-request.js';
+const loginMutation = new AdminApiRequest('admin/login.graphql');
+const productsQuery = new AdminApiRequest('admin/get-product-list.graphql');
+
+export let options = {
+    stages: [{ duration: '1m', target: 1 }],
+};
+
+export function setup() {
+    const result = loginMutation.post({ username: 'superadmin', password: 'superadmin' });
+    check(result.data, {
+        'logged in': data => data.login.id != null,
+    });
+    return { authToken: loginMutation.authToken };
+}
+
+/**
+ * Performs a simple query to measure baseline request throughput
+ */
+export default function ({ authToken }) {
+    const result = productsQuery.post({ options: { skip: 0, take: 10 } }, authToken);
+    check(result.data, {
+        'fetched 10 items': data => data.products.items.length === 10,
+    });
+}