Testare utilizzando l'emulatore

Google Cloud CLI fornisce un emulatore locale in memoria per Bigtable, che puoi utilizzare per testare la tua applicazione. Poiché l'emulatore archivia i dati solo in memoria, non li conserva tra le esecuzioni. È pensato per aiutarti a utilizzare Bigtable per lo sviluppo e i test locali, non per i deployment di produzione.

Puoi utilizzare l'emulatore con tutte le librerie client di Cloud Bigtable.

L'emulatore non fornisce API amministrative per creare o gestire istanze e cluster. Dopo l'avvio dell'emulatore, puoi connetterti utilizzando qualsiasi nome di progetto e istanza per creare tabelle e leggere o scrivere dati. L'emulatore non supporta una connessione sicura.

Installa ed esegui l'emulatore

I due modi più comuni per eseguire l'emulatore sono l'utilizzo dell'interfaccia a riga di comando gcloud e di Docker. Scegli il metodo più appropriato per lo sviluppo e il flusso di lavoro di test della tua applicazione.

Configura l'autenticazione

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

Interfaccia a riga di comando gcloud

  1. Aggiorna l'installazione di gcloud CLI per ottenere le funzionalità più recenti:

    gcloud components update beta
    
  2. Esegui questo comando per avviare l'emulatore:

    gcloud beta emulators bigtable start
    

    Se l'emulatore non è già installato, ti verrà chiesto di scaricare e installare il file binario per l'emulatore.

    L'emulatore stampa l'host e il numero di porta in cui è in esecuzione.

    Per impostazione predefinita, l'emulatore sceglie localhost:8086. Per associare l'emulatore a un host e una porta specifici, utilizza il flag facoltativo --host-port, sostituendo HOST e PORT:

    gcloud beta emulators bigtable start --host-port=HOST:PORT
    

    Di seguito è riportato un esempio:

    gcloud beta emulators bigtable start --host-port=localhost:8086
    
  3. Digita Ctrl+C per arrestare l'emulatore.

Docker

  1. Assicurati che Docker sia installato sul tuo sistema e disponibile nel percorso di sistema.

  2. Avvia l'emulatore:

    docker run -p 127.0.0.1:8086:8086 --rm -ti google/cloud-sdk gcloud beta emulators bigtable start --host-port=0.0.0.0:8086
    

    Questo comando esegue l'emulatore e mappa le porte nel container alle stesse porte sull'host locale.

Puoi anche utilizzare l'emulatore come parte del file di configurazione Docker Compose (.yaml) esistente. Per saperne di più su Docker Compose, consulta la panoramica di Docker Compose.

Utilizzare le librerie client con l'emulatore

Imposta la variabile di ambiente BIGTABLE_EMULATOR_HOST per utilizzare le librerie client con l'emulatore:

Linux / macOS

  export BIGTABLE_EMULATOR_HOST=localhost:8086

Windows

  set BIGTABLE_EMULATOR_HOST=localhost:8086

Quando l'applicazione viene avviata, la libreria client verifica automaticamente la presenza di BIGTABLE_EMULATOR_HOST e si connette all'emulatore se è in esecuzione.

Una volta impostato BIGTABLE_EMULATOR_HOST, puoi testare l'emulatore seguendo gli esempi di Hello World.

Per arrestare l'emulatore, digita Control-C, quindi annulla l'impostazione di BIGTABLE_EMULATOR_HOST con il seguente comando:

    unset BIGTABLE_EMULATOR_HOST

Wrapper Java per l'emulatore

Il wrapper Java raggruppa l'emulatore Bigtable integrato e fornisce un'interfaccia Java per scrivere test.

Per maggiori informazioni sull'utilizzo del wrapper Java, consulta il repository GitHub.

La seguente documentazione fornisce ulteriori informazioni sui pacchetti Java dell'emulatore:

Filtri

L'emulatore supporta tutti i filtri, ad eccezione del filtro di limitazione Sink.

I problemi relativi all'emulatore Bigtable vengono monitorati nel repository GitHub google-cloud-go, dove puoi segnalare bug e richieste di funzionalità o commentare i problemi esistenti.