0

我正在尝试在 js 中为 k6 工具脚本创建一个函数,这将使我能够为“事务名称”创建多种类型的指标作为输入,然后创建另一个函数来填充这些指标。这将有助于避免为不同的事务名称编写类似的代码,并有助于保持指标名称的一致。

// line of code to define the metrics
let Search_RT_Trend = new Trend("Search_duration");
let Search_PassRate = new Rate("Search_PassRate");
let Search_PassCount = new Counter("Search_PassCount");
let Search_FailCount = new Counter("Search_FailCount");

// line of code populating the data in metrics
Search_RT_Trend.add(res.timings.duration);
Search_PassRate.add(1);
Search_PassCount.add(1);
Search_FailCount.add(1);

希望创建两个函数来输入交易名称,如下所示:

CreateMetric ("Search") 

PopulateMetric ("Search")

如何做到这一点?

4

1 回答 1

2

像这样的东西?

function MetaMetric(name) {
    this.RT_Trend = new Trend(`${name}_duration`);
    this.PassRate = new Rate(`${name}_PassRate`);
    this.PassCount = new Counter(`${name}_PassCount`);
    this.FailCount = new Counter(`${name}_FailCount`);
}

MetaMetric.prototype.track = function (req) {
    this.RT_Trend.add(req.timings.duration);
    if (req.timings.duration < 200 /* or whatever */) {
        this.PassRate.add(1);
        this.PassCount.add(1);
    } else {
        this.PassRate.add(0);
        this.FailCount.add(1);
    }
};

let myMetaMetric = new MetaMetric("Search")

export default function () {
    let resp = http.get("https://httpbin.test.loadimpact.com/");
    myMetaMetric.track(resp);
    sleep(3 * Math.random());
}

需要考虑的一些事项:

  • Counter当你有一个指标时,你不需要通过和失败指标RateRate本质上是通过和失败之间的比率,所以基本上是这两个计数器的组合:)
  • 您可能会发现 k6检查阈值很有用。
于 2019-07-29T07:36:38.507 回答