עיין בסקר השימושיות שלנו כדי לשפר את האתר הזה.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

בדיקות יחידת רשת ליבה

מאז אנדרואיד 5.0, פעולה תקינה של מחסנית הרשת של אנדרואיד על גרעיני לינוקס מחייבת מספר התחייבויות ששופצו לאחרונה יחסית או שעדיין לא עשו אותה במעלה הזרם. לא קל לאמת ידנית את פונקציונליות הגרעין הנדרשת או לעקוב אחר ההתחייבויות החסרות, ולכן צוות Android משתף את הבדיקות בהן הוא משתמש כדי להבטיח כי הגרעין מתנהג כצפוי.

למה להריץ את המבחנים?

מבחנים אלה קיימים משלוש סיבות עיקריות:

  1. הגרסה המדויקת של ליבת לינוקס המשמשת בהתקן היא בדרך כלל ספציפית למכשיר, וקשה לדעת אם גרעין כלשהו יפעל כראוי מבלי להריץ את הבדיקות.
  2. העברה והעברה אחורית של תיקוני הגרעינים לגרסאות גרעין שונות או לעצי מכשירים שונים עשויים להכניס נושאים עדינים שאפשר יהיה לזהות בלי להריץ את הבדיקות.
  3. תכונות רשת חדשות עשויות לדרוש פונקציונליות חדשה של גרעין או תיקוני באגים ליבה.

אם הבדיקות לא עוברות, מחסנית הרשת של המכשיר תנהג בצורה לא נכונה ותגרום לבאגי קישוריות גלויים למשתמש (כגון נפילה מרשתות Wi-Fi). המכשיר צפוי להיכשל גם בבדיקות Android Compatibility Test Suite (CTS).

שימוש במבחנים

המבחנים משתמשים ב- Linux במצב משתמש כדי לאתחל את הליבה כתהליך במחשב מארח לינוקס. ראה הקמת סביבת בנייה לגירסאות מערכת הפעלה מתאימות. מסגרת בדיקות היחידה מאתחלת את הליבה עם תמונת דיסק מתאימה ומריצה את הבדיקות ממערכת הקבצים המארחת. המבחנים נכתבים ב- Python 2.x ומשתמשים בממשקי TAP כדי לממש את התנהגות הליבה ואת ה- API של השקע.

קומפילציה של הליבה עבור ARCH = um

כדי שהבדיקות יפעלו, הליבה חייבת ARCH=um SUBARCH=x86_64 עבור ARCH=um SUBARCH=x86_64 . זוהי ארכיטקטורה נתמכת הן במעלה הזרם והן בעצי הליבה הנפוצים של אנדרואיד (כגון android-4.4 ). אך לעיתים גרעיני התקנים אינם מתקבצים במצב זה מכיוון שעצי התקן מכילים קוד ספציפי למכשיר או ספציפי לחומרה בקבצים נפוצים (למשל sys/exit.c ).

במקרים רבים, זה מספיק כדי להבטיח שקוד ספציפי לחומרה עומד מאחורי #ifdef . בדרך כלל זה צריך להיות #ifdef על אפשרות תצורה השולטת בתכונה הספציפית הרלוונטית לקוד. אם אין אפשרות תצורה כזו, שים קוד ספציפי #ifndef CONFIG_UML בתוך #ifndef CONFIG_UML חסימות.

באופן כללי, תיקון זה אמור להיות באחריות ספק עץ הליבה (כגון ערכת השבבים או ספק SoC). אנו עובדים עם יצרני יצרנים וספקים כדי להבטיח ARCH=um SUBARCH=x86_64 נוכחיים ועתידיים יתקיימו עבור 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

עובר את המבחנים

בדיקת רשת הליבה של קבצי מקור של פייתון מכילה הערות המציינות התחייבויות ליבה שכידוע נדרשות לעבור את הבדיקות. הבדיקות צריכות לעבור בעצי הגרעין הנפוצים - כל ענפי הגרעין הנפוצים android-4.4 ומעלה - בפרויקט kernel/common ב- AOSP. לכן, העברת הבדיקות על גרעין היא פשוט עניין של מיזוג מתמשך מענף הליבה הנפוץ המקביל.

תורם

בעיות דיווח

אנא דווח על כל בעיה במבחני רשת הליבה במעקב אחר בעיות Android עם התווית Component-Networking .

תיעוד מתחייב והוספת מבחנים

אנא דווח על בעיות כמתואר לעיל, ובמידת האפשר העלה שינוי לתיקון הבעיה, אם:

  • הבדיקות אינן מעבירות את עצי הגרעין הנפוצים
  • אתה מוצא התחייבות הכרחית שאינה מוזכרת בתגובות המקור,
  • ביצוע בדיקות להעברת גרעינים במעלה הזרם דורש שינויים משמעותיים
  • אתה מאמין שהמבחנים מוגדרים יתר על המידה, או שהמבחן נכשל בגרעינים עתידיים
  • אתה רוצה להוסיף עוד בדיקות או כיסוי נוסף למבחנים הקיימים.