Tradefed'deki paket, genel yürütmeyi sağlayan ortak bir test çalıştırıcısı altında çeşitli testlerin çalıştırıldığı bir kurulumu ifade eder.
Tradefed'de paketler, testlerin nasıl çalıştırıldığından bağımsız olarak eklenip kaldırılmasına olanak tanıyan ITestSuite
sınıfı üzerinden çalıştırılır.
Tanımlar
- Paket: Sonuçlarını tek bir çağrı altında bildirmek için benzer bir üst düzey kurulum altında çalışacak şekilde yapılandırılmış test modülleri kümesi.
- Üst düzey kurulum: Test modüllerinden herhangi biri çalıştırılmadan önce cihazlara uygulanan kurulum.
- Ana yapılandırma: Hangi modüllerin çalıştırılması gerektiğini ve hangi üst düzey kurulumun kullanılması gerektiğini açıklayan, paket düzeyinde Tradefed XML yapılandırması.
- Modül düzeyinde kurulum: Modül çalıştırılmadan hemen önce cihazlara uygulanan kurulum. Bunlar modüle özgü kurulumlar olarak da bilinir.
- Modül yapılandırması: Modülleri ve hangi modül düzeyinde kurulumun yapılması gerektiğini açıklayan
AndroidTest.xml
Tradefed XML yapılandırmasını ifade eder. - Modül: Bir kurulum adımından (modül düzeyinde kurulum), bir test yürütme adımından ve bir kaldırma adımından oluşan test birimi.
- Modül içi yeniden deneme: Modülün içindeki koşum takımı tarafından yapılan otomatik yeniden deneme.
- Paket yeniden deneme: Paketin daha önce başarısız olan testlerinin tamamen yeniden çalıştırılması.
ITestSuite yapısı
ITestSuite
in Tradefed, bir paket yürütmesini yönlendiren ortak temel sınıfı ifade eder. Android Uyumluluk Test Paketi (CTS) ve Android Tedarikçi Test Paketi (VTS) başta olmak üzere tüm büyük test paketleri tarafından paylaşılır ve tüm paketlerde tutarlı bir yürütme deneyimi sağlar.
Bazen ITestSuite'i suite runner olarak adlandırırız.
Suite çalıştırıcı, yürütme sırasında şu adımları izler:
- Modülün yapılandırmasını yükleyin ve hangi kümenin çalıştırılacağını belirleyin.
Her modülü çalıştırın:
- Modül düzeyinde kurulumu çalıştırın.
- Modül testlerini çalıştırın.
- Modül düzeyinde sökme işlemi gerçekleştirin.
Sonuçları bildirin.
Üst düzey kurulum
Tradefed açısından ITestSuite
yalnızca başka bir testtir. Bu karmaşık bir IRemoteTest
olsa da diğerleri gibi sadece bir testtir. Bu nedenle, Tradefed yapılandırmasında paket çalıştırıcı belirtilirken Tradefed, yapılandırmanın normal düzenini izler: build_provider
, target_preparer
, test (bu durumda paketimiz) ve target_cleaner
çalıştırılır.
Tradefed yapılandırmasındaki ITestSuite
içeren bu sıra, üst düzey kurulumdur.
Örnek:
<configuration description="Common config for Compatibility suites">
<build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
<!-- Setup applied before the suite: so everything running in the suite will
have this setup beforehand -->
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put global package_verifier_enable 0" />
<option name="teardown-command" value="settings put global package_verifier_enable 1"/>
</target_preparer>
<!-- Our ITestSuite implementation -->
<test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />
<result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>
Modül meta verileri
Test modülünde belirtilen ek bilgilere modül meta verileri diyoruz
AndroidTest.xml
. Bu meta veriler, modül hakkında ek bilgiler belirtmenize olanak tanır ve modüller meta veriler kullanılarak filtrelenebilir.
Örnek meta veriler:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Meta verilerle ilgili filtre örneği:
--module-metadata-include-filter component=framework
Yukarıdaki komut, framework meta verileri component olarak tüm modülleri çalıştırır.
Tam AndroidTest.xml
örneği:
<configuration description="Config for CTS Gesture test cases">
<option name="test-suite-tag" value="cts" />
<!-- Metadata -->
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
<!-- End: metadata -->
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsGestureTestCases.apk" />
</target_preparer>
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.gesture.cts" />
<option name="runtime-hint" value="10m50s" />
</test>
</configuration>
Parametreli modül
Özel bir meta veri türü parameter
'dır.
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Bu meta veriler, modülün standart uygulama modu yerine farklı bir modda (ör. anlık uygulama olarak) yürütülmesi gerektiğini belirtir.
Olası tüm modlar veya parametreler ModuleParameters
ile açıklanır.
ModuleParametersHelper
içinde, modül kurulumunu belirli bir modda çalışacak şekilde değiştirmenize olanak tanıyan ilişkili bir işleyici bulunur.
Örneğin, hazır uygulama modu, APK yüklemesini hazır uygulama modu olarak zorlar.
Parametreleştirmenin gerçekleşmesi için komut satırının aşağıdakiyle etkinleştirilmesi gerekir:
--enable-parameterized-modules
Ayrıca, belirli bir modu aşağıdaki komutlarla da çalıştırabilirsiniz:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Bir modülün parametreli sürümü çalıştırıldığında sonuçlarını parametreli bir modül adı altında (ör. CtsGestureTestCases[instant]
ve temel CtsGestureTestCases
) bildirir.