使用 Visual Studio Code 测试链代码

如果您的链代码在网络上运行,您可以测试任何生成的方法。此外,如果您选择在链代码开发期间创建 executeQuery 方法,则可以在链代码部署到 Oracle Blockchain Platform 网络时运行 SQL 富查询。

在本地超级账本架构网络上测试您的链代码

链代码项目在本地网络上运行后,您可以对其进行测试。

Blockchain App Builder 包含一个内置向导,可帮助您调用或查询链代码。

  1. Chaincodes 窗格中选择链代码项目。在 Chaincode Details 窗格中,选择 Execute 。应该已经选择链代码名称。确保目标环境设置为本地环境,并且通道将默认为唯一可用的通道。
  2. 函数字段中,从下拉列表中选择您的方法。列出链代码中可用的每个方法。
  3. 函数参数字段中,选择更多操作 (...) 按钮。这将启动一个窗口,其中包含所选方法的可用属性。输入属性,对于在调用方法时不希望提交的任何非必需属性,单击忽略,然后单击保存
  4. 单击调用

Output(输出)控制台窗口将显示已调用函数。或者,在 Chaincode Actions(链代码操作)窗格中, Function Output(函数输出)窗口将显示输出。单击更多操作 (...) 按钮可查看此输出格式。

如果要保存刚刚运行的方法和参数,可以单击保存并为其输入名称和说明。它将保存在 Queries 文件夹中的链代码项目中。要再次使用它,请右键单击它,然后选择打开

如果对将更改方法的控制器文件进行任何更改,请选择 Chaincode Execute 窗格顶部的 Reload 图标。更改现在应反映在函数下拉列表中。

注意:

如果不想使用向导进行测试,还可以在 Visual Studio Code Terminal 窗口中运行 Blockchain App Builder 命令行工具。按照此处提供的说明使用命令行进行测试: Test Your Chaincode on a Local Hyperledger Fabric Network

本地测试多个令牌用户

要在本地测试具有多个用户的令牌项目,可以使用 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 Network 上测试生命周期操作

在您的链代码项目成功部署到远程 Oracle Blockchain Platform 网络后,您可以按在本地超级账本架构网络上测试您的链代码中所述进行测试。

可以使用相同的调用和查询命令在远程 Oracle Blockchain Platform Cloud 或 Enterprise Edition 网络上执行所有方法事务处理;远程网络上也支持本地网络上支持的所有内容。在执行测试时选择 Oracle Blockchain Platform 实例作为目标环境。

在远程 Oracle Blockchain Platform Network 上测试令牌项目

您可以使用区块链应用构建器、Oracle Blockchain Platform REST 代理或超级账本架构 SDK 测试使用令牌的链代码项目。

区块链应用程序构建器

您可以使用 Visual Studio Code 扩展调用具有多个用户的事务处理来测试令牌链代码。要对多个用户进行测试,请在环境选项卡中更改授权参数(用户名和密码),然后保存环境。调用事务处理时,从下拉列表中选择相同的环境,然后执行事务处理。

Oracle Blockchain Platform REST 代理

您可以使用 Oracle Blockchain Platform 中的 REST 代理在远程 Oracle Blockchain Platform 网络上运行令牌链代码。使用任何 REST 代理客户端(例如 Postman 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. Chaincode Details 窗格中,选择 Execute 。链代码名称、目标环境和通道应已从部署步骤中预先填充。
  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. Chaincodes 窗格中展开项目。
  2. 右键单击查询
  3. 单击 Generate CLI Commands(生成 CLI 命令)

Chaincodes 窗格的 Queries 部分中生成并显示两个文本文件:CLIcommandsForLinux.txtCLIcommandsForWindows.txt。选择文件名以打开文件并显示对应的 CLI 命令。