هنگامی که مجموعه آزمایشی بزرگ است یا زمان اجرا طولانی می شود، ما امکان تقسیم تست ها را در چندین دستگاه ارائه می دهیم: Sharding .
شاردینگ برای دونده آزمایشی پیش نیازهایی دارد که از شاردینگ پشتیبانی کند.
اکثر آزمایشکنندگان اصلی از Sharding پشتیبانی میکنند، بنابراین نیازی به کار اضافی نیست. اینها قبلاً شاردینگ را پشتیبانی میکنند: تستهای ابزار دقیق، تستهای هدایتشده توسط میزبان، GTest.
ما در Tradefed از دو نوع شاردینگ پشتیبانی می کنیم: محلی و توزیع شده. آنها برخی از شباهت ها را به اشتراک می گذارند، بنابراین این صفحه ویژگی های مشترک و سپس ویژگی های هر یک را توضیح می دهد.
خواص مشترک
هر دو شکل شاردینگ ویژگی های یکسانی را از دونده های آزمایش می گیرند: خرده ها باید مستقل و قطعی باشند. اولین مرحله از هر دو تقسیم بندی، ساختن لیست کاملی از تست ها و سپس تقسیم آنها به گروه ها/شاردهای مختلف است.
تفاوت اصلی فرم های شاردینگ در نحوه اجرای تست ها است. جزئیات بیشتر در بخش های زیر
شاردینگ محلی
اشتراک گذاری محلی به این معنی است که تمام دستگاه های درگیر در اجرای فراخوانی خرد شده به یک میزبان فیزیکی متصل هستند.
اعدام
اشتراک گذاری محلی از اتصال همه دستگاه ها به یک میزبان با ایجاد مجموعه ای از آزمایشات که باید اجرا شوند و هر دستگاه نظرسنجی در صورت آزاد بودن (یعنی با آزمایش قبلی انجام می شود) آزمایش می کند. این منجر به استفاده بهینه از دستگاه می شود. ما همچنین به آن اشتراک گذاری پویا می گوییم.
گزینه ها
--shard-count XX
اشتراک گذاری توزیع شده
اشتراک گذاری توزیع شده به این معنی است که تمام دستگاه های درگیر در اجرای فراخوانی خرد شده می توانند در هر مکانی زندگی کنند و به میزبان های فیزیکی مختلف متصل شوند.
اعدام
تقسیم بندی توزیع شده پس از ساخت لیست آزمایش ها اتفاق می افتد و محتوای هر خرده تنها قطعه درخواستی فعلی را اجرا می کند. بنابراین همه خرده های توزیع شده ابتدا یک لیست را می سازند و سپس یک زیرمجموعه انحصاری متقابل از آن را اجرا می کنند که در نتیجه تمام تست ها اجرا می شوند.
ویژگی اصلی این فرم این است که خرده ها کاملاً از یکدیگر بی اطلاع هستند و می توانند به طور مستقل از کار بیفتند.
اشکال اصلی این است که طول شارد لزوماً متعادل نیست، زیرا نمیتوانیم زمان اجرای هر آزمایش را از قبل در هر قطعه پیشبینی کنیم. توزیع به گونه ای ساخته شده است که تقریباً تعداد موارد آزمایشی مشابهی در هر خرده داشته باشد.
گزینه ها
--shard-count XX --shard-index XX
اشتراک گذاری توکن
اشتراک گذاری توکن را می توان فقط با اشتراک گذاری محلی استفاده کرد. پرچم در موارد استفاده غیرمحلی شاردینگ غیرفعال است. گاهی اوقات یکی از دستگاههای درگیر در اشتراکگذاری، منابع خاصی مانند سیمکارت را در اختیار دارد که دیگران آن را ندارند. برخی از تست ها ممکن است فقط زمانی کار کنند که آن منبع ویژه در دسترس باشد و در غیر این صورت با شکست مواجه می شوند.
اشتراک توکن راه حل ما برای چنین موارد استفاده است. ماژولهای تست میتوانند در AndroidTest.xml
خود اعلام کنند به کدام منبع ویژه نیاز دارند و Tradefed آزمایشها را به دستگاهی که منبع را دارد هدایت میکند.
پیکربندی XML
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
value
توکن با TokenProperty
Tradefed مطابقت دارد و با یک handler در TokenProviderHelper
مرتبط است.
این اجازه می دهد تا ماژول های تست در برابر دستگاه هایی اجرا شوند که می توانند آزمایش ها را به درستی اجرا کنند.
اگر هیچ دستگاهی نتواند تست را اجرا کند چه؟
اگر هیچ دستگاهی منبع منطبق با ماژول آزمایشی را نداشته باشد، ماژول آزمایشی شکست خورده و رد می شود زیرا نمی تواند به درستی اجرا شود.
به عنوان مثال، اگر یک ماژول آزمایشی درخواست یک سیم کارت را برای اجرا کند اما هیچ دستگاهی سیم کارت نداشته باشد، ماژول تست با شکست مواجه می شود.
پیاده سازی
این پرچم ویژگی را به خط فرمان اصلی Tradefed منتقل کنید:
--enable-token-sharding