إنتقل إلى المحتوى الرئيسي

الاختبار_بالتوتر

مجموعة_الإجهاد.تدق_أجزاء_التطبيق_التي_يمكن_أن_تكلّف_المستخدمين أموالاً_—خاصة نسخ_التداول بحمل_عدائي_ومُعشَّم_ومُحقن_بالأخطاء. تؤكد_بقاء_النظام_صحيحاً.تعيش_فيtests/StressTests،تشغل_في بوابةdotnet test _الخضراء_الافتراضية.

النهج_—الاختبار_المحاكي_الحتمي(DST)​

أفضل_طريقة_لاختبار_أنظمة_مالية_موزعة_=_ الاختبار_المحاكي_الحتمي، لكل_TigerBeetle،_FoundationDB،_Antithesis:تشغل_منطق_حقيقي_مقابل عالم_مُحاكى،تدفع_بحمل بذروي عشوائي+_الأخطاء_المُحقنة، تؤكد_الثوابت_عند_الاستقرار.كل_البذوري_و_الحتمية→أي فشل_يُعيد_إنتاج_التشابك_بالضبط_من_البذرة._مُجمَّعة_مع:

  • حقن_خطأ_هندسة_الفوضى (أسلوب_Netflix_Chaos_Monkey)— انقطاعات_الاتصال،_رفض_الأوامر،_تدوير_الرمز،_موت_العقدة.
  • ثوابت_مبنية_على_الخصائص —لا_تؤكد_تسلسلات_الاستدعاء_ال确切؛ تؤكد_خصائص_يجب_أن_تصمد_بغض_النظر_عن_كيف_تتخلّف_الأحداث_ (التقارب،_لا_أيتام،_على_الأكثر_واحد_يحمل_الاستئجار).

التطبيق_يشحن_عالماً_مثالياً_لـ_DST:FakeTradingSession، جلسة_Open_API_في_الذاكرة_المؤمنة_بـ_cTrader.مجموعة_الإجهاد تعيد_استخدامه(مرتبط،_مصدر_حقيقة_واحد)لا_محاكاة،لذا الوسيط_المُحاكى_يتbehavior_مثل_الوسيط_الحقيقي.

ماذا_تغطي​

نسخ_التداول_(التركيز_الأساسي)​

تُدفع_عبر_CopyDstWorld (tests/StressTests/CopyTrading/)، تشغلCopyEngineHost _الحقيقية_مقابل_جلسة_الأصلي،تصدر حمل_مصدر_متسق_العضوية:

السيناريويُدق
Mass_fan_out…1_مصدر_→_80_وجهة،_150_فتح_ثم_إغلاق؛Fan-out_كامل+_تفريغ
High_frequency_open_close…300_فتح/إغلاق_متداخلة_سريعة؛_لا_مواقع_مسرّبة
Partial_close_and_scale_in_storm…عاصفة_إغلاق_جزئي_+_scale-in؛_استقرار_مجموعة_التسميات
Connection_flap_storm…قطع_/إعادة_اتصال_مقبس_مُكرر_+_عدم_التزامن_في_منتصف_الرحلة؛_تقارب_المصادقة
Order_rejection_cascade…مجموعة_فرعية_ترفض_كل_أمر؛_الوجهات_الصحية_لا_تتأثر،_ثم_تشفى_ذاتها_عبر_المصادقة
Token_rotation_storm…تبديلات_رمز_سريعة_في_المكان_خلال_عاصفة_أمر
Randomized_chaos_workload… (10_بذور)قلب_DST —كل_نوع_حدث_+_كل_خطأ_متداخلة_غير_متوقعة
CopyLeaseReclaimStressTestsموت_العقدة_+استرداد_الاستئجار_عبر_عنقود_مُوسع(مجال_نقي،_FakeTimeProvider)

