Bu bölümü anlamak için önce Tradefed @Option'u 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 gidip 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 şu komutla:
--config-file /tmp/file
Açıklama
Bu özellik, uzaktaki dosya türündeki @Options öğelerini yerel bir dosyaya çözmenize olanak tanır. Böylece, kullanıcılar bu öğeleri sorunsuz bir şekilde kullanabilir.
Bunun işe yaraması için dosyanın uzak stil yolu ile belirtilmesi gerekir. Örneğin:
--config-file gs://bucket/tmp/file
Bu yol, dosyanın depolandığı Google Cloud Storage (GCS) paketindeki bir dosyayı gösterir. Tradefed, bu uzak yolu görünce dosyayı yerel olarak indirip @Option'a atamaya çalışır. Bu, mConfigFile
değişkeninin artık dosyanın test tarafından kullanılabilecek yerel sürümüne işaret etmesini sağlar.
Uzak dosya herhangi bir nedenle indirilemezse Tradefed, testin çalışmasını engelleyen bir ConfigurationException
oluşturur. Bazı test yapıları da eksik olacağından bu dosyaların eksik olması kritik bir hata olarak kabul edilir.
Sorgu parametrelerini kullanma
?
kullanarak bir URL'ye sorgu parametreleri ekleyebilirsiniz. Örneğin,
gs://bucket/path?unzip=true
. unzip=true
anahtarı/değeri, IRemoteFileResolver arabirim uygulamasında kullanılabilir.
İki yerleşik davranış vardır:
- sıkıştırmayı açma:
true
olarak ayarlanırsa ve indirilen dosya bir zip dosyası açılırsa otomatik olarak geçici bir konuma çıkar. Örnek:?unzip=true
- isteğe bağlı: Varsayılan olarak
false
değerine ayarlanır.true
olarak ayarlanırsa ve çözüm başarısız olursa istisna atılmaz ve dosya değiştirilmez. Örnek:?optional=true
Ayrıca, --dynamic-download-args key=value
aracılığıyla genel sorgu bağımsız değişkenlerini iletebilirsiniz. Bu, anahtarı/değeri, çağrı sırasında denenen 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'un dinamik çözünürlüğü şu anda yalnızca sınırlı sayıda protokol ve indirme konumunu desteklemektedir. @Option çözünürlüğü şu anda yalnızca ana XML Tradefed yapılandırması için etkindir.
Paket olarak çalıştırılıyorsa mevcut modüller (AndroidTest.xml
) dosyaları varsayılan olarak çözmez.
Bunun amacı, modüllerin bilinmeyen bağımlılıklar oluşturmasını önlemektir. Bu, paket seviyesinde --enable-module-dynamic-download
kullanılarak atlanabilir ancak Uyumluluk Test Paketi (CTS) ve Tedarikçi Test Paketi (VTS) gibi büyük paketlerde bu özellik etkinleştirilmez.
Yeni bir protokol uygulayın
Desteklenen protokoller, Tradefed'de IRemoteFileResolver arabiriminin bir uygulamasına sahiptir. Bu uygulama, getSupportedProtocol
aracılığıyla dosya yolunda eşleştirilecek protokolün kısa etiketini tanımlar. Örneğin, gs
Google Cloud Storage protokolü için kullanılır. Uygulanması önerilen arayüz #resolveRemoteFiles(RemoteFileResolverArgs)
'tür. Bu arayüz uzun süre boyunca kullanılacak.
Desteği resmi olarak etkinleştirmek için uygulanan protokoller META-INF services dosyasına eklenebilir.