stake-pool-py: Fix tests for Solana 1.10.33 (#3395)
This commit is contained in:
parent
d1e842ca3f
commit
3a7914ceba
|
@ -24,7 +24,7 @@ pyflakes==2.4.0
|
|||
PyNaCl==1.4.0
|
||||
pyparsing==2.4.7
|
||||
pytest==6.2.5
|
||||
pytest-asyncio==0.16.0
|
||||
pytest-asyncio==0.19.0
|
||||
requests==2.26.0
|
||||
rfc3986==1.5.0
|
||||
six==1.16.0
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import asyncio
|
||||
import pytest
|
||||
import pytest_asyncio
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
import time
|
||||
from typing import Iterator, List, Tuple
|
||||
from typing import AsyncIterator, List, Tuple
|
||||
from subprocess import Popen
|
||||
|
||||
from solana.keypair import Keypair
|
||||
|
@ -38,62 +39,50 @@ def solana_test_validator():
|
|||
shutil.rmtree(newpath)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def validators(event_loop, async_client, payer) -> List[PublicKey]:
|
||||
@pytest_asyncio.fixture
|
||||
async def validators(async_client, payer) -> List[PublicKey]:
|
||||
num_validators = 3
|
||||
validators = []
|
||||
for i in range(num_validators):
|
||||
vote = Keypair()
|
||||
node = Keypair()
|
||||
event_loop.run_until_complete(
|
||||
create_vote(async_client, payer, vote, node, payer.public_key, payer.public_key, 10)
|
||||
)
|
||||
await create_vote(async_client, payer, vote, node, payer.public_key, payer.public_key, 10)
|
||||
validators.append(vote.public_key)
|
||||
return validators
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def stake_pool_addresses(event_loop, async_client, payer, validators, waiter) -> Tuple[PublicKey, PublicKey]:
|
||||
@pytest_asyncio.fixture
|
||||
async def stake_pool_addresses(async_client, payer, validators, waiter) -> Tuple[PublicKey, PublicKey]:
|
||||
fee = Fee(numerator=1, denominator=1000)
|
||||
referral_fee = 20
|
||||
event_loop.run_until_complete(waiter.wait_for_next_epoch_if_soon(async_client))
|
||||
stake_pool_addresses = event_loop.run_until_complete(
|
||||
create_all(async_client, payer, fee, referral_fee)
|
||||
)
|
||||
# Change back to `wait_for_next_epoch_if_soon` once https://github.com/solana-labs/solana/pull/26851 is available
|
||||
await waiter.wait_for_next_epoch(async_client)
|
||||
stake_pool_addresses = await create_all(async_client, payer, fee, referral_fee)
|
||||
for validator in validators:
|
||||
event_loop.run_until_complete(
|
||||
add_validator_to_pool(async_client, payer, stake_pool_addresses[0], validator)
|
||||
)
|
||||
await add_validator_to_pool(async_client, payer, stake_pool_addresses[0], validator)
|
||||
return stake_pool_addresses
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def event_loop():
|
||||
loop = asyncio.get_event_loop()
|
||||
yield loop
|
||||
loop.close()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def async_client(event_loop, solana_test_validator) -> Iterator[AsyncClient]:
|
||||
@pytest_asyncio.fixture
|
||||
async def async_client(solana_test_validator) -> AsyncIterator[AsyncClient]:
|
||||
async_client = AsyncClient(commitment=Confirmed)
|
||||
total_attempts = 10
|
||||
current_attempt = 0
|
||||
while not event_loop.run_until_complete(async_client.is_connected()):
|
||||
while not await async_client.is_connected():
|
||||
if current_attempt == total_attempts:
|
||||
raise Exception("Could not connect to test validator")
|
||||
else:
|
||||
current_attempt += 1
|
||||
time.sleep(1)
|
||||
yield async_client
|
||||
event_loop.run_until_complete(async_client.close())
|
||||
await async_client.close()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def payer(event_loop, async_client) -> Keypair:
|
||||
@pytest_asyncio.fixture
|
||||
async def payer(async_client) -> Keypair:
|
||||
payer = Keypair()
|
||||
airdrop_lamports = 20_000_000_000
|
||||
event_loop.run_until_complete(airdrop(async_client, payer.public_key, airdrop_lamports))
|
||||
await airdrop(async_client, payer.public_key, airdrop_lamports)
|
||||
return payer
|
||||
|
||||
|
||||
|
|
|
@ -13,9 +13,10 @@ from stake_pool.state import StakePool, ValidatorList
|
|||
@pytest.mark.asyncio
|
||||
async def test_increase_decrease_this_is_very_slow(async_client, validators, payer, stake_pool_addresses, waiter):
|
||||
(stake_pool_address, validator_list_address) = stake_pool_addresses
|
||||
|
||||
resp = await async_client.get_minimum_balance_for_rent_exemption(STAKE_LEN)
|
||||
stake_rent_exemption = resp['result']
|
||||
increase_amount = MINIMUM_ACTIVE_STAKE * 2
|
||||
increase_amount = MINIMUM_ACTIVE_STAKE * 4
|
||||
decrease_amount = increase_amount // 2
|
||||
deposit_amount = (increase_amount + stake_rent_exemption) * len(validators)
|
||||
|
||||
|
|
Loading…
Reference in New Issue