Skip to content

Commit

Permalink
extended csm regression tests
Browse files Browse the repository at this point in the history
fixed minor things
  • Loading branch information
skhomuti committed Jan 23, 2025
1 parent fd47286 commit 11540c0
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 22 deletions.
23 changes: 21 additions & 2 deletions tests/regression/test_csm.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ def fee_distributor():
def fee_oracle():
return contracts.cs_fee_oracle

@pytest.fixture(scope="module")
def early_adoption():
return contracts.cs_early_adoption


@pytest.fixture
def node_operator(csm, accounting) -> int:
Expand Down Expand Up @@ -98,8 +102,23 @@ def distribute_reward_tree(node_operator, ref_slot):


@pytest.mark.parametrize("address, proof", get_ea_members())
def test_add_ea_node_operator(csm, accounting, address, proof):
csm_add_node_operator(csm, accounting, address, proof)
def test_add_ea_node_operator(csm, accounting, early_adoption, address, proof):
no_id = csm_add_node_operator(csm, accounting, address, proof)
no = csm.getNodeOperator(no_id)

assert no['managerAddress'] == address
assert no['rewardAddress'] == address
assert accounting.getBondCurveId(no_id) == early_adoption.CURVE_ID()


def test_add_node_operator_permissionless(csm, accounting, accounts):
address = accounts[8].address
no_id = csm_add_node_operator(csm, accounting, address, proof=[])
no = csm.getNodeOperator(no_id)

assert no['managerAddress'] == address
assert no['rewardAddress'] == address
assert accounting.getBondCurveId(no_id) == accounting.DEFAULT_BOND_CURVE_ID()


@pytest.mark.usefixtures("pause_modules")
Expand Down
33 changes: 17 additions & 16 deletions tests/test_vote_2025_01_28.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ def test_vote(helpers, accounts, vote_ids_from_env, stranger):
node_operators_registry = interface.NodeOperatorsRegistry("0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5")
agent = interface.Agent("0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c")
module_manager_role = "0x79dfcec784e591aafcf60db7db7b029a5c8b12aac4afd4e8c4eb740430405fa6"
csm_module_id = 3
new_stake_share_limit = 200 #2%
new_priority_exit_share_threshold = 250
new_name = "Solstice"
Expand All @@ -29,18 +30,18 @@ def test_vote(helpers, accounts, vote_ids_from_env, stranger):
old_min_deposit_block_distance = 25

# Agent doesn't have MODULE_MANAGER_ROLE
assert csm.hasRole(module_manager_role, agent) == False
assert csm.hasRole(module_manager_role, agent) is False

# Public release mode is not active
assert csm.publicRelease() == False
assert csm.publicRelease() is False

# Check old data
assert staking_router.getStakingModule(3)["stakeShareLimit"] == old_stake_share_limit
assert staking_router.getStakingModule(3)["priorityExitShareThreshold"] == old_priority_exit_share_threshold
assert staking_router.getStakingModule(3)["stakingModuleFee"] == old_staking_module_fee
assert staking_router.getStakingModule(3)["treasuryFee"] == old_treasury_fee
assert staking_router.getStakingModule(3)["maxDepositsPerBlock"] == old_max_deposits_per_block
assert staking_router.getStakingModule(3)["minDepositBlockDistance"] == old_min_deposit_block_distance
assert staking_router.getStakingModule(csm_module_id)["stakeShareLimit"] == old_stake_share_limit
assert staking_router.getStakingModule(csm_module_id)["priorityExitShareThreshold"] == old_priority_exit_share_threshold
assert staking_router.getStakingModule(csm_module_id)["stakingModuleFee"] == old_staking_module_fee
assert staking_router.getStakingModule(csm_module_id)["treasuryFee"] == old_treasury_fee
assert staking_router.getStakingModule(csm_module_id)["maxDepositsPerBlock"] == old_max_deposits_per_block
assert staking_router.getStakingModule(csm_module_id)["minDepositBlockDistance"] == old_min_deposit_block_distance

# Check old name
assert node_operators_registry.getNodeOperator(17, True)["name"] == old_name
Expand All @@ -58,18 +59,18 @@ def test_vote(helpers, accounts, vote_ids_from_env, stranger):
# I. CSM: Enable Permissionless Phase and Increase the Share Limit
#
# 2. Activate public release mode on CS Module
assert csm.publicRelease() == True
assert csm.publicRelease() is True

# 3. Increase stake share limit from 1% to 2% on CS Module
assert staking_router.getStakingModule(3)["stakeShareLimit"] == new_stake_share_limit
assert staking_router.getStakingModule(3)["priorityExitShareThreshold"] == new_priority_exit_share_threshold
assert staking_router.getStakingModule(3)["stakingModuleFee"] == old_staking_module_fee
assert staking_router.getStakingModule(3)["treasuryFee"] == old_treasury_fee
assert staking_router.getStakingModule(3)["maxDepositsPerBlock"] == old_max_deposits_per_block
assert staking_router.getStakingModule(3)["minDepositBlockDistance"] == old_min_deposit_block_distance
assert staking_router.getStakingModule(csm_module_id)["stakeShareLimit"] == new_stake_share_limit
assert staking_router.getStakingModule(csm_module_id)["priorityExitShareThreshold"] == new_priority_exit_share_threshold
assert staking_router.getStakingModule(csm_module_id)["stakingModuleFee"] == old_staking_module_fee
assert staking_router.getStakingModule(csm_module_id)["treasuryFee"] == old_treasury_fee
assert staking_router.getStakingModule(csm_module_id)["maxDepositsPerBlock"] == old_max_deposits_per_block
assert staking_router.getStakingModule(csm_module_id)["minDepositBlockDistance"] == old_min_deposit_block_distance

# 4. Revoke MODULE_MANAGER_ROLE on CS Module from Aragon Agent
assert csm.hasRole(module_manager_role, agent) == False
assert csm.hasRole(module_manager_role, agent) is False

#
# II. NO Acquisitions: Bridgetower is now part of Solstice Staking
Expand Down
4 changes: 0 additions & 4 deletions utils/test/csm_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,6 @@ def csm_upload_keys(csm, accounting, no_id, keys_count=5):


def fill_csm_operators_with_keys(target_operators_count, keys_count):
if not contracts.csm.publicRelease():
contracts.csm.grantRole(contracts.csm.MODULE_MANAGER_ROLE(), contracts.agent, {"from": contracts.agent})
contracts.csm.activatePublicRelease({"from": contracts.agent})

csm_node_operators_before = contracts.csm.getNodeOperatorsCount()
added_operators_count = 0
for no_id in range(0, min(csm_node_operators_before, target_operators_count)):
Expand Down

0 comments on commit 11540c0

Please sign in to comment.