اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
استخدام أدوات التحكّم في الوحدات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكن أن تحتوي كل وحدة مجموعة (يتم تحديدها بواسطة AndroidTest.xml
) على عنصر
module_controller
خاص يمكنه تغيير بعض سلوك الوحدة:
ما إذا كان سيتم تشغيل الوحدة أم لا استنادًا إلى بعض الشروط
من خلال تنفيذ BaseModuleController
وإضافته إلى AndroidTest.xml
على النحو التالي:
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.<NAME>" />
سيتم استخدام وحدة التحكّم في الوحدة لتحديد ما إذا كان يجب تنفيذ الوحدة
أو لا، استنادًا إلى
public abstract RunStrategy shouldRun(IInvocationContext context);
التنفيذ.
ما إذا كان سيتم جمع بعض السجلات أم لا في حال حدوث أخطاء
عند تشغيل مجموعة كاملة، من الممكن طلب جمع بعض السجلات المتعلّقة بالأعطال (لقطة شاشة وتقرير أخطاء وlogcat) على مستوى المجموعة. ولكن بالنسبة إلى
بعض الوحدات، قد لا يكون للسجلّ المطلوب أي قيمة، وسيكون جمع بياناته
ببساطة مضيعة للوقت. في هذه الحالة، يمكن للوحدة تحديد السجلات التي تهمّها بشكل صريح:
<object type="module_controller"
class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
<option name="screenshot-on-failure" value="<true OR false>" />
<option name="bugreportz-on-failure" value="<true OR false>" />
<option name="logcat-on-failure" value="<true OR false>" />
</object>
ملاحظة: يجب أن يكون تنفيذ أدوات التحكّم عامًا قدر الإمكان لزيادة إمكانية إعادة الاستخدام إلى أقصى حد. ويجب أن يراجع صاحب الوحدة تخطّي وحدة استنادًا إلى حالتها للحصول على الموافقة على أنّ تخطّي الوحدة هو السلوك المناسب له.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Employ module controllers\n\nEach suite module (defined by `AndroidTest.xml`) can contain a special\n`module_controller` object that can alter some behavior of the module:\n\nWhether to run the module or not based on some conditions\n---------------------------------------------------------\n\nBy implementing [BaseModuleController](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/suite/module/BaseModuleController.java)\nand adding it to the `AndroidTest.xml` like this: \n\n \u003cobject type=\"module_controller\" class=\"com.android.tradefed.testtype.suite.module.\u003cNAME\u003e\" /\u003e\n\nThe module controller will be used to determine whether the module should run\nor not, based on the\n`public abstract RunStrategy shouldRun(IInvocationContext context);`\nimplementation.\n\nWhether to collect some logs or not on failures\n-----------------------------------------------\n\nWhen running a full suite, it's possible to request at the suite level the\ncollection of some logs on failures (screenshot, bugreport, logcat). But for\nsome modules, a particular log requested might not have any value and will\nsimply waste time to be collected. In that situation, a module can explicitly\nspecify which logs they are interested in: \n\n \u003cobject type=\"module_controller\"\n class=\"com.android.tradefed.testtype.suite.module.TestFailureModuleController\"\u003e\n \u003coption name=\"screenshot-on-failure\" value=\"\u003ctrue OR false\u003e\" /\u003e\n \u003coption name=\"bugreportz-on-failure\" value=\"\u003ctrue OR false\u003e\" /\u003e\n \u003coption name=\"logcat-on-failure\" value=\"\u003ctrue OR false\u003e\" /\u003e\n \u003c/object\u003e\n\nNOTE: Implementation of controllers should be generic if possible in order to\nmaximize re-usability. And skipping a module based on its condition should\nbe reviewed by the module owner to get the approval that skipping a module is\nthe proper behavior for them."]]