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.