hashgraph / hashgraph/hedera-sdk-reference

Define the requirements for a TCK

Open
#90 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
HTML
Stars
7
Forks
3
PR merge metrics
No merged PRs in 30d

Description

Organize the TCK such that it has suites (smart contracts, tokens, etc)
- Results for any given tests
Test passed
Test failed
Test failed because the feature is not yet been implemented

What is the average amount of desired test coverage?

Very high

How will the test framework be designed, and particularly which test harness
will be used to run the tests?

Approaches:
1. Code generation (different back-end code generator for each SDK language)
2. ABI level call convention from one language to another
3. Write a test specification in English and leave it up to the SDK teams to convert them into corresponding SDK tests
4. Introduce a protocol
- Define a series of JSON Objects that represent the results of test execution (JavaScript)
- Each SDK writes a JSON RPC server that will accept the commands and translate them to appropriate API calls
- TCK would not do the signing for transactions or what node it is aiming for
- TCK submits the transaction body (transaction data)
- Example:
Create an account with this key and it should succeed
Create JSON object for the account (TCK), gets a response from the SDK and check the response is what is expected
TCK will do the set-up of the environment (single node set-up with the mirror node)
TCK will pass all arguments for the call to the SDK
TCK will verify the call passed to the SDK from mirror node or consensus node
Protocol Options:
- JSON RPC
Human readable (benefit)
- gRPC interface (protobufs) can work well with all languages
TCK would send protobuf object, deserialize, and use the builder object to create, sign, submit the transaction, and get the
result

5. Having an application that fulfills the same purpose as approach 4 (CLI)

Link: https://github.com/hashgraph/hedera-sdk-tck
Link: https://github.com/MasseyCapstoneGroup5

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.