Test veri kümesi büyük olduğunda veya yürütme süresi uzadıkça testleri birkaç cihaza bölme olanağı sunarız: bölümlere ayırma.
Test çalıştırıcısının bölümlemeyi desteklemesi için bölümlemenin önkoşulları vardır.
Ana test çalıştırıcılarının çoğu zaten parçalamayı desteklediğinden ek işlem gerekmez. Bunlar, parçalamayı zaten desteklemektedir: araç testleri, ana makine tarafı destekli testler ve GTest.
Tradefed'de desteklediğimiz iki tür bölümleme vardır: yerel ve dağıtılmış. Bu özellikler bazı benzerliklere sahiptir. Bu nedenle bu sayfada ortak özellikler ve her birinin ayrıntılı özellikleri açıklanmaktadır.
Yaygın özellikler
Her iki bölme biçimi de test çalıştırıcılardan aynı özellikleri varsayar: Parçaların bağımsız ve deterministik olması gerekir. Her iki bölme işleminin de ilk adımı, testlerin tam sıralı listesini oluşturmak ve ardından bunları farklı gruplara/bölümlere ayırmaktır.
Parçalama formlarının başlıca farkı, testleri yürütme biçimleridir. Daha fazla bilgiyi aşağıdaki bölümlerde bulabilirsiniz.
Yerel bölme
Yerel bölme, bölmelenmiş çağrının yürütülmesiyle ilgili tüm cihazların aynı fiziksel ana makineye bağlı olduğu anlamına gelir.
Uygulama
Yerel parçalama, yürütülmesi gereken bir test havuzu oluşturarak ve her cihaz yoklama testlerini ücretsiz olduğunda (önceki testle yapılır) aynı ana makineye bağlı olan tüm cihazlardan faydalanır. Bu, optimize edilmiş bir cihaz kullanımı sağlar. Buna dinamik bölme denir.
Seçenekler
--shard-count XX
Dağıtılmış bölme
Dağıtılmış bölme, bölmelenmiş çağrının yürütülmesinde yer alan tüm cihazların herhangi bir yerde bulunabileceği ve farklı fiziksel ana makinelere bağlı olabileceği anlamına gelir.
Uygulama
Dağıtılmış bölme işlemi, test listesi oluşturulduktan sonra gerçekleşir ve her bir parçanın içeriği yalnızca şu anda istenen parçayı yürütür. Dolayısıyla, dağıtılan tüm parçalar başlangıçta aynı listeyi oluşturur ve daha sonra listenin karşılıklı olarak özel bir alt kümesini yürütür. Böylece tüm testler yürütülür.
Bu formun ana özelliği, parçaların birbirinden tamamen haberdar olmaması ve bağımsız olarak başarısız olabilmesidir.
Ana dezavantaj, her parçadaki her testin çalışma süresini önceden tahmin edemediğimiz için parça uzunluğunun her zaman dengeli olmamasıdır. Dağılım, her parçada yaklaşık olarak aynı sayıda test senaryosunun bulunması için yapılır.
Seçenekler
--shard-count XX --shard-index XX
Jeton bölme
Jeton bölme yalnızca yerel bölme ile kullanılabilir. Bu işaret, yerel olmayan bölümleme kullanım alanlarında kullanılamaz. Bazen parçalara ayırma işlemine dahil olan cihazlardan biri, diğerlerinde bulunmayan özel kaynaklara (ör. SIM kartı) sahiptir. Bazı testler yalnızca söz konusu özel kaynak kullanılabilir olduğunda çalışabilir ve aksi takdirde başarısız olur.
Jeton bölme, bu tür kullanım alanlarına yönelik çözümümüzdür. Test modülleri, AndroidTest.xml
içinde ihtiyaç duydukları özel kaynağı belirtebilir ve Tradefed, testleri kaynağın bulunduğu bir cihaza yönlendirir.
XML yapılandırması
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
Jetonun value
öğesi, Tradefed'in TokenProperty
ile eşleşir ve TokenProviderHelper
bölgesindeki bir işleyiciyle ilişkilendirilir.
Bu sayede test modülleri, testleri düzgün şekilde yürütebilen cihazlarda çalıştırılabilir.
Hiçbir cihaz testi çalıştıramazsa ne olur?
Test modülüyle eşleşen kaynağa sahip cihaz yoksa test modülü düzgün çalışmadığı için başarısız olur ve atlanır.
Örneğin, bir test modülü çalıştırmak için SIM kart ister ancak hiçbir cihazda SIM kart yoksa test modülü başarısız olur.
Uygulama
Bu özellik işaretini ana Tradefed komut satırına iletin:
--enable-token-sharding