این صفحه نحوه پیکربندی تست های ACTS را شرح می دهد.
منابع پیکربندی
مجموعه تست Comms Android (ACTS) دارای سه منبع اصلی پیکربندی است:
- رابط خط فرمان (CLI)
- فایل پیکربندی ACTS
- متغیرهای محیطی
مقادیر این منابع در یک پیکربندی واحد ترکیب میشوند که برای اجرای تست ACTS استفاده میشود. اگر مقادیر در چندین مکان مشخص شده باشند، مقادیر بر اساس ترتیب بالا (جایی که CLI اولویت دارد) بازنویسی می شوند.
نکته ای در مورد متغیرهای محیطی
هنگام استفاده از متغیرهای محیطی برای تست های ACTS مراقب باشید. این مقادیر کمترین میزان قابل مشاهده را برای کاربر دارند و برای استفاده در خارج از ایستگاه کاری برنامهنویس توصیه نمیشوند. متغیرهای محیطی در طول آزمایشات خودکار ACTS برای جلوگیری از مسمومیت محیطی غیرفعال می شوند.
متغیرهای پیکربندی مورد نیاز
هر آزمون ACTS نیاز به تنظیم متغیرهای زیر دارد.
مسیرهای تست ACTS
ACTS از یک مکان ورودی اصلی اجرا می شود. در نتیجه، مکان مسیر تست برای دونده ناشناخته است.
مکان مسیر تست را با استفاده از متغیر محیطی ACTS_TESTPATH
یا با پرچم -tp
/ --testpaths
در خط فرمان تنظیم کنید. مقدار می تواند لیستی از دایرکتوری ها باشد.
کلاس های تست ACTS
ACTS باید بداند چه کلاس های آزمایشی را اجرا کند. این می تواند یک regex یا لیستی از نام کلاس های آزمایشی باشد.
برای تنظیم این مقدار، از پرچم -tc
/ --test_class
در خط فرمان استفاده کنید. توجه داشته باشید که این پرچم لیستی از نام کلاس ها را نیز می پذیرد. نام کلاس ها باید با نام فایل مربوطه خود مطابقت داشته باشد، به عنوان مثال، SampleTest
باید در SampleTest.py
یافت شود.
مسیر ورود به سیستم ACTS
ACTS باید مکانی برای نوشتن گزارشها به غیر از STDOUT داشته باشد. ACTS گزارشهای اشکالزدایی کامل حاوی دادههایی را مینویسد که میتواند به تعیین علت شکست برخی از آزمایشها کمک کند. برای جلوگیری از بهم ریختگی، ACTS این گزارشها را در STDOUT نمینویسد.
برای تنظیم مسیر log، از متغیر محیطی ACTS_LOGPATH
یا پرچم -lp
/ --logpath
در خط فرمان استفاده کنید.
مسیر پیکربندی ACTS
برای اجرای آزمون، ACTS باید بداند چه بستر آزمایشی وجود دارد. پیکربندی ACTS شامل تمام دستگاههای موجود در بستر آزمایش، و هر آزمون خاص یا پارامتر محیطی است که ممکن است مورد نیاز باشد. این مقدار را در خط فرمان با استفاده از -c
/ --config
تنظیم کنید.
اگر چندین بستر آزمایشی در پیکربندی وجود داشته باشد، ACTS آزمایشها را برای هر بستر آزمایشی اجرا میکند. برای اجرای آزمایش فقط برای یک بستر آزمایشی در لیست، از آرگومان خط فرمان -tb/--testbed <NAME>
استفاده کنید.
یک مثال ایستگاه کاری محلی
اکثر کاربران ACTS در یک شعبه مخزن اندروید توسعه میدهند و تنظیماتی مشابه این دارند:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'
# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
اگر کاربران ACTS روی چندین شاخه اجرا شوند، اغلب ACTS را از دایرکتوری acts/framework
اجرا میکنند و از یک مسیر نسبی برای ACTS_TESTPATH
استفاده میکنند:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'
# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
بسترهای آزمایشی خود را پیکربندی کنید
فایل پیکربندی ACTS تمام اطلاعات لازم را برای اجرای تست ها بر روی دستگاه های سخت افزاری ارائه می دهد:
{
"testbed": {
"my_testbed": {
"my_testbed_value": "value"
},
"another_testbed": {
"AndroidDevice": [
"53R147"
]
}
},
"user_parameter_1": "special environment value",
"user_parameter_2": "other special value"
}
واحد پایه این پیکربندی، بستر آزمایش است. در پیکربندی مثال بالا، testbed my_testbed
با یک مقدار بستر آزمایشی واحد ایجاد میشود. تست دوم، another_testbed
، دارای یک پیکربندی کنترلکننده ویژه است که اطلاعات لیستی از دستگاههای Android را در خود نگه میدارد. این دستگاهها در فهرستی از دستگاهها تحت self.android_devices
ذخیره میشوند. توجه داشته باشید که اگر یک بستر آزمایشی یک شی AndroidDevice
را مشخص نکند، یک کلاس آزمایشی که انتظار یک شی AndroidDevice
را دارد یک استثنا ایجاد می کند. برای فهرست کامل پیکربندیهای کنترلکننده پشتیبانیشده همراه با ACTS، فهرست را در /acts/framework/acts/controllers/
ببینید.
همه مقادیر دیگر (که مقادیر خاصی در بخش بالا ذکر نشده اند) در self.user_params
به عنوان یک فرهنگ لغت ذخیره می شوند. این مکان مناسبی برای نگهداری اطلاعات محیطی یا آزمایشی مانند اینکه آیا تلفنها در محیط دادههای اندازهگیری قرار دارند یا مدت زمان جمعآوری دادهها برای آزمایش است.
کیس های ویژه برای AndroidDevice
برای سهولت توسعه زمانی که میخواهید چندین دستگاه با ویژگیهای مختلف در دسترس داشته باشید، AndroidDevice
موارد خاصی دارد.
فرمت پیکربندی JSON
تمام جفتهای کلید/مقدار در مثال JSON زیر روی شی AndroidDevice
مربوطه تنظیم شدهاند. اگر پیکربندی سعی کند یک پارامتر تعریف شده در ویژگی AndroidDevice
را بازنویسی کند، ControllerError
پرتاب می شود.
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
سپس در اسکریپت تست، می توانید از یک تابع فیلتر برای بازیابی دستگاه صحیح و دسترسی به پارامترهای اضافی از شی دستگاه استفاده کنید:
def setup_class(self):
self.pub = next(filter(lambda ad: ad.label == 'publisher',
self.android_devices))
self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
self.android_devices))
پارامتر اختیاری
پارامتر زیر یک پارامتر اختیاری است:
-
adb_logcat_param
: رشته ای که به دستورadb logcat
برای جمع آوری لاگ های adb اضافه شده است. به طور پیش فرض،adb logcat -v threadtime -b all
استفاده می شود. اگرadb_logcat_param
تنظیم شده باشد، قسمت-b all
بازنویسی می شود. برای مثال، تنظیمadb_logcat_param
به-b radio
دستور را بهadb logcat -v threadtime -b radio
تغییر میدهد.
این صفحه نحوه پیکربندی تست های ACTS را شرح می دهد.
منابع پیکربندی
مجموعه تست Comms Android (ACTS) دارای سه منبع اصلی پیکربندی است:
- رابط خط فرمان (CLI)
- فایل پیکربندی ACTS
- متغیرهای محیطی
مقادیر این منابع در یک پیکربندی واحد ترکیب میشوند که برای اجرای تست ACTS استفاده میشود. اگر مقادیر در چندین مکان مشخص شده باشند، مقادیر بر اساس ترتیب بالا (جایی که CLI اولویت دارد) بازنویسی می شوند.
نکته ای در مورد متغیرهای محیطی
هنگام استفاده از متغیرهای محیطی برای تست های ACTS مراقب باشید. این مقادیر کمترین میزان قابل مشاهده را برای کاربر دارند و برای استفاده در خارج از ایستگاه کاری برنامهنویس توصیه نمیشوند. متغیرهای محیطی در طول آزمایشات خودکار ACTS برای جلوگیری از مسمومیت محیطی غیرفعال می شوند.
متغیرهای پیکربندی مورد نیاز
هر آزمون ACTS نیاز به تنظیم متغیرهای زیر دارد.
مسیرهای تست ACTS
ACTS از یک مکان ورودی اصلی اجرا می شود. در نتیجه، مکان مسیر تست برای دونده ناشناخته است.
مکان مسیر تست را با استفاده از متغیر محیطی ACTS_TESTPATH
یا با پرچم -tp
/ --testpaths
در خط فرمان تنظیم کنید. مقدار می تواند لیستی از دایرکتوری ها باشد.
کلاس های تست ACTS
ACTS باید بداند چه کلاس های آزمایشی را اجرا کند. این می تواند یک regex یا لیستی از نام کلاس های آزمایشی باشد.
برای تنظیم این مقدار، از پرچم -tc
/ --test_class
در خط فرمان استفاده کنید. توجه داشته باشید که این پرچم لیستی از نام کلاس ها را نیز می پذیرد. نام کلاس ها باید با نام فایل مربوطه خود مطابقت داشته باشد، به عنوان مثال، SampleTest
باید در SampleTest.py
یافت شود.
مسیر ورود به سیستم ACTS
ACTS باید مکانی برای نوشتن گزارشها به غیر از STDOUT داشته باشد. ACTS گزارشهای اشکالزدایی کامل حاوی دادههایی را مینویسد که میتواند به تعیین علت شکست برخی از آزمایشها کمک کند. برای جلوگیری از بهم ریختگی، ACTS این گزارشها را در STDOUT نمینویسد.
برای تنظیم مسیر log، از متغیر محیطی ACTS_LOGPATH
یا پرچم -lp
/ --logpath
در خط فرمان استفاده کنید.
مسیر پیکربندی ACTS
برای اجرای آزمون، ACTS باید بداند چه بستر آزمایشی وجود دارد. پیکربندی ACTS شامل تمام دستگاههای موجود در بستر آزمایش، و هر آزمون خاص یا پارامتر محیطی است که ممکن است مورد نیاز باشد. این مقدار را در خط فرمان با استفاده از -c
/ --config
تنظیم کنید.
اگر چندین بستر آزمایشی در پیکربندی وجود داشته باشد، ACTS آزمایشها را برای هر بستر آزمایشی اجرا میکند. برای اجرای آزمایش فقط برای یک بستر آزمایشی در لیست، از آرگومان خط فرمان -tb/--testbed <NAME>
استفاده کنید.
یک مثال ایستگاه کاری محلی
اکثر کاربران ACTS در یک شعبه مخزن اندروید توسعه میدهند و تنظیماتی مشابه این دارند:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'
# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
اگر کاربران ACTS روی چندین شاخه اجرا شوند، اغلب ACTS را از دایرکتوری acts/framework
اجرا میکنند و از یک مسیر نسبی برای ACTS_TESTPATH
استفاده میکنند:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'
# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
بسترهای آزمایشی خود را پیکربندی کنید
فایل پیکربندی ACTS تمام اطلاعات لازم را برای اجرای تست ها بر روی دستگاه های سخت افزاری ارائه می دهد:
{
"testbed": {
"my_testbed": {
"my_testbed_value": "value"
},
"another_testbed": {
"AndroidDevice": [
"53R147"
]
}
},
"user_parameter_1": "special environment value",
"user_parameter_2": "other special value"
}
واحد پایه این پیکربندی، بستر آزمایش است. در پیکربندی مثال بالا، testbed my_testbed
با یک مقدار بستر آزمایشی واحد ایجاد میشود. تست دوم، another_testbed
، دارای یک پیکربندی کنترلکننده ویژه است که اطلاعات لیستی از دستگاههای Android را در خود نگه میدارد. این دستگاهها در فهرستی از دستگاهها تحت self.android_devices
ذخیره میشوند. توجه داشته باشید که اگر یک بستر آزمایشی یک شی AndroidDevice
را مشخص نکند، یک کلاس آزمایشی که انتظار یک شی AndroidDevice
را دارد یک استثنا ایجاد می کند. برای فهرست کامل پیکربندیهای کنترلکننده پشتیبانیشده همراه با ACTS، فهرست را در /acts/framework/acts/controllers/
ببینید.
همه مقادیر دیگر (که مقادیر خاصی در بخش بالا ذکر نشده اند) در self.user_params
به عنوان یک فرهنگ لغت ذخیره می شوند. این مکان مناسبی برای نگهداری اطلاعات محیطی یا آزمایشی مانند اینکه آیا تلفنها در محیط دادههای اندازهگیری قرار دارند یا مدت زمان جمعآوری دادهها برای آزمایش است.
کیس های ویژه برای AndroidDevice
برای سهولت توسعه زمانی که میخواهید چندین دستگاه با ویژگیهای مختلف در دسترس داشته باشید، AndroidDevice
موارد خاصی دارد.
فرمت پیکربندی JSON
تمام جفتهای کلید/مقدار در مثال JSON زیر روی شی AndroidDevice
مربوطه تنظیم شدهاند. اگر پیکربندی سعی کند یک پارامتر تعریف شده در ویژگی AndroidDevice
را بازنویسی کند، ControllerError
پرتاب می شود.
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
سپس در اسکریپت تست، می توانید از یک تابع فیلتر برای بازیابی دستگاه صحیح و دسترسی به پارامترهای اضافی از شی دستگاه استفاده کنید:
def setup_class(self):
self.pub = next(filter(lambda ad: ad.label == 'publisher',
self.android_devices))
self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
self.android_devices))
پارامتر اختیاری
پارامتر زیر یک پارامتر اختیاری است:
-
adb_logcat_param
: رشته ای که به دستورadb logcat
برای جمع آوری لاگ های adb اضافه شده است. به طور پیش فرض،adb logcat -v threadtime -b all
استفاده می شود. اگرadb_logcat_param
تنظیم شده باشد، قسمت-b all
بازنویسی می شود. برای مثال، تنظیمadb_logcat_param
به-b radio
دستور را بهadb logcat -v threadtime -b radio
تغییر میدهد.