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