Testar o Chaincode Usando o Visual Studio Code

Se o seu chaincode estiver em execução em uma rede, você poderá testar qualquer um dos métodos gerados. Além disso, se você optar por criar o método executeQuery durante o desenvolvimento do seu chaincode, poderá executar consultas ricas em SQL se seu chaincode for implantado em uma rede do Oracle Blockchain Platform.

Testar seu Chaincode em uma Rede Local do Hyperledger Fabric

Depois que seu projeto de chaincode estiver em execução em uma rede local, você poderá testá-lo.

O Blockchain App Builder contém um assistente integrado para ajudá-lo a chamar ou consultar seu chaincode.

  1. Selecione seu projeto de chaincode no painel Chaincodes. No painel Detalhes do Código de Cadeia, selecione Executar. O nome do chaincode já deve estar selecionado. Certifique-se de que o ambiente de destino esteja definido como Ambiente Local e o canal assumirá como padrão o único canal disponível.
  2. No campo Função, selecione seu método na lista suspensa. Todos os métodos disponíveis no chaincode são listados.
  3. No campo Parâmetro da Função, selecione o botão Mais Ações (...). Isso iniciará uma janela com as propriedades disponíveis para o método selecionado. Informe as propriedades, clique em Omitir para qualquer propriedade não obrigatória que você não queira enviar quando chamar seu método e clique em Salvar.
  4. Clique em Chamar.

A janela da console de Saída mostrará que a função foi chamada. Como alternativa, no painel Ações de Código de Cadeia, a janela Saída da Função exibe a saída. Clique no botão Mais Ações (...) para ver essa saída formatada.

Se quiser salvar o método e os parâmetros que acabou de executar, clique em Salvar e informe um nome e uma descrição para ele. Ele será salvo em seu projeto de chaincode na pasta Queries. Para usá-lo novamente, clique no botão direito do mouse e selecione Abrir.

Se você fizer alterações no arquivo do controlador que alterariam os métodos, selecione o ícone Recarregar na parte superior do painel Execução de Código de Cadeia. A alteração agora deve ser refletida na lista suspensa Função.

Observação:

Se você não quiser usar o assistente para teste, também poderá executar as ferramentas de linha de comando do Blockchain App Builder na janela Terminal do Visual Studio Code. Siga as instruções fornecidas aqui para testar com a linha de comando: Test Your Chaincode on a Local Hyperledger Fabric Network.

Testando Vários Usuários de Token Localmente

Para testar um projeto de token com vários usuários localmente, você pode usar a propriedade tokenUser para alterar o chamador de cada transação. Cada projeto de chaincode com andaime inclui um arquivo .ochain.json, que armazena metadados do chaincode. Você altera o chamador atualizando o valor do campo tokenUser no arquivo .ochain.json.

{
  "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"
}

Quando um projeto é scaffolded, a propriedade tokenUser é definida como o usuário admin padrão da rede local. Para alterar o chamador de uma transação, altere a propriedade tokenUser para corresponder à propriedade user_id que foi definida quando a conta foi criada quando o método createAccount (TypeScript) ou CreateAccount (Go) foi chamado.

Instalação e Implantação Automáticas Após Atualização

Sempre que você atualizar e salvar seu chaincode, as alterações serão compiladas, instaladas e implantadas automaticamente. Não há necessidade de remover ou abrir a rede local novamente. Todos os projetos serão compilados e implantados automaticamente em cada alteração.

Testando Operações de Ciclo de Vida em uma Rede Remota do Oracle Blockchain Platform

Depois que seu projeto de chaincode tiver sido implantado com sucesso na sua rede remota do Oracle Blockchain Platform, você poderá testá-lo conforme descrito em Testar Seu Chaincode em uma Rede Local do Hyperledger Fabric.

Você pode usar os mesmos comandos de chamada e consulta para executar todas as transações de método em uma rede remota do Oracle Blockchain Platform Cloud ou Enterprise Edition; tudo o que é suportado na rede local também é suportado na rede remota. Selecione a instância do Oracle Blockchain Platform como seu ambiente de destino ao executar seus testes.

