Bean Network Tester

Mô phỏng mạng kém trong CI

Cửa sổ là tùy chọn. Cùng tệp thực thi chạy như một công cụ dòng lệnh, tự kết thúc sau một khoảng thời gian đặt trước và báo những gì đã xảy ra theo cách pipeline đọc được.

Hình dạng của một bước

Làm suy giảm trong suốt bài kiểm tra, rồi để nó tự dừng. Không có bước dọn dẹp nào để quên:

BeanNetworkTester.exe --loss 10 --latency 200 --target myapp.exe --duration 60

Trong một job GitHub Actions, trên runner Windows tự lưu trữ (self-hosted):

- name: Test the app on a poor connection
  shell: pwsh
  run: |
    Start-Process -FilePath BeanNetworkTester.exe `
      -ArgumentList '--loss 10 --latency 200 --target myapp.exe --duration 90'
    npm test

Hai điều về runner: bắt lưu lượng cần quyền quản trị, và runner được lưu trữ sẵn sẽ không cấp cho bạn quyền đó, nên việc này thuộc về một máy Windows tự lưu trữ.

Mỗi kết thúc đều có mã thoát

Không có gì kết thúc bằng một traceback. Mỗi cách một lần chạy có thể kết thúc đều có một con số, nên pipeline phân biệt được “ứng dụng của bạn thất bại” với “công cụ không khởi động được”:

MãÝ nghĩa
0Hoàn tất như yêu cầu.
1Có lỗi xảy ra khi đang chạy.
2Dòng lệnh sai.
3Một thiết lập hoặc một giá trị không hợp lệ.
4Một tệp kịch bản bị từ chối.
5Không đọc hoặc ghi được một tệp.
6Một khẳng định về lần chạy không đúng.
7Không có quyền quản trị nên không nạp được trình điều khiển.
130Bị ngắt, thường bằng Ctrl+C.
143Bị chấm dứt từ bên ngoài.

Đầu ra máy đọc được

--format json ghi một đối tượng JSON mỗi dòng, gồm các mẫu trong lúc chạy và bản tóm tắt ở cuối, để bước sau có thể kiểm tra khẳng định trên đó:

BeanNetworkTester.exe --loss 5 --duration 30 --format json > run.ndjson

Dòng nhật ký đi tới lỗi chuẩn và dữ liệu đi tới đầu ra chuẩn, nên chuyển hướng dữ liệu không bao giờ trộn lẫn hai thứ. --seed khiến lần chạy lặp lại được, điều một bài kiểm tra chập chờn (flaky) cần trước khi ai đó có thể tranh luận về nó.

Chạy thử không đụng đến gì

Hai cờ giúp nối nó vào an toàn trước khi bạn tin nó: --dry-run báo các thiết lập sẽ làm gì rồi thoát, và --simulate chạy toàn bộ bộ máy trên lưu lượng giả lập, không nạp trình điều khiển và không đụng đến mạng. Cả hai đều hữu ích trong một bản build không được phép làm suy giảm máy đang chạy nó.

Tiếp theo

Sẵn sàng cố ý phá mạng của chính bạn chưa?

Tải về cho Windows