Bean Network Tester

CI में खराब नेटवर्क का सिमुलेशन

विंडो वैकल्पिक है। वही एक्ज़ीक्यूटेबल कमांड-लाइन टूल की तरह चलता है, तय समय बाद खुद खत्म हो जाता है, और जो हुआ उसे ऐसे ढंग से बताता है जिसे पाइपलाइन पढ़ सके।

एक चरण का रूप

टेस्ट की अवधि भर बिगाड़ें, फिर उसे अपने आप रुकने दें। सफ़ाई का कोई चरण नहीं जिसे भूला जा सके:

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

GitHub Actions जॉब में, सेल्फ़-होस्टेड Windows रनर पर:

- 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

रनर के बारे में दो बातें: ट्रैफ़िक कैप्चर करने के लिए एडमिनिस्ट्रेटर अधिकार चाहिए, और होस्टेड रनर वे नहीं देगा, इसलिए यह सेल्फ़-होस्टेड Windows मशीन का काम है।

हर अंत का एक एग्ज़िट कोड है

कोई भी अंत ट्रेसबैक के साथ नहीं होता। रन खत्म होने के हर तरीके का एक नंबर है, इसलिए पाइपलाइन “आपका ऐप विफल हुआ” को “टूल शुरू नहीं हो सका” से अलग पहचान सकती है:

कोडमतलब
0अनुरोध के अनुसार पूरा हुआ।
1चलते समय कुछ विफल हो गया।
2कमांड लाइन गलत थी।
3कोई सेटिंग या मान अमान्य था।
4एक सिनेरियो फ़ाइल अस्वीकार कर दी गई।
5कोई फ़ाइल पढ़ी या लिखी नहीं जा सकी।
6रन से जुड़ी एक जाँच सही नहीं निकली।
7एडमिनिस्ट्रेटर अधिकार नहीं हैं, इसलिए ड्राइवर लोड नहीं हो सकता।
130बीच में रोका गया, आमतौर पर Ctrl+C से।
143बाहर से समाप्त किया गया।

मशीन के पढ़ने लायक आउटपुट

--format json हर पंक्ति में एक JSON ऑब्जेक्ट लिखता है, यानी रन के दौरान सैंपल और अंत में सारांश, ताकि बाद का कोई चरण उस पर जाँच कर सके:

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

लॉग की पंक्तियाँ स्टैंडर्ड एरर पर और डेटा स्टैंडर्ड आउटपुट पर जाता है, इसलिए डेटा को रीडायरेक्ट करने से दोनों कभी नहीं मिलते। --seed रन को दोहराने लायक बनाता है, जो किसी अस्थिर (flaky) टेस्ट को चाहिए, इससे पहले कि कोई उस पर बहस कर सके।

ऐसा ड्राई रन जो कुछ नहीं छूता

दो फ़्लैग इसे भरोसा करने से पहले सुरक्षित रूप से जोड़ने देते हैं: --dry-run बताता है कि सेटिंग क्या करेंगी और बाहर निकल जाता है, और --simulate पूरा इंजन नकली ट्रैफ़िक पर चलाता है, बिना ड्राइवर लोड किए और बिना नेटवर्क को छुए। दोनों उस बिल्ड में काम आते हैं जो अपनी ही मशीन को नहीं बिगाड़ सकता।

आगे

क्या आप अपने ही नेटवर्क को जानबूझकर बिगाड़ने के लिए तैयार हैं?

Windows के लिए डाउनलोड करें