تخطَّ إلى المحتوى
kazma.
EN نجمة 7 ابدأ الآن

اختبار الفوضى وحقن الأعطال

اختبار الفوضى وحقن الأعطال (Chaos Testing)

Section titled “اختبار الفوضى وحقن الأعطال (Chaos Testing)”

تتضمن كاظمة إطار عمل مدمج ومعد للإنتاج لـ اختبار الفوضى وحقن الأعطال (kazma_core/chaos) للتحقق من مرونة النظام، وقدرة المشرف على التعافي الذاتي، وتفعيل قواطع الدائرة (Circuit Breakers)، والتعامل السلس مع انقطاع الخدمات.


  • أمان الإغلاق عند الفشل (Fail-Closed): معطل افتراضيًا. يتطلب تفعيل متغير البيئة KAZMA_CHAOS_ENABLED=true لتنفيذ أي عملية حقن.
  • 10 تجارب محددة مسبقًا: ارتفاع زمن الاستجابة، الأخطاء المتقطعة، بطء قواعد البيانات، انقسام ناقل الرسائل، وفشل تنفيذ الأدوات.
  • استهداف دقيق للمكونات: إمكانية استهداف مكونات محددة مثل LLM_PROVIDER أو DATABASE أو MESSAGE_BUS أو TOOL_EXECUTOR.
  • واجهات مرنة: استخدام المزخرف @chaos_injection في بايثون، أو مدير السياق chaos_experiment()، أو واجهات REST عبر /api/chaos/*.

نمط الفشلالاسم البرمجيالوصف
المهلة / التأخيرFailureType.LATENCYحقن تأخير زمني بالمللي ثانية (latency_ms) قبل اكتمال العملية.
الأخطاءFailureType.ERRORإطلاق استثناءات أو أخطاء HTTP محاكاة (error_code).
انتهاء المهلةFailureType.TIMEOUTحظر التنفيذ حتى يتجاوز حد المهلة المسموح به.
فتح قاطع الدائرةFailureType.CIRCUIT_BREAKER_OPENإجبار قاطع الدائرة على الفتح الفوري لتجربة مسارات البدائل.
استنزاف المواردFailureType.RESOURCE_EXHAUSTIONمحاكاة ضغط الذاكرة أو المعالج.
انقطاع الشبكةFailureType.NETWORK_PARTITIONإسقاط الرسائل بين العقد ووكلاء السرب.

التجارب المسبقة الشائعة

Section titled “التجارب المسبقة الشائعة”
  1. llm_high_latency — محاكاة تأخير 5000 مللي ثانية في استجابة النماذج.
  2. llm_intermittent_errors — حقن أخطاء 500 عشوائية بنسبة 30% على استدعاءات النماذج.
  3. database_slow — تأخير 2000 مللي ثانية في استرجاع الذاكرة وسجل المهام.
  4. circuit_breaker_force_open — فتح قاطع الدائرة لاختبار التبديل التلقائي للنماذج البديلة.
  5. tool_executor_failures — إفشال استدعاءات الأدوات للتحقق من طلب التأكيد والمحاولة.

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("لخص أحدث التقارير")