Skip to content

Latest commit

ย 

History

History
101 lines (87 loc) ยท 5.4 KB

File metadata and controls

101 lines (87 loc) ยท 5.4 KB

ๆต‹่ฏ•ๆžถๆž„

catcher ็ฝ‘็ปœ้Ÿงๆ€งๆต‹่ฏ•ๆก†ๆžถ โ€” ไปŽๆŸไผคๆจกๆ‹Ÿๅˆฐๅœบๆ™ฏ้ชŒ่ฏ็š„ๅฎŒๆ•ดไฝ“็ณป


ๆ ธๅฟƒ็ป„ไปถ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๆต‹่ฏ•ๅœบๆ™ฏ (scenarios / benchmarks)                โ”‚
โ”‚  S1-S16 ๅœบๆ™ฏ + ๅžๅๅŸบๅ‡†                          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  ๆต‹่ฏ• Harness (harness.ts)                       โ”‚
โ”‚  ๅนถๅ‘ๅฏนๆฏ”ใ€ๆŒ‡ๆ ‡้‡‡้›†ใ€็ปŸ่ฎกๆฑ‡ๆ€ป                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  ็ฝ‘็ปœ Profile (presets.ts)                       โ”‚
โ”‚  Wi-Fi / 4G / 3G / 2G / GPRS / ๅซๆ˜Ÿ / ๅœฐ้“       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  ็ฝ‘็ปœๆŸไผคไปฃ็† (proxy.ts)                          โ”‚
โ”‚  ๅปถ่ฟŸใ€ๆŠ–ๅŠจใ€ไธขๅŒ…ใ€็ชๅ‘ใ€้ป‘ๆดžใ€ๅธฆๅฎฝ               โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  ๆต‹่ฏ•ๆœๅŠก (servers/)                              โ”‚
โ”‚  HTTP API Gateway + WebSocket Server             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  ๅ•ๅ…ƒๆต‹่ฏ• (packages/*/src/**/__tests__/)          โ”‚
โ”‚  HTTP retry/interceptors/client/agent/queue       โ”‚
โ”‚  WS codec/reconnect/multi-endpoint/client         โ”‚
โ”‚  SSE router/stream/strict/client                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

็›ฎๅฝ•

docs/test/
โ”œโ”€โ”€ README.md           โ† ๆœฌๆ–‡ไปถ
โ”œโ”€โ”€ 00-overview.md      โ† ๆต‹่ฏ•ๆก†ๆžถๆฆ‚่งˆ + ่ฎพ่ฎกๅ“ฒๅญฆ
โ”œโ”€โ”€ 01-proxy.md         โ† ็ฝ‘็ปœๆŸไผคไปฃ็†่ฎพ่ฎก๏ผˆๆŸไผคๆจกๅž‹๏ผ‰
โ”œโ”€โ”€ 02-profiles.md      โ† ็ฝ‘็ปœ Profile ไฝ“็ณป๏ผˆๅฏนๆ ‡ๆ ‡ๅ‡†๏ผ‰
โ”œโ”€โ”€ 03-scenarios.md     โ† ๆต‹่ฏ•ๅœบๆ™ฏไฝ“็ณป๏ผˆS1-S16๏ผ‰
โ””โ”€โ”€ native-gap-test-design.md โ† N-01~N-04 ๅŽŸ็”Ÿ่ƒฝๅŠ›็ผบๅฃๆต‹่ฏ•่ฎพ่ฎก

packages/test/
โ”œโ”€โ”€ harness.ts                 โ† ๅนถๅ‘ๅฏนๆฏ” Harness
โ”œโ”€โ”€ benchmark/
โ”‚   โ””โ”€โ”€ throughput.test.ts     โ† ้ซ˜ๅนถๅ‘ๅžๅๅŸบๅ‡†
โ”œโ”€โ”€ integration/
โ”‚   โ”œโ”€โ”€ http.test.ts           โ† HTTP ้›†ๆˆๆต‹่ฏ•
โ”‚   โ”œโ”€โ”€ ws.test.ts             โ† WebSocket ้›†ๆˆๆต‹่ฏ•
โ”‚   โ”œโ”€โ”€ dns.test.ts            โ† DNS ็ผ“ๅญ˜ๆต‹่ฏ•
โ”‚   โ””โ”€โ”€ napi.test.ts           โ† napi ็ป‘ๅฎšๆต‹่ฏ•
โ”œโ”€โ”€ e2e/
โ”‚   โ”œโ”€โ”€ scenarios.test.ts      โ† S1-S8 ็ซฏๅˆฐ็ซฏๅœบๆ™ฏ
โ”‚   โ””โ”€โ”€ rust-vs-vanilla.test.ts โ† Rust vs vanilla ๅฏนๆฏ”
โ”œโ”€โ”€ chaos/
โ”‚   โ”œโ”€โ”€ chaos.test.ts          โ† ๆททๆฒŒๆต‹่ฏ•
โ”‚   โ””โ”€โ”€ extreme-scenarios.test.ts  โ† S9-S16 ๆž็ซฏๅœบๆ™ฏ๏ผˆๆ–ฐๅขž๏ผ‰
โ”œโ”€โ”€ network/
โ”‚   โ”œโ”€โ”€ proxy.ts               โ† ็ฝ‘็ปœๆŸไผคไปฃ็†
โ”‚   โ””โ”€โ”€ presets.ts             โ† ็ฝ‘็ปœ Profile ้ข„่ฎพ
โ”œโ”€โ”€ servers/
โ”‚   โ”œโ”€โ”€ http-server.ts         โ† HTTP ๆต‹่ฏ•ๆœๅŠก
โ”‚   โ””โ”€โ”€ ws-server.ts           โ† WebSocket ๆต‹่ฏ•ๆœๅŠก
โ””โ”€โ”€ reporters/
    โ””โ”€โ”€ comparison-reporter.ts โ† vanilla vs catcher ๅฏนๆฏ”ๆŠฅ่กจ

