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

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

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

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

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

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

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

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

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

ノート:

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

ローカルでの複数のトークン・ユーザーのテスト

複数のユーザーを含むトークン・プロジェクトをローカルでテストするには、tokenUserプロパティを使用して、各トランザクションのコール元を変更できます。すべてのスキャフォールドされたチェーンコード・プロジェクトには、チェーンコードのメタデータを格納する.ochain.jsonファイルが含まれています。呼出し側を変更するには、.ochain.jsonファイルのtokenUserフィールドの値を更新します。

{
  "name": "digiCurrCC",
  "description": "Chaincode package for digiCurrCC",
  "chaincodeName": "digiCurrCC",
  "chaincodeType": "node",
  "configFileLocation": "/Users/user1/token.yml",
  "appBuilderVersion": "21.2.3",
  "nodeVersion": "v12.18.1",
  "tokenUser": "admin"
}

プロジェクトがスキャフォールドされると、tokenUserプロパティはローカル・ネットワークのデフォルトのadminユーザーに設定されます。トランザクションのコール元を変更するには、tokenUserプロパティを、createAccount (TypeScript)またはCreateAccount (Go)メソッドがコールされたときにアカウントが作成されたときに設定されたuser_idプロパティと一致するように変更します。

更新後の自動インストールおよびデプロイメント

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

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

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

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

リモートOracle Blockchain Platformネットワークでのトークン・プロジェクトのテスト

ブロックチェーン・アプリケーション・ビルダー、Oracle Blockchain Platform RESTプロキシまたはHyperledger Fabric SDKを使用して、トークンで動作するチェーンコード・プロジェクトをテストできます。

ブロックチェーン・アプリケーション・ビルダー

Visual Studio Code拡張機能を使用すると、複数のユーザーを含むトランザクションを起動してトークン・チェーンコードをテストできます。複数のユーザーでテストするには、「環境」タブで認可パラメータ(ユーザー名とパスワード)を変更し、環境を保存します。トランザクションの起動中に、ドロップダウン・リストから同じ環境を選択し、トランザクションを実行します。

Oracle Blockchain Platform RESTプロキシ

Oracle Blockchain PlatformのRESTプロキシを使用して、リモートのOracle Blockchain Platformネットワークでトークン・チェーンコードを実行できます。Postman RESTクライアントなどの任意のRESTプロキシ・クライアントを使用して、チェーンコード・プロジェクトをテストします。

複数のユーザーをテストするには、RESTクライアントの認可パラメータ(ユーザー名とパスワード)を変更するか、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問合せ全体が引数で取得されるため、問合せを即時に変更できます。

問合せからのCLIコマンドの生成

Visual Studio Codeでチェーンコード・プロジェクトに問合せを保存した場合は、同等のCLIコマンドを自動的に生成できます。

Mac OSX、LinuxおよびMicrosoft Windows用のCLIコマンドを生成するには、チェーンコード・プロジェクトに少なくとも1つの保存済問合せが必要です。

  1. 「チェーンコード」ペインでプロジェクトを展開します。
  2. 「問合せ」を右クリックします。
  3. 「Generate CLI Commands」をクリックします。

「チェーンコード」ペインの「問合せ」セクションに、CLIcommandsForLinux.txtおよびCLIcommandsForWindows.txtという2つのテキスト・ファイルが生成および表示されます。ファイル名を選択してファイルを開き、対応する CLIコマンドを表示します。