Lewati ke konten

Pengujian & Benchmark

Harness pengujian gateway memverifikasi kebenaran logika, ketahanan terhadap regresi, dan batas latensi di seluruh codebase menggunakan Vitest dan pustaka standar Node.

Matriks pengujian terdiri dari jalur unit, integrasi, dan performa yang mencakup 1.075 pengujian:

SuiteJalurCakupanTarget Verifikasi
Unittests/unitLogika komponen terisolasiKebenaran algoritmik, kasus tepi, penanganan galat
Integrasitests/integrationPipeline proxy end-to-endSiklus HTTP, pooling soket, urutan plugin, upstream
Performatests/performanceMicrobenchmark dengan batas waktuBatas alokasi memori, overhead daur ulang pool

Jalankan test suite menggunakan skrip npm standar:

Terminal window
# Jalankan seluruh test suite
npm test
# Jalankan pengujian unit terisolasi
npm run test:unit
# Jalankan pengujian integrasi proxy penuh
npm run test:integration
# Jalankan penjaga regresi performa
npm run test:perf

Eksekusi tes yang berhasil membuktikan tiga jaminan formal:

  1. Kepatuhan Protokol: Parsing HTTP yang sesuai standar RFC, penanganan kode status, normalisasi header, dan streaming body.
  2. Determinisme Ketahanan: State machine circuit breaker berpindah secara konsisten antara CLOSED, OPEN, dan HALF-OPEN; jitter retry dan fallback bekerja deterministik dalam kondisi simulasi kegagalan.
  3. Invarian Zero-Allocation: Konteks request dan pool objek berhasil didaur ulang tanpa kebocoran memori atau lonjakan alokasi heap V8.

Jalur performa menjalankan pengujian waktu untuk mendeteksi regresi:

  • Batas Fast-Path Pool: Siklus acquire/release pada request context pool dijaga pada batas 50 µs/op (menoleransi variasi penjadwalan CPU pada runner CI).
  • Batas Loopback Round-Trip: Batas throughput proxy penuh (~3,2k RPS, P99 ~40 ms pada 100 koneksi simultan pada mesin 4-core) dibatasi oleh latensi loopback kernel (hop upstream node:http membutuhkan ~223 µs/op). Overhead kode gateway adalah sekitar 28% dari total jalur.

Skrip benchmark mandiri:

Terminal window
npm run benchmark # Jalur cepat penuh dalam beban konkuren
npm run benchmark:router # Throughput pencarian radix tree
npm run benchmark:context # Kecepatan acquire dan release object pool
npm run benchmark:plugins # Traversal rantai eksekusi plugin

Pengukuran dasar pada perangkat keras referensi (4-core x86_64, Node 22):

SkenarioHasilBatas Target
Jalur target cepat (100 koneksi)P99 5 ms · ~38,4k RPSP99 < 10 ms
Pool acquire + release~1,5 µs/op< 50 µs/op
Circuit breaker CLOSED pathHemat ~1,1 µs/reqNol overhead penguncian
Jalur proxy penuh (100 koneksi)~3,2k RPS · P99 ~40 msBatas perangkat keras