consul/test/load/packer/loadtest-ami/scripts/loadtest.js

54 lines
1.4 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import http from 'k6/http';
import { uuidv4 } from "https://jslib.k6.io/k6-utils/1.0.0/index.js";
import { check, fail } from 'k6';
let data = JSON.parse(open('service.json'));
export default function() {
const key = uuidv4();
const ipaddress = `http://${__ENV.LB_ENDPOINT}:8500`;
const kv_uri = '/v1/kv/';
const value = { data: uuidv4() };
const kv_address = `${ipaddress + kv_uri + key}`
//Put valid K/V
let kvres = http.put(kv_address, JSON.stringify(value));
if (
!check(kvres, {
'kv status code MUST be 200': (kvres) => kvres.status == 200,
})
) {
fail(`registry check status code was *not* 200. error: ${kvres.error}. body: ${kvres.body}`)
}
//Register Service
data["Name"] = key;
const service_uri = '/v1/agent/service/register';
const service_address = `${ipaddress + service_uri }`
let servres = http.put(service_address, JSON.stringify(data));
if (
!check(servres, {
'register service status code MUST be 200': (servres) => servres.status == 200,
})
) {
fail(`registry check status code was *not* 200. error: ${servres.error}. body: ${servres.body}`)
}
}
export let options = {
// 25 virtual users
vus: 25,
// 10 minute
duration: "10m",
// 95% of requests must complete below 2.5s
thresholds: { http_req_duration: ["p(95)<2500"] },
};