ग्लोबल कॉन्फ़िगरेशन वाले प्रोटोकॉल लोड करें

इस सेक्शन को समझने के लिए, सबसे पहले हमारे @Option.

सामान्य तौर पर ट्रेड किए जाने वाले विकल्पों की मदद से, टेस्ट क्लास के लिए अतिरिक्त एक्सएमएल कॉन्फ़िगरेशन या कमांड लाइन से जानकारी हासिल करें. इस सुविधा की मदद से, पर जाने का एक अतिरिक्त चरण है और इस अतिरिक्त जानकारी में से कुछ का समाधान करने पर ज़रूरी है.

फ़ाइल के विकल्प का उदाहरण

फ़ाइल का उदाहरण @option:

@Option(name = 'config-file')
private File mConfigFile;

इन्हें एक्सएमएल कॉन्फ़िगरेशन की मदद से सेट किया जा सकता है:

<option name="config-file" value="/tmp/file" />

या कमांड के ज़रिए:

--config-file /tmp/file

ब्यौरा

यह सुविधा आपको फ़ाइल-टाइप @Options का समाधान करने देती है जो कि लोकल फ़ाइल को उपयोगकर्ता के हिसाब से आसानी से उपलब्ध कराने के लिए किया जा सकता है.

यह काम करे, इसके लिए फ़ाइल को रिमोट स्टाइल पाथ के साथ बताना होगा. इसके लिए उदाहरण:

--config-file gs://bucket/tmp/file

यह पाथ, Google Cloud Storage (GCS) बकेट में मौजूद एक फ़ाइल पर ले जाता है, जहां यह सेव किया गया. वह रिमोट पाथ देखकर, फ़ाइल को डाउनलोड करने की कोशिश करेगा असाइन करें और उसे @Option को असाइन करें. इससे mConfigFile वैरिएबल मिलता है अब फ़ाइल के स्थानीय वर्शन पर ले जाने वाला है, जिसका इस्तेमाल परीक्षण में किया जा सकता है.

अगर रिमोट फ़ाइल किसी भी कारण से डाउनलोड नहीं की जा सकती है, तो ट्रेडेड फ़ाइल ConfigurationException, जो टेस्ट को चलने से रोक देगा. हम इन बातों पर ध्यान देते हैं वे फ़ाइलें मौजूद नहीं होंगी, जिनसे गंभीर गड़बड़ी हो सकती है. इसकी वजह यह है कि कुछ टेस्ट आर्टफ़ैक्ट भी मौजूद नहीं हैं.

क्वेरी पैरामीटर का इस्तेमाल करना

? का इस्तेमाल करके, किसी यूआरएल में क्वेरी पैरामीटर जोड़े जा सकते हैं. उदाहरण के लिए, gs://bucket/path?unzip=true. कुंजी/वैल्यू unzip=true इसमें उपलब्ध होगी IRemoteFileCollectionr इंटरफ़ेस लागू करना.

ये दो सुविधाएं पहले से मौजूद हैं:

  • अनज़िप: अगर true पर सेट है और डाउनलोड की गई फ़ाइल ज़िप है, तो स्वचालित रूप से एक अस्थायी स्थान पर अनज़िप हो गया. उदाहरण: ?unzip=true
  • ज़रूरी नहीं: डिफ़ॉल्ट रूप से false. अगर true पर सेट किया जाता है और रिज़ॉल्यूशन काम नहीं करता, तो अपवाद की जानकारी नहीं देगा और फ़ाइल को नहीं बदलेगा. उदाहरणः ?optional=true

--dynamic-download-args key=value के ज़रिए भी ग्लोबल क्वेरी आर्ग्युमेंट पास किए जा सकते हैं जो कुंजी/वैल्यू को उन सभी डाइनैमिक डाउनलोड को पास करेगा जिन्हें शुरू करना.

इस्तेमाल किए जा सकने वाले प्रोटोकॉल

आधिकारिक तौर पर इस्तेमाल किए जाने वाले प्रोटोकॉल और उनसे जुड़े फ़ॉर्मैट ये हैं:

  • Google Cloud Storage, प्रोटोकॉल: gs, फ़ॉर्मैट: gs://<bucket name>/path
  • लोकल फ़ाइलें, प्रोटोकॉल: file, फ़ॉर्मैट: file:/local/path
  • http लिंक, प्रोटोकॉल: http, फ़ॉर्मैट: http://url
  • https लिंक, प्रोटोकॉल: https, फ़ॉर्मैट: https://url

सीमाएं

फ़िलहाल, @Option का डाइनैमिक रिज़ॉल्यूशन सिर्फ़ कुछ डिवाइसों पर काम करता है डाउनलोड करने के लिए प्रोटोकॉल और जगहें. @Option का रिज़ॉल्यूशन फ़िलहाल है यह सुविधा सिर्फ़ मुख्य एक्सएमएल ट्रेडेड कॉन्फ़िगरेशन के लिए चालू है.

सुइट के तौर पर इस्तेमाल करने पर, मौजूदा मॉड्यूल (AndroidTest.xml) से फ़ाइलें डिफ़ॉल्ट रूप से. इसका मकसद, मॉड्यूल को कुछ अनजान डिपेंडेंसी बनाने से रोकना है. यह को सुइट लेवल पर --enable-module-dynamic-download का इस्तेमाल करके, एस्केप किया जा सकता है. लेकिन मुख्य सुइट, जैसे कि कंपैटबिलिटी टेस्ट सुइट (CTS) और Vendor टेस्ट सुइट (VTS) इसे चालू नहीं करेगा.

नया प्रोटोकॉल लागू करना

साथ काम करने वाले प्रोटोकॉल को Iरिमोटफ़ाइल रिज़ॉल्वर इंटरफ़ेस ,जो उस प्रोटोकॉल के छोटे टैग को परिभाषित करता है जिसका मिलान फ़ाइल का पाथ getSupportedProtocol से होकर गुज़रता है. उदाहरण के लिए, gs का इस्तेमाल Google Cloud Storage प्रोटोकॉल. लागू करने के लिए सुझाया गया इंटरफ़ेस यह है #resolveRemoteFiles(RemoteFileResolverArgs) जो लंबे समय तक बना रहेगा मैनेज किया जा रहा इंटरफ़ेस.

लागू किए गए प्रोटोकॉल को Horness META-INF पर जोड़ा जा सकता है सेवाएं फ़ाइल का उपयोग करें.