Visual Studio 코드를 사용하여 체인 코드 테스트Test your chaincode using Visual Studio Code

체인코드가 네트워크에서 실행 중인 경우 생성된 메소드를 테스트할 수 있습니다. 또한 체인코드 개발 중에 executeQuery 메소드를 생성하도록 선택한 경우 체인코드가 Oracle Blockchain Platform 네트워크에 배포된 경우 SQL 리치 쿼리를 실행할 수 있습니다.

로컬 Hyperledger Fabric 네트워크에서 체인코드 테스트

체인코드 프로젝트가 로컬 네트워크에서 실행되면 테스트할 수 있습니다.

Blockchain App Builder에는 체인 코드를 호출하거나 쿼리하는 데 도움이되는 내장 마법사가 포함되어 있습니다.

  1. 체인코드 창에서 체인코드 프로젝트를 선택합니다. 체인코드 세부정보 창에서 실행을 선택합니다. 체인 코드 이름이 이미 선택되어 있어야 합니다. 대상 환경이 로컬 환경으로 설정되어 있고 채널이 기본적으로 사용 가능한 유일한 채널로 설정되어 있는지 확인합니다.
  2. 함수 필드의 드롭다운 목록에서 메소드를 선택합니다. 체인코드에서 사용할 수 있는 모든 방법이 나열됩니다.
  3. 함수 매개변수 필드에서 추가 작업(...) 단추를 선택합니다. 그러면 선택한 방법에 대해 사용 가능한 속성이 있는 창이 실행됩니다. 속성을 입력하고 메소드를 호출할 때 제출하지 않으려는 필수 속성이 아닌 경우 생략을 누르고 저장을 누릅니다.
  4. 호출을 누릅니다.

출력 콘솔 창에 함수가 호출되었음을 표시합니다. 또는 체인코드 작업 창에서 함수 출력 창에 출력이 표시됩니다. 작업 더 보기(...) 단추를 눌러 이 출력 형식을 확인합니다.

방금 실행한 메소드 및 매개변수를 저장하려는 경우 저장을 누르고 해당 이름과 설명을 입력할 수 있습니다. 이 파일은 Queries 폴더의 체인코드 프로젝트에 저장됩니다. 다시 사용하려면 해당 항목을 마우스 오른쪽 버튼으로 누르고 열기를 선택합니다.

메소드를 변경하는 컨트롤러 파일을 변경할 경우 Chaincode Execute 창의 맨 위에 있는 Reload 아이콘을 선택합니다. 이제 함수 드롭다운 목록에 변경 사항이 반영됩니다.

주:

마법사를 사용하여 테스트하지 않으려면 Visual Studio 코드 터미널 창에서 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 네트워크에서 수명 주기 작업 테스트

체인코드 프로젝트가 원격 Oracle Blockchain Platform 네트워크에 성공적으로 배포되면 Test Your Chaincode on a Local Hyperledger Fabric Network에 설명된 대로 테스트할 수 있습니다.

동일한 호출 및 질의 명령을 사용하여 원격 Oracle Blockchain Platform Cloud 또는 Enterprise Edition 네트워크에서 모든 메소드 트랜잭션을 수행할 수 있습니다. 로컬 네트워크에서 지원되는 모든 항목은 원격 네트워크에서도 지원됩니다. 테스트를 실행할 때 대상 환경으로 Oracle Blockchain Platform 인스턴스를 선택합니다.

원격 Oracle Blockchain Platform 네트워크에서 토큰 프로젝트 테스트

블록체인 앱 빌더, Oracle Blockchain Platform REST 프록시 또는 Hyperledger Fabric SDK를 사용하여 토큰과 함께 작동하는 체인코드 프로젝트를 테스트할 수 있습니다.

블록체인 앱 작성기

Visual Studio Code 확장을 사용하여 여러 사용자가 있는 트랜잭션을 호출하여 토큰 체인 코드를 테스트할 수 있습니다.You can use the Visual Studio Code extension to invoke transactions with multiple user to test token chaincodes. 여러 사용자로 테스트하려면 환경 탭에서 권한 부여 매개변수(사용자 이름 및 암호)를 변경하고 환경을 저장합니다. 트랜잭션을 호출하는 동안 드롭다운 목록에서 동일한 환경을 선택한 다음 트랜잭션을 실행합니다.

Oracle Blockchain Platform REST 프록시

Oracle Blockchain Platform의 REST 프록시를 사용하여 원격 Oracle Blockchain Platform 네트워크에서 토큰 체인코드를 실행할 수 있습니다. 모든 REST 프록시 클라이언트(예: Postman REST 클라이언트)를 사용하여 체인코드 프로젝트를 테스트합니다.

여러 사용자를 테스트하려면 REST 클라이언트에서 권한 부여 매개변수(사용자 이름 및 비밀번호)를 변경하거나 다른 Oracle Blockchain Platform 인스턴스에 접속하십시오.

Berkeley DB SQL Rich Query 실행

체인코드 개발 중에 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 query가 인수에서 수행되므로 즉시 query를 변경할 수 있습니다.

질의에서 CLI 명령 생성

Visual Studio Code의 체인코드 프로젝트에 쿼리를 저장한 경우 해당 CLI 명령을 자동으로 생성할 수 있습니다.If you have saved queries in a chaincode project in Visual Studio Code, you can automatically generate the equivalent CLI commands.

Mac OSX 및 Linux 및 Microsoft Windows용 CLI 명령을 생성하려면 체인코드 프로젝트에 저장된 질의가 하나 이상 있어야 합니다.

  1. Chaincodes(체인 코드) 창에서 프로젝트를 확장합니다.
  2. 조회를 마우스 오른쪽 버튼으로 누릅니다.
  3. Generate CLI Commands을 누릅니다.

체인 코드 창의 쿼리 섹션에 CLIcommandsForLinux.txtCLIcommandsForWindows.txt라는 두 개의 텍스트 파일이 생성되어 표시됩니다. 파일 이름을 선택하여 파일을 열고 해당 CLI 명령을 표시합니다.