Tezt_mavryk.Baker
val name : t -> string
See Daemon.Make.name
val terminate : ?timeout:float -> t -> unit Lwt.t
Send SIGTERM and wait for the process to terminate.
Default timeout
is 30 seconds, after which SIGKILL is sent.
val kill : t -> unit Lwt.t
Send SIGKILL and wait for the process to terminate.
val stop : t -> unit Lwt.t
Send SIGSTOP to the process.
val continue : t -> unit Lwt.t
Send SIGCONT to the process.
val log_events : ?max_length:int -> t -> unit
See Daemon.Make.log_events
.
val wait_for :
?where:string ->
t ->
string ->
(Tezt_wrapper.JSON.t -> 'a option) ->
'a Lwt.t
See Daemon.Make.wait_for
.
val wait_for_ready : t -> unit Lwt.t
Wait until the baker is ready.
More precisely, wait until a "Baker started" event occurs. If this event alreay happened, return immediately.
val run :
?event_level:Daemon.Level.default_level ->
?event_sections_levels:(string * Daemon.Level.level) list ->
t ->
unit Lwt.t
Spawn mavkit-baker run
.
The resulting promise is fulfilled as soon as the baker has been spawned. It continues running in the background.
val liquidity_baking_vote_of_string_opt :
string ->
liquidity_baking_vote option
Returns the liquidity_baking_vote
corresponding to a string, or None if the string is not a valid liquidity baking vote.
val liquidity_baking_vote_to_string : liquidity_baking_vote -> string
Returns the string representation of a liquidity_baking_vote
.
val liquidity_baking_votefile : ?path:string -> liquidity_baking_vote -> string
Writes a liquidity baking votefile, as read by the bakers --votefile
argument.
If path
is set, the vote file is written there. Otherwise, it is written to a temporary file.
Returns the path to the file that was written.
val create :
?runner:Tezt_wrapper.Runner.t ->
protocol:Protocol.t ->
?path:string ->
?name:string ->
?color:Tezt_wrapper.Log.Color.t ->
?event_pipe:string ->
?delegates:string list ->
?votefile:string ->
?liquidity_baking_toggle_vote:liquidity_baking_vote option ->
?force_apply:bool ->
?remote_mode:bool ->
?operations_pool:string ->
?dal_node:Dal_node.t ->
?minimal_nanomav_per_gas_unit:int ->
?state_recorder:bool ->
Node.t ->
Client.t ->
t
Create a baker.
This function just creates a value of type t
, it does not call run
.
path
provides the path to the baker binary, the default being the one derived from the protocol
.
The standard output and standard error output of the baker will be logged with prefix name
and color color
.
Default event_pipe
is a temporary file whose name is derived from name
. It will be created as a named pipe so that baker events can be received.
The Node.t
parameter is the node used by the baker. The baker is configured to use the node's data dir.
The Client.t
parameter is the client used by the baker. The baker is configured to use the client's base directory.
If runner
is specified, the baker will be spawned on this runner using SSH.
delegates
is a list of account aliases (see Account
.key.alias), e.g., bootstrap accounts (see Constant
.bootstrap_keys), delegated to this baker. This defaults to the empty list, which is a shortcut for "every known account".
votefile
and liquidity_baking_toggle_vote
are passed to the baker daemon through the flags --votefile
and --liquidity-baking-toggle-vote
. If --liquidity-baking-toggle-vote
is None
, then --liquidity-baking-toggle-vote
is not passed. If it is Some x
then --liquidity-baking-toggle-vote x
is passed. The default value is Some Pass
.
operations_pool
, force_apply
and state_recorder
are passed to the baker daemon through the flag --operations-pool
, --force_apply
and --record-state
.
If remote_mode
is specified, the baker will run in RPC-only mode.
If dal_node
is specified, then it is the DAL node that the baker queries in order to determine the attestations it sends to the L1 node. A --dal_node
argument is passed to specify the DAL node's endpoint.
minimal_nanomav_per_gas_unit
is an integer passed to the baker daemon through the flag --minimal-nanomav-per-gas-unit
.
val create_from_uris :
?runner:Tezt_wrapper.Runner.t ->
protocol:Protocol.t ->
?path:string ->
?name:string ->
?color:Tezt_wrapper.Log.Color.t ->
?event_pipe:string ->
?delegates:string list ->
?votefile:string ->
?liquidity_baking_toggle_vote:liquidity_baking_vote option ->
?force_apply:bool ->
?remote_mode:bool ->
?operations_pool:string ->
?dal_node_rpc_endpoint:Endpoint.t ->
?minimal_nanomav_per_gas_unit:int ->
?state_recorder:bool ->
base_dir:string ->
node_data_dir:string ->
node_rpc_endpoint:Endpoint.t ->
unit ->
t
Similar to create
, but nodes RPCs addresses, wallet base directory and L1 data directory are directly provided instead of a Client.t
, a Node.t
and optionally a Dal_node.t
.
The node_data_dir
parameter provides the (local) node's data directory used for baking.
The node_rpc_endpoint
parameter provides the (local) node's RPC server endpoint to which the baker will connect to.
The base_dir
parameter contains needed information about the wallets used by the baker.
If dal_node_rpc_endpoint
is specified, then it provides the DAL node RPC server's endpoint that the baker queries in order to determine the attestations it sends to the L1 node. A --dal_node
argument is passed to specify the DAL node's endpoint.
val init :
?runner:Tezt_wrapper.Runner.t ->
protocol:Protocol.t ->
?path:string ->
?name:string ->
?color:Tezt_wrapper.Log.Color.t ->
?event_pipe:string ->
?event_sections_levels:(string * Daemon.Level.level) list ->
?delegates:string list ->
?votefile:string ->
?liquidity_baking_toggle_vote:liquidity_baking_vote option ->
?force_apply:bool ->
?remote_mode:bool ->
?operations_pool:string ->
?dal_node:Dal_node.t ->
?minimal_nanomav_per_gas_unit:int ->
?state_recorder:bool ->
Node.t ->
Client.t ->
t Lwt.t
Initialize a baker.
This creates a baker, waits for it to be ready, and then returns it.
As the baker usually relies on a node, we first wait for the node to be ready and then, run the baker.
The path to the baker binary is chosen from the protocol
.
The standard output and standard error output of the baker will be logged with prefix name
and color color
.
Default event_pipe
is a temporary file whose name is derived from name
. It will be created as a named pipe so that baker events can be received.
The Node.t
parameter is the node used by the baker. The baker is configured to use the node's data dir.
The Client.t
parameter is the client used by the baker. The baker is configured to use the client's base directory.
If runner
is specified, the baker will be spawned on this runner using SSH.
delegates
is a list of account aliases (see Account
.key.alias), e.g., bootstrap accounts (see Constant
.bootstrap_keys), delegated to this baker. This defaults to the empty list, which is a shortcut for "every known account".
votefile
, liquidity_baking_toggle_vote
, force_apply
, state_recorder
respectively operations_pool
are passed to the baker daemon through the flags --votefile
, --liquidity-baking-toggle-vote
, --should-apply
, --record-state
respectively --operations-pool
.
If remote_mode
is specified, the baker will run in RPC-only mode.
If dal_node
is specified, then it is the DAL node that the baker queries in order to determine the attestations it sends to the L1 node. A --dal_node
argument is passed to specify the DAL node's endpoint.
val log_block_injection : ?color:Tezt_wrapper.Log.Color.t -> t -> unit
Log block injection events.
Show the baker daemon name, level and round of the block, and delegate for which it was injected.
This log is relatively lightweight and a good indicator of chain progress during a test. It can also be useful to observe baking rights at the levels and rounds featured in a test.
val log_shortened_events : t -> unit
Log all baker events with Log.info
on a single line each, which should be easily readable by a human.
This function should not be called by any test on a permanent basis, but is available for debugging.
If an event has an unexpected format, the anomaly is signaled with Log.warn
.
If you want to see all events, don't forget to launch the baker with
~event_sections_levels:
[(String.concat "." [Protocol.encoding_prefix protocol; "baker"], `Debug)]