feat: k6 test
Showing
k6-test/ec-simple-test.js
0 → 100644
| import {check, group, sleep} from 'k6'; | |||
| import {Rate, Trend} from 'k6/metrics'; | |||
| import http from 'k6/http'; | |||
| export const options = { | |||
| vus: 1, // 1 user looping for 10 secend | |||
| scenarios: { | |||
| contacts: { | |||
| executor: 'constant-vus', | |||
| vus: 10, | |||
| duration: '1s', | |||
| }, | |||
| }, | |||
| // scenarios: { | |||
| // contacts: { | |||
| // executor: 'per-vu-iterations', | |||
| // vus: 2, | |||
| // iterations: 1, | |||
| // maxDuration: '30s', | |||
| // }, | |||
| // }, | |||
| thresholds: { | |||
| http_req_duration: ['p(99)<1500'], // 99% of requests must complete below 1.5s | |||
| }, | |||
| }; | |||
| const URL = 'http://localhost:7168/api'; | |||
| const USERNAME = 'user1'; | |||
| const PASSWORD = '1234'; | |||
| const PRODUCTID = '70d2d54e-1030-4a17-94b4-348713bf9631'; | |||
| const TAGLIST = ["tag2"]; | |||
| export default function () { | |||
| let token; | |||
| const loginRes = http.post(http.url`${URL}/login`, | |||
| JSON.stringify({ | |||
| "username": USERNAME, | |||
| "password": PASSWORD | |||
| })) | |||
| check(loginRes, { | |||
| 'logged in successfully': (resp) => !!resp.body, | |||
| }); | |||
| const authHeaders = { | |||
| headers: { | |||
| Authorization: `${loginRes.body}`, | |||
| 'Content-Type': 'application/json' | |||
| }, | |||
| }; | |||
| const product = http.get(http.url`${URL}/product/${PRODUCTID}`, authHeaders).json(); | |||
| check(product, {'retrieved product': (obj) => !!obj}); | |||
| const productByTag = http.post(http.url`${URL}/product`, JSON.stringify(TAGLIST), authHeaders).json(); | |||
| check(productByTag, {'retrieved productByTag': (obj) => !!obj}); | |||
| const checkout = http.post(http.url`${URL}/checkout`, JSON.stringify({ | |||
| "lineItems": [ | |||
| { | |||
| "sku": PRODUCTID, | |||
| "quantity": 1 | |||
| } | |||
| ], | |||
| "email": "[email protected]", | |||
| "creditCard": "test_card" | |||
| }), authHeaders) | |||
| check(checkout, {'checkout order': (obj) => !!obj}); | |||
| } | |||
| \ No newline at end of file |
Please register or sign in to comment