اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
التحقّق من حالة النظام
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يتمّ تحديد أدوات التحقّق من حالة النظام (SSC) على مستوى الإعدادات في الحزمة ويتمّ
تشغيلها بين كلّ وحدة. وتعمل هذه الأدوات على إجراء عمليات تحقّق لتحديد ما إذا كانت الوحدة قد تغيّرت
وإذا لم تتم استعادة بعض الحالات المحدّدة، مثل تغيير قيمة أحد سمات النظام.
تُستخدَم رسائل SSC بشكل أساسي لضمان عدم نسيان مؤلفي الوحدات تنظيف المحتوى
بعد الاختبارات، ولكن إذا نسوا ذلك، يجب تقديم تتبع للخطأ حتى يمكن معالجته.
ويتمثل الاستخدام الثانوي في استعادة الحالة الأصلية أيضًا عندما يكون ذلك ممكنًا، على سبيل المثال،
إغلاق شاشة القفل إذا تم تركها مفتوحة.
تعريف ملف XML الخاص بمدقّق حالة النظام
<system_checker class="com.android.tradefed.suite.checker.KeyguardStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.LeakedThreadStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.SystemServerStatusChecker" />
يتم تحديد عناوين URL لصفحات المنتجات في خدمة مقارنة الأسعار ضمن علامة system_checker
في ملف XML لإعدادات Tradefed.
التنفيذ
يجب أن تطبّق كلّ حملة Shopping ذكية ISystemStatusChecker
واجهة،
التي توفّر الطريقتَين الرئيسيتَين preExecutionCheck
وpostExecutionCheck
التي يتمّ تشغيلهما قبل تنفيذ كلّ وحدة وبعده.
من الممكن أن ينفذ المدقّق أحدهما فقط أو ينفّذ كلاهما إذا كان هناك حاجة إلى التحقّق من الحالة قبل الوحدة ومقارنتها بالحالة بعد الوحدة.
تتوفّر عدة أمثلة
على عمليات التنفيذ
في Tradefed. ننصح بالتركيز على عملية تحقّق واحدة في كل عملية تنفيذ
لتحسين إمكانية إعادة الاستخدام. على سبيل المثال، يتحقق العنصر
SystemServerStatusCheck
ممّا إذا تمت إعادة تشغيل عملية system_server
على الجهاز أثناء
تنفيذ مجموعة الاختبار. في postExecutionCheck
، يتم استدعاء deviceSoftRestarted
،
الذي تم تحديده في
NativeDevice
للتحقّق مما إذا تم إعادة تشغيل عملية system_server
.
تُعرِض كل عملية StatusCheckerResult
، مما يتيح للمجموعة تحديد ما إذا كان يجب تسجيل معلومات إضافية، مثل تقرير خطأ.
أين يتم تحديدها في CTS؟
يتم تحديد أدوات التحقّق من حالة نظام CTS فيملف /test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml.
كيفية العثور على أخطاء المدقّق
لا تظهر حالات تعذُّر التحقّق من النظام تلقائيًا إلا في السجلات وتقارير الأخطاء
التي تم تسجيلها للطلب الذي يحمل الاسم التالي التنسيق
bugreport-checker-post-module-<module name>.zip
.
يتيح لك ذلك معرفة الوحدة التي تم إنشاء تقرير الخطأ بعدها.
من الممكن أن يُبلغ مدقّق النظام عن تعذُّر الاختبار نفسه من خلال
ضبط الخيار --report-system-checkers
على true
. ويؤدي ذلك إلى أن يظهر الاختبار على أنّه تعذّر إكماله، ويرجع سبب التعذّر إلى عملية التحقّق من الحالة
أو عملية التحقّق المحدّدة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ 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,["# Check system status\n\nSystem status checkers (SSCs) are defined at the suite-level configuration and\nrun between each module. They perform checks to determine if the module changed\nand didn't restore some given states, for example changing a system property\nvalue.\n\nSSCs are mainly used to ensure that module writers do not forget to clean up\nafter their tests; but if they do, provide a trace of it so it can be addressed.\n\nA secondary use is to also restore the original state when possible, for example\ndismissing the keyguard if it was left open.\n\nSystem status checker XML definition\n------------------------------------\n\n \u003csystem_checker class=\"com.android.tradefed.suite.checker.KeyguardStatusChecker\" /\u003e\n \u003csystem_checker class=\"com.android.tradefed.suite.checker.LeakedThreadStatusChecker\" /\u003e\n \u003csystem_checker class=\"com.android.tradefed.suite.checker.SystemServerStatusChecker\" /\u003e\n\nSSCs are defined under the `system_checker` tag in the Tradefed configuration\nXML.\n\nImplementation\n--------------\n\nEvery SSC must implement the [`ISystemStatusChecker`\ninterface](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/suite/checker/ISystemStatusChecker.java),\nwhich provides the two main methods `preExecutionCheck` and `postExecutionCheck`\nthat run before and after each module execution.\n\nIt's possible for a checker to implement only one of the two, or to implement\nboth if there's a need to check the state before the module and compare it to\nthe state after the module.\n\nSeveral [example\nimplementations](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/suite/checker)\nexist in Tradefed. Each implementation is recommended to focus on a single check\nto improve reusability. For example,\n[`SystemServerStatusCheck`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/suite/checker/SystemServerStatusChecker.java)\nchecks if the `system_server` process restarted on the device during the\ntest suite execution. In the `postExecutionCheck`, it calls `deviceSoftRestarted`,\nwhich is defined in\n[`NativeDevice`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/device/NativeDevice.java)\nto check if the `system_server` process restarted.\n\nEach operation returns\n[`StatusCheckerResult`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/suite/checker/StatusCheckerResult.java),\nwhich lets the harness decide if additional information, like a bug report,\nshould be captured.\n\nWhere are they defined in CTS?\n------------------------------\n\nCTS system status checkers are defined in\n[/test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/tools/cts-tradefed/res/config/cts-system-checkers.xml).\n\nHow to find checker failures\n----------------------------\n\nBy default, system checker failures show only in the logs and as bug reports\ncaptured for the invocation with name following the format\n`bugreport-checker-post-module-\u003cmodule name\u003e.zip`.\n\nThis lets you find out after which module the bug report was generated.\n\nIt's possible to make the system checker report as a test failure itself by\nsetting the `--report-system-checkers` option to `true`. This results in a\ntest run showing as failed with the reason for failure being the status checker\nparticular check."]]