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.