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

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

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

लोकल वर्चुअल डिवाइसरिमोट वर्चुअल डिवाइसक्लाउड ऑर्केस्ट्रेशन
ATS वर्कर होस्ट पर चलता हैरिमोट होस्ट पर चलता है, जिसे ATS वर्कर होस्ट, एसएसएच के ज़रिए ऐक्सेस कर सकते हैंलोकल या रिमोट होस्ट पर चलता है, जिसे क्लाउड ऑर्केस्ट्रेटर मैनेज करता है
x86 पर आधारितहोस्ट आर्किटेक्चर के आधार पर, x86 या एआरएम हो सकता है होस्ट आर्किटेक्चर के आधार पर, x86 या एआरएम हो सकता है
सेट अप करना आसान हैसेट अप करना मुश्किल हैज़्यादा परफ़ॉर्मेंस, बढ़ाया जा सकता है, एक साथ कई इंस्टेंस लॉन्च करने की सुविधा

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

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

इस सेक्शन में, लोकल वर्चुअल डिवाइसों के लिए 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 > शुरू करना में दिए गए तरीके के मुताबिक, रिमोट होस्ट पर 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. निजी कुंजी और सार्वजनिक कुंजी जनरेट करने के लिए, OmniLab ATS होस्ट पर ssh-keygen चलाएं.
  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 शामिल हैं. इन्हें देखने के लिए, आउटपुट फ़ाइलें देखें पर क्लिक करें.

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

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