Android 5.0 के बाद से, Linux पर Android नेटवर्किंग स्टैक का सही तरीके से काम करना कर्नेल को कई कमिट की ज़रूरत होती है, जिन्हें हाल ही में अपस्ट्रीम किया गया था या अभी तक अपस्ट्रीम नहीं किया है. इसे मैन्युअल रूप से सत्यापित करना आसान नहीं है कर्नेल फ़ंक्शन ज़रूरी है या अधूरे टास्क ट्रैक किए जा सकते हैं, इसलिए Android की टीम टेस्ट शेयर कर रहा है. इसका इस्तेमाल करके यह पक्का किया जाता है कि कर्नेल उम्मीद के मुताबिक काम करे.
जांच करने की वजहें
इन तीन मुख्य जांचों के लिए, वजहें:
- किसी डिवाइस पर इस्तेमाल किए गए Linux कर्नेल का सटीक वर्शन यह है है और यह पता लगाना मुश्किल है कि कोई कर्नेल बिना जांच के ठीक से काम करता है.
- फ़ॉरवर्ड करने की सुविधा और कर्नेल पैच को अलग-अलग कर्नेल वर्शन या अलग-अलग वर्शन पर बैक-पोर्ट करना डिवाइस ट्री में वे मामूली समस्याएं हो सकती हैं जिनका पता लगाना मुमकिन नहीं है चलाने में मदद मिलती है.
- नई नेटवर्किंग सुविधाओं के लिए नई कर्नेल फ़ंक्शन या कर्नेल गड़बड़ी की ज़रूरत हो सकती है समाधान.
अगर जांच में पास नहीं होते हैं, तो डिवाइस के नेटवर्क स्टैक गलत तरीके से काम करता है, जिसकी वजह से उपयोगकर्ता को साफ़ तौर पर कनेक्टिविटी से जुड़ी गड़बड़ियां दिखती हैं. जैसे, डिवाइस का किसी अन्य ऐप्लिकेशन से कनेक्ट होना वाई-फ़ाई नेटवर्क). ऐसा हो सकता है कि डिवाइस, Android के साथ काम करने की सुविधा की जांच में कामयाब न हो पाए सुइट (CTS) की जांच.
टेस्ट का इस्तेमाल करना
ये जांच, User-Mode Linux का इस्तेमाल करके, कर्नेल को Linux होस्ट मशीन पर एक प्रक्रिया के रूप में दिखाता है. यहां जाएं: इसके लिए बिल्ड एनवायरमेंट बनाना ऑपरेटिंग सिस्टम के सही वर्शन हैं. यूनिट टेस्ट फ़्रेमवर्क सही डिस्क इमेज के साथ कर्नेल को चालू करता है और होस्ट फ़ाइल सिस्टम. टेस्ट, Python में लिखे जाते हैं और TAP इंटरफ़ेस का इस्तेमाल करके व्यायाम कर्नेल व्यवहार और सॉकेट API.
ARCH=um के लिए कर्नेल कंपाइल करें
टेस्ट चलाने के लिए,
कर्नेल को ARCH=um SUBARCH=x86_64
के लिए कंपाइल करना होगा. यह है
यह सुविधा अपस्ट्रीम और सामान्य Android कर्नेल ट्री, दोनों में इस्तेमाल की जा सकती है
(जैसे कि android-4.4
). हालांकि, कभी-कभी डिवाइस
इस मोड में कर्नेल कंपाइल नहीं किए जाते, क्योंकि डिवाइस ट्री में
सामान्य फ़ाइलों में डिवाइस या हार्डवेयर के हिसाब से बना कोड (उदाहरण के लिए
sys/exit.c
).
कई मामलों में, बस यह पक्का करना काफ़ी होता है कि
हार्डवेयर का खास कोड, #ifdef
की पीछे है. आम तौर पर, इसमें ऐसा होना चाहिए
कॉन्फ़िगरेशन विकल्प पर #ifdef
होना चाहिए, जो कि
कोड से प्रासंगिक सुविधा. यदि ऐसा कोई कॉन्फ़िगरेशन विकल्प न हो, तो
#ifndef CONFIG_UML
ब्लॉक के अंदर हार्डवेयर के हिसाब से बना कोड.
तय सीमा में
सामान्य, इसे ठीक करना कर्नेल ट्री प्रोवाइडर की ज़िम्मेदारी होनी चाहिए
(जैसे, चिपसेट या SoC वेंडर). हम यह पक्का करने के लिए OEM और वेंडर के साथ काम कर रहे हैं
मौजूदा और आने वाले समय में काम करने वाले कर्नेल, ARCH=um
SUBARCH=x86_64
के लिए कंपाइल हो जाते हैं. इनमें कोई बदलाव करने की ज़रूरत नहीं होती.
टेस्ट करना
जांच kernel/tests/net/test
पर की गई है.
यह सुझाव दिया जाता है कि टेस्ट AOSP मुख्य से चलाएं, क्योंकि वे
सबसे अप-टू-डेट होते हैं; कुछ मामलों में, कर्नेल सुविधाओं के लिए ज़रूरी है
किसी Android रिलीज़ में सही कार्रवाई करने के मामले में अभी तक पूरा टेस्ट कवरेज नहीं है
मिलती है. परीक्षण चलाने के तरीके के बारे में जानकारी के लिए, कर्नेल
नेटवर्क टेस्ट README फ़ाइल. आम तौर पर, अपने कर्नेल ट्री के ऊपर से, इसे चलाएं:
ANDROID_TREE/kernel/tests/net/test/run_net_test.sh all_tests.sh
टेस्ट में सफल हों
कर्नेल नेटवर्क टेस्ट Python
सोर्स फ़ाइलों में वे टिप्पणियां शामिल होती हैं जो कर्नेल कमिट को तय करती हैं. इन टिप्पणियों को
परीक्षा पास करने की ज़रूरत होती है. परीक्षणों को सामान्य कर्नेल ट्री में पास होना चाहिए - सभी
कॉमन कर्नेल ब्रांच android-4.4
और उससे ऊपर की - इसमें
kernel/common
में शामिल किया गया है. इसलिए, किसी कर्नेल पर परीक्षण पास करना बस
संबंधित कॉमन कर्नेल ब्रांच से लगातार मर्ज किया जाता है.
योगदान
समस्याओं की शिकायत करें
Android में कर्नेल नेटवर्क टेस्ट से जुड़ी किसी भी समस्या की शिकायत करें कॉम्पोनेंट-नेटवर्किंग के साथ समस्या का ट्रैकर लेबल.
दस्तावेज़ कमिट करता है और टेस्ट जोड़ता है
ऊपर बताए गए तरीकों की मदद से समस्याओं की शिकायत करें. अगर हो सके, तो समस्या को ठीक करने के लिए उसमें बदलाव करें, अगर:
- ये परीक्षण सामान्य कर्नेल ट्री पर पास नहीं होते हैं
- आपने लोगों तक पहुंचाया मुफ़्त में एक ज़रूरी प्रतिबद्धता मिलेगी, जिसका उल्लेख स्रोत टिप्पणियों में नहीं किया गया है,
- अपस्ट्रीम कर्नेल पर टेस्ट पास करने के लिए बड़े बदलावों की ज़रूरत है
- आपको लगता है कि जांच के लिए तय सीमा से ज़्यादा जांच की गई है या आने वाले समय में जांच सफल नहीं होगी कर्नेल
- आपको मौजूदा रिपोर्ट में ज़्यादा टेस्ट या कवरेज जोड़ना है टेस्ट.