为所有线程执行一次函数
Execute functions once for all Threads
记录器
多个线程(虚拟用户)调用的函数。我想执行
函数 printDebugLogs(debugLogsRepo) 和 printResponseCodeRepo(responseCodeRepo) 仅在给定持续时间过去后即 IsElapsedTime 时
return true.Currently 所有线程多次执行此函数。
//多线程执行的Logger函数
var debugLogsRepo = []
var responseCodeRepo=new Map();
var duration;
var startTime=new Date().getSeconds();
export function Logger(url, request, response, reqFrom, conf) {
//If logging enable
if (conf.logging) {
//ClienSide logging enable
if (conf.clientSideLog) {
//If request failed
pushFailedRequest(url, request, response, reqFrom, debugLogsRepo);
}
//Insert all response codes(i.e pass and failed)
pushResponseCodeStats(response, responseCodeRepo)
//Condition based on which flush logs
if ((IsTimeElapsed(conf))) {
printDebugLogs(debugLogsRepo);
printResponseCodeRepo(responseCodeRepo)
}
}
}
//If duration has been passed
export function IsTimeElapsed(conf) {
var duration = conf.logInterval;
var currentTime = new Date().getSeconds();
if ((Number(startTime) + Number(duration)) <= currentTime) {
startTime = new Date().getSeconds();
return true
}
return false;
}
k6 中的每个 VU 都是一个独立的 运行ning JavaScript 运行时间,甚至可能在不同的机器上,所以你不能在 VU 之间同步这些东西。
如果您正在调试,您可以简单地 运行 您的脚本只有一个 VU。或者,如果出于某种原因您在调试时需要 运行 多个 VU,您可以通过检查 __VU
execution context variable:
仅在单个 VU 中打印调试日志
if (__VU == 1) {
// print logs
}
记录器 多个线程(虚拟用户)调用的函数。我想执行 函数 printDebugLogs(debugLogsRepo) 和 printResponseCodeRepo(responseCodeRepo) 仅在给定持续时间过去后即 IsElapsedTime 时 return true.Currently 所有线程多次执行此函数。
//多线程执行的Logger函数
var debugLogsRepo = []
var responseCodeRepo=new Map();
var duration;
var startTime=new Date().getSeconds();
export function Logger(url, request, response, reqFrom, conf) {
//If logging enable
if (conf.logging) {
//ClienSide logging enable
if (conf.clientSideLog) {
//If request failed
pushFailedRequest(url, request, response, reqFrom, debugLogsRepo);
}
//Insert all response codes(i.e pass and failed)
pushResponseCodeStats(response, responseCodeRepo)
//Condition based on which flush logs
if ((IsTimeElapsed(conf))) {
printDebugLogs(debugLogsRepo);
printResponseCodeRepo(responseCodeRepo)
}
}
}
//If duration has been passed
export function IsTimeElapsed(conf) {
var duration = conf.logInterval;
var currentTime = new Date().getSeconds();
if ((Number(startTime) + Number(duration)) <= currentTime) {
startTime = new Date().getSeconds();
return true
}
return false;
}
k6 中的每个 VU 都是一个独立的 运行ning JavaScript 运行时间,甚至可能在不同的机器上,所以你不能在 VU 之间同步这些东西。
如果您正在调试,您可以简单地 运行 您的脚本只有一个 VU。或者,如果出于某种原因您在调试时需要 运行 多个 VU,您可以通过检查 __VU
execution context variable:
if (__VU == 1) {
// print logs
}