在大炮中。如何记录 ETIMEDOUT?
In Artillery. How do I log ETIMEDOUT?
我有一个测试出现 ETIMEDOUT
错误。我想知道哪个 URL 给出了超时。我已经有了以下钩子
function logIfError(requestParams, response, context, ee, next) {
if (response.statusCode !== 200 && response.statusCode !== 204) {
console.error("%i %s", response.statusCode, response.url);
if (response.statusCode >= 500) {
console.log(response.headers['X-Trace-Id'])
}
if (response.statusCode >= 400) {
console.log(response.rawBody.toString())
}
}
next();
}
我添加到我的场景
scenarios:
- name: My Scenario
afterResponse: logIfError
但是超时后我看不到任何消息。 https://github.com/artilleryio/artillery/issues/437#issuecomment-371801777 中有一条注释表明 onError
但未在任何地方记录。
我试过这样加进去的
scenarios:
- name: My Scenario
afterResponse: logIfError
onError: myOnErrorHandler
我的实现方式为
function myOnErrorHandler(err, requestParams, context, events, callback) {
console.log("ERR", err);
return callback();
}
但还是没有输出
我添加以下处理器
function trapError(requestParams, context, ee, next) {
if (!requestParams.hooks) {
requestParams.hooks = {};
}
if (!requestParams.hooks.beforeError) {
requestParams.hooks.beforeError = [];
}
requestParams.hooks.beforeError.push((error) => {
if (error.name !== "HTTPError") {
console.error(requestParams.url, error.name);
}
return error;
});
next();
}
并注册如下
scenarios:
- name: My Scenario
beforeRequest: trapError
这样做是利用了它使用 got
的事实,它提供了 beforeError
hook
我有一个测试出现 ETIMEDOUT
错误。我想知道哪个 URL 给出了超时。我已经有了以下钩子
function logIfError(requestParams, response, context, ee, next) {
if (response.statusCode !== 200 && response.statusCode !== 204) {
console.error("%i %s", response.statusCode, response.url);
if (response.statusCode >= 500) {
console.log(response.headers['X-Trace-Id'])
}
if (response.statusCode >= 400) {
console.log(response.rawBody.toString())
}
}
next();
}
我添加到我的场景
scenarios:
- name: My Scenario
afterResponse: logIfError
但是超时后我看不到任何消息。 https://github.com/artilleryio/artillery/issues/437#issuecomment-371801777 中有一条注释表明 onError
但未在任何地方记录。
我试过这样加进去的
scenarios:
- name: My Scenario
afterResponse: logIfError
onError: myOnErrorHandler
我的实现方式为
function myOnErrorHandler(err, requestParams, context, events, callback) {
console.log("ERR", err);
return callback();
}
但还是没有输出
我添加以下处理器
function trapError(requestParams, context, ee, next) {
if (!requestParams.hooks) {
requestParams.hooks = {};
}
if (!requestParams.hooks.beforeError) {
requestParams.hooks.beforeError = [];
}
requestParams.hooks.beforeError.push((error) => {
if (error.name !== "HTTPError") {
console.error(requestParams.url, error.name);
}
return error;
});
next();
}
并注册如下
scenarios:
- name: My Scenario
beforeRequest: trapError
这样做是利用了它使用 got
的事实,它提供了 beforeError
hook