2016-04-15 72 views
0

我目前在CI流程中使用Jenkins觸發對nodejs服務器後端的摩卡測試。摩卡結束測試在完成所有測試之前運行

對於一些reisong xunit測試記者不與詹金斯合作。 test-resul.xml文件顯示爲空,並且作業保持失敗。我們可以得到它的運行工作:

npm install mocha-jenkins-reporter 

權利之前如下所示的測試的觸發:

JUNIT_REPORT_PATH=test_report.xml JUNIT_REPORT_STACK=1 NODE_ENV=test node ./node_modules/.bin/mocha --globals * --reporter mocha-jenkins-reporter --no-colors 

現在我得到的部分結果,由於某種原因,不是所有的測試運行。他們停止在測試套件中間,沒有任何通知或錯誤信息。我還注意到,生成的xml缺少關閉標籤的根元素。我通過運行周圍的工作:

echo '</testsuites>' >> test-result.xml 

除此之外,我已經注意到在測試執行期間的內存消耗峯值。 這是故宮安裝輸出,這一步是這項工作的第一步:

+ npm -v 
3.8.6 
+ npm install 
npm WARN deprecated [email protected]: security/injection issue with limit/offset fixed in 3.17.0 
npm WARN deprecated [email protected]: Grunt needs your help! See https://github.com/gruntjs/grunt/issues/1403. 
npm WARN deprecated [email protected]: graceful-fs version 3 and before will fail on newer node releases. Please update to [email protected]^4.0.0 as soon as possible. 
npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade 
npm WARN deprecated [email protected]: graceful-fs version 3 and before will fail on newer node releases. Please update to [email protected]^4.0.0 as soon as possible. 

> [email protected] install /home/jenkins/workspace/Rufus_Test_DEV/node_modules/ws 
> (node-gyp rebuild 2> builderror.log) || (exit 0) 


> [email protected] postinstall /home/jenkins/workspace/Rufus_Test_DEV 
> echo 'To generate a new actionhero project, run "node ./node_modules/.bin/actionhero generate"' 

To generate a new actionhero project, run "node ./node_modules/.bin/actionhero generate" 
[email protected] /home/jenkins/workspace/Rufus_Test_DEV 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | `-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| | `-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | `-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | `-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | `-- [email protected] 
| | | +-- [email protected] 
| | | | `-- [email protected] 
| | | +-- [email protected] 
| | | | +-- [email protected] 
| | | | `-- [email protected] 
| | | | `-- [email protected] 
| | | |  `-- [email protected] 
| | | `-- [email protected] 
| | `-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| |  `-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected].6.2 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | `-- [email protected] 
| | | `-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
+-- [email protected] invalid 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | +-- [email protected] 
| | | +-- [email protected] 
| | | | `-- [email protected] 
| | | +-- [email protected] 
| | | `-- [email protected] 
| | +-- [email protected] 
| | | `-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | +-- [email protected] 
| | | | `-- [email protected] 
| | | `-- [email protected] 
| | `-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | +-- [email protected] 
| | | `-- [email protected] 
| | `-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | | `-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | +-- [email protected] 
| | | | `-- [email protected] 
| | | `-- [email protected] 
| | `-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
| +-- [email protected] 
| | +-- [email protected] 
| | | `-- [email protected] 
| | | `-- [email protected] 
| | `-- [email protected] 
| `-- [email protected] 
`-- [email protected] 
    +-- [email protected] 
    `-- [email protected] 

npm WARN [email protected] No license field. 

回答

1

這很可能是內存尖峯是一個冒煙的槍 - 你要麼超出資源配額,被殺,或只是崩潰。這似乎可以通過創建的部分文件得到證實 - 文件在這樣的片段中間逐字地結束是一個強烈的崩潰或強制殺手指示。

我使用ActionHero自己,它使用很少的內存。 Sequelize是它的大部分使用,即使這樣,我也很少在生產API節點上使用超過180MB的RAM。你沒有具體說明你的「內存峯值」有多大,但是我會從一些調查開始,確切知道你的進程使用了​​多少以及如何分配。有很多工具可用於此,但我會建議使用StrongLoop,PM2,NewRelic或Ruxit之類的東西,因爲它可以幫助您快速找到它。所有這些工具都有免費或試用選項。

除此之外,您還可以通過單獨運行測試來進行一些調查。當您撥打mocha時,您可以通過一個測試套件來執行

最後,如果您使用Bash作爲您的shell,請嘗試刪除--globals *作爲測試。在執行Mocha之前,Bash可能會擴展它,將其替換爲當前工作目錄中的文件列表。如果事實證明丟棄任何東西,可以將其放在引號中或創建一個mocha.opts文件。以下是我的例子:

--recursive 
--reporter spec 
--timeout 15000 
--ignore-leaks 
--slow 3000 
--globals api,assert 
--require test/bootstrap 
test 

請注意,命令行參數可以覆蓋opts文件設置。這就是爲什麼我在這裏有--reporter spec - 這減少了我在我的本地開發環境中手動運行mocha的輸入(我可以只運行mocha而沒有參數)。您仍然可以將記者設置爲CI堆棧中您想要的記者。

+0

事實上,它絕對看起來像一個資源分配問題。感謝分析工具上的提示,我現在正在測試它們,然後返回我發現的內容,如果這是根本原因,請接受您的答案。感謝真棒和快速的答案。 –

+0

嘿乍得,另一件事,我在一個Docker容器上運行它,你知道是否可以運行npm install每個構建?這是推薦的設置,還是應該將這些依賴關係提交給初始泊塢窗圖像。 –

+1

如果您在Docker容器中,可能是在管理層中遇到了硬性內存限制。像Kube,Mesos,ECS,Rancher等大多數Docker經理都有這些。嘗試增加它。是的,可以運行每一個版本,但通常你想運行'npm update'。這將安裝任何缺少的軟件包並處理任何所需的更新。 'npm install'只進行安裝。 –