我和我的團隊非常熱衷於將Google Pub/Sub包含在我們的應用程序中,因爲它可以解決一些耦合問題。 我們遇到的問題是如何結合java appengine dev服務器進行本地集成測試。本地GAE java dev服務器的Google Pub/Sub測試策略
什麼我迄今所做的:
- 啓動子酒吧仿真器和設置PUBSUB_EMULATOR_HOST 環境變量
- 開始我們在創建主題和訂閱了Java開發服務器 應用程序,然後發送一些消息 的主題。
我假設我做錯了什麼,因爲:
- 作爲雲(?當然,他們應該在PubSub的模擬器已經創建)
- 消息是創建主題和訂閱我們接收到消息ID,但沒有達到終點,或者在雲或模擬器中報告錯誤。
從這我很確信模擬器不被開發服務器拿起。
我對測試策略也有一些深層次的問題。當今的集成測試在當今時代是否真的可行,越來越多的服務將與雲相關聯。我們是否應該更專注於針對雲實例本身運行的集成測試套件?如果是的話,如何確保開發人員在部署到雲測試環境之前對其代碼有信心,並且這不會顯着增加反饋循環?
UPDATE
使用谷歌的Java API客戶端PubSub的器類,我能夠注入網址:從本地配置現在讓我成功地發佈到本地模擬器(本地主機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"
}
我已向Google提交了一個錯誤報告:https://code.google.com/p/cloud-pubsub/issues/detail?id = 39 –