Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Next csm tests #251

Open
wants to merge 5 commits into
base: fix/staking-router-v2
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,776 changes: 1,380 additions & 1,396 deletions interfaces/csm/CSFeeOracle.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion tests/acceptance/test_csm.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ def test_initial_state(self, hash_consensus):
# TODO uncomment this when initial ref slot is known
# assert frame_config["initialEpoch"] > 5254400 / CHAIN_SLOTS_PER_EPOCH
assert frame_config["epochsPerFrame"] == CS_ORACLE_EPOCHS_PER_FRAME
assert frame_config["fastLaneLengthSlots"] == 0
assert frame_config["fastLaneLengthSlots"] == 1800

assert hash_consensus.getQuorum() == ORACLE_QUORUM

Expand Down
62 changes: 44 additions & 18 deletions tests/acceptance/test_staking_router.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import pytest
from brownie import interface, reverts # type: ignore

from configs.config_mainnet import (
CS_MODULE_ID, CS_MODULE_MODULE_FEE_BP,
CS_MODULE_TREASURY_FEE_BP, CS_MODULE_TARGET_SHARE_BP, CS_MODULE_NAME, CS_MODULE_PRIORITY_EXIT_SHARE_THRESHOLD,
CS_MODULE_MAX_DEPOSITS_PER_BLOCK, CS_MODULE_MIN_DEPOSIT_BLOCK_DISTANCE,
)
from utils.config import (
contracts,
STAKING_ROUTER,
Expand Down Expand Up @@ -95,22 +100,28 @@ def test_constants(contract):


def test_staking_modules(contract):
assert contract.getStakingModulesCount() == 2

assert contract.getStakingModuleIds() == [CURATED_STAKING_MODULE_ID, SIMPLE_DVT_MODULE_ID]
assert contract.getStakingModuleIsActive(1) == True
assert contract.getStakingModuleIsStopped(1) == False
assert contract.getStakingModuleIsDepositsPaused(1) == False
assert contract.getStakingModuleNonce(1) >= 7260
assert contract.getStakingModuleStatus(1) == 0

assert contract.getStakingModuleIsActive(2) == True
assert contract.getStakingModuleIsStopped(2) == False
assert contract.getStakingModuleIsDepositsPaused(2) == False
assert contract.getStakingModuleNonce(2) >= 0
assert contract.getStakingModuleStatus(2) == 0

curated_module = contract.getStakingModule(1)
assert contract.getStakingModulesCount() == 3

assert contract.getStakingModuleIds() == [CURATED_STAKING_MODULE_ID, SIMPLE_DVT_MODULE_ID, CS_MODULE_ID]
assert contract.getStakingModuleIsActive(CURATED_STAKING_MODULE_ID) == True
assert contract.getStakingModuleIsStopped(CURATED_STAKING_MODULE_ID) == False
assert contract.getStakingModuleIsDepositsPaused(CURATED_STAKING_MODULE_ID) == False
assert contract.getStakingModuleNonce(CURATED_STAKING_MODULE_ID) >= 7260
assert contract.getStakingModuleStatus(CURATED_STAKING_MODULE_ID) == 0

assert contract.getStakingModuleIsActive(SIMPLE_DVT_MODULE_ID) == True
assert contract.getStakingModuleIsStopped(SIMPLE_DVT_MODULE_ID) == False
assert contract.getStakingModuleIsDepositsPaused(SIMPLE_DVT_MODULE_ID) == False
assert contract.getStakingModuleNonce(SIMPLE_DVT_MODULE_ID) >= 0
assert contract.getStakingModuleStatus(SIMPLE_DVT_MODULE_ID) == 0

assert contract.getStakingModuleIsActive(CS_MODULE_ID) == True
assert contract.getStakingModuleIsStopped(CS_MODULE_ID) == False
assert contract.getStakingModuleIsDepositsPaused(CS_MODULE_ID) == False
assert contract.getStakingModuleNonce(CS_MODULE_ID) >= 0
assert contract.getStakingModuleStatus(CS_MODULE_ID) == 0

curated_module = contract.getStakingModule(CURATED_STAKING_MODULE_ID)
assert curated_module["id"] == CURATED_STAKING_MODULE_ID
assert curated_module["stakingModuleAddress"] == contracts.node_operators_registry
assert curated_module["stakingModuleFee"] == CURATED_STAKING_MODULE_MODULE_FEE_BP
Expand All @@ -125,7 +136,7 @@ def test_staking_modules(contract):
assert curated_module["maxDepositsPerBlock"] == CURATED_STAKING_MODULE_MAX_DEPOSITS_PER_BLOCK
assert curated_module["minDepositBlockDistance"] == CURATED_STAKING_MODULE_MIN_DEPOSITS_BLOCK_DISTANCE

simple_dvt_module = contract.getStakingModule(2)
simple_dvt_module = contract.getStakingModule(SIMPLE_DVT_MODULE_ID)
assert simple_dvt_module["id"] == SIMPLE_DVT_MODULE_ID
assert simple_dvt_module["stakingModuleAddress"] == contracts.simple_dvt
assert simple_dvt_module["stakingModuleFee"] == SIMPLE_DVT_MODULE_MODULE_FEE_BP
Expand All @@ -138,7 +149,22 @@ def test_staking_modules(contract):
assert simple_dvt_module["exitedValidatorsCount"] >= 0
assert simple_dvt_module["priorityExitShareThreshold"] == SIMPLE_DVT_MODULE_PRIORITY_EXIT_SHARE_THRESHOLD
assert simple_dvt_module["maxDepositsPerBlock"] == SIMPLE_DVT_MODULE_MAX_DEPOSITS_PER_BLOCK
assert curated_module["minDepositBlockDistance"] == SIMPLE_DVT_MODULE_MIN_DEPOSITS_BLOCK_DISTANCE
assert simple_dvt_module["minDepositBlockDistance"] == SIMPLE_DVT_MODULE_MIN_DEPOSITS_BLOCK_DISTANCE

community_staking_module = contract.getStakingModule(CS_MODULE_ID)
assert community_staking_module["id"] == CS_MODULE_ID
assert community_staking_module["stakingModuleAddress"] == contracts.csm
assert community_staking_module["stakingModuleFee"] == CS_MODULE_MODULE_FEE_BP
assert community_staking_module["treasuryFee"] == CS_MODULE_TREASURY_FEE_BP
assert community_staking_module["stakeShareLimit"] == CS_MODULE_TARGET_SHARE_BP
assert community_staking_module["status"] == 0
assert community_staking_module["name"] == CS_MODULE_NAME
assert community_staking_module["lastDepositAt"] > 0
assert community_staking_module["lastDepositBlock"] > 0
assert community_staking_module["exitedValidatorsCount"] >= 0
assert community_staking_module["priorityExitShareThreshold"] == CS_MODULE_PRIORITY_EXIT_SHARE_THRESHOLD
assert community_staking_module["maxDepositsPerBlock"] == CS_MODULE_MAX_DEPOSITS_PER_BLOCK
assert community_staking_module["minDepositBlockDistance"] == CS_MODULE_MIN_DEPOSIT_BLOCK_DISTANCE

fee_aggregate_distribution = contract.getStakingFeeAggregateDistribution()
assert fee_aggregate_distribution["modulesFee"] <= SR_MODULES_FEE_E20
Expand Down
2 changes: 1 addition & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def ldo_holder(accounts):
return accounts.at(LDO_HOLDER_ADDRESS_FOR_TESTS, force=True)


@pytest.fixture(scope="function")
@pytest.fixture(scope="session")
def stranger():
return set_balance("0x98eC059dC3aDFbdd63429454aeB0C990fbA4a124", 100000)

Expand Down
11 changes: 10 additions & 1 deletion tests/regression/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,16 @@


@pytest.fixture(scope="function", autouse=is_there_any_vote_scripts() or is_there_any_upgrade_scripts())
def autoexecute_vote(helpers, vote_ids_from_env, accounts, stranger):
def autoexecute_vote(request, helpers, vote_ids_from_env, accounts, stranger):
if "autoexecute_vote_ms" in request.node.fixturenames:
return
autoexecute_vote_impl(helpers, vote_ids_from_env, accounts, stranger)

@pytest.fixture(scope="module")
def autoexecute_vote_ms(helpers, vote_ids_from_env, accounts, stranger):
autoexecute_vote_impl(helpers, vote_ids_from_env, accounts, stranger)

def autoexecute_vote_impl(helpers, vote_ids_from_env, accounts, stranger):
if vote_ids_from_env:
helpers.execute_votes(accounts, vote_ids_from_env, contracts.voting, topup="0.5 ether")
else:
Expand Down
Loading
Loading