Firebase SQL Connect menyediakan emulator lokal untuk pembuatan prototipe end-to-end serta alur continuous integration dan continuous deployment (CI/CD):
- Emulator SQL Connect berinteraksi dengan instance database PGLite terintegrasi lokal untuk memungkinkan Anda membuat prototipe kueri dan mutasi serta menguji kode klien di lingkungan yang sepenuhnya lokal.
- Emulator SQL Connect juga dapat digunakan untuk pekerjaan non-interaktif. Emulator ini memungkinkan Anda menjalankan pengujian otomatis dan cocok untuk digunakan dengan alur kerja CI/CD. Hal ini berguna saat skema Anda stabil dan Anda ingin membuat prototipe dan menguji kode sisi klien.
Panduan ini membahas penginstalan dan penggunaan emulator secara lebih mendetail daripada panduan memulai cepat.
Menginstal emulator SQL Connect
Sebelum menginstal Local Emulator Suite untuk menggunakan SQL Connect emulator, Anda akan memerlukan:
- Node.js versi 18.0 atau yang lebih baru.
Menginstal Firebase CLI dan menyiapkan direktori project
Instal Firebase CLI dengan mengikuti panduan penginstalan. Pastikan untuk mengupdate secara rutin, karena SQL Connect emulator sedang dalam pengembangan aktif dengan perbaikan bug dan fitur baru.
Cloud ShellJika Anda belum melakukannya, lakukan inisialisasi direktori kerja saat ini sebagai project Firebase, dengan mengikuti petunjuk untuk menentukan produk yang akan digunakan:
firebase init
Menetapkan atau mengubah konfigurasi Local Emulator Suite
Jika Anda memulai emulator SQL Connect dari ekstensi SQL Connect VS Code, emulator akan diinstal untuk Anda, jika diperlukan.
Anda dapat menggunakan Firebase CLI untuk menginstal emulator secara manual bersama dengan komponen Local Emulator Suite lainnya yang dipilih. Perintah ini akan memulai wizard konfigurasi sehingga Anda dapat memilih emulator yang diminati, mendownload file biner yang sesuai dengan emulator tersebut, dan menetapkan port emulator jika port default tidak sesuai.
firebase init emulatorsSetelah emulator diinstal, tidak akan ada pemeriksaan update dan download otomatis tambahan yang dilakukan sebelum Anda mengupdate versi Firebase CLI.
Memilih project Firebase
Dalam alur penyiapan, Firebase CLI akan meminta Anda memilih atau membuat project Firebase. Jika Anda memilih project yang ada yang telah disiapkan dengan SQL Connect di Firebase console, konfigurasi yang Anda pilih di sana akan disarankan.
Menyiapkan emulator
Mengonfigurasi emulator
Menjalankan alur firebase init akan memandu Anda melalui opsi penyiapan emulator.
Seperti emulator lainnya di Local Emulator Suite, parameter konfigurasi
disimpan dalam file project lokal.
- File
firebase.jsonAnda berisi penetapan port emulator.- Kunci
emulators:uitidak berlaku untuk emulator SQL Connect.
- Kunci
Menggunakan resource lokal dan produksi SQL Connect
Jika Anda ingin memastikan tidak memengaruhi resource produksi, tetapkan demo- projectID atau pastikan kode klien Anda dilengkapi untuk terhubung ke emulator, seperti yang dibahas di bagian selanjutnya.
Memulai emulator
Jika Anda menjalankan emulator secara non-interaktif, misalnya untuk alur kerja CI/CD, mulai dengan opsi exec.
firebase emulators:exec ./path/to/test-script.shJika Anda mengintegrasikan kueri dan mutasi yang telah ditentukan sebelumnya dalam kode klien dan menggunakan emulator secara khusus untuk menguji klien, Anda dapat menggunakan opsi start untuk pekerjaan interaktif. Anda juga dapat memulai emulator dari ekstensi SQL Connect VS Code.
firebase emulators:startMelengkapi kode klien untuk berkomunikasi dengan emulator
Siapkan konfigurasi dalam aplikasi atau class pengujian untuk berinteraksi dengan SQL Connect emulator seperti berikut.
JavaScript
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
Menggunakan emulator untuk pengujian dan continuous integration
Menjalankan image Local Emulator Suite dalam container
Penginstalan dan konfigurasi Local Emulator Suite dengan container dalam penyiapan CI biasa sangat mudah dilakukan.
Ada beberapa hal yang perlu diperhatikan:
- Biner emulator diinstal dan di-cache di
~/.cache/firebase/emulators/. Anda dapat menambahkan jalur ini ke konfigurasi cache CI Anda untuk menghindari download berulang. - Jika tidak memiliki file
firebase.jsondi repositori, Anda harus menambahkan argumen command line ke perintahemulators:startatauemulators:execuntuk menentukan emulator yang harus dimulai. Contohnya,--only dataconnect.
Mengosongkan database di antara pengujian
Untuk mereset lingkungan pengujian di antara pengujian, Firebase merekomendasikan:
- Menulis mutasi khusus untuk menangani hal berikut:
- Dalam penyiapan, isi instance database lokal dengan data awal.
- Dalam penghapusan, hapus data yang diubah dari instance database pasca-pengujian.
Perbedaan emulator SQL Connect dengan produksi
Emulator SQL Connect menyimulasikan banyak fitur produk sisi server. Namun, ada beberapa pengecualian yang perlu diperhatikan:
- Versi dan konfigurasi mendetail PGLite mungkin berbeda dengan versi instance Cloud SQL produksi Anda.
- Jika Anda menggunakan emulator untuk mengembangkan dengan SQL Connect's
integrasi pgvector dan Vertex API, panggilan ke Cloud Vertex API akan dilakukan
secara langsung, bukan melalui integrasi Vertex Cloud SQL. Namun, panggilan ke API produksi masih dilakukan, yang berarti Anda harus menggunakan project Firebase yang sebenarnya, tidak dapat menggunakan project
demo-, dan biaya Vertex API akan dikenakan.