Testando Projetos de Token em uma Rede Remota do Oracle Blockchain Platform

Você pode testar projetos de chaincode que funcionam com tokens usando o Blockchain App Builder, o proxy REST do Oracle Blockchain Platform ou o SDK do Hyperledger Fabric.

Blockchain App Builder

Você pode usar a extensão Visual Studio Code para chamar transações com vários usuários para testar códigos de cadeia de token. Para testar com vários usuários, altere os parâmetros de autorização (nome de usuário e senha) na guia Ambientes e salve o ambiente. Ao chamar transações, selecione o mesmo ambiente na lista suspensa e execute a transação.

Proxy REST do Oracle Blockchain Platform

Você pode usar o proxy REST no Oracle Blockchain Platform para executar seu código de cadeia de token em uma rede remota do Oracle Blockchain Platform. Use qualquer cliente Proxy REST, como o Cliente REST Postman, para testar seu projeto de chaincode.

Para testar vários usuários, altere os parâmetros de autorização (nome de usuário e senha) em seu cliente REST ou conecte-se a outra instância do Oracle Blockchain Platform.

Executar Consultas Berkeley DB SQL Rich

Se você optar por criar o método executeQuery durante o desenvolvimento do seu chaincode, poderá executar consultas ricas em SQL se o seu chaincode estiver implantado em uma rede do Oracle Blockchain Platform.

Se você tiver usado executeQuery na seção customMethods do arquivo de especificação, um método executeQuery correspondente será criado no controlador.

Arquivo de especificação:
customMethods:
    - executeQuery
    - "fetchRawMaterial(supplierid: string, rawMaterialSupply: number)"
    - "getRawMaterialFromSupplier(manufacturerId: string, supplierld: string, rawMaterialSupply: number)"
    - "createProducts(manufacturerId: string, rawMaterialConsumed: number, productsCreated: number)"
    - "sendProductsToDistribution()"
Arquivo de controle:
**
*
* 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;
}

Você pode chamar esse método para executar consultas ricas em SQL do BD Berkeley na rede do Oracle Blockchain Platform, garantindo que você selecione o ambiente do Oracle Blockchain Platform criado como seu ambiente de destino ao executar as consultas.

Exemplo:
  1. No painel Detalhes do Código de Cadeia, selecione Executar. O nome do chaincode, o ambiente de destino e o canal já devem ser pré-preenchidos na etapa de implantação.
  2. No campo Nome da Função, selecione executeQuery na lista drop-down.
  3. No campo Parâmetro da Função, selecione o botão Mais Ações (...). Isso abrirá uma janela na qual você poderá inserir a string de consulta. Informe os argumentos para sua consulta e clique em Salvar.
  4. Clique em Consultar.
A janela Saída mostrará a consulta que está sendo executada e o resultado.
ochain query executeQuery "SELECT key, valueJson FROM <STATE> WHERE
json_extract(valueJson, '$.rawMaterialAvailable') = 4" 

Como toda a consulta SQL é feita no argumento, você pode fazer alterações na consulta em tempo real.

Gerar Comandos CLI de Consultas

Se você tiver salvo consultas em um projeto de chaincode no Visual Studio Code, poderá gerar automaticamente os comandos da CLI equivalentes.

Você deve ter pelo menos uma consulta salva em um projeto de chaincode para gerar comandos CLI para Mac OSX e Linux e para Microsoft Windows.

  1. Expanda o projeto no painel Chaincodes.
  2. Clique com o botão direito do mouse em Consultas.
  3. Clique em Gerar Comandos da CLI.

Dois arquivos de texto são gerados e exibidos na seção Consultas do painel Chaincodes: CLIcommandsForLinux.txt e CLIcommandsForWindows.txt. Selecione o nome do arquivo para abrir o arquivo e mostrar os comandos da CLI correspondentes.