-
Notifications
You must be signed in to change notification settings - Fork 248
Expand file tree
/
Copy pathnextest.toml
More file actions
159 lines (131 loc) · 6.84 KB
/
Copy pathnextest.toml
File metadata and controls
159 lines (131 loc) · 6.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# Nextest configuration for Zebra
#
# Profiles:
# default Local dev: runs unit + integration (excludes stateful + e2e)
# ci PR CI: same scope, CI-tuned output
# ci-stateful GCP: runs stateful tests selected by --filter-expr
# ci-e2e GCP: runs E2E tests selected by --filter-expr
# check-no-git-dependencies Special CI release check
[profile.default]
fail-fast = true
status-level = "pass"
default-filter = 'not test(/^stateful::/) and not test(/^e2e::/) and not test(=unit::end_of_support::check_no_git_dependencies)'
# --- CI Profile (PRs) ---
[profile.ci]
fail-fast = false
failure-output = "immediate"
slow-timeout = { period = "5m", terminate-after = 4 }
default-filter = 'not test(/^stateful::/) and not test(/^e2e::/) and not test(=unit::end_of_support::check_no_git_dependencies)'
[[profile.ci.overrides]]
filter = 'test(=integration::network::disconnects_from_misbehaving_peers)'
retries = 2
slow-timeout = { period = "5m", terminate-after = 2 }
[[profile.ci.overrides]]
filter = 'test(/^integration::sync::/)'
test-group = 'serial-live-mainnet'
# These tests sync mainnet to genesis from live peers; they normally finish in
# ~10-30s, but a slow/unreachable peer can stall them. Fail fast after 10m and
# retry instead of hanging near the old 30m hard limit, where they flaked.
[[profile.ci.overrides]]
filter = 'test(=integration::sync::sync_one_checkpoint_mainnet) or test(=integration::sync::restart_stop_at_height)'
slow-timeout = { period = "5m", terminate-after = 2 }
retries = 2
[[profile.ci.overrides]]
filter = "test(=peer_set::set::tests::vectors::peer_set_ready_multiple_connections) or test(=peer_set::set::tests::vectors::peer_set_ready_single_connection) or test(=peer_set::set::tests::vectors::peer_set_rejects_connections_past_per_ip_limit) or test(=peer_set::set::tests::vectors::peer_set_route_inv_advertised_registry)"
retries = 2
slow-timeout = { period = "30s", terminate-after = 2 }
# --- CI Stateful Profile (GCP VMs) ---
# CI selects specific tests via --filter-expr / NEXTEST_FILTER. The scoped
# default filter prevents accidental whole-workspace runs in manual invocations.
[profile.ci-stateful]
fail-fast = false
failure-output = "immediate"
success-output = "immediate"
default-filter = 'test(/^stateful::/)'
# Default hard timeout for stateful tests; longer-running tests override it below.
slow-timeout = { period = "30m", terminate-after = 2 }
[test-groups]
serial-state = { max-threads = 1 }
# Live Mainnet tests compete for the same limited set of usable peers when they
# connect concurrently from one public IP.
serial-live-mainnet = { max-threads = 1 }
# zcashd-compat integration tests each spawn a zebrad + zcashd on
# bind-probed-then-released ports, so they must never run concurrently, even
# under a parallel profile invoked with --run-ignored=all.
serial-zcashd-compat = { max-threads = 1 }
# Force tests that start fresh live Mainnet nodes to run serially in local
# parallel test runs. The CI overrides above assign the same test group while
# preserving their profile-specific retries and timeouts.
[[profile.default.overrides]]
filter = 'test(/^integration::sync::/)'
test-group = 'serial-live-mainnet'
# Force zcashd-compat integration tests serial in every profile, so a parallel
# --run-ignored=all run cannot collide on their released RPC/P2P ports.
[[profile.default.overrides]]
filter = 'test(~integration::zcashd_compat::)'
test-group = 'serial-zcashd-compat'
[[profile.ci.overrides]]
filter = 'test(~integration::zcashd_compat::)'
test-group = 'serial-zcashd-compat'
# Stateful tests share on-disk state, so run them serially. This override sets
# only the test-group: adding slow-timeout here would shadow every per-test
# timeout below, since nextest applies the first matching override per setting.
[[profile.ci-stateful.overrides]]
filter = 'test(/^stateful::/)'
test-group = 'serial-state'
[[profile.ci-stateful.overrides]]
filter = 'test(=stateful::sync::sync_to_mandatory_checkpoint_mainnet) or test(=stateful::sync::sync_to_mandatory_checkpoint_testnet)'
slow-timeout = { period = "1500m", terminate-after = 1 }
[[profile.ci-stateful.overrides]]
filter = 'test(=stateful::sync::sync_past_mandatory_checkpoint_mainnet) or test(=stateful::sync::sync_past_mandatory_checkpoint_testnet) or test(=stateful::rpc::rpc_get_block_from_cached_state) or test(=stateful::lightwalletd::lightwalletd_test_suite) or test(=stateful::lightwalletd::lwd_grpc_wallet)'
slow-timeout = { period = "60m", terminate-after = 2 }
# --- CI E2E Profile (GCP VMs) ---
# CI selects specific tests via --filter-expr / NEXTEST_FILTER. The scoped
# default filter prevents accidental whole-workspace runs in manual invocations.
[profile.ci-e2e]
fail-fast = false
failure-output = "immediate"
success-output = "immediate"
default-filter = 'test(/^e2e::/)'
# Default hard timeout for e2e tests; longer-running tests override it below.
slow-timeout = { period = "60m", terminate-after = 2 }
# E2e tests share on-disk state, so run them serially. This override sets only
# the test-group: adding slow-timeout here would shadow every per-test timeout
# below, since nextest applies the first matching override per setting.
[[profile.ci-e2e.overrides]]
filter = 'test(/^e2e::/)'
test-group = 'serial-state'
[[profile.ci-e2e.overrides]]
filter = 'test(=e2e::sync::sync_full_mainnet) or test(=e2e::lightwalletd::lwd_sync_full)'
slow-timeout = { period = "30000m", terminate-after = 1 }
[[profile.ci-e2e.overrides]]
filter = 'test(=e2e::sync::sync_full_testnet)'
slow-timeout = { period = "1500m", terminate-after = 1 }
[[profile.ci-e2e.overrides]]
filter = 'test(=e2e::checkpoints::generate_checkpoints_mainnet) or test(=e2e::checkpoints::generate_checkpoints_testnet)'
slow-timeout = { period = "90m", terminate-after = 1 }
# --- Special Profile ---
[profile.check-no-git-dependencies]
default-filter = 'test(=unit::end_of_support::check_no_git_dependencies)'
# --- zcashd-compat Profiles ---
[profile.zcashd-compat-integration]
# Run zcashd-compat tests one at a time to avoid port conflicts and resource exhaustion.
test-threads = 1
slow-timeout = { period = "15m", terminate-after = 2 }
failure-output = "immediate"
default-filter = 'package(zebrad) and test(~zcashd_compat)'
[profile.zcashd-compat-soak]
# Long-running local soak for the reorg churn stress test.
test-threads = 1
slow-timeout = { period = "4h", terminate-after = 1 }
failure-output = "immediate"
default-filter = 'package(zebrad) and test(=integration::zcashd_compat::zcashd_compat_reorg_churn)'
[profile.zcashd-compat-external]
# External mode: connect to pre-running mainnet/testnet zebrad + zcashd.
# Set TEST_ZCASHD_COMPAT_NETWORK, TEST_ZEBRAD_RPC_ADDR,
# TEST_ZCASHD_RPC_ADDR, and auth env vars before running.
# No block mining — 5 minutes per test is sufficient.
test-threads = 1
slow-timeout = { period = "5m", terminate-after = 2 }
failure-output = "immediate"
default-filter = 'package(zebrad) and test(~zcashd_compat)'