test: stress_http --file (реальные файлы); History: 100KB прямой POST — 83% таймаутов (шлюз рвёт >64KB), 30KB реальный — 200/200 ok

This commit is contained in:
“Naeel”
2026-08-26 20:35:48 +03:00
parent 6fcbbddbdb
commit 08e8e3afec
2 changed files with 36 additions and 4 deletions
+14 -4
View File
@@ -24,11 +24,21 @@ def main():
ap.add_argument("--url", default="http://127.0.0.1:5000")
ap.add_argument("--n", type=int, default=1000, help="число запросов")
ap.add_argument("--threads", type=int, default=32, help="параллельных потоков")
ap.add_argument("--size", type=int, default=100000, help="размер файла в байтах")
ap.add_argument("--size", type=int, default=100000, help="размер файла в байтах (если не задан --file)")
ap.add_argument("--file", default=None, help="путь к реальному файлу (заменяет сгенерированный)")
ap.add_argument("--health-only", action="store_true", help="только /health, без загрузки файлов")
args = ap.parse_args()
payload = b"x" * args.size
if args.file:
import os as _os
fname = _os.path.basename(args.file)
with open(args.file, "rb") as _f:
payload = _f.read()
real_size = len(payload)
else:
fname = "load.docx"
payload = b"x" * args.size
real_size = args.size
ok = 0
err = 0
slow = 0
@@ -43,7 +53,7 @@ def main():
else:
r = c.post(
f"{args.url}/upload",
files={"files": ("load.docx", payload, "application/octet-stream")},
files={"files": (fname, payload, "application/octet-stream")},
)
if r.status_code == 200:
ok += 1
@@ -60,7 +70,7 @@ def main():
elapsed = time.time() - t0
print(f"url={args.url}")
print(f"n={args.n} threads={args.threads} size={args.size}B health_only={args.health_only}")
print(f"n={args.n} threads={args.threads} size={real_size}B file={args.file or '(gen)'} health_only={args.health_only}")
print(f"ok={ok} err={err} timeouts={slow} elapsed={elapsed:.1f}s rps={args.n / elapsed:.1f}")