OmniLab ATS में वर्चुअल डिवाइस

OmniLab ATS, Cuttlefish वर्चुअल डिवाइसों के साथ काम करता है. इनकी मदद से, फ़िज़िकल Android डिवाइसों के बिना भी टेस्ट चलाए जा सकते हैं. Cuttlefish, हार्डवेयर से जुड़े फ़ंक्शन की जांच करने के लिए सही है. वर्चुअल डिवाइसों का इस्तेमाल शुरू करने से पहले, OmniLab ATS इंस्टॉल करने के लिए उपयोगकर्ता गाइड में दिया गया तरीका अपनाएं.

OmniLab ATS, वर्चुअल डिवाइसों को दो मोड में इस्तेमाल करने की सुविधा देता है: लोकल और रिमोट. यहां दी गई टेबल में, दोनों मोड की तुलना की गई है.

लोकल वर्चुअल डिवाइस रिमोट वर्चुअल डिवाइस
यह एटीएस वर्कर्स होस्ट पर चलता है यह उन रिमोट होस्ट पर चलता है जिन्हें एटीएस वर्कहोस्ट, एसएसएच के ज़रिए ऐक्सेस कर सकते हैं
x86-आधारित होस्ट के आर्किटेक्चर के आधार पर, यह x86 या ARM हो सकता है
आसानी से सेट अप किया जा सकता है सेट अप करना ज़्यादा मुश्किल है

लोकल और रिमोट वर्चुअल डिवाइसों को अलग-अलग चालू किया जा सकता है. हर मोड के बारे में जानकारी के लिए, ये लेख पढ़ें:

लोकल वर्चुअल डिवाइस सेट अप करना

इस सेक्शन में, लोकल वर्चुअल डिवाइसों के लिए OmniLab ATS सेट अप करने का तरीका बताया गया है.

Cuttlefish की डिपेंडेंसी इंस्टॉल करना

ज़रूरी कर्नेल मॉड्यूल लोड हो गए हैं या नहीं, यह पक्का करने के लिए यह कमांड चलाएं:

sudo modprobe -a kvm tun vhost_net vhost_vsock

स्थानीय वर्चुअल डिवाइसों के साथ OmniLab ATS शुरू करना

OmniLab ATS शुरू करने से पहले, पक्का करें कि सभी Cuttlefish इंस्टेंस बंद हों. OmniLab ATS, टेस्ट साइकल के दौरान वर्चुअल डिवाइसों को अपने-आप लॉन्च और बंद करता है. साथ ही, मौजूदा Cuttlefish इंस्टेंस, OmniLab ATS से मैनेज किए जाने वाले इंस्टेंस से मेल नहीं खाते. Cuttlefish इंस्टेंस को बंद करने के बारे में जानकारी पाने के लिए, Cuttlefish को बंद करना लेख पढ़ें.

लोकल वर्चुअल डिवाइसों को चालू करने के लिए, यह चलाएं:

mtt start --max_local_virtual_devices N

N, वर्चुअल डिवाइसों की वह ज़्यादा से ज़्यादा संख्या है जिन्हें OmniLab ATS एक साथ असाइन कर सकता है. डिफ़ॉल्ट संख्या 0 है.

अगर डिवाइस नोड मौजूद न होने की वजह से निर्देश काम नहीं करता है, तो कर्नेल मॉड्यूल लोड करने के लिए, गड़बड़ी के मैसेज में दिया गया तरीका अपनाएं. अगर ऐसा होता रहता है, तो मशीन को रीबूट करें.

रिमोट वर्चुअल डिवाइस सेट अप करना

इस सेक्शन में, रिमोट वर्चुअल डिवाइसों के लिए OmniLab ATS को सेट अप करने का तरीका बताया गया है.

Cuttlefish की डिपेंडेंसी इंस्टॉल करना

