Pengaturan Dasbor VTS

Dasbor VTS menyediakan backend pengguna dan antarmuka pengguna (UI) untuk melihat hasil pengujian dari sistem integrasi berkelanjutan VTS. Ini mendukung pengembangan berbasis pengujian dengan alat seperti pemberitahuan status pengujian untuk membantu pengembang menemukan dan mencegah area regresi selama siklus pengembangan (termasuk pemantauan pengujian dan dukungan triaging).

UI Dasbor VTS mendukung fitur (seperti cakupan kode asli) yang disediakan oleh infrastruktur VTS dan menawarkan pemantauan kinerja berkelanjutan untuk memungkinkan pengembangan alat kinerja yang dioptimalkan dan dikarakterisasi dengan baik.

Persyaratan

Layanan berikut diperlukan untuk menggunakan Dasbor VTS:

Melihat cakupan pengujian bergantung pada REST API ke server kode sumber (misalnya Gerrit), yang memungkinkan layanan web mengambil kode sumber asli menurut daftar kontrol akses yang ada.

Arsitektur

Dasbor VTS menggunakan arsitektur berikut:

Gambar 1 . Arsitektur Dasbor VTS.

Hasil status pengujian terus diunggah ke database Cloud Datastore melalui antarmuka REST. Pelari VTS secara otomatis memproses hasil dan membuat serial menggunakan format Protobuf.

Servlet web membentuk titik akses utama bagi pengguna, mengirimkan dan memproses data dari database Datastore. Servlet meliputi: servlet utama untuk mengirimkan semua tes, servlet preferensi untuk mengelola favorit pengguna, servlet hasil untuk mengisi tabel pengujian, servlet grafik untuk menyiapkan data profil, dan servlet cakupan untuk menyiapkan data cakupan untuk klien .

Setiap modul pengujian memiliki pohon leluhur Datastore sendiri dan hasil pengujian diindeks dengan stempel waktu Unix dari waktu mulai pengujian. Cakupan data dalam database disimpan dengan hasil tes sebagai vektor hitungan (yaitu untuk setiap baris dalam file sumber asli) dan mengidentifikasi informasi untuk mengambil kode sumber dari server kode sumber.

Layanan notifikasi berjalan menggunakan antrian tugas, mengidentifikasi perubahan status kasus uji, dan memberi tahu pelanggan. Informasi stateful disimpan dalam tabel status untuk melacak kesegaran data dan kegagalan yang ada. Hal ini memungkinkan layanan notifikasi untuk memberikan informasi yang kaya tentang kegagalan dan perbaikan kasus uji individu.

Struktur kode

Komponen penting Dasbor VTS termasuk servlet yang diimplementasikan di Java, JSP front-end, stylesheet CSS, dan file konfigurasi. Daftar berikut merinci lokasi dan deskripsi komponen ini (semua jalur relatif terhadap test/vts/web/dashboard ):

  • pom.xml
    File pengaturan tempat variabel lingkungan dan dependensi ditentukan.
  • src/main/java/com/android/vts/api/
    Berisi titik akhir untuk berinteraksi dengan data melalui REST.
  • src/main/java/com/android/vts/entity/
    Berisi model Java dari entitas Datastore.
  • src/main/java/com/android/vts/proto/
    Berisi file Java untuk Protobuf, termasuk VtsReportMessage.java , yang merupakan implementasi Java dari tipe Protobuf yang digunakan untuk menjelaskan hasil pengujian VTS.
  • src/main/java/com/android/vts/servlet/
    Berisi file Java untuk servlet.
  • src/main/java/com/android/vts/util/
    Berisi file Java untuk fungsi utilitas dan kelas yang digunakan oleh servlet.
  • src/test/java/com/android/vts/
    Berisi pengujian UI untuk servlet dan utilitas.
  • src/main/webapp/
    Berisi file yang terkait dengan UI (JSP, CSS, XML):
    • js/ . Berisi file Javascript yang digunakan oleh halaman web.
    • WEB-INF/ . Berisi file konfigurasi dan UI.
    • jsp/ . Berisi file JSP untuk setiap halaman web.
  • appengine-web.xml
    File pengaturan tempat variabel lingkungan dimuat ke dalam variabel.
  • web.xml
    File pengaturan tempat pemetaan servlet dan batasan keamanan ditentukan.
  • cron.xml
    File pengaturan yang menentukan tugas terjadwal (yaitu layanan notifikasi).

Menyiapkan Dasbor

Untuk mengatur Dasbor VTS:

  1. Buat Proyek Google Cloud App Engine dan siapkan host penerapan dengan menginstal:
    • Jawa 8
    • SDK Mesin Aplikasi Google
    • Maven
  2. Buat ID Klien OAuth 2.0 di Google Cloud API Manager.
  3. Buat Akun Layanan dan buat file kunci.
  4. Tambahkan alamat email ke Daftar Pengirim Resmi API Email App Engine.
  5. Siapkan Akun Google Analytics.
  6. Tentukan variabel lingkungan di Dasbor pom.xml :
    • Tetapkan ID klien dengan ID OAuth 2.0 (dari langkah 2).
    • Tetapkan ID klien layanan dengan pengidentifikasi yang disertakan dalam file kunci (dari langkah 3).
    • Tentukan alamat email pengirim untuk peringatan (dari langkah 4).
    • Tentukan domain email tempat semua email akan dikirim.
    • Tentukan alamat ke server Gerrit REST.
    • Tentukan cakupan OAuth 2.0 yang akan digunakan untuk server Gerrit REST.
    • Tentukan ID Google Analytics (dari langkah 5).
    • Membangun dan menyebarkan proyek.
  7. Di terminal, jalankan mvn clean appengine:update .

Pertimbangan keamanan

Informasi cakupan yang kuat memerlukan akses ke kode sumber asli. Namun, beberapa kode mungkin sensitif dan gateway tambahan untuk itu memungkinkan eksploitasi daftar kontrol akses yang ada.

Untuk menghindari ancaman ini, alih-alih menyajikan kode sumber dengan informasi cakupan, Dasbor secara langsung menangani vektor cakupan (yaitu, vektor pemetaan jumlah eksekusi ke baris dalam file sumber). Bersama dengan vektor cakupan, Dasbor menerima nama dan jalur proyek Git sehingga klien dapat mengambil kode dari API kode sumber eksternal. Browser klien menerima informasi ini dan menggunakan cross-origin resource sharing (CORS) dalam Javascript untuk menanyakan server kode sumber untuk kode sumber asli; kode yang dihasilkan digabungkan dengan vektor cakupan untuk menghasilkan tampilan.

Pendekatan langsung ini tidak memperluas permukaan serangan karena Dasbor menggunakan cookie pengguna untuk mengautentikasi dengan layanan luar (artinya pengguna yang tidak dapat mengakses kode sumber secara langsung tidak dapat mengeksploitasi Dasbor untuk melihat informasi sensitif).