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

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

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

متطلبات

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

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

بنيان

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

شكل 1 . بنية لوحة تحكم VTS.

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

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

تحتوي كل وحدة اختبار على شجرة أصول مخزن البيانات الخاصة بها ويتم فهرسة نتائج الاختبار باستخدام الطابع الزمني لنظام 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 لكيانات مخزن البيانات.
  • src/main/java/com/android/vts/proto/
    يحتوي على ملفات Java لـ Protobuf، بما في ذلك VtsReportMessage.java ، وهو تطبيق Java لنوع Protobuf المستخدم لوصف نتائج اختبار VTS.
  • src/main/java/com/android/vts/servlet/
    يحتوي على ملفات جافا للسيرفلتس.
  • src/main/java/com/android/vts/util/
    يحتوي على ملفات Java لوظائف الأداة المساعدة والفئات المستخدمة بواسطة servlets.
  • src/test/java/com/android/vts/
    يحتوي على اختبارات واجهة المستخدم للخوادم والأدوات المساعدة.
  • 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 وقم بإعداد مضيف النشر عن طريق تثبيت:
    • جافا 8
    • محرك تطبيقات جوجل SDK
    • مخضرم
  2. قم بإنشاء معرف عميل OAuth 2.0 في Google Cloud API Manager.
  3. قم بإنشاء حساب خدمة وإنشاء ملف مفتاح.
  4. أضف عنوان بريد إلكتروني إلى قائمة المرسلين المعتمدين لواجهة برمجة تطبيقات البريد الإلكتروني لـ App Engine.
  5. قم بإعداد حساب جوجل أناليتكس.
  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 ومساره حتى يتمكن العميل من جلب التعليمات البرمجية من واجهة برمجة تطبيقات التعليمات البرمجية المصدر الخارجية. يتلقى متصفح العميل هذه المعلومات ويستخدم مشاركة الموارد عبر الأصل (CORS) في Javascript للاستعلام عن خادم الكود المصدري للكود المصدر الأصلي؛ يتم دمج الكود الناتج مع متجه التغطية لإنتاج عرض.

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