إعداد VTS Dashboard

توفر لوحة معلومات VTS واجهة مستخدم خلفية وواجهة مستخدم (UI) لعرض نتائج الاختبار من نظام التكامل المستمر VTS. وهو يدعم التطوير القائم على الاختبار باستخدام أدوات مثل إشعارات حالة الاختبار لمساعدة المطورين على تحديد مناطق الانحدار ومنعها أثناء دورة التطوير (بما في ذلك مراقبة الاختبار ودعم الفرز).

تدعم واجهة VTS Dashboard UI الميزات (مثل تغطية الكود الأصلي) التي توفرها البنية التحتية VTS وتوفر مراقبة مستمرة للأداء لتمكين تطوير أدوات أداء محسّنة ومميزة جيدًا.

متطلبات

الخدمات التالية مطلوبة لاستخدام لوحة معلومات VTS:

يعتمد عرض تغطية الاختبار على واجهة برمجة تطبيقات REST لخادم كود المصدر (مثل Gerrit) ، والذي يمكّن خدمة الويب من جلب كود المصدر الأصلي وفقًا لقوائم التحكم في الوصول الحالية.

هندسة عامة

تستخدم لوحة معلومات VTS البنية التالية:

الشكل 1 . بنية VTS Dashboard.

يتم تحميل نتائج حالة الاختبار باستمرار إلى قاعدة بيانات Cloud Datastore عبر واجهة REST. يقوم عداء VTS تلقائيًا بمعالجة النتائج وتسلسلها باستخدام تنسيق Protobuf.

تشكل servlets الويب نقطة الوصول الأساسية للمستخدمين ، حيث تقوم بتسليم ومعالجة البيانات من قاعدة بيانات Datastore. تشتمل servlets على: servlet رئيسي لتسليم جميع الاختبارات ، و servlet للتفضيلات لإدارة تفضيلات المستخدم ، و servlet النتائج لملء جدول الاختبار ، و servlet الرسم البياني لإعداد بيانات التوصيف ، و servlet التغطية لإعداد بيانات التغطية للعميل .

تحتوي كل وحدة اختبار على شجرة أصل Datastore الخاصة بها ويتم فهرسة نتائج الاختبار باستخدام الطابع الزمني لـ Unix لوقت بدء الاختبار. يتم تخزين بيانات التغطية في قاعدة البيانات مع نتائج الاختبار كمتجه للأعداد (أي لكل سطر في الملف المصدر الأصلي) وتحديد المعلومات لجلب شفرة المصدر من خادم شفرة المصدر.

تعمل خدمة الإعلام باستخدام قوائم انتظار المهام ، وتحديد تغييرات حالة الاختبار ، وإخطار المشتركين. يتم تخزين المعلومات ذات الحالة في جدول الحالة لتتبع حداثة البيانات والفشل الحالي. يتيح ذلك لخدمة الإعلام تقديم معلومات ثرية حول حالات فشل حالة الاختبار الفردية والإصلاحات.

هيكل الكود

تتضمن المكونات الأساسية لـ VTS Dashboard ، 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 والأدوات.
  • src/main/webapp/
    يحتوي على ملفات متعلقة بواجهة المستخدم (JSP ، CSS ، XML):
    • js/ . يحتوي على ملفات جافا سكريبت المستخدمة بواسطة صفحات الويب.
    • WEB-INF/ . يحتوي على ملفات التكوين وواجهة المستخدم.
    • jsp/ . يحتوي على ملفات JSP لكل صفحة ويب.
  • appengine-web.xml
    ملف الإعدادات حيث يتم تحميل متغيرات البيئة في المتغيرات.
  • web.xml
    ملف المحددات حيث يتم تعريف تعيينات servlet وقيود السرية.
  • cron.xml
    ملف الإعدادات الذي يحدد المهام المجدولة (أي خدمة الإخطارات).

إعداد لوحة القيادة

لإعداد لوحة معلومات VTS:

  1. أنشئ مشروع Google Cloud App Engine وقم بإعداد مضيف النشر عن طريق تثبيت:
    • جافا 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. في Terminal ، قم بتشغيل mvn clean appengine:update .

اعتبارات أمنية

تتطلب معلومات التغطية القوية الوصول إلى شفرة المصدر الأصلية. ومع ذلك ، قد تكون بعض الرموز حساسة وقد تسمح بوابة إضافية لها باستغلال قوائم التحكم في الوصول الحالية.

لتجنب هذا التهديد ، بدلاً من تقديم الكود المصدري بمعلومات التغطية ، تتعامل لوحة المعلومات مباشرة مع متجه التغطية (على سبيل المثال ، يقوم متجه تنفيذ بحساب تعيين الخطوط في ملف المصدر). إلى جانب متجه التغطية ، تتلقى لوحة القيادة اسم مشروع Git ومساره حتى يتمكن العميل من جلب الكود من واجهة برمجة تطبيقات كود مصدر خارجي. يتلقى مستعرض العميل هذه المعلومات ويستخدم مشاركة الموارد عبر الأصل (CORS) في جافا سكريبت للاستعلام عن خادم شفرة المصدر عن شفرة المصدر الأصلية ؛ يتم دمج الكود الناتج مع متجه التغطية لإنتاج عرض.

لا يوسع هذا النهج المباشر سطح الهجوم لأن لوحة التحكم تستخدم ملفات تعريف الارتباط الخاصة بالمستخدم للمصادقة مع خدمة خارجية (بمعنى أن المستخدم الذي لا يمكنه الوصول إلى شفرة المصدر مباشرة لا يمكنه استغلال لوحة التحكم لعرض المعلومات الحساسة).