Küresel yapılandırma ile protokolleri yükleyin

Bu bölümü anlamak için öncelikle 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, fazladan bir adım atmanıza ve gerekirse bu ek bilgilerin bir kısmını çözümlemenize 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

Tanım

Bu özellik, uzaktaki Dosya tipi @Options'ı kullanıcı açısından sorunsuz bir şekilde kullanılabilmesi için yerel bir dosyaya çözümlemenize olanak tanır.

Bunun çalışması için dosyanın uzak stil yolu ile belirtilmesi gerekir. Örneğin:

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

Bu yol, depolandığı Google Cloud Storage (GCS) paketindeki bir dosyaya işaret eder. Bu uzak yolu gördükten sonra yapılan işlem, dosyayı yerel olarak indirmeye ve @Option'a atamaya çalışacaktır. Bu, mConfigFile değişkeninin artık dosyanın test tarafından kullanılabilecek yerel sürümünü göstermesiyle sonuçlanır.

Uzak dosya herhangi bir nedenle indirilemiyorsa Tradefed, testin çalışmasını engelleyecek bir ConfigurationException oluşturacaktır. Bazı test öğeleri de eksik olacağından bu dosyaların eksik kalmasının kritik bir hata olduğunu düşünüyoruz.

Sorgu parametrelerini kullan

Bir URL'ye sorgu parametreleri eklemek ? . Örneğin, gs://bucket/path?unzip=true . unzip=true anahtar/değeri IRemoteFileResolver arayüz uygulamasında mevcut olacaktır.

İki yerleşik davranış mevcuttur:

  • unzip: true olarak ayarlanırsa ve indirilen dosya bir zip ise, zip dosyası otomatik olarak geçici bir konuma açılacaktır. Örnek: ?unzip=true
  • isteğe bağlı: Varsayılan olarak false olur. true olarak ayarlanırsa ve çözümleme başarısız olursa, bir istisna atmaz ve dosyayı değiştirmez. Örnek: ?optional=true

Ayrıca genel sorgu bağımsız değişkenlerini --dynamic-download-args key=value aracılığıyla, çağrı sırasında denenen tüm dinamik indirmelere anahtar/değer aktaracak şekilde iletebilirsiniz.

Desteklenen protokoller

Resmi olarak desteklenen protokoller ve bunlara karşılık gelen formatlar şunlardır:

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

Sınırlamalar

@Option'ın dinamik çözünürlüğü şu anda yalnızca sınırlı sayıda protokolü ve indirilecek konumu desteklemektedir. @Option'ın çözünürlüğü şu anda yalnızca ana XML Tradefed yapılandırması için etkindir.

Bir paket olarak çalışıyorsanız, mevcut modüller ( AndroidTest.xml ) dosyaları varsayılan olarak çözümlemeyecektir. Bunun amacı, modüllerin bazı bilinmeyen bağımlılıklar yaratmasını önlemektir . Paket düzeyinde --enable-module-dynamic-download kullanılarak bu durumdan kaçınılabilir, ancak Uyumluluk Test Paketi (CTS) ve Satıcı Test Paketi (VTS) gibi ana paketler bunu etkinleştirmez.

Yeni bir protokol uygulayın

Desteklenen protokoller, IRemoteFileResolver arayüzünün Tradefed'inde getSupportedProtocol aracılığıyla dosya yolunda eşleştirilecek protokolün kısa etiketini tanımlayan bir uygulamaya sahiptir. Örneğin Google Cloud Storage protokolü için gs kullanılır. Uygulanması önerilen arayüz #resolveRemoteFiles(RemoteFileResolverArgs) olup, uzun süre bakımı yapılan arayüz olacaktır.

Uygulanan protokoller, desteği resmi olarak açmak için donanım META-INF hizmetleri dosyasına eklenebilir.