הגדרת לוח המחוונים של VTS

לוח המחוונים של VTS מספק קצה עורפי וממשק משתמש (UI) לצפייה בתוצאות הבדיקה ממערכת האינטגרציה הרציפה של VTS. הוא תומך בפיתוח מונחה מבחן עם כלים כגון הודעות סטטוס בדיקה כדי לעזור למפתחים לאתר ולמנוע אזורי רגרסיה במהלך מחזור הפיתוח (כולל ניטור בדיקות ותמיכה בטרייג'ינג).

ממשק המשתמש של VTS Dashboard תומך בתכונות (כגון כיסוי קוד מקורי) המסופקים על ידי תשתית VTS ומציע ניטור ביצועים רציף כדי לאפשר פיתוח של כלי ביצועים אופטימליים ומאופיינים היטב.

דרישות

השירותים הבאים נדרשים כדי להשתמש בלוח המחוונים של VTS:

צפייה בכיסוי הבדיקה מסתמכת על REST API לשרת קוד מקור (למשל Gerrit), המאפשר לשירות האינטרנט להביא קוד מקור מקורי בהתאם לרשימות בקרת גישה קיימות.

ארכיטקטורה

לוח המחוונים של VTS משתמש בארכיטקטורה הבאה:

איור 1 . ארכיטקטורת לוח המחוונים של VTS.

תוצאות סטטוס הבדיקה מועלות באופן רציף למסד הנתונים של Cloud Datastore באמצעות ממשק REST. רץ ה-VTS מעבד אוטומטית את התוצאות ומעביר אותן בסידרה באמצעות פורמט Protobuf.

סרבלי אינטרנט מהווים את נקודת הגישה העיקרית למשתמשים, ומספקים ומעבדים נתונים ממסד הנתונים של Datastore. ה-servlets כוללים: servlet ראשי לאספקת כל הבדיקות, servlet העדפות לניהול מועדפי משתמשים, servlet תוצאות לאכלוס טבלת בדיקה, servlet גרף להכנת נתוני פרופיל, ו-servlet כיסוי להכנת נתוני כיסוי עבור הלקוח .

לכל מודול בדיקה יש עץ מוצא משלו ל-Datastore ותוצאות הבדיקה מתווספות עם חותמת הזמן של Unix של שעת ההתחלה של הבדיקה. נתוני הכיסוי במסד הנתונים מאוחסנים עם תוצאות הבדיקה כווקטור של ספירות (כלומר עבור כל שורה בקובץ המקור המקורי) ומידע מזהה כדי להביא את קוד המקור משרת קוד מקור.

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

מבנה קוד

הרכיבים החיוניים של לוח המחוונים של VTS כוללים את ה-servlets המיושמים ב-Java, ה-JSPs הקדמיים, גיליונות הסגנונות של CSS וקובצי תצורה. הרשימה הבאה מפרטת את המיקומים והתיאורים של רכיבים אלה (כל הנתיבים ביחס ל- test/vts/web/dashboard ):

  • pom.xml
    קובץ הגדרות שבו מוגדרים משתני סביבה ותלות.
  • src/main/java/com/android/vts/api/
    מכיל נקודות קצה לאינטראקציה עם הנתונים באמצעות REST.
  • src/main/java/com/android/vts/entity/
    מכיל דגמי Java של ישויות Datastore.
  • src/main/java/com/android/vts/proto/
    מכיל קבצי Java עבור Protobuf, כולל VtsReportMessage.java , שהוא מימוש Java מסוג Protobuf המשמש לתיאור תוצאות בדיקת VTS.
  • src/main/java/com/android/vts/servlet/
    מכיל קבצי Java עבור servlets.
  • src/main/java/com/android/vts/util/
    מכיל קבצי Java עבור פונקציות שירות ומחלקות המשמשות את ה-servlets.
  • src/test/java/com/android/vts/
    מכיל בדיקות ממשק משתמש עבור servlets ו- utils.
  • src/main/webapp/
    מכיל קבצים הקשורים לממשק המשתמש (JSP, CSS, XML):
    • js/ . מכיל קבצי Javascript המשמשים את דפי האינטרנט.
    • WEB-INF/ . מכיל קבצי תצורה וממשק משתמש.
    • jsp/ . מכיל את קבצי JSP עבור כל דף אינטרנט.
  • appengine-web.xml
    קובץ הגדרות שבו משתני סביבה נטענים למשתנים.
  • web.xml
    קובץ הגדרות שבו מוגדרים מיפויי servlet ואילוצי אבטחה.
  • cron.xml
    קובץ הגדרות המגדיר משימות מתוזמנות (כלומר שירות ההתראות).

הגדרת לוח המחוונים

כדי להגדיר את לוח המחוונים של VTS:

  1. צור פרויקט Google Cloud App Engine והגדר את מארח הפריסה על ידי התקנת:
    • Java 8
    • Google App Engine SDK
    • מייבן
  2. צור מזהה לקוח OAuth 2.0 ב-Google Cloud API Manager.
  3. צור חשבון שירות וצור קובץ מפתח.
  4. הוסף כתובת אימייל לרשימת השולחים המורשים של App Engine Email API.
  5. הגדר חשבון Google Analytics.
  6. ציין משתני סביבה בלוח המחוונים pom.xml :
    • הגדר את מזהה הלקוח עם מזהה OAuth 2.0 (משלב 2).
    • הגדר את מזהה לקוח השירות עם המזהה הכלול בקובץ המפתח (משלב 3).
    • ציין את כתובת הדוא"ל של השולח עבור התראות (משלב 4).
    • ציין דומיין דוא"ל שאליו יישלחו כל המיילים.
    • ציין את הכתובת לשרת Gerrit REST.
    • ציין את היקף OAuth 2.0 לשימוש עבור שרת Gerrit REST.
    • ציין את מזהה Google Analytics (משלב 5).
    • בנה ופריסה של הפרויקט.
  7. בטרמינל, הפעל mvn clean appengine:update .

שיקולי אבטחה

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

כדי למנוע איום זה, במקום לשרת את קוד המקור עם מידע הכיסוי, לוח המחוונים מטפל ישירות בוקטור כיסוי (כלומר, וקטור של ביצוע סופר מיפוי לשורות בקובץ מקור). יחד עם וקטור הכיסוי, לוח המחוונים מקבל שם ונתיב של פרויקט Git כך שהלקוח יכול להביא את הקוד מ-API חיצוני של קוד מקור. דפדפן הלקוח מקבל מידע זה ומשתמש בשיתוף משאבים חוצה מקור (CORS) ב-Javascript כדי לבקש משרת קוד המקור את קוד המקור המקורי; הקוד המתקבל משולב עם וקטור הכיסוי כדי לייצר תצוגה.

גישה ישירה זו אינה מרחיבה את משטח ההתקפה מכיוון ש-Dashboard משתמש בעוגיות של המשתמש כדי לבצע אימות עם שירות חיצוני (כלומר משתמש שאינו יכול לגשת ישירות לקוד המקור אינו יכול לנצל את ה-Dashboard כדי להציג מידע רגיש).