Visual Studio Codeを使用したチェーンコードのテスト

チェーンコードがネットワーク上で実行されている場合は、生成されたメソッドをテストできます。また、チェーンコードの開発中にexecuteQueryメソッドの作成を選択した場合、チェーンコードがOracle Blockchain Platformネットワークにデプロイされていれば、SQLリッチ問合せを実行できます。

ローカルHyperledger Fabricネットワークでのチェーンコードのテスト

チェーンコード・プロジェクトがローカル・ネットワークで実行されたら、それをテストできます。

ブロックチェーン・アプリケーション・ビルダーには、チェーンコードの呼出しまたは問合せを支援する組込みウィザードが含まれています。

  1. チェーンコード・ペインでチェーンコード・プロジェクトを選択します。チェーンコード詳細ペインで、「実行」を選択します。チェーンコード名はすでに選択されています。ターゲット環境がローカル環境に設定され、チャネルが使用可能な唯一のチャネルにデフォルト設定されていることを確認します。
  2. 「関数」フィールドで、ドロップダウン・リストからメソッドを選択します。チェーンコードで使用可能なすべてのメソッドがリストされます。
  3. 「関数パラメータ」フィールドで、「その他のアクション(…)」ボタンを選択します。これにより、選択したメソッドに使用可能なプロパティを含むウィンドウが起動します。プロパティを入力し、メソッドの起動時に送信しない必須でないプロパティに対して省略をクリックし、「保存」をクリックします。
  4. 「呼出し」をクリックします。

「出力」コンソール・ウィンドウに、関数が呼び出されたことが表示されます。または、チェーンコード・アクション・ペインの関数の出力ウィンドウに出力が表示されます。「その他のアクション(…)」ボタンをクリックして、この出力を書式設定して表示します。

実行したばかりのメソッドとパラメータを保存する場合は、「保存」をクリックして名前と説明を入力します。チェーンコード・プロジェクトのQueriesフォルダに保存されます。再度使用するには、右クリックして「開く」を選択します。

コントローラ・ファイルを変更してメソッドを変更する場合は、チェーンコードの実行ペインの上部にある「リロード」アイコンを選択します。これで、変更が「関数」ドロップダウン・リストに反映されます。

ノート:

テストにウィザードを使用しない場合は、Visual Studio Codeのターミナル・ウィンドウでブロックチェーン・アプリケーション・ビルダーのコマンドライン・ツールを実行することもできます。「ローカルHyperledger Fabricネットワークでのチェーンコードのテスト」で説明する手順に従い、コマンドラインを使用してテストします。

更新後の自動インストールおよびインスタンス化

チェーンコードを更新して保存するたびに、変更は自動的にコンパイル、インストールおよびインスタンス化されます。ローカル・ネットワークを削除したり、再度起動したりする必要はありません。すべてのプロジェクトは、変更のたびに自動的にコンパイルおよびデプロイされます。

リモートOracle Blockchain Platformネットワークでのライフサイクル操作のテスト

チェーンコード・プロジェクトがリモートOracle Blockchain Platformネットワークに正常にデプロイされたら、「ローカルHyperledger Fabricネットワークでのチェーンコードのテスト」の説明に従ってテストできます。

同じ呼出しおよび問合せコマンドを使用して、リモートのOracle Blockchain Platform CloudまたはEnterprise Editionネットワークですべてのメソッド・トランザクションを実行できます。ローカル・ネットワークでサポートされているすべてのトランザクションもリモート・ネットワークでサポートされています。テストの実行時に、ターゲット環境としてOracle Blockchain Platformインスタンスを選択するだけです。

Berkeley DB SQLリッチ問合せの実行

チェーンコードの開発中にexecuteQueryメソッドの作成を選択した場合、チェーンコードがOracle Blockchain Platformネットワークにデプロイされていれば、SQLリッチ問合せを実行できます。

仕様ファイルのcustomMethodsセクションでexecuteQueryを使用した場合は、対応するexecuteQueryメソッドがコントローラに作成されます。

仕様ファイル:
customMethods:
    - executeQuery
    - "fetchRawMaterial(supplierid: string, rawMaterialSupply: number)"
    - "getRawMaterialFromSupplier(manufacturerId: string, supplierld: string, rawMaterialSupply: number)"
    - "createProducts(manufacturerId: string, rawMaterialConsumed: number, productsCreated: number)"
    - "sendProductsToDistribution()"
コントローラ・ファイル:
**
*
* BDB sql rich queries can be executed in OBP CS/EE.
* This method can be invoked only when connected to remote OBP CS/EE network.
*
*/
@Validator(yup.string())
public async executeQuery(query: string) {
    const result = await OchainController.query(query); 
    return result;
}

このメソッドを呼び出して、Oracle Blockchain Platformネットワーク上でBerkeley DB SQLリッチ問合せを実行し、問合せの実行時にターゲット環境として作成したOracle Blockchain Platform環境を選択します。

例:
  1. チェーンコード詳細ペインで、「実行」を選択します。チェーンコード名、ターゲット環境およびチャネルはデプロイメント・ステップから事前に入力されている必要があります。
  2. 「関数名」フィールドで、ドロップダウン・リストからexecuteQueryを選択します。
  3. 「関数パラメータ」フィールドで、「その他のアクション(…)」ボタンを選択します。これにより、問合せ文字列を入力できるウィンドウが起動します。問合せの引数を入力し、「保存」をクリックします。
  4. 「問合せ」をクリックします。
「出力」ウィンドウには、実行中の問合せと結果が表示されます。
> ochain query executeQuery "SELECT key, valueJson FROM <STATE> WHERE
json_extract(valueJson, '$.rawMaterialAvailable') = 4" 

SQL問合せ全体が引数で取得されるため、問合せを即時に変更できます。