Skip to content

Commit ee21eb4

Browse files
authored
Merge pull request #585 from lidofinance/test/v3-phase-2-snap
test: fix snap test
2 parents 382bcc3 + a025b9e commit ee21eb4

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed

tests/snapshot/test_node_operators_registry.py

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,14 @@ def assert_snapshot(before, after):
235235
assert after["node_operators_count"] == before["node_operators_count"]
236236
assert after["active_node_operators_count"] == before["active_node_operators_count"]
237237
assert after["total_signing_keys_count"] == before["total_signing_keys_count"]
238-
assert after["unused_signing_keys_count"] == before["unused_signing_keys_count"]
238+
239+
# TODO: restore this check after v3-phase2 upgrade is complete
240+
# assert after["unused_signing_keys_count"] == before["unused_signing_keys_count"]
241+
# Note: deposited validators count can differ due to changes in deposit distribution logic
242+
# (e.g., CSM stake share limit increase from 5% to 7.5%), so we don't assert it
243+
assert len(after["unused_signing_keys_count"]) == len(before["unused_signing_keys_count"])
244+
for i, (before_count, after_count) in enumerate(zip(before["unused_signing_keys_count"], after["unused_signing_keys_count"])):
245+
assert almost_eq(before_count, after_count, epsilon=8)
239246

240247
assert_signing_keys(before, after)
241248
assert_node_operators(before, after)
@@ -247,7 +254,10 @@ def assert_signing_keys(before, after):
247254
for sk_before, sk_after in zip(before["signing_keys"][id], after["signing_keys"][id]):
248255
assert sk_before["key"] == sk_after["key"]
249256
assert sk_before["depositSignature"] == sk_after["depositSignature"]
250-
assert sk_before["used"] == sk_after["used"]
257+
# TODO: restore this check after v3-phase2 upgrade is complete
258+
# Note: 'used' status can differ due to changes in deposit distribution logic during upgrade
259+
# (e.g., CSM stake share limit increase from 5% to 7.5%), so we don't assert it
260+
# assert sk_before["used"] == sk_after["used"]
251261

252262

253263
def assert_rewards_distribution(before, after):
@@ -257,10 +267,17 @@ def assert_rewards_distribution(before, after):
257267
for i in range(after["active_node_operators_count"]):
258268
assert rewards_distribution_before["recipients"][i] == rewards_distribution_after["recipients"][i]
259269

270+
# TODO: restore this check after v3-phase2 upgrade is complete
271+
# Note: Rewards distribution (shares in Wei) can differ significantly due to changes in
272+
# deposit distribution logic (CSM stake share limit increase, max external ratio changes).
273+
# Shares depend on the number of active validators per operator, which changes after upgrade.
274+
# epsilon increased from 200k to 10^15 Wei (0.1% of 1 ETH distribution) to accommodate this
260275
assert almost_eq(
261276
rewards_distribution_before["shares"][i],
262277
rewards_distribution_after["shares"][i],
263-
epsilon=200000, # estimated divergence is number of deposited validators
278+
# TODO: restore this check after v3-phase2 upgrade is complete
279+
# epsilon=200000, # estimated divergence is number of deposited validators
280+
epsilon=10**15, # 0.1% of 1 ETH distribution (0.001 ETH per operator max divergence)
264281
)
265282
assert not rewards_distribution_after["penalized"][i]
266283

@@ -272,13 +289,26 @@ def assert_node_operators(before: Dict[str, ReturnValue], after: Dict[str, Retur
272289
assert node_operator_before["active"] == node_operator_after["active"]
273290
assert node_operator_before["name"] == node_operator_after["name"]
274291
assert node_operator_before["rewardAddress"] == node_operator_after["rewardAddress"]
275-
assert node_operator_before["totalDepositedValidators"] == node_operator_after["totalDepositedValidators"]
292+
293+
# TODO: restore this check after v3-phase2 upgrade is complete
294+
# assert node_operator_before["totalDepositedValidators"] == node_operator_after["totalDepositedValidators"]
295+
# Note: deposited validators count can differ due to changes in deposit distribution logic
296+
# (e.g., CSM stake share limit increase from 5% to 7.5%), so we don't assert it
297+
assert almost_eq(node_operator_before["totalDepositedValidators"], node_operator_after["totalDepositedValidators"], epsilon=8)
298+
276299
assert node_operator_before["totalExitedValidators"] == node_operator_after["totalExitedValidators"]
277300
assert node_operator_before["totalAddedValidators"] == node_operator_after["totalAddedValidators"]
301+
278302
if not node_operator_before["active"]:
279303
assert node_operator_after["totalVettedValidators"] == node_operator_after["totalDepositedValidators"]
304+
# TODO: restore this check after v3-phase2 upgrade is complete
305+
# else:
306+
# assert node_operator_before["totalVettedValidators"] == node_operator_after["totalVettedValidators"]
307+
# Note: vetted validators count can differ due to changes in deposit distribution logic
308+
# (e.g., CSM stake share limit increase from 5% to 7.5%), so we don't assert it
280309
else:
281-
assert node_operator_before["totalVettedValidators"] == node_operator_after["totalVettedValidators"]
310+
assert almost_eq(node_operator_before["totalVettedValidators"], node_operator_after["totalVettedValidators"], epsilon=8)
311+
282312

283313

284314
def almost_eq(a, b, epsilon=0):

0 commit comments

Comments
 (0)