Solana.TestValidator (Solana v0.1.0)
View SourceA Solana Test Validator
managed by an Elixir process. This allows you to run unit tests as if you had
the solana-test-validator tool running in another process.
Requirements
Since Solana.TestValidator uses the solana-test-validator binary, you'll
need to have the Solana tool
suite installed.
How to Use
You can use the Solana.TestValidator directly or in a supervision tree.
To use it directly, add the following lines to the beginning of your
test/test_helper.exs file:
alias Solana.TestValidator
{:ok, validator} = TestValidator.start_link(ledger: "/tmp/test-ledger")
ExUnit.after_suite(fn _ -> TestValidator.stop(validator) end)This will start and stop the solana-test-validator before and after your
tests run.
In a supervision tree
Alternatively, you can add it to your application's supervision tree during
tests. Modify your mix.exs file to make the current environment available to
your application:
def application do
[mod: {MyApp, env: Mix.env()}]
endThen, adjust your application's children depending on the environment:
defmodule MyApp do
use Application
def start(_type, env: env) do
Supervisor.start_link(children(env), strategy: :one_for_one)
end
defp children(:test) do
[
{Solana.TestValidator, ledger: "/tmp/test_ledger"},
# ... other children
]
end
defp children(_) do
# ...other children
end
endOptions
You can pass any of the long-form options you would pass to a
solana-test-validator here.
For example, to add your own program to the validator, set the bpf_program
option as the path to your program's build
artifact.
See Solana.TestValidator.start_link/1 for more details.
Summary
Functions
Returns a specification to start this module under a supervisor.
Gets the state of a Solana.TestValidator process.
Starts a Solana.TestValidator process linked to the current process.
Stops a Solana.TestValidator process.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
Gets the state of a Solana.TestValidator process.
This is useful when you want to check the latest output of the
solana-test-validator.
Starts a Solana.TestValidator process linked to the current process.
This process runs and monitors a solana-test-validator in the background.
Options
:bind_address(String.t/0) - The default value is"0.0.0.0".:bpf_program:clone:config(String.t/0) - The default value is"/home/ayrat/.config/solana/cli/config.yml".:dynamic_port_range(String.t/0) - The default value is"1024-65535".:faucet_port(pos_integer/0) - The default value is9900.:faucet_sol(pos_integer/0) - The default value is1000000.:gossip_host(String.t/0) - The default value is"127.0.0.1".:gossip_port(pos_integer/0):url(String.t/0):ledger(String.t/0) - The default value is"test-ledger".:limit_ledger_size(pos_integer/0) - The default value is10000.:mint:rpc_port(pos_integer/0) - The default value is8899.:slots_per_epoch(pos_integer/0):warp_slot(String.t/0)
Stops a Solana.TestValidator process.
Should be called when you want to stop the solana-test-validator.