Cuttlefish की डिपेंडेंसी इंस्टॉल करने के लिए, यह तरीका अपनाएं.

  1. रिमोट होस्ट पर Debian पैकेज इंस्टॉल करने के लिए, Cuttlefish > शुरू करें में दिया गया तरीका अपनाएं.

  2. रिमोट होस्ट पर ज़्यादा से ज़्यादा वर्चुअल डिवाइस कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

    1. रूट प्रिविलेज की मदद से /etc/default/cuttlefish-host-resources में बदलाव करें.
    2. num_cvd_accounts को इस होस्ट पर अनुमति देने के लिए, वर्चुअल डिवाइसों की ज़्यादा से ज़्यादा संख्या पर सेट करें.
    3. sudo systemctl restart cuttlefish-host-resources चलाएं.
    4. ifconfig चलाएं और cvd-wtap-* इंटरफ़ेस की संख्या की पुष्टि करें.

एसएसएच खाता बनाना

OmniLab ATS होस्ट, एसएसएच के ज़रिए रिमोट होस्ट से कनेक्ट होता है. इसलिए, आपको रिमोट होस्ट पर एसएसएच खाता बनाना होगा. OmniLab ATS, होम डायरेक्ट्री में मौजूद फ़ाइलों में बदलाव करता है. इसलिए, हमारा सुझाव है कि आप एक अलग खाता बनाएं.

OmniLab ATS होस्ट को पासवर्ड के बिना रिमोट होस्ट में लॉगिन करने के लिए, एसएसएच कुंजियों का एक जोड़ा चाहिए. एसएसएच पासकोड सेट अप करने का तरीका यहां बताया गया है:

  1. निजी कुंजी और सार्वजनिक कुंजी जनरेट करने के लिए, ssh-keygen को OmniLab ATS होस्ट पर चलाएं.
  2. सार्वजनिक कुंजी को अपलोड करें और ~/.ssh/authorized_keys रिमोट होस्ट पर जोड़ें.

अगर आपका एसएसएच खाता, Cuttlefish की डिपेंडेंसी इंस्टॉल करने के लिए इस्तेमाल किए गए खाते से अलग है, तो एसएसएच खाते को Cuttlefish लॉन्च करने की अनुमति देने के लिए, रिमोट होस्ट पर यह निर्देश चलाएं:

sudo usermod -aG kvm,cvdnetwork,render $USER

रिमोट वर्चुअल डिवाइसों की मदद से OmniLab ATS शुरू करना

OmniLab ATS शुरू करने से पहले, पक्का करें कि सभी Cuttlefish इंस्टेंस बंद हों. OmniLab ATS, टेस्ट साइकल के दौरान वर्चुअल डिवाइसों को अपने-आप लॉन्च और बंद करता है. साथ ही, मौजूदा Cuttlefish इंस्टेंस, OmniLab ATS से मैनेज किए जाने वाले इंस्टेंस से मेल नहीं खाते. Cuttlefish इंस्टेंस को बंद करने के बारे में ज़्यादा जानने के लिए, Cuttlefish को बंद करना लेख पढ़ें.

बेहतर परफ़ॉर्मेंस के लिए, हमारा सुझाव है कि आप OmniLab ATS होस्ट और रिमोट होस्ट को लोकल एरिया नेटवर्क में सेट अप करें.

रिमोट वर्चुअल डिवाइसों को चालू करने के लिए, OmniLab ATS होस्ट पर यह कमांड चलाएं:

mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY

USER, एसएसएच खाते का नाम है.

HOST, रिमोट होस्ट का IPv4 पता है.

N, वर्चुअल डिवाइसों की वह ज़्यादा से ज़्यादा संख्या है जिन्हें OmniLab ATS एक साथ असाइन कर सकता है.

KEY, OmniLab ATS होस्ट पर निजी एसएसएच कुंजी का पाथ है.

यह कमांड, OmniLab ATS शुरू करने से पहले रिमोट होस्ट के कनेक्शन की जांच करता है. अगर कंसोल पर The specified --remote_virtual_devices and --remote_ssh_key are invalid. जैसा कोई चेतावनी वाला मैसेज दिखता है, तो आपको अपने एसएसएच सेटअप की जांच करनी चाहिए.

