1. 程式人生 > >Hyperledger Fabric 1.0 從零開始(五)——執行測試e2e

Hyperledger Fabric 1.0 從零開始(五)——執行測試e2e

3:執行測試e2e

3.1、執行fabric-samples的問題說明

該問題說明能夠解決6.1平臺特定使用的二進位制檔案配置第一步的問題。可以選擇繼續閱讀該說明,或者等參考到6.1小節時再反向閱讀本說明,具體在6.1中會重新指向本步驟。

一般情況下,我們會參照官網來完成第一個網路測試,在該線上文件中會讓我們去下載一個fabric-samples,下載地址在github上,我們需要將其下載至本地是一個fabric-samples-release資料夾,將其更名為fabric-samples隨後上傳至opt/gopath/src目錄下。

按照官網提示執行的命令是無法執行起first-network這個專案,該demo需要先下載 Platform-specific Binaries(特定的二進位制檔案),按照

官方文件中的描述,需要先執行如下命令:

curl -sSL https://goo.gl/iX9dek | bash

上述命令會下載自動化部署指令碼,同時也會下載平臺特定使用的二進位制檔案才cryptogen、configtxgen、configtxlator以及peer,把他們放到上述倉庫的bin目錄下。

通常執行上述命令並不能下載,即便是能下載,速度也奇慢無比,故此,我們離線下載相關二進位制檔案來執行上述操作。

可以在http://download.csdn.net/download/jiayiyangzhu/10245492執行下載1.0版本的,在https://download.csdn.net/download/jiayiyangzhu/10330267執行下載1.1版本的,積分預設最低2…

在官網給出的執行命令中並沒有給出離線下載地址,且官網也沒有離線部署說明,我們可以在1.4.2中下載的fabric原始碼中找到下載地址,在/opt/gopath/src/github.com/hyperledger/fabric/scripts目錄下有一個bootstrap-1.0.0.sh指令碼檔案,事實上如果外網訪問條件優越的情況下,直接執行該指令碼即可下載所有所需的fabric映象檔案及官方指定所需的二進位制檔案。

開啟bootstrap-1.0.0.sh(目前最新版為1.0.0,以實際為準),找到其中對“Downloading platform binaries”的輸出行,目前所見是“echo "===> Downloading platform binaries"”,檢視其指向的下載地址,可以得到一個官網提供的

離線下載網址,根據上下文意思及當前我們所使用的版本資訊,可以得到最終的離線下載檔案地址,下載該檔案到本地。

根據官網的介紹,解壓後會得到一個bin資料夾,將其解壓至/opt/gopath/src/github.com/hyperledger/fabric-samples目錄下即可執行first-network等專案。

3.2、執行e2e_cli專案

進入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目錄下,檔案結構如下圖所示:

network_setup.sh是一件測試指令碼,該指令碼啟動5docker容器,其中4個容器執行peer節點和1個容器執行orderer節點,它組成一個Fabric叢集。另外還有一個cli容器用於執行建立channel、加入channel、安裝和執行chaincode等操作。測試用的chaincode定義了兩個變數,在例項化的時候會給這兩個變數賦予了初始值,並通過invoke操作可以使兩個變數的值發生變化。

通過以下命令執行測試:

bash network_setup.sh up

接下來會有許多的除錯資訊,具體可參考e2e_cli目錄下的script/script.sh檔案,當終端出現以下資訊時,說明測試通過,所有部件正常工作:

這個命令可以在本機啟動4+1的Fabric網路並且進行測試,跑Example02這個ChainCode。我們可以看到每一步的操作,最後確認單機沒有問題。確認我們的映象和指令碼都是正常的,我們就可以關閉Fabric網路,繼續我們的多機Fabric網路設定工作。關閉Fabric命令:

bash network_setup.sh down

3.3e2e_cliLinux核心bug

Fabric網路叢集測試環境在Linux核心低版本上可能會出現問題,這是舊版核心的bug,比如在執行bash network_setup.sh up的時候會出現如下錯誤:

即執行chaincode初始化的時候報錯,導致叢集單機無法啟動。

解決方案,使用最新版穩定版的docker(筆者寫文件時的最新穩定版為:17.06.0-ce),將Linux核心升級到最新版,筆者原先使用的Linux核心是3.10,出現了上述問題,目前筆者使用的核心版本是4.12.5-1.e17,能夠完美執行Fabric叢集環境。