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. Aşağıdakiler zaten parçalanmayı desteklemektedir: enstrümantasyon testleri, ana makine tarafı tarafından yönlendirilen testler, GTest.
Tradefed'de desteklediğimiz iki tür bölümleme vardır: yerel ve dağıtılmış. Bu iki yöntemin bazı benzerlikleri vardır. Bu nedenle, bu sayfada önce ortak özellikler, ardından her birinin ö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.
Bölme biçimleri arasındaki temel fark, testlerin yürütülme şeklidir. Daha fazla bilgiyi aşağıdaki bölümlerde bulabilirsiniz.
Yerel bölme
Yerel bölme, bölünmüş ç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 bölme, yürütülmesi gereken bir test havuzu oluşturarak ve her cihazın boş olduğunda (yani önceki test tamamlandığında) testleri sorgulayarak aynı ana makineye bağlı tüm cihazlardan yararlanır. Bu sayede cihaz kullanımı optimize edilir. Buna dinamik bölümleme 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. Bu nedenle, dağıtılan tüm parçalar önce aynı listeyi oluşturur ve ardından bu listenin birbirini hariç tutan bir alt kümesini yürütür. Bu da tüm testlerin yürütülmesine neden olur.
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 bir 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, SIM kartı gibi diğer cihazlarda bulunmayan özel kaynaklara sahiptir. Bazı testler yalnızca özel kaynak mevcut olduğunda çalışır 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
değeri, Tradefed'in TokenProperty
değeriyle eşleşir ve TokenProviderHelper
içindeki 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 bir kaynağa sahip cihaz yoksa test modülü düzgün şekilde yürütülemediği 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