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. Cuttlefish > Get started में दिए गए निर्देशों का पालन करके, रिमोट होस्ट पर Debian पैकेज इंस्टॉल करें.

  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, HOME डायरेक्ट्री में मौजूद फ़ाइलों में बदलाव करता है. इसलिए, हमारा सुझाव है कि आप एक अलग खाता बनाएं.

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

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

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

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

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

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

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