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, 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ıdaki ayarlar XML yapılandırması aracılığıyla belirlenebilir:
<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 yolu ile 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 durumda mConfigFile değişkeni artık dosyanın yerel sürümüne 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ıtları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:
trueolarak 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
falsedeğerine ayarlanır.trueolarak ayarlanırsa ve çözümleme 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ğrıda 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ünürlüğü şu anda yalnızca sınırlı sayıda protokole ve indirme konumuna destek vermektedir. @Option'ın çö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 Compatibility Test Suite (CTS) ve Vendor Test Suite (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 olan #resolveRemoteFiles(RemoteFileResolverArgs) arayüzüdür.
Uygulanan protokoller, desteği resmi olarak etkinleştirmek için the harness META-INF services dosyasına eklenebilir.