AOSP menyertakan rangkaian pengujian GPU drawElements Quality Program (deqp) di https://android.googlesource.com/platform/external/deqp. Halaman ini menjelaskan cara men-deploy paket pengujian deqp ke lingkungan baru.
Untuk menggunakan kode yang terakhir dikirim, gunakan cabang deqp-dev
.
Untuk kode yang cocok dengan rilis Android CTS tertentu, gunakan
Cabang release-code-name-release
(misalnya, untuk Android 6.0,
gunakan cabang marshmallow-release
).
Tata letak sumber
Tata letak kode sumber untuk modul pengujian deqp dan library pendukung adalah yang ditampilkan dalam tabel di bawah (listingan ini tidak komprehensif tetapi menyoroti direktori terpenting).
Direktori | Deskripsi |
---|---|
android |
Sumber penguji Android dan skrip build |
data |
Menguji file data |
modules |
Sumber modul pengujian |
modules/egl |
Modul EGL |
modules/gles2 |
Modul GLES2 |
modules/gles3 |
Modul GLES3 |
modules/gles31 |
Modul GLES3.1 |
modules/gles32 |
Modul GLES3.2 |
targets |
File konfigurasi build khusus target |
framework |
utilitas dan framework modul pengujian deqp |
framework/delibs |
Portabilitas dasar dan library build |
framework/platform |
Port platform |
framework/qphelper |
Menguji library integrasi program (C) |
framework/common |
Framework decoder (C++) |
framework/opengl, framework/egl |
Utilitas khusus API |
execserver |
Sumber ExecServer sisi perangkat |
executor |
Utilitas dan alat shell eksekutor pengujian sisi host |
external |
Bangun direktori stub untuk libs eksternal libpng dan zlib |
Komponen open source
Deqp menggunakan libpng
dan zlib
, yang dapat diambil
menggunakan skrip
platform/external/deqp/external/fetch_sources.py
atau melalui git
dari platform/external/[libpng,zlib]
.
Membuat program pengujian
Framework pengujian telah dirancang dengan mempertimbangkan portabilitas. Satu-satunya persyaratan wajibnya adalah dukungan penuh C++ dan pustaka sistem standar untuk I/O, thread dan soket.
Sistem build CMake
Sumber deqp memiliki skrip build untuk CMake, yang merupakan alat yang lebih disukai untuk mengompilasi program pengujian.
CMake adalah sistem build {i>open source<i} yang mendukung beberapa platform dan toolchain. CMake menghasilkan makefile native atau file project IDE dari file konfigurasi independen target. Untuk informasi selengkapnya tentang CMake, lihat CMake.
CMake mendukung dan merekomendasikan build pohon {i>out-of-source<i}, yaitu, Anda harus selalu membuat makefile atau file proyek di direktori build yang terpisah di luar hierarki sumber. CMake tidak memiliki "distclean" apa pun target, sehingga menghapus file apa pun yang dihasilkan oleh CMake harus dilakukan secara manual.
Opsi konfigurasi diberikan ke CMake menggunakan -DOPTION_NAME=VALUE
sintaksis. Beberapa opsi yang umum digunakan untuk deqp tercantum di bawah ini.
Opsi konfigurasi | Deskripsi |
---|---|
DEQP_TARGET |
Nama target, misalnya: "android" Skrip CMake deqp akan menyertakan file
|
CMAKE_TOOLCHAIN_FILE |
Jalur ke file toolchain untuk CMake. Digunakan untuk kompilasi silang. |
CMAKE_BUILD_TYPE |
Jenis build untuk target makefile. Nilai yang valid adalah: "Debug" dan "Release" Perhatikan bahwa interpretasi dan jenis default bergantung pada sistem build yang ditargetkan. Lihat dokumentasi CMake untuk mengetahui detailnya. |
Membuat file build target
Sistem build deqp dikonfigurasi untuk target baru menggunakan file build target.
File build target menentukan fitur mana yang didukung platform dan library atau
jalur penyertaan tambahan diperlukan. Nama file target mengikuti targets/NAME/NAME.cmake
dan target dipilih menggunakan parameter build DEQP_TARGET
.
Jalur file dalam file target relatif dengan direktori deqp
dasar, bukan
Direktori targets/NAME
. Variabel standar berikut dapat ditetapkan oleh file build target.
Variabel | Deskripsi |
---|---|
DEQP_TARGET_NAME |
Nama target (akan disertakan ke dalam log pengujian) |
DEQP_SUPPORT_GLES2 |
Apakah GLES2 didukung (default: NONAKTIF) |
DEQP_GLES2_LIBRARIES |
Library GLES2 (biarkan kosong jika tidak didukung atau pemuatan dinamis digunakan) |
DEQP_SUPPORT_GLES3 |
Apakah GLES3.x didukung (default: NONAKTIF) |
DEQP_GLES3_LIBRARIES |
Library GLES3.x (biarkan kosong jika tidak didukung atau pemuatan dinamis digunakan) |
DEQP_SUPPORT_VG |
Apakah OpenVG didukung (default: NONAKTIF) |
DEQP_OPENVG_LIBRARIES |
Library OpenVG (biarkan kosong jika tidak didukung atau pemuatan dinamis digunakan) |
DEQP_SUPPORT_EGL |
Apakah EGL didukung (default: NONAKTIF) |
DEQP_EGL_LIBRARIES |
Library EGL (biarkan kosong jika tidak didukung atau pemuatan dinamis akan digunakan) |
DEQP_PLATFORM_LIBRARIES |
Library khusus platform tambahan diperlukan untuk penautan |
DEQP_PLATFORM_COPY_LIBRARIES |
Daftar library yang disalin ke setiap direktori build biner pengujian. Bisa digunakan untuk menyalin library yang diperlukan untuk menjalankan pengujian tetapi tidak secara default {i>search path<i}. |
TCUTIL_PLATFORM_SRCS |
Daftar sumber port platform. Sumber default ditentukan berdasarkan kemampuan dan OS kami. Catatan: Jalur terkait dengan: |
File build target dapat menambahkan jalur penyertaan atau link tambahan menggunakan
Fungsi CMake include_directories()
dan link_directories()
.
Build Win32
Cara termudah untuk membangun modul deqp untuk Windows adalah dengan menggunakan build CMake sistem file. Anda akan memerlukan CMake 2.6.12 atau yang lebih baru dan Microsoft Visual C/C++ compiler. Deqp telah diuji dengan Visual Studio 2013.
File project Visual Studio dapat dibuat dengan perintah berikut:
cmake path\to\src\deqp -G "Visual Studio 12"
Build 64-bit dapat dibuat dengan memilih "Visual Studio VERSION Win64" sebagai build generator:
cmake path\to\src\deqp -G "Visual Studio 12 Win64"
Anda juga dapat membuat makefile NMake dengan opsi -G "NMake Makefiles"
sebagai jenis build (-DCMAKE_BUILD_TYPE="Debug"
atau "Release"
).
Pembuatan konteks render
Konteks rendering dapat dibuat dengan WGL atau EGL di Windows.
Dukungan WGL
Semua biner Win32 mendukung pembuatan konteks GL dengan WGL karena hanya memerlukan
library standar. Konteks WGL dapat dipilih menggunakan --deqp-gl-context-type=wgl
argumen command line. Dalam mode WGL, deqp menggunakan WGL_EXT_create_context_es_profile
untuk membuat konteks OpenGL ES. Ini telah diuji agar dapat bekerja dengan
{i>driver<i} terbaru dari NVIDIA dan Intel. Driver AMD tidak mendukung
.
Dukungan EGL
Deqp dibuat dengan pemuatan dinamis untuk EGL di Windows jika DEQP_SUPPORT_EGL
AKTIF. Ini adalah setelan default pada sebagian besar target. Kemudian, jika host memiliki library EGL
tersedia, Anda dapat menjalankan pengujian
dengan menggunakan baris perintah
parameter: --deqp-gl-context-type=egl
build Android
Build Android menggunakan skrip build CMake untuk membangun kode pengujian native. Bagian Java, yaitu, {i>Test Execution Server<i} dan {i>Test Application Stub<i}, dikompilasi menggunakan alat build Android standar.
Untuk mengompilasi program pengujian deqp untuk Android dengan build yang disediakan skrip, Anda akan membutuhkan:
- Versi terbaru
Android NDK; file
android/scripts/common.py
mencantumkan versi yang diperlukan - SDK mandiri Android dengan API 13, SDK Tools, alat SDK Platform, dan SDK Paket alat build telah diinstal
- Apache Ant 1.9.4 (diperlukan oleh build kode Java)
- CMake 2.8.12 atau yang lebih baru
- Python 2.6 atau yang lebih baru dalam seri 2.x; Python 3.x tidak didukung
- Untuk Windows: NMake atau JOM di
PATH
- JOM memungkinkan build yang lebih cepat
- Opsional: Ninja make juga didukung di Linux
Biner Ant dan SDK ditempatkan berdasarkan variabel lingkungan PATH dengan
{i>default<i} pengganti tertentu. Logika dikontrol oleh android/scripts/common.py
.
Direktori NDK harus berupa ~/android-ndk-VERSION
atau
C:/android/android-ndk-VERSION
atau ditentukan melalui ANDROID_NDK_PATH
variabel lingkungan.
Deqp komponen pada perangkat, layanan
eksekusi uji, dan program pengujian
yang dibuat dengan menjalankan skrip android/scripts/build.py
. .apk akhir dibuat di
android/package/bin
dan dapat diinstal oleh skrip install.py
. Jika
eksekutor command line digunakan, lalu ExecService diluncurkan
dengan skrip launch.py
di perangkat melalui ADB. Skrip dapat dijalankan dari direktori mana pun.
Build Linux
Biner pengujian dan utilitas command line dapat dibuat untuk Linux dengan membuat makefile menggunakan CMake. Ada beberapa target versi yang telah ditetapkan sebelumnya yang berguna saat membangun untuk Linux.
Target build | Deskripsi |
---|---|
default |
Target default yang menggunakan introspeksi platform CMake guna menentukan dukungan untuk berbagai API. |
x11_glx |
Menggunakan GLX untuk membuat konteks OpenGL (ES). |
x11_egl |
Menggunakan EGL untuk membuat konteks OpenGL (ES). |
x11_egl_glx |
Mendukung GLX dan EGL dengan X11. |
Selalu gunakan -DCMAKE_BUILD_TYPE=<Debug|Release>
untuk menentukan jenis build.
Release
adalah default yang baik. Tanpanya, build rilis default yang tidak dioptimalkan akan dibuat.
Argumen command line -DCMAKE_C_FLAGS
dan -DCMAKE_CXX_FLAGS
dapat berupa
yang digunakan untuk meneruskan argumen tambahan ke compiler. Misalnya, build 32-bit atau 64-bit dapat dilakukan dengan
menetapkan -DCMAKE_C(XX)_FLAGS="-m32"
atau "-m64"
masing-masing. Jika tidak
yang ditetapkan, arsitektur native toolchain, biasanya 64-bit pada toolchain 64-bit, akan digunakan.
Argumen -DCMAKE_LIBRARY_PATH
dan -DCMAKE_INCLUDE_PATH
dapat digunakan
agar CMake memberi CMake library tambahan atau menyertakan jalur penelusuran.
Contoh command line lengkap yang digunakan untuk melakukan build debug 32-bit terhadap header dan library driver di lokasi kustom adalah sebagai berikut:
cmake <path to src>/deqp -DDEQP_TARGET=x11_egl -DCMAKE_C_FLAGS="-m32" -DCMAKE_CXX_FLAGS="-m32" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_LIBRARY_PATH="PATH_TO_DRIVER/lib" -DCMAKE_INCLUDE_PATH="PATH_TO_DRIVER/inc"
make -j4
Kompilasi silang
Kompilasi silang dapat dilakukan dengan menggunakan file toolchain CMake. Toolchain
menentukan compiler yang akan digunakan, bersama dengan jalur penelusuran khusus untuk
library, library, dan header. Beberapa file toolchain untuk skenario umum adalah
disertakan dalam paket rilis di direktori framework/delibs/cmake
.
Selain variabel CMake standar, variabel spesifik deqp berikut
dapat disetel oleh file toolchain. CMake biasanya dapat mendeteksi DE_OS
, DE_COMPILER
dan DE_PTR_SIZE
dengan benar, tetapi DE_CPU
harus ditetapkan oleh file toolchain.
Variabel | Deskripsi |
---|---|
DE_OS |
Sistem operasi. Nilai yang didukung adalah: |
DE_COMPILER |
Jenis compiler. Nilai yang didukung adalah: |
DE_CPU |
Jenis CPU. Nilai yang didukung adalah: |
DE_PTR_SIZE |
sizeof(void*) di platform. Nilai yang didukung adalah: 4 dan 8 |
File toolchain dapat dipilih menggunakan parameter build CMAKE_TOOLCHAIN_FILE
.
Misalnya, kode berikut akan membuat makefile untuk build menggunakan compiler silang CodeSourcery untuk ARM/Linux:
cmake PATH_TO_SRC/deqp –DDEQP_BUILD_TYPE="Release" –DCMAKE_TOOLCHAIN_FILE=PATH_TO_SRC/delibs/cmake/toolchain-arm-cs.cmake –DARM_CC_BASE=PATH_TO_CC_DIRECTORY
Penautan runtime library GLES dan EGL
Deqp tidak memerlukan titik entri API yang sedang diuji selama penautan. Tujuan kode pengujian selalu mengakses API melalui pointer fungsi. Titik entri dapat dimuat secara dinamis saat runtime. atau port platform dapat menyediakannya di waktu penautan.
Jika dukungan untuk API diaktifkan di setelan build dan library link
tidak diberikan, deqp akan memuat titik entri yang diperlukan saat runtime. Jika
penautan statis diinginkan, sediakan library link yang diperlukan di DEQP_<API>_LIBRARIES
variabel konfigurasi build.
Melakukan porting framework pengujian
Porting deqp melibatkan tiga langkah: mengadaptasi library portabilitas dasar, menerapkan antarmuka integrasi platform kerangka kerja pengujian, dan dan menjalankan layanan eksekusi.
Tabel di bawah mencantumkan lokasi untuk kemungkinan perubahan transfer. Apa pun di luar mereka cenderung eksotis.
Lokasi | Deskripsi |
---|---|
framework/delibs/debase |
Implementasi kode khusus OS yang diperlukan. |
framework/qphelper/qpCrashHandler.c |
Opsional: Implementasi untuk OS Anda. |
framework/qphelper/qpWatchDog.c |
Implementasi untuk OS Anda. Yang saat ini didasarkan pada |
framework/platform |
Port platform dan stub aplikasi baru dapat diimplementasikan seperti yang dijelaskan di Menguji port platform framework. |
Library portabilitas dasar
Library portabilitas dasar sudah mendukung Windows, sebagian besar varian Linux, Mac OS, iOS, dan Android. Jika target pengujian berjalan pada salah satu sistem operasi tersebut, kemungkinan besar tidak perlu menyentuh perpustakaan portabilitas dasar sama sekali.
Uji port platform framework
Port platform framework pengujian deqp memerlukan dua komponen: Aplikasi titik entri, dan implementasi antarmuka platform.
Titik entri aplikasi bertanggung jawab
untuk membuat objek platform,
membuat objek command line (tcu::CommandLine
), membuka log pengujian
(tcu::TestLog
), dan melakukan iterasi aplikasi pengujian (tcu::App
). Jika
OS target mendukung titik entri main()
standar, tcuMain.cpp
dapat digunakan
sebagai implementasi titik entri.
API platform deqp dijelaskan secara mendetail dalam file berikut.
File | Deskripsi |
---|---|
framework/common/tcuPlatform.hpp |
Class dasar untuk semua port platform |
framework/opengl/gluPlatform.hpp |
Antarmuka platform OpenGL |
framework/egl/egluPlatform.hpp |
Antarmuka platform EGL |
framework/platform/tcuMain.cpp |
Titik entri aplikasi standar |
Class dasar untuk semua port platform adalah tcu::Platform
. Port platform dapat
secara opsional mendukung antarmuka khusus GL- dan EGL. Lihat
tabel berikut ini untuk gambaran umum
tentang apa yang perlu diimplementasikan dalam
menjalankan pengujian.
Modul | Antarmuka |
---|---|
Modul pengujian OpenGL (ES) |
Antarmuka platform GL |
Modul pengujian EGL |
Antarmuka platform EGL |
Petunjuk terperinci untuk menerapkan porta platform dapat dilihat di {i>porting layer header<i}.
Layanan eksekusi uji
Untuk menggunakan infrastruktur eksekusi uji
deqp atau eksekutor baris perintah,
layanan eksekusi uji
harus tersedia pada target. C++ portabel
implementasi layanan ini disediakan dalam direktori execserver
. Mandiri
biner dibangun sebagai bagian dari modul pengujian deqp
untuk target PC. Anda dapat mengubah execserver/CMakeLists.txt
untuk mengaktifkan build di
target lain.
Versi C++ layanan eksekusi uji menerima dua command line parameter:
-
--port=<port>
akan menetapkan port TCP yang didengarkan oleh server. Defaultnya adalah 50016. -
--single
akan menghentikan proses server saat klien memutuskan koneksi. Secara default, server akan tetap aktif untuk melayani permintaan eksekusi uji lebih lanjut.
Menjalankan pengujian
Halaman ini berisi petunjuk untuk menjalankan pengujian deqp di Linux dan Windows lingkungan, penggunaan argumen baris perintah, dan bekerja dengan Android paket aplikasi Google Cloud.
Lingkungan Linux dan Windows
Mulai dengan menyalin file dan direktori berikut ke target.
Modul | Direktori | Target |
---|---|---|
Server Eksekusi | build/execserver/execserver |
<dst>/execserver |
Modul EGL | build/modules/egl/deqp-egl |
<dst>/deqp-egl |
Modul GLES2 | build/modules/gles2/deqp-gles2 |
<dst>/deqp-gles2 |
data/gles2 |
<dst>/gles2 |
|
Modul GLES3 | build/modules/gles3/deqp-gles3 |
<dst>/deqp-gles3 |
data/gles3 |
<dst>/gles3 |
|
Modul GLES3.1 | build/modules/gles31/deqp-gles31 |
<dst>/deqp-gles31 |
data/gles31 |
<dst>/gles31 |
|
Modul GLES3.2 | build/modules/gles32/deqp-gles32 |
<dst>/deqp-gles32 |
data/gles32 |
<dst>/gles32 |
Anda dapat men-deploy layanan eksekusi dan menguji biner di mana saja dalam target sistem file; Namun, biner pengujian berharap menemukan direktori data di direktori kerja saat ini. Jika sudah siap, mulai Test Execution Service pada perangkat target. Untuk detail tentang cara memulai layanan, lihat Uji coba layanan eksekusi.
Argumen command line
Tabel berikut mencantumkan argumen command line yang memengaruhi eksekusi semua program pengujian.
Argumen | Deskripsi |
---|---|
--deqp-case=<casename> |
Jalankan kasus yang cocok dengan pola tertentu. Karakter pengganti (*) didukung. |
--deqp-log-filename=<filename> |
Tulis hasil pengujian ke file yang namanya Anda berikan. Eksekusi uji akan menetapkan nama file saat memulai pengujian. |
--deqp-stdin-caselist |
Membaca daftar kasus dari stdin atau dari argumen tertentu. Eksekusi uji akan menetapkan argumen sesuai dengan permintaan eksekusi yang diterima. Lihat bagian berikutnya untuk deskripsi format daftar kasus. |
--deqp-test-iteration-count=<count> |
Ganti jumlah iterasi untuk pengujian yang mendukung jumlah variabel iterasi sebelumnya. |
--deqp-base-seed=<seed> |
Seed dasar untuk kasus pengujian yang menggunakan pengacakan. |
Argumen khusus GLES2 dan GLES3
Tabel berikut mencantumkan argumen khusus GLES2 dan GLES3.Argumen | Deskripsi |
---|---|
--deqp-gl-context-type=<type> |
Jenis konteks OpenGL. Jenis konteks yang tersedia bergantung pada platform. Aktif
platform yang mendukung EGL, nilai egl dapat digunakan untuk memilih
konteks EGL. |
--deqp-gl-config-id=<id> |
Jalankan pengujian untuk ID konfigurasi GL yang disediakan. Interpretasi adalah bergantung pada platform. Di platform EGL, ini adalah ID konfigurasi EGL. |
--deqp-gl-config-name=<name> |
Menjalankan pengujian untuk konfigurasi GL yang telah diberi nama. Interpretasi adalah
bergantung pada platform. Untuk EGL, formatnya adalah
rgb(a)<bits>d<bits>s<bits> . Sebagai contoh,
nilai rgb888s8 akan memilih konfigurasi pertama tempat
buffer warna adalah RGB888 dan buffer stensil memiliki 8 bit. |
--deqp-gl-context-flags=<flags> |
Membuat konteks. Tentukan robust atau debug . |
--deqp-surface-width=<width> |
Coba buat platform dengan ukuran tertentu. Dukungan untuk hal ini bersifat opsional. |
--deqp-surface-type=<type> |
Menggunakan jenis platform tertentu sebagai target rendering pengujian utama. Mungkin
jenisnya adalah window , pixmap , pbuffer ,
dan fbo . |
--deqp-screen-rotation=<rotation> |
Orientasi layar dengan kelipatan 90 derajat untuk platform yang mendukungnya. |
Format daftar kasus pengujian
Daftar kasus pengujian dapat diberikan dalam dua format. Opsi pertama adalah membuat daftar nama lengkap dari setiap pengujian pada baris terpisah dalam file ASCII standar. Sebagai set pengujian bertambah, awalan berulang bisa menjadi rumit. Untuk menghindari pengulangan gunakan sintaks trie (juga dikenal sebagai pohon awalan) yang ditunjukkan di bawah ini.
{nodeName{firstChild{…},…lastChild{…}}}
Contoh:
{dEQP-EGL{config-list,create_context{rgb565_depth_stencil}}}
Diterjemahkan menjadi dua kasus pengujian berikut:
dEQP-EGL.config_list dEQP-EGL.create_context.rgb565_depth_stencil
Android
Paket aplikasi Android berisi semua komponen yang diperlukan, termasuk
layanan eksekusi uji, biner pengujian, dan file data. Aktivitas pengujiannya adalah
NativeActivity
yang menggunakan EGL (memerlukan Android 3.2 atau yang lebih baru).
Paket aplikasi dapat diinstal dengan perintah berikut (nama yang ditampilkan adalah nama APK dalam paket Android CTS; nama yang bergantung pada build):
adb –d install –r com.drawelements.deqp.apk
Untuk meluncurkan layanan eksekusi uji dan menyiapkan penerusan port, gunakan metode berikut ini:
adb –d forward tcp:50016 tcp:50016
adb –d shell am start –n com.drawelements.deqp/.execserver.ServiceStarter
Pencetakan debug dapat diaktifkan dengan menjalankan perintah berikut sebelum memulai tes:
adb –d shell setprop log.tag.dEQP DEBUG
Menjalankan pengujian di Android tanpa Android CTS
Untuk memulai aktivitas eksekusi uji secara manual, buat intent Android
yang menargetkan android.app.NativeActivity
. Aktivitas tersebut dapat berupa
yang ditemukan dalam paket com.drawelements.deqp
. Baris perintah harus
disediakan sebagai string tambahan dengan kunci "cmdLine"
di Intent.
Log pengujian ditulis ke /sdcard/dEQP-log.qpa
. Jika pengujian berjalan
tidak dimulai secara normal, informasi debug tambahan tersedia di perangkat
log.
Anda dapat meluncurkan aktivitas dari command line menggunakan am
utilitas. Misalnya, untuk menjalankan pengujian dEQP-GLES2.info
pada platform
yang mendukung NativeActivity,
gunakan perintah berikut.
adb -d shell am start -n com.drawelements.deqp/android.app.NativeActivity -e \ 'cmdLine "deqp --deqp-case=dEQP-GLES2.info.* --deqp-log-filename=/sdcard/dEQP-Log.qpa"'
Debug di Android
Untuk menjalankan pengujian dengan debugger GDB di Android, terlebih dahulu kompilasi dan instal build debug dengan menjalankan dua skrip berikut:
python android/scripts/build.py --native-build-type=Debug
python android/scripts/install.py
Setelah build debug diinstal pada perangkat, untuk meluncurkan pengujian di GDB yang berjalan di host, jalankan perintah berikut:
python android/scripts/debug.py \ --deqp-commandline="--deqp-log-filename=/sdcard/TestLog.qpa --deqp-case=dEQP-GLES2.functional.*"
Baris perintah deqp bergantung pada kasus
pengujian yang akan dijalankan dan
parameter yang diperlukan. Skrip menambahkan titik henti sementara default di awal
eksekusi deqp (tcu::App::App
).
Skrip debug.py
menerima beberapa argumen command line untuk
tindakan seperti menyetel titik henti sementara untuk proses debug, koneksi dbserver
parameter, dan jalur ke biner tambahan yang akan di-debug (gunakan debug.py
--help
untuk semua argumen dan penjelasan). Skrip ini juga menyalin beberapa
library default dari perangkat target untuk mendapatkan listingan simbol.
Untuk menyusuri kode driver (seperti saat GDB perlu mengetahui lokasi
biner dengan informasi debug lengkap), tambahkan lebih banyak pustaka melalui
Parameter command line debug.py
. Skrip ini menulis sebuah
file konfigurasi untuk GDB mulai dari baris 132 file skrip. Anda
dapat menyediakan jalur tambahan ke biner, dll., tetapi memberikan perintah yang benar
parameter baris seharusnya cukup.
Catatan: Di Windows, biner GDB memerlukan
libpython2.7.dll
. Sebelum meluncurkan debug.py
, tambahkan
<path-to-ndk>/prebuilt/windows/bin
ke variabel PATH.
Catatan: Proses debug kode native tidak berfungsi di Android 4.3; untuk solusi, lihat bug publik ini. Android 4.4 dan yang lebih tinggi tidak memuat bug ini.
Mengotomatiskan pengujian
Modul pengujian Deqp dapat diintegrasikan ke sistem pengujian otomatis dengan berbagai cara. Pendekatan terbaik tergantung pada infrastruktur dan target pengujian yang ada lingkungan fleksibel App Engine.
Output utama dari pengujian selalu berupa file log pengujian, yaitu file
dengan postfix .qpa
. Hasil pengujian penuh dapat diuraikan dari log pengujian. Output konsol adalah
informasi debug dan mungkin tidak tersedia di semua platform.
Biner pengujian dapat dipanggil langsung dari sistem otomatisasi pengujian. Tes biner dapat diluncurkan untuk kasus tertentu, untuk set pengujian, atau untuk semua pengujian yang tersedia. Jika error fatal terjadi selama eksekusi (seperti API tertentu error atau error), eksekusi uji akan dibatalkan. Untuk pengujian regresi, pendekatan terbaik adalah memanggil biner pengujian untuk kasus individu atau pengujian kecil ditetapkan secara terpisah, untuk menyediakan hasil parsial, bahkan jika terjadi kegagalan keras.
Deqp dilengkapi dengan alat eksekusi uji coba baris perintah yang dapat digunakan di dengan layanan eksekusi untuk mencapai integrasi yang lebih tangguh. Eksekutor mendeteksi penghentian proses pengujian dan akan melanjutkan eksekusi uji pada kasus yang tersedia berikutnya. Satu file log dihasilkan dari pengujian lengkap sesi. Pengaturan ini ideal untuk sistem pengujian ringan yang tidak menyediakan fasilitas pemulihan dari bencana.
Alat eksekusi uji command line
Serangkaian alat command line saat ini mencakup alat eksekusi uji jarak jauh, yakni generator perbandingan log untuk analisis regresi, pengonversi {i>test-log<i}-ke-CSV, pengonversi {i>test-log<i}-ke-XML, dan pengonversi {i>testlog<i}-ke-JUnit.
Kode sumber untuk alat ini ada dalam direktori executor
, dan binernya adalah
yang dibuat ke dalam direktori <builddir>/executor
.
Eksekutor uji command line
Eksekutor pengujian command line adalah alat C++ portabel untuk meluncurkan pengujian
pada perangkat dan mengumpulkan log
yang dihasilkan melalui TCP/IP. Eksekutor
berkomunikasi dengan layanan eksekusi (execserver) pada perangkat target.
Bersama-sama keduanya menyediakan fungsi seperti pemulihan dari error proses pengujian.
Contoh berikut menunjukkan cara menggunakan Test Executor command line
(gunakan --help
untuk detail selengkapnya):
Contoh 1: Menjalankan pengujian fungsional GLES2 di perangkat Android
executor --connect=127.0.0.1 --port=50016 --binaryname= com.drawelements.deqp/android.app.NativeActivity --caselistdir=caselists --testset=dEQP-GLES2.* --out=BatchResult.qpa --cmdline="--deqp-crashhandler=enable --deqp-watchdog=enable --deqp-gl-config-name=rgba8888d24s8"
Contoh 2: Melanjutkan pengujian OpenGL ES 2 sebagian yang dijalankan secara lokal
executor --start-server=execserver/execserver --port=50016 --binaryname=deqp-gles2 --workdir=modules/opengl --caselistdir=caselists --testset=dEQP-GLES2.* --exclude=dEQP-GLES2.performance.* --in=BatchResult.qpa --out=BatchResult.qpa
Uji ekspor CSV log dan bandingkan
Deqp memiliki alat untuk mengonversi log pengujian (file .qpa
) menjadi file CSV. CSV
berisi daftar kasus pengujian dan
hasil pengujian tersebut. Alat ini juga dapat membandingkan dua atau lebih hasil batch dan hanya mencantumkan
kasus pengujian yang memiliki kode status berbeda dalam hasil batch input. Tujuan
juga akan mencetak jumlah kasus yang cocok.
{i>Output<i} dalam format CSV sangat praktis untuk diproses lebih lanjut dengan
utilitas baris perintah atau dengan editor {i>spreadsheet<i}. Tambahan informasi yang dapat dibaca manusia,
Format teks biasa dapat dipilih menggunakan argumen command line berikut: --format=text
Contoh 1: Mengekspor log pengujian dalam format CSV
testlog-to-csv --value=code BatchResult.qpa > Result_statuscodes.csv
testlog-to-csv --value=details BatchResult.qpa > Result_statusdetails.csv
Contoh 2: Cantumkan perbedaan hasil pengujian antara dua log pengujian
testlog-to-csv --mode=diff --format=text Device_v1.qpa Device_v2.qpa
Catatan: Argumen --value=code
menghasilkan pengujian
kode hasil, seperti "Lulus" atau "Gagal". Argumen --value=details
memilih argumen berikutnya
penjelasan hasil atau nilai numerik yang dihasilkan oleh uji kinerja, kemampuan, atau akurasi.
Uji ekspor XML log
File log pengujian dapat dikonversi ke dokumen XML yang valid menggunakan testlog-to-xml
utilitas. Dua mode output didukung:
- Mode dokumen terpisah, dengan setiap kasus pengujian dan ringkasan
caselist.xml
dokumen ditulis ke direktori tujuan - Mode file tunggal, dengan semua hasil dalam file
.qpa
ditulis ke satu dokumen XML.
File log pengujian yang diekspor dapat dilihat di browser menggunakan style sheet XML.
Contoh dokumen lembar gaya (testlog.xsl
dan testlog.css
) diberikan
di direktori doc/testlog-stylesheet
. Untuk merender file log di browser, salin file log
dua file lembar gaya ke dalam direktori yang sama tempat dokumen XML yang diekspor berada.
Jika Anda menggunakan Google Chrome, file harus diakses melalui HTTP sebagai Chrome
membatasi akses file lokal
untuk alasan keamanan. Penginstalan Python standar
mencakup server HTTP dasar yang dapat
diluncurkan untuk melayani aliran
dengan perintah python –m SimpleHTTPServer 8000
. Setelah meluncurkan server,
cukup arahkan browser Chrome ke http://localhost:8000
untuk melihat log pengujian.
Konversi ke log pengujian JUnit
Banyak sistem otomatisasi pengujian yang dapat menghasilkan laporan hasil pengujian dari JUnit {i>output<i} tersebut. File log pengujian deqp dapat dikonversi ke format output JUnit menggunakan alat {i> testlog-to-junit<i}.
Saat ini alat ini hanya mendukung penerjemahan verdict kasus pengujian. Sebagai JUnit hanya mendukung "lulus" dan "gagal" hasil, hasil penerusan dari deqp dipetakan ke "JUnit pass" dan hasil lainnya dianggap gagal. Deqp asli kode hasil ini tersedia dalam output JUnit. Data lain, seperti pesan log dan gambar yang dihasilkan, tidak dipertahankan dalam konversi.
Menggunakan grup pengujian khusus
Beberapa grup pengujian mungkin memerlukan atau mendukung opsi command line khusus, atau memerlukan perhatian khusus ketika digunakan pada sistem tertentu.
Uji daya tahan alokasi memori
Uji daya tahan alokasi memori latihan kondisi kehabisan memori dengan berulang mengalokasikan resource tertentu hingga driver melaporkan error kehabisan memori.
Pada platform tertentu, seperti Android dan sebagian besar varian Linux,
dapat terjadi: Sistem operasi dapat mematikan proses pengujian alih-alih mengizinkan
{i>driver<i} untuk menangani atau
menyebabkan {i>error<i} kehabisan memori. Pada
platform ini, pengujian yang dirancang untuk menyebabkan error kehabisan memori
secara default, dan harus diaktifkan menggunakan argumen command line --deqp-test-oom=enable
.
Sebaiknya jalankan pengujian tersebut secara manual untuk
memeriksa apakah sistem berperilaku
dengan benar di bawah tekanan sumber daya. Namun, dengan
situasi, {i>error<i} dalam proses
pengujian harus dianggap sebagai lulus.
Grup pengujian
dEQP-GLES2.stress.memory.* dEQP-GLES3.stress.memory.*
Pengujian daya tahan rendering yang berjalan lama
Uji daya tahan rendering dirancang untuk mengungkapkan masalah keandalan dalam kondisi
oleh beban rendering. Secara {i>default<i}, pengujian hanya
akan mengeksekusi beberapa iterasi, tetapi
layanan tersebut dapat dikonfigurasi untuk berjalan tanpa batas waktu dengan menyediakan --deqp-test-iteration-count=-1
argumen command line. Watchdog pengujian harus dinonaktifkan (--deqp-watchdog=disable
)
jika menjalankan pengujian dalam
waktu yang lama.
Grup pengujian
dEQP-GLES2.stress.long.* dEQP-GLES3.stress.long.*