Protokolleri genel yapılandırmayla yükle

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.