Hyperledger Caliper
https://github.com/hyperledger/caliper
https://github.com/cao0507/Hyperledger-caliper
Caliper 是一個區塊鏈性能基準測試框架,它允許用戶使用預定義的用例測試不同的區塊鏈解決方案,並獲得一組性能測試結果。
目前支持的性能指標:
- 成功率
- 事務吞吐量
- 事務延遲(最小值、最大值、平均值、百分比)
- 資源消耗(CPU、內存、網絡 IO 等)
架構
適配層
使用適配層將現有的區塊鏈系統集成到 Caliper 框架中。每個適配器通過使用相應的區塊鏈的原生 SDK 或 RESTful API 來實現區塊鏈的 Caliper NBI。
接口和核心層
接口和核心層實現核心功能,併爲上行應用程序(up-applications)提供了北向接口,共四種 NBI:
- 區塊鏈操作接口:包含在後端區塊鏈上部署智能合約、調用合約、從分類賬查詢狀態等操作。
- 資源監控器:包含啓動、停止監控器和獲取後端區塊鏈系統的資源消耗狀態的操作,包括 CPU、內存、網絡 IO 等。目前提供了兩種監控器,一種是監控本地和遠程 docker 容器,另一種是監控本地進程。
- 性能分析器:包含讀取預定義性能統計數據(包括 TPS、延遲、成功率等)和打印基準測試結果的操作。在調用區塊鏈 NBI 時記錄關鍵指標,例如事務的創建時間和提交時間、事務結果等。
- 報告生成器:包含用於生成 HTML 格式測試報告的操作。
應用層
應用層包含針對典型區塊鏈場景實現的測試。每個測試都有一個配置文件,用於定義後端區塊鏈網絡和測試參數。
內置了一個默認基準測試引擎,用來幫助開發人員理解框架,並快速實現自己的測試。開發人員可以在沒有框架的情況下直接使用 NBI 來實現他們的測試。
基準測試引擎:
Master:
Master 實現了一個包含三個階段的默認測試流:
- 準備階段:在此階段,Master 使用區塊鏈配置文件創建並初始化內部區塊鏈對象,按照配置中指定的方式部署智能合約,並啓動監控器對象來監控後端區塊鏈系統的資源消耗。
- 測試階段: Master 根據基準測試配置文件啓動一個循環測試、來執行測試。任務將根據定義的工作負載生成並分配給 Client。將存儲客戶的性能統計返回,以供以後分析。
- 報告階段:分析每一輪測試的所有客戶端統計數據,並自動生成 HTML 格式報告。
Client:
Local Client:
在這種模式下,Master 使用 Node.js 集羣模塊分叉多個 Local Client 來進行實際的測試工作。
Zookeeper Client:
在這種模式下,多個 Zookeeper Client 獨立啓動。Zookeeper 客戶端將在啓動後註冊並監控測試任務。測試之後,將創建一個包含性能統計結果的 znode。
Caliper 示例報表格式:
配置文件:
使用兩種配置文件。一個是基準測試配置文件,它定義了類似工作負載的基準測試。
另一個是區塊鏈配置文件,它指定了有助與 SUT 交互的必要信息。