Anda dapat menjalankan simulasi menggunakan demo web yang disediakan atau dengan memanggil REST API secara langsung.
Input dan output
File input dan output menggunakan bucket Cloud Storage dari penyiapan Terraform.
Direktori input harus berisi file metrics_config.zip dan publisher_config.zip. Anda dapat menentukan jalur ke file tersebut sesuai kebutuhan.
Bucket untuk output berisi direktori simulations, yang menyimpan setiap simulasi berdasarkan ID-nya. Setiap direktori simulasi berisi folder input dengan
file input yang disalin dan folder output. Folder output berisi laporan bug, file logcat, dan file simulator yang dihasilkan.
Menggunakan demo web
Platform ini mencakup aplikasi web berbasis Flutter untuk tujuan demonstrasi yang memungkinkan Anda melihat, membuat, dan mengelola simulasi. Anda dianjurkan untuk membuat antarmuka pengguna sendiri yang disesuaikan dengan kebutuhan Anda.
Aplikasi demo di-deploy ke App Engine dan mengharuskan Anda login dengan
Akun Google. API ini dilindungi menggunakan Client ID OAuth 2.0 yang dikonfigurasi di project Google Cloud Anda. Akun yang login harus memiliki izin IAM untuk memanggil Cloud Functions yang di-deploy. Lihat Memberikan otorisasi akses dengan IAM
untuk mengetahui petunjuk tentang cara memberikan izin yang diperlukan ke akun pengguna, seperti
peran Cloud Functions Invoker (roles/cloudfunctions.invoker).
Alur kerja pengguna
- Login dengan Akun Google Anda, yang diautentikasi menggunakan proses OAuth 2.0.
- Lihat simulasi di halaman utama, yang mencantumkan semua simulasi dengan mengkueri database Firestore, yang menyimpan semua informasi eksekusi.
- Buka formulir untuk menjadwalkan simulasi baru dengan mengklik tombol tindakan + di sudut kanan bawah. Anda memberikan beberapa parameter, termasuk jalur input, ID build, dan jenis instance. Untuk mengetahui informasi selengkapnya, lihat Membuat simulasi.
- Periksa status monitor pada update daftar simulasi, yang menampilkan status simulasi baru, misalnya,
PENDING,RUNNING,COMPLETED. - Setelah simulasi selesai, lihat laporan dan artefak yang dihasilkan. File input, laporan output, log, Logcat, dan Bugreport disimpan di Cloud Storage.
- Opsional: Batalkan simulasi terjadwal atau yang sedang berjalan.
Penggunaan API
Untuk otomatisasi dan integrasi dengan sistem lain, Anda dapat menggunakan REST API.
Placeholder CLOUD_FUNCTION_URL
yang digunakan di bagian Authentication dan dalam definisi endpoint merujuk ke
URL dasar Cloud Function yang dipanggil. Anda dapat menemukan URL fungsi di konsol Google Cloud pada halaman Cloud Functions; URL untuk setiap fungsi ditampilkan di tab Pemicu pada halaman Detail fungsi. Atau,
Anda dapat menemukan URL ini di output Terraform yang dicetak setelah menjalankan
perintah apply.
Autentikasi
Semua permintaan API harus diautentikasi dengan token identitas yang membuktikan identitas pemanggil. Identitas (pengguna atau akun layanan) harus memiliki izin Cloud Functions Invoker pada fungsi target.
Pemanggilan pengguna (lokal dan CLI): Saat memanggil API dari mesin lokal atau lingkungan non-Google Cloud, Anda harus menggunakan token identitas yang dikeluarkan Google yang diperoleh untuk akun pengguna.
TOKEN=$(gcloud auth print-identity-token)Pemanggilan akun layanan (dalam Google Cloud): Saat memanggil API dari resource Google Cloud (misalnya, VM Compute Engine, Cloud Function lain, atau cluster Kubernetes), gunakan identitas Akun Layanan yang terpasang di resource. Token harus diambil dari server metadata resource.
TOKEN=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=CLOUD_FUNCTION_URL" -H "Metadata-Flavor: Google")
Sertakan token yang diambil di header Authorization permintaan Anda sebagai token
Bearer.
Endpoint
Endpoint yang menghadap pengguna dari stack Cloud Telemetry Simulation memungkinkan Anda membuat dan menghapus simulasi atau membaca informasi simulasi dari database.
Membuat simulasi
Endpoint ini membuat permintaan simulasi baru dan menjadwalkannya untuk dieksekusi.
- Endpoint:
POST https://CLOUD_FUNCTION_URL/simulation-orchestrator-receive-request Isi permintaan:
{ "build_id": "latest", "file_path": "inputs/my-test-case/", "instance_type": "n1-standard-8", "owner": "user@example.com", "max_simulation_time": 300, "max_report_count": 5 }build_id(string): Tag image Docker agen yang akan digunakan, misalnya,latest.file_path(string): Jalur dalam bucket GCS ke folder yang berisimetrics_config.zipdanpublisher_config.zip.instance_type(string): Jenis mesin Compute Engine. Jenis ini harus mendukung virtualisasi bertingkat, seperti serin1,n2, ataut2d. Untuk mengetahui informasi selengkapnya, lihat ringkasan virtualisasi bertingkat.owner(string): Email pengguna yang memulai simulasi.max_simulation_time(bilangan bulat): Waktu maksimum dalam detik saat simulasi berjalan.max_report_count(integer): Jumlah laporan telemetri setelah simulasi selesai.
Respons berhasil (200 OK):
{ "id": "sim-a1b2c3d4e5f6" }
Menghapus simulasi
Endpoint ini membatalkan simulasi yang tertunda atau sedang berjalan dan menghapus resource terkaitnya.
- Endpoint:
POST https://CLOUD_FUNCTION_URL/simulation-orchestrator-delete-simulation - Header:
Content-Type: application/json
Isi permintaan:
{ "id": "sim-a1b2c3d4e5f6" }Respons berhasil (200 OK): Objek JSON kosong
{}.
Membaca data simulasi
Untuk membaca data simulasi, Anda dapat berinteraksi dengan fungsi simulation-reader.
Endpoint ini menggunakan metode GET untuk mengambil histori, status, dan konfigurasi sistem.
Mencantumkan simulasi
Mengambil daftar simulasi yang di-pagination dengan dukungan untuk pemfilteran dan pengurutan.
- Endpoint:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations Parameter kueri (semua opsional):
status(string): Memfilter menurut status simulasi (running,Simulation request received,cancelled, ataucompleted).owner(string): Memfilter menurut email pemilik.sort_by(string): Kolom yang akan diurutkan (received_at,status_updated_at,started_at). Defaultnya adalahreceived_at.sort_order(string): Arah pengurutan,ascataudesc. Nilai defaultnya adalahdesc.page_size(integer): Jumlah hasil per halaman. Defaultnya adalah 20.page_token(string): Token untuk mengambil halaman hasil berikutnya.
Contoh permintaan:
curl -H "Authorization: Bearer $TOKEN" "https://CLOUD_FUNCTION_URL/simulation-reader/simulations?status=completed&owner=user@example.com&sort_by=status_updated_at"Respons berhasil (200 OK):
- Menampilkan objek JSON yang berisi array simulasi dan
next_page_tokenopsional.
{ "simulations": [ { "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }, { "id": "5678-efgh", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-11-07T14:49:54.25Z", "received_at": "2025-11-07T14:46:54.959Z", "started_at": "2025-11-07T14:47:13.714Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-5678-efgh", "ip": "10.156.15.221", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 } ], "next_page_token": "M7bydGsAptLncj8SOCb1" }- Menampilkan objek JSON yang berisi array simulasi dan
Mendapatkan simulasi tertentu
Mengambil detail lengkap simulasi tertentu berdasarkan ID-nya.
Endpoint:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/[SIMULATION_ID]Respons berhasil (200 OK): Menampilkan objek JSON yang berisi detail simulasi yang diminta.
{ "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }
Mendapatkan metrik dan konfigurasi sistem
Endpoint ini memberikan insight tentang beban dan konfigurasi infrastruktur simulasi saat ini.
Dapatkan jumlah yang sedang berjalan: Menampilkan jumlah simulasi yang sedang berjalan.
Endpoint:
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/running/countRespons berhasil (200 OK):
{ "count": 0 }
Mendapatkan VM serentak maksimum: Menampilkan jumlah maksimum VM yang berjalan serentak yang dikonfigurasi.
Endpoint:
GET https://CLOUD_FUNCTION_URL/simulation-reader/config/max-running-vmsRespons berhasil (200 OK):
{ "max_running_vms": 5 }