Code Monkey home page Code Monkey logo

hedera-sdk-tck's Introduction

Hedera SDK TCK

A Technology Compatibility Kit (TCK) is a set of tools, documentation, and test suites used to verify whether a software implementation conforms to a specific technology standard or specification. The hedera-sdk-tck aims to verify compliant implementations of a Hedera SDK. It will encompass tests that validate the implmentation of consensus node software transactions and queries, performance and longevity testing.

test-driver-js

Setup

Clone repository

git clone [email protected]:hashgraph/hedera-sdk-tck.git

Decide between Testnet or a local node

Testnet

  • Get a Hedera testnet account ID and private key from Hedera here
  • rename .env.testnet to .env
  • Add ECDSA account ID and private key to .env

Local node

Start a JSON-RPC server

Start only the JSON-RPC server for the SDK you want to test. The JSON-RPC server for the specified SDK will parse the JSON formatted request received by the test driver. The JSON-RPC server will execute the corresponding function or procedure associated with that method and prepare the response in JSON format to send back to the test driver.

Install and run

Install packages with npm

npm install

Run specific test file

npm run test test/account/test_accountCreateTransaction.js

Run all tests

npm run test

Reports

After running npm run test the generated HTML and JSON reports can be found in the mochawesome-report folder

Support

If you have a question on how to use the product, please see our support guide.

Contributing

Contributions are welcome. Please see the contributing guide to see how you can get involved.

Code of Conduct

This project is governed by the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to [email protected].

License

Apache License 2.0

hedera-sdk-tck's People

Contributors

rwalworth avatar bamzedev avatar dependabot[bot] avatar simihunjan avatar ochikov avatar rbair23 avatar

Watchers

Ken Anderson avatar Lenin Mehedy avatar James Cloos avatar  avatar Deyan Zhekov avatar Nathan Klick avatar Stanimir Stoyanov avatar Fabian Toms avatar Nikita Lebedev avatar Tim Schmidt avatar Nikolay Atanasow avatar  avatar

hedera-sdk-tck's Issues

Document E2E tests: `AccountDeleteTransaction`

Tasks

Update design doc

Problem

The design doc in the repo needs to be updated with latest POC.

Solution

Update the design doc.

Alternatives

No response

Potentially identify a new name for json rpc server

Problem

The feedback was that the naming convention used for the server (JSON RPC SERVER) is very similar to the JSON RPC Relay. The ask is to see if we can come up with an alternative name to describe the server if possible to prevent confusion with other Hedera products.

Solution

See above.

Alternatives

No response

Implement E2E tests: `AccountAllowanceApproveTransaction`

Tasks

Implement E2E tests: `FileUpdateTransaction`

Tasks

Implement JSON-RPC method endpoints for `AccountCreateTransaction`

Tasks

  1. enhancement
    0xivanov thenswan
  2. enhancement
  3. enhancement
    0xivanov
  4. Feature Enhancement
    rwalworth
  5. enhancement
    rwalworth
  6. enhancement
    rwalworth

Implement JSON-RPC method endpoint to test `AccountDeleteTransaction`

Tasks

  1. enhancement
    0xivanov
  2. New Feature
  3. enhancement
    rwalworth

Investigate failing TCK tests

Description

The TCK has completed its job. The newest versions of the SDK are falling against some tests. We were thinking that this is a problem with the Local Node, but actually is something with the SDK. We are working with Antonio, Emanuel and me to fix it.

Steps to reproduce

Screenshot 2023-08-01 at 11 54 30

Additional context

No response

Hedera network

testnet

Version

0

Operating system

None

Implement E2E tests: `FileAppendTransaction`

Tasks

Implement JSON-RPC method endpoint to test `AccountInfoQuery`

Tasks

  1. enhancement
    0xivanov

Implement E2E tests: `AccountBalanceQuery`

Tasks

Implement E2E tests: `AccountAllowanceDeleteTransaction`

Tasks

Implement E2E tests

Tasks

  1. 0 of 7
  2. 0 of 7
  3. 0 of 7
  4. 5 of 7
    New Feature
  5. 1 of 7
    New Feature
  6. 1 of 7
  7. 1 of 7
    New Feature
  8. 0 of 7
  9. 0 of 7
  10. 0 of 7
  11. 0 of 7
  12. 0 of 7
  13. 0 of 7
  14. 0 of 7
  15. 0 of 7
  16. 0 of 7
  17. 0 of 7
  18. 0 of 7
  19. 0 of 7
  20. 0 of 7
  21. 0 of 7
  22. 0 of 7
  23. 0 of 7
  24. 0 of 7
  25. 0 of 7
  26. 0 of 7
  27. 0 of 7
  28. 0 of 7
  29. 0 of 7
  30. 0 of 7
  31. 0 of 7
  32. 0 of 7
  33. 0 of 7
  34. 0 of 7
  35. 0 of 7
  36. 0 of 7
  37. 0 of 7
  38. 0 of 7
  39. 0 of 7
  40. 0 of 7
  41. 0 of 7
  42. 0 of 7
  43. 0 of 7
  44. 0 of 7
  45. 0 of 7
  46. 0 of 7

Add documentation for the tck-high-level-design diagram

Problem

The design image was added to repo as a result of issue #2. However, we also need documentation describing the high level design image.

tck-high-level-design.png

