| import http from "k6/http"; | |
| import { check } from "k6"; | |
| const PAYLOAD = JSON.stringify({ | |
| n: "pageview", | |
| u: "http://dummy.site/some-page", | |
| d: "dummy.site", | |
| r: null, | |
| w: 1666, | |
| }); | |
| function newParams() { | |
| const ip = | |
| Math.floor(Math.random() * 255) + | |
| 1 + | |
| "." + | |
| Math.floor(Math.random() * 255) + | |
| "." + | |
| Math.floor(Math.random() * 255) + | |
| "." + | |
| Math.floor(Math.random() * 255); | |
| return { | |
| headers: { | |
| "Content-Type": "application/json", | |
| "X-Forwarded-For": ip, | |
| "User-Agent": `${Math.random() > 0.5 ? "Mozilla/5.0" : "Mozilla/4.0"} (${Math.random() > 0.5 ? "Macintosh" : "Windows"}; ${Math.random() > 0.5 ? "Intel Mac OS X 10_15_6" : "Windows NT 10.0"}) AppleWebKit/${Math.floor(Math.random() * 1000) + 500}.36 (KHTML, like Gecko) Chrome/${Math.floor(Math.random() * 100) + 50}.0.${Math.floor(Math.random() * 5000) + 1000}.${Math.floor(Math.random() * 500)} Safari/${Math.floor(Math.random() * 1000) + 500}.${Math.floor(Math.random() * 100)} OPR/${Math.floor(Math.random() * 100)}.0.${Math.floor(Math.random() * 5000) + 1000}.${Math.floor(Math.random() * 500)}`, | |
| }, | |
| }; | |
| } | |
| export const options = { | |
| scenarios: { | |
| constant_rps: { | |
| executor: "constant-arrival-rate", | |
| rate: 6000, | |
| timeUnit: "1s", | |
| duration: "1m", | |
| preAllocatedVUs: 10000, | |
| maxVUs: 30000, | |
| }, | |
| }, | |
| }; | |
| export default function () { | |
| const res = http.post( | |
| "http://localhost:8000/api/event", | |
| PAYLOAD, | |
| newParams(), | |
| ); | |
| check(res, { | |
| "is accepted": (r) => r.body === "ok", | |
| "is buffered": (r) => r.headers["X-Plausible-Dropped"] !== "1", | |
| }); | |
| } | |