Google Pub/Sub 本地 GAE 测试策略 java 开发服务器
Google Pub/Sub test strategy for local GAE java dev server
我和我的团队非常希望在我们的应用程序中包含 Google Pub/Sub,因为它将解决一些耦合问题。
我们遇到的问题是如何结合 java appengine 开发服务器进行本地集成测试。
到目前为止我做了什么:
- 启动 pub sub 模拟器并设置 PUBSUB_EMULATOR_HOST
环境变量
- 在 java 开发服务器中启动我们的应用程序
它创建主题和订阅,然后发送一些消息
进入主题。
我假设我做错了什么因为:
- 在云中创建的主题和订阅(当然他们应该在 pubsub 模拟器中创建?)
- 消息被推送并且我们收到消息 ID,但没有到达端点或在云或模拟器中报告错误。
据此我很确定开发服务器没有选择模拟器。
关于我们的测试策略,我还有一些更深层次的问题。在这个越来越多的服务绑定到云的时代,本地集成测试真的可行吗?我们是否应该更多地关注针对云实例本身的集成测试套件 运行?如果是这样,如何确保开发人员在部署到云测试环境之前对他们的代码有信心,这不会显着增加反馈循环吗?
更新
使用 Google Java API 客户端 PubSub 生成器 class 我能够从本地配置中注入 url (localhost:8010)现在可以让我成功发布到本地模拟器。
Pubsub client = new Pubsub.Builder(httpTransport, jsonFactory, initializer)
.setApplicationName(getProjectId())
.setRootUrl(rootUrl).build();
我强制使用端口来简化我团队其他成员的设置,而不必依赖于动态变化的端口。
gcloud beta emulators pubsub start --host-port localhost:8010
现在在模拟器上成功创建了主题、订阅和消息。不幸的是,我仍然没有将消息推送到已注册的端点。
更新 2
gcloud 版本 120.0.0 似乎有所改善,但我现在收到以下错误:
{
"code" : 400,
"message" : "Payload isn't valid for request.",
"status" : "INVALID_ARGUMENT"
}
本地 pubsub 服务器的 gcloud 实用程序的最新更新是否已修复。这个问题解决了它:https://code.google.com/p/cloud-pubsub/issues/detail?id=41
我和我的团队非常希望在我们的应用程序中包含 Google Pub/Sub,因为它将解决一些耦合问题。 我们遇到的问题是如何结合 java appengine 开发服务器进行本地集成测试。
到目前为止我做了什么:
- 启动 pub sub 模拟器并设置 PUBSUB_EMULATOR_HOST 环境变量
- 在 java 开发服务器中启动我们的应用程序 它创建主题和订阅,然后发送一些消息 进入主题。
我假设我做错了什么因为:
- 在云中创建的主题和订阅(当然他们应该在 pubsub 模拟器中创建?)
- 消息被推送并且我们收到消息 ID,但没有到达端点或在云或模拟器中报告错误。
据此我很确定开发服务器没有选择模拟器。
关于我们的测试策略,我还有一些更深层次的问题。在这个越来越多的服务绑定到云的时代,本地集成测试真的可行吗?我们是否应该更多地关注针对云实例本身的集成测试套件 运行?如果是这样,如何确保开发人员在部署到云测试环境之前对他们的代码有信心,这不会显着增加反馈循环吗?
更新
使用 Google Java API 客户端 PubSub 生成器 class 我能够从本地配置中注入 url (localhost:8010)现在可以让我成功发布到本地模拟器。
Pubsub client = new Pubsub.Builder(httpTransport, jsonFactory, initializer)
.setApplicationName(getProjectId())
.setRootUrl(rootUrl).build();
我强制使用端口来简化我团队其他成员的设置,而不必依赖于动态变化的端口。
gcloud beta emulators pubsub start --host-port localhost:8010
现在在模拟器上成功创建了主题、订阅和消息。不幸的是,我仍然没有将消息推送到已注册的端点。
更新 2
gcloud 版本 120.0.0 似乎有所改善,但我现在收到以下错误:
{
"code" : 400,
"message" : "Payload isn't valid for request.",
"status" : "INVALID_ARGUMENT"
}
本地 pubsub 服务器的 gcloud 实用程序的最新更新是否已修复。这个问题解决了它:https://code.google.com/p/cloud-pubsub/issues/detail?id=41