import http from "k6/http"; import { check, sleep } from "k6"; const BASE_URL = __ENV.BASE_URL || "http://localhost:3000"; const CUSTOMER_ID = __ENV.CUSTOMER_ID || "CUST_001"; export const options = { vus: 1, duration: "70s", thresholds: { http_req_failed: ["rate<0.02"], }, }; const headers = { "Content-Type": "application/json", "x-auth-type": "service", "x-customer-id": CUSTOMER_ID, "x-permissions": "pricing:markup:write", }; const body = JSON.stringify({ request_id: "00000000-0000-4000-8000-000000000001", customer_id: CUSTOMER_ID, pickup_address: { street: "1234 Warehouse Blvd", city: "Los Angeles", state: "CA", zip: "90001", place_id: "ChIJ_pickup", formatted_address: "1234 Warehouse Blvd, Los Angeles, CA 90001, USA", selected_from_suggestions: true, }, delivery_address: { street: "5678 Distribution Dr", city: "Dallas", state: "TX", zip: "75201", place_id: "ChIJ_delivery", formatted_address: "5678 Distribution Dr, Dallas, TX 75201, USA", selected_from_suggestions: true, }, weight: { value: 500, unit: "lb" }, dimensions: { length: 48, width: 40, height: 48, unit: "in" }, pallet_count: 2, cargo_type: "general_freight", }); /** TC-303:customer 60 次/分钟限流 */ export default function rateLimitTest() { const res = http.post(`${BASE_URL}/api/quotes`, body, { headers }); check(res, { "status is 200 or 429": (r) => r.status === 200 || r.status === 429, }); sleep(0.5); }