ثابت_التقارب.في_الراحة،كل_وجهة_صحية_تُنسخ_بالضبط_مجموعة مواقع_المصدر_المفتوحة—لا_أيتام،لا_مفقودات.يُؤكد_على مجموعة التسمية(scale-in_يفتح_legitimately_موقع_وجهة_ثانٍ_تحت_نفس تسمية_المصدر_،_لذا_التسميات_المكررة_مُتوقعة).الوجهة_الحالية ترفض_الأوامر_يُسمح_لها_بالتأخر،_تُصادَق_بمجرد_الشفاء.

ثابت_الاستئجار.في_عنقود_حيث_العقد_تموت_وتُحيى_حسب_جدول مُبذور،على_الأكثر_عقدة_واحدة_تحمل_الاستئجار_الساري_على_ملف؛ الاستئجار_الميت_ينتهي_بالضبط_عند_انتهاء_الصلاحية،يُسترد؛ العنقود_الصحي_يستقر_مع_كل_ملف_مُحتجز_بواسطة_عقدة_واحدة_بالضبط._ يعكس_CopyEngineSupervisor'_ من_predicate_ادعاء_ضد_أساليب الاستئجار_الخاص_بـ_CopyProfile_.

سلامة_الخيط_من_الـ_harness​

FakeTradingSession أحادية_الخيط؛حمل_الإجهاد_يُغيرات_من_خيط الاختبار_بينما_المضيف_يقرأ/يكتب_من_حلقة_الخلفية_الخاصة_به. SyncTradingSession يلتف_عليها،يجعل_كل_عملية_جلسة_ذرية_على بوابة_واحدة(دون_الاحتفاظ_بالبوابة_عبر_استدعاء_العودة_→ سيف_العكس_ترتيب_القفل_مقابل__stateGate المضيف_و deadlock)._ المحاكي_نفسه_تُرك_دون_لمس.

الأخطاء_المكتشفة​

  • سباق_إعادة_المصادقة_عند_البدء_في_CopyEngineHost.OnReconnected _ موصول_قبل_تحميل_المرجع_الأولي+أول_مصداقة،التي_شغلت_بدون _stateGate.قطع_المقبس_خلال_البدء_شغل_ثاني_مصداقة_متزامن، أفسدت_قاموس_الحالة_غير_المتزامنة_للمضيف(_symbolDetails، _sourceVolumes)._تم_الإصلاح:تشغيل_التحميل_الأولي+أول_مصداقة تحت_البوابة.سباق_إنتاجي،ليس_artefact_اختبار—حمل_الإجهاد الفوضوي_كشفه.

التشغيل​

dotnet test tests/StressTests/StressTests.csproj

المجموعة مُسلسلة ([assembly:_CollectionBehavior(DisableTestParallelization_=_true)]): كل_اختبار_يدور_حلقة_خلفية_حية_،تدفع_إلى_الاستقرار_تحت_ساعة حائطية_،لذا_التشغيل_المتوازي_يجوّع_مهام_المضيف_ويجعل فترات_التقارب_متقطعة.أحجام_الأحمال_مُصممة_للتوقف_في_ثوانٍ لذا_المجموعة_تبقى_في_بوابة_الإخضرار_الافتراضية.الفشل_يطبع بذرته؛_أعد_تشغيل_تلك_البذرة_لإعادة_إنتاج_التشابك_بالضبط.

التمديد​

  • سلوك_نسخ_جديد_→أضف_عملية_مصدر_إلىCopyDstWorld(حافظ_على عضوية_دفتر_المصدر_مع_تدفق_الأحداث)_+حالة_مرجحة_في CopyChaosDstTests.إذا_يمكنه_إنشاء_أو_إحالة_موضع_وجهة، تأكد_ثابت_التقارب_لا_يزال_صامداً.
  • خطأ_جديد_→أضف_حقن_إلىCopyDstWorld(يُفوِّض_إلى_سطح تحكم_FakeTradingSession عبرSyncTradingSession)+ مارس_في_سيناريو_مسمى_بالإضافة_إلى_خليط_الفوضى.
  • حافظ_على_المحاكي_مؤمن_بـ_cTrader_(انظر_جذر_تفويض_CLAUDE.md)؛ لا_تُضعفه_ليمر_اختبار_إجهاد_.