User documentation lives at sava.software.
- Dependency Configuration
- Core: Common Solana cryptography and serialization utilities.
- RPC: HTTP and WebSocket Clients.
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.
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.
- See ParseRpcResponseTests for additional response parsing tests.
- 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.
- 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"}
- Or, enable debug logging by using a logging.properties file and pass it to the VM via:
-Djava.util.logging.config.file=logging.properties
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();
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.
Generate a classic token with the read:packages
scope needed to access
dependencies hosted on GitHub Package Repository.
savaGithubPackagesUsername=GITHUB_USERNAME
savaGithubPackagesPassword=GITHUB_TOKEN
./gradlew check