32 lines
1.4 KiB
JavaScript
32 lines
1.4 KiB
JavaScript
|
|
// Copyright (C) CVAT.ai Corporation
|
||
|
|
//
|
||
|
|
// SPDX-License-Identifier: MIT
|
||
|
|
import { check, fail } from 'k6';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Validates the HTTP response and logs detailed information if validation fails.
|
||
|
|
*
|
||
|
|
* @param {Object} response - The HTTP response object returned by k6 http request functions.
|
||
|
|
* @param {number} expectedStatus - The expected HTTP status code.
|
||
|
|
* @param {string} requestDescription - Short description of the request purpose (e.g., "Create task").
|
||
|
|
*/
|
||
|
|
export function validateResponse(response, expectedStatus, requestDescription) {
|
||
|
|
const success = check(response, {
|
||
|
|
[`${requestDescription} - status ${expectedStatus}`]: (r) => r.status === expectedStatus,
|
||
|
|
});
|
||
|
|
|
||
|
|
if (!success) {
|
||
|
|
console.error('>-------------------------------------------------------------');
|
||
|
|
console.error(` Request failed: ${requestDescription}`);
|
||
|
|
console.error(` Expected status: ${expectedStatus}, got: ${response.status}`);
|
||
|
|
console.error(' Request details:');
|
||
|
|
console.error(` Method: ${response.request.method}`);
|
||
|
|
console.error(` URL: ${response.request.url}`);
|
||
|
|
console.error(` Headers: ${JSON.stringify(response.request.headers || {}, null, 2)}`);
|
||
|
|
console.error(` Body: ${response.request.body || 'no body'}`);
|
||
|
|
console.error(` Response body: ${response.body}`);
|
||
|
|
fail(`${requestDescription} failed. Expected status ${expectedStatus}, got ${response.status}`);
|
||
|
|
}
|
||
|
|
return success;
|
||
|
|
}
|