# Rust FFI ้›†ๆˆๆต‹่ฏ•๏ผˆpackages/catcher-ffi/tests/๏ผ‰
#   http_test.rs          # HTTP C ABI (7 tests) + N-02/N-03 (10 new)
#   sse_test.rs           # SSE C ABI (3 tests)
#   codec_quality_test.rs # codec + quality C ABI (4 tests)
#   quality_test.rs       # N-04 quality push FFI (6 new, ๐Ÿ“)
#   multipart_test.rs     # N-01 multipart FFI (8 new, ๐Ÿ“ P3)

# Dart ็ป‘ๅฎšๆต‹่ฏ•๏ผˆpackages/catcher_core/test/๏ผ‰
#   http_client_test.dart # N-03 cancel + N-02 stream (8 new, ๐Ÿ“)
#   quality_test.dart     # N-04 subscribe (4 new, ๐Ÿ“)
#   multipart_encoder_test.dart # N-01 encoder (3 new, ๐Ÿ“)

# SSE ๅ•ๅ…ƒๆต‹่ฏ•๏ผˆcatcher-http-ts/src/sse/__tests__/๏ผ‰
#   router.test.ts       #24 ่กŒ่ทฏ็”ฑ๏ผˆ24 tests๏ผ‰
#   stream.test.ts       # SSEStream ๆตๅผ่ฏทๆฑ‚๏ผˆ23 tests๏ผ‰
#   strict.test.ts       # SSE ไธฅๆ ผๆจกๅผ๏ผˆ10 tests๏ผ‰
#   client.test.ts       # SSEClient ้•ฟ่ฟžๆŽฅ + ่‡ชๅŠจ้‡่ฟž๏ผˆ11 tests๏ผ‰

่ฎพ่ฎกๅ“ฒๅญฆ

  1. ไธŽ็œŸๅฎž็ฝ‘็ปœๅฏน้ฝ โ€” Profile ๅ‚ๆ•ฐๅฏนๆ ‡ Chrome DevTools / WebPageTest / tc netem
  2. ๆŸไผคๆญฃไบค็ป„ๅˆ โ€” ๅปถ่ฟŸใ€ไธขๅŒ…ใ€ๅธฆๅฎฝใ€้ป‘ๆดž็ญ‰ๆŸไผคๅฏ่‡ช็”ฑ็ป„ๅˆ
  3. ๅนถๅ‘ๅ…ฌๅนณๅฏนๆฏ” โ€” vanilla ไธŽ catcher ้€š่ฟ‡ Promise.all ๅœจ็›ธๅŒ็ฝ‘็ปœๆกไปถไธ‹ๅนถๅ‘ๆ‰ง่กŒ
  4. ็Žฏๅขƒๅ˜้‡ๆŽงๅˆถ่ง„ๆจก โ€” THROUGHPUT_REQUESTSใ€WEAK_REQUESTS ็ญ‰ๅฏๅœจ CI/ๆœฌๅœฐๅˆ‡ๆข่ง„ๆจก
  5. ้›ถๅค–้ƒจไพ่ต– โ€” ๆ‰€ๆœ‰็ฝ‘็ปœๆจกๆ‹Ÿ้€š่ฟ‡ Node.js net ๆจกๅ—็บฏ JS ๅฎž็Žฐ๏ผŒไธ้œ€่ฆ tc/netem/ไปฃ็†่ฝฏไปถ

้˜…่ฏป่ทฏๅพ„

  • ๆ–ฐไบบ๏ผšๆœฌ้กต โ†’ 00-overview.md โ†’ ๆŒ‰้œ€ๆทฑๅ…ฅ
  • ๅ†™ๆต‹่ฏ•๏ผš03-scenarios.md ็œ‹ๅœบๆ™ฏๆจกๆฟ
  • ๆ”นๆŸไผค๏ผš01-proxy.md ็œ‹ๆŸไผคๆจกๅž‹
  • ๅŠ  Profile๏ผš02-profiles.md ็œ‹ๆ ‡ๅ‡†ๅ€ผ
  • ๅŽŸ็”Ÿ่ƒฝๅŠ›็ผบๅฃ๏ผšnative-gap-test-design.md ็œ‹ N-01~N-04 ๆต‹่ฏ•ๆ–นๆกˆ