Skip to content

sava-software/sava

Repository files navigation

Sava

Sava Gradle Check Publish Release

Documentation

User documentation lives at sava.software.

Contributions

Please note that all contributions require agreeing to the Sava Engineering, Inc. CLA.

Tests are needed and welcomed. Otherwise, please reach out before working on a pull request.

RPC Tests

A mini framework for testing RPC calls is provided to make it as easy as possible to test the calls you rely on. See RoundTripRpcRequestTests for example usage.

  • If you plan to add several tests, create a new class to avoid merge conflicts.
  • If you feel there is already enough response test coverage, you can skip it by only providing the expected request JSON.
  • If the response JSON is large, add it to the resource directory as a JSON file.
    • If the JSON file is larger than 1MB, apply zip compression to it.
    • If it is large because it is a collection of items, consider trimming the list down to at least two items.

Capture Request JSON

  • Start a test with the desired call, the test will fail with the difference between the expected and actual requests.
@Test
void getHealth() {
  registerRequest("{}");
  rpcClient.getHealth().join();
}
SEVERE: Expected request body does not match the actual. Note: The JSON RPC "id" does not matter.
 - expected: {}
 - actual:   {"jsonrpc":"2.0","id":123,"method":"getHealth"}
-Djava.util.logging.config.file=logging.properties

Capture Response JSON

var rpcClient = SolanaRpcClient.build().testResponse((_, body) -> {
  final var json = new String(body);
  System.out.println(json); // Write to a file if large.
  return true;
}).createClient();

Validation

Reference the official Solana RPC documentation to verify that the expected parameters are passed in the request, and if applicable, all the desired response data is parsed correctly.

Build

Generate a classic token with the read:packages scope needed to access dependencies hosted on GitHub Package Repository.

~/.gradle/gradle.properties

savaGithubPackagesUsername=GITHUB_USERNAME
savaGithubPackagesPassword=GITHUB_TOKEN
./gradlew check

Sponsor this project

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •