اختبار الفوضى وحقن الأعطال
اختبار الفوضى وحقن الأعطال (Chaos Testing)
Section titled “اختبار الفوضى وحقن الأعطال (Chaos Testing)”تتضمن كاظمة إطار عمل مدمج ومعد للإنتاج لـ اختبار الفوضى وحقن الأعطال (kazma_core/chaos) للتحقق من مرونة النظام، وقدرة المشرف على التعافي الذاتي، وتفعيل قواطع الدائرة (Circuit Breakers)، والتعامل السلس مع انقطاع الخدمات.
المزايا الأساسية
Section titled “المزايا الأساسية”- أمان الإغلاق عند الفشل (Fail-Closed): معطل افتراضيًا. يتطلب تفعيل متغير البيئة
KAZMA_CHAOS_ENABLED=trueلتنفيذ أي عملية حقن. - 10 تجارب محددة مسبقًا: ارتفاع زمن الاستجابة، الأخطاء المتقطعة، بطء قواعد البيانات، انقسام ناقل الرسائل، وفشل تنفيذ الأدوات.
- استهداف دقيق للمكونات: إمكانية استهداف مكونات محددة مثل
LLM_PROVIDERأوDATABASEأوMESSAGE_BUSأوTOOL_EXECUTOR. - واجهات مرنة: استخدام المزخرف
@chaos_injectionفي بايثون، أو مدير السياقchaos_experiment()، أو واجهات REST عبر/api/chaos/*.
أنماط الفشل المدعومة
Section titled “أنماط الفشل المدعومة”| نمط الفشل | الاسم البرمجي | الوصف |
|---|---|---|
| المهلة / التأخير | FailureType.LATENCY | حقن تأخير زمني بالمللي ثانية (latency_ms) قبل اكتمال العملية. |
| الأخطاء | FailureType.ERROR | إطلاق استثناءات أو أخطاء HTTP محاكاة (error_code). |
| انتهاء المهلة | FailureType.TIMEOUT | حظر التنفيذ حتى يتجاوز حد المهلة المسموح به. |
| فتح قاطع الدائرة | FailureType.CIRCUIT_BREAKER_OPEN | إجبار قاطع الدائرة على الفتح الفوري لتجربة مسارات البدائل. |
| استنزاف الموارد | FailureType.RESOURCE_EXHAUSTION | محاكاة ضغط الذاكرة أو المعالج. |
| انقطاع الشبكة | FailureType.NETWORK_PARTITION | إسقاط الرسائل بين العقد ووكلاء السرب. |
التجارب المسبقة الشائعة
Section titled “التجارب المسبقة الشائعة”llm_high_latency— محاكاة تأخير 5000 مللي ثانية في استجابة النماذج.llm_intermittent_errors— حقن أخطاء 500 عشوائية بنسبة 30% على استدعاءات النماذج.database_slow— تأخير 2000 مللي ثانية في استرجاع الذاكرة وسجل المهام.circuit_breaker_force_open— فتح قاطع الدائرة لاختبار التبديل التلقائي للنماذج البديلة.tool_executor_failures— إفشال استدعاءات الأدوات للتحقق من طلب التأكيد والمحاولة.
الاستخدام في بايثون
Section titled “الاستخدام في بايثون”from kazma_core.chaos import FailureType, InjectionTarget, chaos_experiment
# حقن تأخير قدره 1500 مللي ثانية في مزود النماذجasync with chaos_experiment( target=InjectionTarget.LLM_PROVIDER, failure_type=FailureType.LATENCY, latency_ms=1500, probability=1.0,): result = await agent.run("لخص أحدث التقارير")