Files
hyperswitch/loadtest/k6/payment-confirm.js

76 lines
2.4 KiB
JavaScript

import http from "k6/http";
import { sleep, check } from "k6";
import { Counter } from "k6/metrics";
import { setup_merchant_apikey } from "./helper/setup.js";
import { random_string } from "./helper/misc.js";
import { readBaseline, storeResult } from "./helper/compare-result.js";
export const requests = new Counter("http_reqs");
const baseline = readBaseline("payment-confirm");
export const options = {
stages: [
{ duration: "10s", target: 25 }, // ramp up users to 25 in 10 seconds
{ duration: "10s", target: 25 }, // maintain 25 users for 10 seconds
{ duration: "10s", target: 0 } // ramp down to 0 users in 10 seconds
],
thresholds: {
'http_req_duration': ['p(90) < 500'], // 90% of requests must finish within 500ms.
},
};
export function setup() {
return setup_merchant_apikey();
}
export default function (data) {
let payload = {
"amount": 6540,
"currency": "USD",
"confirm": true,
"capture_method": "automatic",
"capture_on": "2022-09-10T10:11:12Z",
"amount_to_capture": 6540,
"customer_id": random_string(),
"email": "guest@example.com",
"name": "John Doe",
"phone": "999999999",
"phone_country_code": "+65",
"description": "Its my first payment request",
"authentication_type": "no_three_ds",
"return_url": "https://google.com",
"payment_method": "card",
"setup_future_usage": "on_session",
"payment_method_data": {
"card": {
"card_number": "4242424242424242",
"card_exp_month": "10",
"card_exp_year": "35",
"card_holder_name": "John Doe",
"card_cvc": "123"
}
},
"statement_descriptor_name": "Juspay",
"statement_descriptor_suffix": "Router",
"metadata": {
"udf1": "value1",
"new_customer": "true",
"login_date": "2019-09-10T10:11:12Z"
}
};
let res = http.post("http://router-server:8080/payments", JSON.stringify(payload), {
"headers": {
"Content-Type": "application/json",
"api-key" : data.api_key
},
});
check(res, {
"confirm payment status 200": (r) => r.status === 200,
});
}
export function handleSummary(data) {
return storeResult("payment-confirm", baseline, data)
}