संसाधनों के बीच होने वाले संघर्ष से बचने के लिए, OmniLab ATS होस्ट ज़्यादा से ज़्यादा एक रिमोट होस्ट से कनेक्ट हो सकता है. एक से ज़्यादा OmniLab ATS होस्ट, एक ही रिमोट होस्ट से एक साथ कनेक्ट नहीं हो सकते.

वर्चुअल डिवाइसों के साथ टेस्ट करना

इस सेक्शन में, लोकल या रिमोट वर्चुअल डिवाइसों पर टेस्ट चलाने का तरीका बताया गया है.

डिवाइस चुनें

डिवाइसों की सूची में, OmniLab ATS वर्चुअल डिवाइसों को उनके असली सीरियल नंबर के बजाय प्लेसहोल्डर के तौर पर दिखाता है. प्लेसहोल्डर, लोकल वर्चुअल डिवाइसों के लिए HOSTNAME:local-virtual-device-ID और रिमोट वर्चुअल डिवाइसों के लिए remote-virtual-ADDRESS-ID फ़ॉर्मैट में दिखाए जाते हैं. राज्यों की स्थिति उपलब्ध या अलॉकेट की गई हो सकती है. उपलब्ध है स्थिति में प्लेसहोल्डर का मतलब है कि वर्चुअल डिवाइस काम नहीं कर रहा है और उसे टेस्ट के लिए असाइन किया जा सकता है.

वर्चुअल डिवाइस चुनना

पहली इमेज. वर्चुअल डिवाइस चुनना

डिवाइस की कार्रवाइयां जोड़ना

अगर आपने कम से कम एक वर्चुअल डिवाइस चुना है, तो उससे जुड़ी डिवाइस कार्रवाई, सूची में अपने-आप जुड़ जाएगी. इस कार्रवाई में, वर्चुअल डिवाइस बनाने के लिए ज़रूरी TradeFed पैरामीटर और टेस्ट संसाधन शामिल होते हैं.

लोकल वर्चुअल डिवाइस ऐक्शन

दूसरी इमेज. लोकल वर्चुअल डिवाइसों के लिए डिवाइस ऐक्शन

रिमोट वर्चुअल डिवाइस ऐक्शन

तीसरी इमेज. रिमोट वर्चुअल डिवाइसों के लिए डिवाइस ऐक्शन

टेस्ट के लिए संसाधन सेट करना

Cuttlefish वर्चुअल डिवाइसों के लिए, टेस्ट के तीन संसाधनों की ज़रूरत होती है: वर्चुअल मशीन टूल, इमेज, और Acloud. Cuttlefish के किसी सामान्य बिल्ड (उदाहरण के लिए, ci.android.com पर aosp_cf_x86_64_phone) में, वर्चुअल मशीन टूल cvd-host_package.tar.gz में पैक किए जाते हैं और इमेज aosp_cf_x86_64_phone-img-*.zip में होती हैं. Acloud बाइनरी, OmniLab ATS में बनाई गई है और यह Cuttlefish के सभी वर्शन के साथ काम करती है. Acloud बाइनरी के डिफ़ॉल्ट डाउनलोड यूआरएल को सिर्फ़ डीबग करने के लिए बदला जाना चाहिए.

वर्चुअल डिवाइस टेस्ट से जुड़े संसाधन

चौथी इमेज. वर्चुअल डिवाइसों के लिए टेस्ट संसाधन

टेस्ट रन देखना

kernel.log, host_log.txt, और launcher.log जैसे डिवाइस लॉग, आउटपुट फ़ाइल फ़ोल्डर में इकट्ठा किए जाते हैं. उन्हें देखने के लिए, आउटपुट फ़ाइलें देखें पर क्लिक करें.

टेस्ट रन के नतीजे

पांचवीं इमेज. टेस्ट रन के नतीजे