From 8db768a987c6416f7ec555d8563a9e5c97cd2715 Mon Sep 17 00:00:00 2001 From: Jon Cinque Date: Fri, 29 Jul 2022 22:18:44 +0200 Subject: [PATCH] stake-pool-py: Fix tests for Solana 1.10.33 --- stake-pool/py/requirements.txt | 2 +- stake-pool/py/tests/conftest.py | 47 ++++++++------------ stake-pool/py/tests/test_a_time_sensitive.py | 3 +- 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/stake-pool/py/requirements.txt b/stake-pool/py/requirements.txt index 32b09a63bdc..2a39c6063d1 100644 --- a/stake-pool/py/requirements.txt +++ b/stake-pool/py/requirements.txt @@ -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 diff --git a/stake-pool/py/tests/conftest.py b/stake-pool/py/tests/conftest.py index a5a4f1781c1..660bbe97a48 100644 --- a/stake-pool/py/tests/conftest.py +++ b/stake-pool/py/tests/conftest.py @@ -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 diff --git a/stake-pool/py/tests/test_a_time_sensitive.py b/stake-pool/py/tests/test_a_time_sensitive.py index 82e82764ba1..abac2005318 100644 --- a/stake-pool/py/tests/test_a_time_sensitive.py +++ b/stake-pool/py/tests/test_a_time_sensitive.py @@ -13,9 +13,10 @@ @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)