Module Mavryk_p2p_test_common.Node

type message =
  1. | Ping
  2. | BigPing of Mavryk_base.TzPervasives.Operation_hash.t list

Simple p2p message used by the nodes.

  • Ping is a none-message used by nodes in simple communication tests.
  • BigPing is used to add arbitrary long data (similar to mempools sent in the actual network) to test bandwidth and chunks splitting.
type metadata =
  1. | Metadata
type t = {
  1. iteration : int Stdlib.ref;
  2. channel : (unit, unit) Process.Channel.t;
  3. connect_handler : (message, metadata, metadata) Mavryk_p2p.P2p_connect_handler.t;
  4. pool : (message, metadata, metadata) Mavryk_p2p.P2p_pool.t;
  5. watcher : Mavryk_base.TzPervasives.P2p_connection.P2p_event.t Lwt_watcher.input;
  6. trigger : Mavryk_p2p.P2p_trigger.t;
  7. points : Mavryk_base.TzPervasives.P2p_point.Id.t list;
  8. trusted_points : Mavryk_base.TzPervasives.P2p_point.Id.t list;
}

t is a simple p2p nodes.

val sync : t -> unit Mavryk_base.TzPervasives.tzresult Lwt.t

sync node join node to a synchronization barrier.

val default_ipv6_addr : Mavryk_base.TzPervasives.P2p_addr.t
val gen_points : int -> Mavryk_base.TzPervasives.P2p_addr.t -> (Mavryk_base.TzPervasives.P2p_point.Id.t * Unix.file_descr) list

gen_points npoints addr generates npoints points using the given addr and an unused port given by the operating system by binding a fresh socket to the port 0.

These sockets are left open and returned by the function with the generated point, so that the operating system cannot reuse this port while the socket is opened.

The returned sockets are also configured with option SO_REUSEPORT so that user can bind its own socket using the generated point when desired. When a socket has finally been bounded to the given port, the user must close the socket to avoid file descriptor leaks.

val detach_nodes : ?timeout:float -> ?prefix:(int -> string) -> ?min_connections:(int -> int) -> ?max_connections:(int -> int) -> ?max_incoming_connections:(int -> int) -> ?p2p_versions:(int -> Mavryk_base.TzPervasives.P2p_version.t list) -> ?msg_config: (int -> message Mavryk_base.TzPervasives.P2p_params.message_config) -> ?trusted: (int -> Mavryk_base.TzPervasives.P2p_point.Id.t list -> Mavryk_base.TzPervasives.P2p_point.Id.t list) -> (int -> t -> unit Mavryk_base.TzPervasives.tzresult Lwt.t) -> (Mavryk_base.TzPervasives.P2p_point.Id.t * Unix.file_descr) list -> unit Mavryk_base.TzPervasives.tzresult Lwt.t

detach_nodes f points creates a network with one node for each points. f is the behavior of each node. If the network is alive after ?timeout seconds, if any is provided, the Timeout error is returned. ?prefix associates a prefix used for logs to each nodes. ?min_connections, ?max_connections, ?max_incoming_connections, ?p2p_versions and ?msg_config are used to configure the connect handler of each nodes. ?trusted is used to configure the pool of each nodes.

With each point of points a file descriptor generated by the system that holds the point should be given. This file descriptor will be properly closed by this function. See gen_points for more details.