使用模拟器进行测试

Google Cloud CLI 为 Bigtable 提供了一个本地内存模拟器,您可以使用该模拟器来测试您的应用。由于模拟器仅将数据存储在内存中,因此数据在各次运行之间不会保留。它旨在帮助您在本地开发和测试中使用 Bigtable,而不是用于生产部署。

您可以将该模拟器与所有 Cloud Bigtable 客户端库搭配使用。

该模拟器不提供用于创建或管理实例和集群的管理 API。模拟器启动后,您可以使用任何项目和实例名称连接到该模拟器,以便创建表并读取或写入数据。 模拟器不支持安全连接。

安装并运行模拟器

运行模拟器的最常用方法是使用 gcloud CLIDocker。选择适合您的应用开发和测试工作流的方式。

设置身份验证

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.

gcloud CLI

  1. 更新您的 gcloud CLI 安装以获取最新功能:

    gcloud components update beta
    
  2. 运行以下命令启动模拟器:

    gcloud beta emulators bigtable start
    

    如果尚未安装模拟器,系统会提示您下载并安装模拟器的二进制文件。

    该模拟器将输出其运行所在的主机和端口号。

    默认情况下,该模拟器会选择 localhost:8086。如需将模拟器绑定到特定主机和端口,请使用可选的 --host-port 标志,并替换 HOSTPORT

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

    下面给出了一个示例:

    gcloud beta emulators bigtable start --host-port=localhost:8086
    
  3. 按 Control-C 停止模拟器。

Docker

  1. 确保您的系统上安装了 Docker,并且可通过系统路径访问。

  2. 启动模拟器:

    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
    

    此命令运行模拟器,将容器中的端口映射到本地主机上的相同端口。

您还可以将模拟器用作现有 Docker Compose 配置 (.yaml) 文件的一部分。如需详细了解 Docker Compose,请参阅 Docker Compose 概览

将客户端库与模拟器搭配使用

设置 BIGTABLE_EMULATOR_HOST 环境变量,以在模拟器中使用客户端库:

Linux/macOS

  export BIGTABLE_EMULATOR_HOST=localhost:8086

Windows

  set BIGTABLE_EMULATOR_HOST=localhost:8086

应用启动时,客户端库会自动检查 BIGTABLE_EMULATOR_HOST 并连接到模拟器(如果其正在运行)。

设置 BIGTABLE_EMULATOR_HOST 后,您可以按照 hello world 示例中的说明测试模拟器。

要停止模拟器,请按 Ctrl+C,然后使用以下命令取消设置 BIGTABLE_EMULATOR_HOST

    unset BIGTABLE_EMULATOR_HOST

适用于模拟器的 Java 封装容器

Java 封装容器捆绑了内置的 Bigtable 模拟器,并提供用于编写测试的 Java 接口。

如需详细了解如何使用 Java 封装容器,请参阅 GitHub 代码库

以下文档详细介绍了模拟器 Java 软件包:

过滤条件

模拟器支持所有过滤器,但 Sink 限制过滤器除外。

google-cloud-go GitHub 代码库会跟踪与 Bigtable 模拟器有关的问题。您可以在该代码库中提交错误报告和功能请求,或对现有问题发表评论。