پیکربندی تست های ACTS

این صفحه نحوه پیکربندی تست های 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 تغییر می‌دهد.