2016-07-30 39 views
7

我和我的團隊非常熱衷於將Google Pub/Sub包含在我們的應用程序中,因爲它可以解決一些耦合問題。 我們遇到的問題是如何結合java appengine dev服務器進行本地集成測試。本地GAE java dev服務器的Google Pub/Sub測試策略

什麼我迄今所做的:

  1. 啓動子酒吧仿真器和設置PUBSUB_EMULATOR_HOST 環境變量
  2. 開始我們在創建主題和訂閱了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" 
} 
+0

我已向Google提交了一個錯誤報告:https://code.google.com/p/cloud-pubsub/issues/detail?id = 39 –

回答