Solution

Add documentation explaining the high level design image.

Define the test driver and what is it accomplishing in the diagram
Define the JSON RPC Server and its role within the context of the diagram
What does current/new version of the SDKs mean?
What does the request bucket mean?
Where are the tests results provided?
What is the test driver response?
what is the SDK JSON RPC Server response?

Alternatives

No response

SDK longevity testing

Problem

All the SDKs should be tested for longevity/stress testing. Currently, the Java and Go SDKs are used in a couple performance benchmark testing suites, however, we need a way to apply the test across all SDKs (Java/JS/Go/C++/Swift/Rust). The TCK design should include a way to test an SDK over a period of time.

Solution

Include SDK longevity testing in the TCK design.

Alternatives

No response

Implement JSON-RPC method endpoints for `AccountUpdateTransaction`

Tasks

  1. enhancement
    0xivanov
  2. 0 of 4
    enhancement
    rwalworth

Document design for stress tests (longevity tests)

A longevity test is a type of testing designed to evaluate the long-term stability, performance, and reliability of a software product or system under sustained usage. The primary goal of a longevity test is to identify any issues that may occur when the SDKs are used for an extended period of time.

Key characteristics and objectives of longevity testing include:

Continuous Operation: The SDKs are subjected to continuous operation without interruption. This helps simulate real-world scenarios where SDKs are expected to run for extended periods when creating a large number of transactions.

Stress Testing: Longevity tests include stress testing to push the SDKs to their limits. This helps identify how the SDKs behaves under high loads and whether it can recover from resource constraints.

Cases to consider:

  • SDKs can meet the max network wide throttle limits
  • SDKs distribute transactions across the network nodes

Performance Metrics: Longevity tests measure and record performance metrics over time to identify any gradual performance degradation. This includes response times, throughput handled, etc.

Error Detection: The tests are designed to detect and log any errors, exceptions, or unexpected behavior that occurs during the extended run. This includes catching and reporting unexpected crashes or exceptions.

Logging and Reporting: Comprehensive logging and reporting mechanisms are put in place to capture all relevant information during the test. This includes error logs, performance reports, and any anomalies detected.

Create test plan for E2E tests

We need to define the TCK E2E tests the TCK should implement to validate the SDKs work as expected.

Tasks

  1. New Feature
    rwalworth
  2. enhancement
  3. enhancement
    rwalworth
  4. 5 of 5
    enhancement
    rwalworth
  5. 2 of 2
    enhancement
  6. enhancement
    rwalworth
  7. 3 of 3
    enhancement
  8. enhancement
    rwalworth
  9. documentation
    rwalworth

Implement E2E tests: `FileCreateTransaction`

Tasks

Implement E2E tests: `TransferTransaction`

Tasks

Update the readme

Problem

Update the readme with the instructions for how to run the TCK project.

Received the following error:
user@admins-Laptop Desktop % cd hedera-sdk-tck-main
user@admins-Laptop hedera-sdk-tck-main % cd test-driver-js
cd: no such file or directory: test-driver-js
user@admins-Laptop hedera-sdk-tck-main %

Solution

Update readme

Alternatives

No response

Document E2E tests: `AccountCreateTransaction`

Document the end to end test plan to create an account.
https://github.com/hashgraph/hedera-sdk-tck/blob/main/test-specifications/createAccount.md

Tasks

  1. documentation
    rwalworth
  2. documentation
    rwalworth
  3. documentation
    rwalworth

Implement E2E tests: `FileDeleteTransaction`

Tasks

TCK Epic

Problem

The following tasks are required to implement and complete the TCK project. The TCK should encapsulate all the Hedera defined transactions and queries.

Solution

Assign the tasks to be completed in future sprints until the project is complete.

Alternatives

No response

JSON RPC Servers

  1. 0xivanov
  2. enhancement
    rokn
  3. P3 enhancement
  4. P2 enhancement
    RickyLB
  5. New Feature
    rwalworth

Tests

  1. 1 of 2
  2. 1 of 2
  3. 1 of 2
  4. 1 of 2
  5. 0 of 2
  6. 0 of 2
  7. 0 of 2
  8. 0 of 2
  9. 0 of 2
  10. 0 of 2
  11. 0 of 2
  12. 0 of 2
  13. 0 of 2
  14. 0 of 2
  15. 0 of 2
  16. 0 of 2
  17. 0 of 2
  18. 0 of 2
  19. 0 of 2
  20. 0 of 2
  21. 0 of 2
  22. 0 of 2
  23. 0 of 2
  24. 0 of 2
  25. 0 of 2
  26. 0 of 2
  27. 0 of 2
  28. 0 of 2
  29. 0 of 2
  30. 0 of 2
  31. 0 of 2
  32. 0 of 2
  33. 0 of 2
  34. 0 of 2
  35. 0 of 2
  36. 0 of 2
  37. 0 of 2
  38. 0 of 2
  39. 0 of 2
  40. 0 of 2
  41. 0 of 2
  42. 0 of 2
  43. 0 of 2
  44. 0 of 2
  45. 0 of 2
  46. 0 of 2
  47. 0 of 2
  48. 0 of 2
  49. 0 of 2
  50. 0 of 2
  51. 0 of 2
  52. 0 of 2

Performance Tests

Longevity Test

Documentation

  1. enhancement

Other

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.