libp2p-test-plans/pubsub/test/manifest.toml

67 lines
3.8 KiB
TOML

name = "pubsub"
[defaults]
builder = "exec:go"
runner = "local:exec"
[builders."docker:go"]
enabled = true
go_version = "1.14"
module_path = "github.com/libp2p/test-plans/pubsub/test"
exec_pkg = "."
go_ipfs_version = "0.4.22"
[builders."exec:go"]
enabled = true
module_path = "github.com/libp2p/test-plans/pubsub/test"
exec_pkg = "."
[runners."local:docker"]
enabled = true
[runners."local:exec"]
enabled = true
[runners."cluster:k8s"]
enabled = true
[[testcases]]
name = "evaluate"
instances = { min = 1, max = 2000, default = 10 }
[testcases.params]
# params with type "duration" must be parseable by time.ParseDuration, e.g. 2m or 30s
# params with type "size" must be parseable by https://godoc.org/github.com/dustin/go-humanize#ParseBytes, e.g. "1kb"
## global params
t_heartbeat = { type = "duration", desc = "Interval between emiting maintenance messages", default="1s" }
t_heartbeat_initial_delay = { type = "duration", desc = "Delay before starting hearbeat", default="100ms" }
t_setup = { type = "duration", desc = "Upper bound on expected time period for waiting for all peers to register etc", default="1m" }
t_run = { type = "duration", desc = "Time to run the simulation", default="2m" }
t_warm = { type = "duration", desc = "Time to wait for nodes to establish connections before beginning publishing", default="5s" }
t_cool = { type = "duration", desc = "Time to wait after test execution for straggling publishers, etc.", default="10s" }
topics = { type = "json", desc = "json array of TopicConfig objects." }
score_params = { type = "json", desc = "a json ScoreParams object (see params.go). ignored unless hardened_api build flag is set."}
full_traces = { type = "bool", desc = "if true, collect full pubsub protobuf trace events, in addition to aggregate metrics", default="false" }
validate_queue_size = { type = "int", desc = "Size of pubsub validation queue", default=0 }
outbound_queue_size = { type = "int", desc = "Size of pubsub outbound queue", default=0 }
t_latency = { type = "duration", desc = "Network latency between nodes", default="5ms" }
t_latency_max = { type = "duration", desc = "If supplied, latency is between t_latency and t_latency_max", default="50ms" }
jitter_pct = { type = "int", desc = "Jitter in latency", default=10 }
bandwidth_mb = { type = "int", desc = "Bandwidth in MiB", default=10240 }
topology = { type = "string", desc = "topology in json format" }
degree = { type = "int", desc = "the number of nodes to connect to", default=20 }
n_container_nodes_total = { type = "int", desc = "the number of total nodes including multiple nodes per container", default=1 }
n_nodes_per_container = { type = "int", desc = "the number of nodes to start up in each container", default=1 }
## pubsub node config
publisher = { type = "bool", desc = "if true, this instance should publish to subscribed topics instead of lurking", default=false }
flood_publishing = { type = "bool", desc = "if true, nodes will flood when publishing their own messages. only applies to hardening branch", default=false }
t_score_inspect_period = { type = "duration", desc = "Interval between printing peer scores", default="0" }
overlay_d = { type = "int", desc = "the number of nodes gossipsub tries to stay connected to", default=-1 }
overlay_dlo = { type = "int", desc = "the low watermark of overlay_d", default=-1 }
overlay_dhi = { type = "int", desc = "the high watermark of overlay_d", default=-1 }
overlay_dscore = { type = "int", desc = "the number of peers to keep by score", default=-1 }
overlay_dlazy = { type = "int", desc = "degree for gossip nodes", default=-1 }
gossip_factor = { type = "float", desc = "gossip factor", default=0.25 }
opportunistic_graft_ticks = { type = "int", desc = "Number of heartbeat ticks for attempting opportunistic grafting", default=60 }