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. Kurulumun bir kısmını benzer testler yapmak için yeniden kullanmak isterseniz iki büyük XML dosyasını kopyalayıp korumak zorunda kalırsınız.

Bu noktada, Tradefed XML yapılandırma tanımındaki template ve include etiketleri kullanışlı olur. Bu özellikler, 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, başvurmak için name içeren yer tutucular ve isteğe bağlı bir default alanıdır. Varsayılan alan, kullanılması gereken varsayılan değiştirme XML'sini tanımlar.

Belirli bir yapılandırmanın şablonunu değiştirmek için 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 örnekteki empty referansı, hiçbir şey içermeyen empty.xml yapılandırmasını ifade eder. Bu referansı, hiçbir şeyle değiştirmek için 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 merkezlerden bazıları şunlardır:

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

İçerir tanımına örnek

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

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

Includes, komut satırı bağımsız değişkenleri gerektirmediği için şablonlardan daha basittir. name etiketindeki referans verilen XML'yi doğrudan genişletirler. Şablonlara benzer şekilde, yapılandırma yolu mutlak veya göreli olabilir. Bununla birlikte, includes için Tradefed'de daha taşınabilir olduklarından yalnızca göreli yolların kullanılmasını öneririz. Tradefed başka bir makineye taşınırsa mutlak yollar geçerli olmaz.

Yanlış yapılandırma

Değiştirme XML'si bulunamadığında olduğu gibi yanlış yapılandırma durumunda Tradefed, eksik veya yanlış yapılandırılmış gibi görünen öğelerin açıklamasıyla birlikte bir ConfigurationException oluşturur.