اختبار فوضى الشبكة على Windows
اختبار الفوضى يعني كسر شيء عمدًا وأنت تراقب، لتعرف ما يفعله برنامجك حيال ذلك. وعلى مستوى الشبكة هذا هو بالضبط ما تقوم به هذه الأداة: وسيلة لحقن عطل في تطبيق واحد ومعرفة هل ينجو.
الأعطال التي يمكنك حقنها
| العطل | ما الذي يحاكيه |
|---|---|
| فقدان الحزم وتلفها وتكرارها | مسار متدهور. تختفي الحزم، أو تصل تالفة، أو تصل مرتين. |
| زمن الاستجابة والجيتر والقفزات | مسار بطيء أو غير مستقر، بما في ذلك التوقف لعدة ثوانٍ الذي يكسر المهلات. |
| إعادة ضبط الاتصالات | جدار حماية أو موازن أحمال يقتل الاتصالات في منتصف النقل. |
| انقطاع الوصلة | اختفاء المسار وعودته في دورة. |
| عنوان أو منفذ محظور | اعتماد واحد غير قابل للوصول بينما يعمل كل شيء آخر. |
| الإنترنت مفقود والشبكة المحلية حية | شكل البوابة المقيِّدة: المحلي يعمل والعالم لا. |
ما يفصل الفوضى عن الضجيج: قابلية التكرار
العطل العشوائي الذي لا يمكن إعادته ينتج حكاية لا تقرير خطأ. كل قرار عشوائي هنا يأتي من seed، فيعيد الأمر نفسه التشغيل نفسه: الحزم الضائعة نفسها، والجيتر نفسه، بالترتيب نفسه:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
وهذا هو الفرق بين «انهار مرة الثلاثاء الماضي» واختبار فاشل يستطيع شخص آخر تشغيله.
في pipeline
يبلغ سطر الأوامر عبر رموز الخروج، فيستطيع البناء التمييز بين «فشل التطبيق» و«تعذر بدء الأداة»، وتنتهي الجلسة وحدها فلا توجد خطوة تنظيف يمكن نسيانها:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
وسلسلة من الأعطال بدل عطل واحد هي ملف سيناريو، وهذه أيضًا قابلة للتكرار. انظر السيناريوهات الزمنية واختبارات الشبكة في CI لمعرفة رموز الخروج والمشغّل (runner) المطلوب.
أين يتوقف نطاق الأثر
حدّان، وكلاهما مقصود. التدهور يصل إلى عملية أو PID أو عنوان أو منفذ واحد حين توجّهه، فيبقى الجهاز الذي تعمل عليه يعمل. وهو جهاز واحد: هذا حقن أعطال لعميل واحد واتصاله، لا لعنقود. وإذا كنت تبحث عن فوضى عبر الخدمات والعقد فتلك أداة من نوع آخر، وهذه هي القطعة التي تكسر الشبكة تحت تطبيق Windows واحد.
كل شيء قابل للتراجع فورًا. يعيد الزر STOP الشبكة، ويفعل الحد الزمني الشيء نفسه، ويغلق مراقب (watchdog) داخل الأداة الالتقاط إن ماتت الأداة نفسها: العطل الذي حقنته يجب ألا يعيش أطول من التشغيل الذي حقنه.