Protokoller genel yapılandırmayla yüklenir.

Bu bölümü anlamak için önce Tradefed @Option'ı inceleyin.

Tradefed'deki tipik seçenekler, test sınıflarının XML yapılandırmasından veya komut satırından ek bilgi almasına olanak tanır. Bu özellik, bir adım daha ileri giderek gerekirse bu ek bilgilerin bir kısmını çözmenize olanak tanır.

Dosya seçeneği örneği

Örnek dosya @option:

@Option(name = 'config-file')
private File mConfigFile;

Yukarıdakiler XML yapılandırması aracılığıyla ayarlanabilir:

<option name="config-file" value="/tmp/file" />

veya komut aracılığıyla:

--config-file /tmp/file

Açıklama

Bu özellik, uzak konumdaki dosya türünde @Seçenekleri, kullanıcı açısından sorunsuz bir şekilde kullanılabilen yerel bir dosyaya dönüştürmenize olanak tanır.

Bu işlemin çalışması için dosyanın uzak stil yoluyla belirtilmesi gerekir. Örneğin:

--config-file gs://bucket/tmp/file

Bu yol, Google Cloud Storage (GCS) paketinde depolanan bir dosyayı gösterir. Tradefed, uzak yolu gördüğünde dosyayı yerel olarak indirmeye ve @Option'a atamaya çalışır. Bu işlem sonucunda mConfigFile değişkeni artık dosyanın yerel sürümünü işaret eder ve bu sürüm test tarafından kullanılabilir.

Uzak dosya herhangi bir nedenle indirilemezse Tradefed, testin çalışmasını engelleyen bir ConfigurationException oluşturur. Bu dosyaların eksik olması, bazı test yapılarının da eksik olacağı için kritik bir hata olarak kabul edilir.

Sorgu parametrelerini kullanma

? kullanarak URL'ye sorgu parametreleri ekleyebilirsiniz. Örneğin, gs://bucket/path?unzip=true. Anahtar/değer unzip=true, IRemoteFileResolver arayüzü uygulamasında kullanılabilir.

İki yerleşik davranış vardır:

  • unzip: true olarak ayarlanırsa ve indirilen dosya bir zip dosyasıysa otomatik olarak geçici bir konuma açılır. Örnek: ?unzip=true
  • isteğe bağlı: Varsayılan olarak false değerine ayarlanır. true olarak ayarlanırsa ve çözünürlük başarısız olursa istisna oluşturmaz ve dosyayı değiştirmez. Örnek: ?optional=true

Ayrıca, --dynamic-download-args key=value aracılığıyla genel sorgu bağımsız değişkenleri de iletebilirsiniz. Bu bağımsız değişkenler, anahtar/değeri, çağırmada denenmiş tüm dinamik indirmelere iletir.

Desteklenen protokoller

Resmi olarak desteklenen protokoller ve ilgili biçimleri şunlardır:

  • Google Cloud Storage, protokol: gs, biçim: gs://<bucket name>/path
  • Yerel dosyalar, protokol: file, biçim: file:/local/path
  • http bağlantıları, protokol: http, biçim: http://url
  • https bağlantıları, protokol: https, biçim: https://url

Sınırlamalar

@Option'ın dinamik çözümü şu anda yalnızca sınırlı sayıda protokole ve indirme konumuna destek vermektedir. @Option çözümü şu anda yalnızca ana XML Tradefed yapılandırması için etkinleştirilmiştir.

Paket olarak çalıştırılıyorsa mevcut modüller (AndroidTest.xml) dosyaları varsayılan olarak çözmez. Bu, modüllerin bilinmeyen bağımlılıklar oluşturmasını önlemek için tasarlanmıştır. Bu durum, paket düzeyinde --enable-module-dynamic-download kullanılarak önlenebilir ancak Uyumluluk Test Paketi (CTS) ve Tedarikçi Test Paketi (VTS) gibi büyük paketler bunu etkinleştirmez.

Yeni bir protokol uygulama

Desteklenen protokoller, getSupportedProtocol aracılığıyla dosya yolunda eşleştirilecek protokolün kısa etiketini tanımlayan IRemoteFileResolver arayüzünün Tradefed'de uygulanmasını içerir. Örneğin, gs, Google Cloud Storage protokolü için kullanılır. Uygulanması önerilen arayüz, uzun vadede desteklenecek arayüz olan #resolveRemoteFiles(RemoteFileResolverArgs)'dır.

Uygulanan protokoller, desteği resmi olarak etkinleştirmek için the harness META-INF services dosyasına eklenebilir.