Tradefed XML yapılandırmasında şablonlar ve dahil edilenler

Bir testi tanımlamak için tek bir monolitik XML yapılandırması oluşturmak her zaman pratik değildir. Benzer testler çalıştırmak için kurulumun bir kısmını yeniden kullanmak isterseniz iki dev XML dosyasını kopyalayıp yönetmeniz gerekir.

Bu noktada Tradefed XML yapılandırma tanımındaki template ve include etiketleri işe yarar. Başka bir XML yapılandırmasının bir bölümünü eklemek için bazı XML yapılandırmalarında yer tutucular ayarlamanıza olanak tanır.

Şablonlar için örnek tanım

<configuration description="Common base configuration for local runs with minimum overhead">
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <template-include name="preparers" default="empty" />

    <template-include name="test" default="empty" />

    <template-include name="reporters" default="empty" />
</configuration>

Şablonlar, referans olarak kullanılacak bir name ve isteğe bağlı bir default alanına sahip yer tutuculardır. Varsayılan alan, kullanılması gereken varsayılan değiştirme XML'sini tanımlar.

Belirli bir yapılandırma için bir şablonu değiştirmek amacıyla komut satırına aşağıdaki komut parametresinin eklenmesi gerekir:

--template:map <name of template>=<replacement XML config path>

--template:map preparers=empty

Örneğin:

<template-include name="preparers" default="empty" />

Bu durumdaki empty referansı, hiçbir şey içermeyen empty.xml yapılandırmasını ifade eder. Hiçbir şeyle değiştirme işlemi için referans olarak bunu kullanırız.

XML yapılandırmalarının yolu, Tradefed'in JAR kaynaklarındaki res/config klasörüne göre mutlak veya göreli olabilir. Bu konumlardan bazıları şunlardır:

  • tools/tradefederation/core/res/config
  • tools/tradefederation/core/tests/res/config
  • tools/tradedeferation/contrib/res/config

includes işlevinin örnek tanımı

<configuration description="Common base configuration for local runs with minimum overhead">
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <include name="empty"/>
</configuration>

Dahil etme işlemleri, komut satırı bağımsız değişkenleri gerektirmediğinden şablonlardan daha basittir; name etiketinde referans verilen XML'i doğrudan genişletir. Şablonlara benzer şekilde, yapılandırmanın yolu mutlak veya göreli olabilir. Yine de includes için Tradefed'de daha taşınabilir olduklarından yalnızca göreli yollar kullanmanızı öneririz. Tradefed başka bir makineye taşınırsa mutlak yollar geçerli olmaz.

Yanlış yapılandırma

Yanlış yapılandırma durumunda (ör. değişim XML'si bulunamadığında) Tradefed, eksik veya yanlış yapılandırılmış öğelerin açıklamasını içeren bir ConfigurationException oluşturur.