132 lines
2.2 KiB
JavaScript
132 lines
2.2 KiB
JavaScript
import http from 'k6/http';
|
|
import { check } from 'k6';
|
|
import { Counter } from 'k6/metrics';
|
|
|
|
|
|
const accepted = new Counter(
|
|
'cdr_accepted'
|
|
);
|
|
|
|
const backpressure = new Counter(
|
|
'cdr_backpressure'
|
|
);
|
|
|
|
const unavailable = new Counter(
|
|
'cdr_unavailable'
|
|
);
|
|
|
|
const unexpected = new Counter(
|
|
'cdr_unexpected'
|
|
);
|
|
|
|
|
|
const RATE = Number(
|
|
__ENV.RATE || 1000
|
|
);
|
|
|
|
const PRE_ALLOCATED_VUS = Number(
|
|
__ENV.PRE_ALLOCATED_VUS || 250
|
|
);
|
|
|
|
const MAX_VUS = Number(
|
|
__ENV.MAX_VUS || 1000
|
|
);
|
|
|
|
const DURATION = (
|
|
__ENV.DURATION || '10s'
|
|
);
|
|
|
|
const BASE_URL = (
|
|
__ENV.BASE_URL ||
|
|
'http://localhost:8000'
|
|
);
|
|
|
|
|
|
export const options = {
|
|
discardResponseBodies: true,
|
|
|
|
scenarios: {
|
|
ingestion: {
|
|
executor: 'constant-arrival-rate',
|
|
|
|
rate: RATE,
|
|
timeUnit: '1s',
|
|
|
|
duration: DURATION,
|
|
|
|
preAllocatedVUs: PRE_ALLOCATED_VUS,
|
|
maxVUs: MAX_VUS,
|
|
},
|
|
},
|
|
};
|
|
|
|
|
|
export default function () {
|
|
const now = Math.floor(
|
|
Date.now() / 1000
|
|
);
|
|
|
|
const rawId =
|
|
`k6-${__VU}-${__ITER}-${Date.now()}`;
|
|
|
|
const payload = JSON.stringify({
|
|
raw_id: rawId,
|
|
|
|
src_ip: '10.240.12.1',
|
|
|
|
device_id:
|
|
'310410998877665',
|
|
|
|
caller_num:
|
|
'+14155552671',
|
|
|
|
svc: '4G_DATA',
|
|
|
|
up_bytes: 1024,
|
|
down_bytes: 4096,
|
|
|
|
rat: 6,
|
|
|
|
lac: '4021',
|
|
ci: '8812',
|
|
|
|
epoch_start: now,
|
|
epoch_end: now + 300,
|
|
});
|
|
|
|
const response = http.post(
|
|
`${BASE_URL}/api/v1/cdr/raw`,
|
|
payload,
|
|
{
|
|
headers: {
|
|
'Content-Type':
|
|
'application/json',
|
|
},
|
|
|
|
tags: {
|
|
endpoint: 'cdr_ingest',
|
|
},
|
|
}
|
|
);
|
|
|
|
if (response.status === 202) {
|
|
accepted.add(1);
|
|
|
|
} else if (response.status === 429) {
|
|
backpressure.add(1);
|
|
|
|
} else if (response.status === 503) {
|
|
unavailable.add(1);
|
|
|
|
} else {
|
|
unexpected.add(1);
|
|
}
|
|
|
|
check(response, {
|
|
'accepted or gracefully rejected':
|
|
(r) =>
|
|
r.status === 202 ||
|
|
r.status === 429,
|
|
});
|
|
}
|