ブロックチェーン性能テストツールcaliper


Caliperは、異なるブロックチェーン実装をテストするために使用できるブロックチェーン性能テストフレームワークです.サポート
fabric v1.0+sawtooth 1.0+Iroha 1.0試験内容指標は以下のとおりである.
取引成功率取引スループットTPS取引遅延資源消費を感じてまずNodeJS 8をインストールする準備をする.X、node-gyp、Docker、Docker-compose.
git clone https://github.com/hyperledger/caliper.gitcdcalipernpm install実装ブロックチェーンSDK(fabricを例に)

caliperプロジェクトディレクトリの下


npm install [email protected] fabric-clientランニングテストパフォーマンステストの例benchmarkディレクトリでは、次のように使用されます.
node benchmark/simple/main.js -c yourconfig.json -n yournetwork.json-cはブロックチェーンのプロファイルを指定するために使用する、指定しないとデフォルトはconfig.json;-nブロックチェーンネットワークプロファイルを指定するために使用され、指定しない場合は-cで指定されたプロファイルによって定義される.smallbankの例を走ります
node benchmark/smallbank/main.jsが生成したレポート長は次のようになります(部分):
ブロックチェーン性能テストツールcaliper
アーキテクチャはこの標準フレームワークの核心であり、情報を訳すことができる「適合層」であり、Caliperがスマート契約をインストールしたり、契約をトリガーしたり、様々な分布式帳簿の状態を照会したりすることができ、その有効性をよりよく測定することができる.
ブロックチェーン性能テストツールcaliper
アダプティブ層Adaptation Layerアダプティブ層は、既存のブロックチェーンシステムをCaliperフレームワークと統合するために使用される.アダプタは対応するチェーンSDKとAPIを用いてCaliper Blockchain NBIsを実現した.
インタフェース&コア層ブロックチェーン操作インタフェース:配置契約、呼び出し契約、帳簿状態の照会などの操作を含む.リソースモニタリング:dockerコンテナ、ローカルプロセスをモニタリングし、CPU、メモリ、ネットワークIOなどの状態を含む.パフォーマンス分析:定義済みのパフォーマンスデータ(TPS、遅延、成功率など)を読み込み、レポートを印刷します.これらのデータは、NBIが呼び出されたときに記録される(例えば、作成時間、取引提出時間、取引結果など).HTMLレポートを生成します.レイヤアプリケーションレイヤを適用して、ブロックチェーンテストシーンを実行します.各テストシーンは、最下位のブロックチェーンネットワークの構成とテストパラメータを含むプロファイルによって定義されます.プロジェクトにはデフォルトのブロックチェーンエンジンが内蔵されており、もちろん開発者もNBIに基づいて自分のブロックチェーンエンジンを定義することができます.ブロックチェーンエンジンブロックチェーン性能テストツールcaliper
プロファイルはbenchmark/simple/configである.jsonを例に挙げます.
{"blockchain": {"type": "fabric","config": "benchmark/simple/fabric.json"},"command": {"start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d","end": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)"},"test": {"name": "simple","description": "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions","clients": {"type": "local","number": 5},"rounds": [{"label": "open","txNumber": [1000, 1000, 1000],"rateControl": [{"type": "fixed-rate", "opts": {"tps": 50}}, {"type": "fixed-rate", "opts": {"tps": 100}}, {"type": "fixed-rate", "opts": {"tps": 150}}],"arguments": { "money": 10000 },"callback": "benchmark/simple/open.js"},{"label": "query","txNumber": [5000, 5000],"rateControl": [{"type": "fixed-rate", "opts": {"tps": 100}}, {"type": "fixed-rate", "opts": {"tps": 200}}],"callback": "benchmark/simple/query.js"}]},"monitor": {"type": ["docker", "process"],"docker":{"name": ["all"]},"process": [{"command": "node","arguments": "local-client.js","multiOutput": "avg"}],「interval」:1}}blockchainは被試験ブロックチェーンタイプを定義し、具体的な構成ファイルを与える.commandはテストの開始と終了時のコマンドを定義します.testはテストに関する情報を定義した.monitorは、リソースオブジェクトをどのように監視するかを定義します.Mastermasterが実装するテストフローには、次の3つのフェーズがあります.
準備フェーズ:ブロックチェーンを作成して初期化し、スマート契約を導入し、監視を開始します.テストフェーズ:ループテストを開始し、テストタスクはclientに実行され、clientはパフォーマンステストデータを返します.レポートフェーズ:テストデータを分析し、HTML形式のレポートを生成します.OrderClientLocal client
なぜならjsは生まれつき単一スレッドなのでfork複数のlocal clientサブプロセスでマルチコアを十分に利用し、テスト効率を高めます.各サブプロセスは、ブロックチェーンクライアントを実行します.
Zookeeper client
複数のzoookeeper clientは独立して起動され、起動後に自分を登録してテストタスクを待機し、テスト後に結果データを含むznodeが作成されます.forkマルチサブプロセス(local client)でもあります.
ユーザーがカスタマイズしたテストモジュールでは、トランザクションの生成とコミットを定義するfunction(戻り値はpromise):
init:各テストの前にclientに呼び出されます.run:取引の実行方法を定義します.Clientはworkload定義に基づいてループ呼び出します.end:各ラウンドのテスト後に呼び出され、通常はクリーンアップ作業を定義します.ソースコードは上のアーキテクチャ図に基づいていますが、今回は上から下へしごきます.
まずはBenchmark Layer
テストコマンドから、smallbankを例に挙げます.
node benchmark/smallbank/main.jsテストの例はbenchmark/ディレクトリの下にあります.テスト担当者が作成し、-cで指定したプロファイルのtestに構成します.rounds[.callback]にあります.
メールでjsでは主に2つのプロファイルをロードし、src/comm/bench-flowを呼び出す.jsのrunメソッドは、2つのプロファイルを転送します.
const framework = require('../../src/comm/bench-flow.js');
framework.run(absConfigFile, absNetworkFile);

bench-flow.jsはテストエンジンと考えられ,run法は完全なテストプロセスを定義した.
下はインタフェースとコアレイヤ
インタフェースは、src/comm/blockchain-interfaceに位置するBlockchain NBIsである.jsのBlockchainInterfaceは、ブロックチェーンの基本的な動作を定義します.
ブロックチェーン性能テストツールcaliper
テストレポートを生成するためには、まず監視が必要であり、主にDockerとProcessの監視に重点を置く、コードファイルにはmonitor-interfaceが含まれる.jsとmonitor-docker.js、monitor-process.js.名前からインタフェースと2つの具体的な実装がわかります.インタフェースの定義を見てみましょう.
ブロックチェーン性能テストツールcaliper
起動と停止のほか、主にCPU、メモリ、ネットワークの監視に重点を置いています.
データ統計とレポート生成機能はsrc/comm/reportにある.js.
ブロックチェーン性能テストツールcaliper
アダプタ層
caliperはFabric、Sawtoothなどのテストをサポートし、アーキテクチャ図を見てイーサー坊をサポートしたいと思っていますが、まだありません.
具体的な適合コードは、src/fabric、src/sawtooth、src/irohaなどのディレクトリの下にある、例えばfabric.jsのFabricクラスはBlockchainInterfaceから継承され、スマート契約の初期化、インストール/実行などの機能を実現しています.
ブロックチェーン性能テストツールcaliper
これらの機能の内部にはfabric-clientが呼び出されるので、テスト前にインストールする必要があります.
npm install [email protected] fabric-ca-client fabric-client
転載先:https://blog.51cto.com/liukang/2143275