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