Skip to content
This repository was archived by the owner on Mar 11, 2025. It is now read-only.

Commit 3a7914c

Browse files
authored
stake-pool-py: Fix tests for Solana 1.10.33 (#3395)
1 parent d1e842c commit 3a7914c

File tree

3 files changed

+21
-31
lines changed

3 files changed

+21
-31
lines changed

stake-pool/py/requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pyflakes==2.4.0
2424
PyNaCl==1.4.0
2525
pyparsing==2.4.7
2626
pytest==6.2.5
27-
pytest-asyncio==0.16.0
27+
pytest-asyncio==0.19.0
2828
requests==2.26.0
2929
rfc3986==1.5.0
3030
six==1.16.0

stake-pool/py/tests/conftest.py

+18-29
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import asyncio
22
import pytest
3+
import pytest_asyncio
34
import os
45
import shutil
56
import tempfile
67
import time
7-
from typing import Iterator, List, Tuple
8+
from typing import AsyncIterator, List, Tuple
89
from subprocess import Popen
910

1011
from solana.keypair import Keypair
@@ -38,62 +39,50 @@ def solana_test_validator():
3839
shutil.rmtree(newpath)
3940

4041

41-
@pytest.fixture
42-
def validators(event_loop, async_client, payer) -> List[PublicKey]:
42+
@pytest_asyncio.fixture
43+
async def validators(async_client, payer) -> List[PublicKey]:
4344
num_validators = 3
4445
validators = []
4546
for i in range(num_validators):
4647
vote = Keypair()
4748
node = Keypair()
48-
event_loop.run_until_complete(
49-
create_vote(async_client, payer, vote, node, payer.public_key, payer.public_key, 10)
50-
)
49+
await create_vote(async_client, payer, vote, node, payer.public_key, payer.public_key, 10)
5150
validators.append(vote.public_key)
5251
return validators
5352

5453

55-
@pytest.fixture
56-
def stake_pool_addresses(event_loop, async_client, payer, validators, waiter) -> Tuple[PublicKey, PublicKey]:
54+
@pytest_asyncio.fixture
55+
async def stake_pool_addresses(async_client, payer, validators, waiter) -> Tuple[PublicKey, PublicKey]:
5756
fee = Fee(numerator=1, denominator=1000)
5857
referral_fee = 20
59-
event_loop.run_until_complete(waiter.wait_for_next_epoch_if_soon(async_client))
60-
stake_pool_addresses = event_loop.run_until_complete(
61-
create_all(async_client, payer, fee, referral_fee)
62-
)
58+
# Change back to `wait_for_next_epoch_if_soon` once https://github.com/solana-labs/solana/pull/26851 is available
59+
await waiter.wait_for_next_epoch(async_client)
60+
stake_pool_addresses = await create_all(async_client, payer, fee, referral_fee)
6361
for validator in validators:
64-
event_loop.run_until_complete(
65-
add_validator_to_pool(async_client, payer, stake_pool_addresses[0], validator)
66-
)
62+
await add_validator_to_pool(async_client, payer, stake_pool_addresses[0], validator)
6763
return stake_pool_addresses
6864

6965

70-
@pytest.fixture
71-
def event_loop():
72-
loop = asyncio.get_event_loop()
73-
yield loop
74-
loop.close()
75-
76-
77-
@pytest.fixture
78-
def async_client(event_loop, solana_test_validator) -> Iterator[AsyncClient]:
66+
@pytest_asyncio.fixture
67+
async def async_client(solana_test_validator) -> AsyncIterator[AsyncClient]:
7968
async_client = AsyncClient(commitment=Confirmed)
8069
total_attempts = 10
8170
current_attempt = 0
82-
while not event_loop.run_until_complete(async_client.is_connected()):
71+
while not await async_client.is_connected():
8372
if current_attempt == total_attempts:
8473
raise Exception("Could not connect to test validator")
8574
else:
8675
current_attempt += 1
8776
time.sleep(1)
8877
yield async_client
89-
event_loop.run_until_complete(async_client.close())
78+
await async_client.close()
9079

9180

92-
@pytest.fixture
93-
def payer(event_loop, async_client) -> Keypair:
81+
@pytest_asyncio.fixture
82+
async def payer(async_client) -> Keypair:
9483
payer = Keypair()
9584
airdrop_lamports = 20_000_000_000
96-
event_loop.run_until_complete(airdrop(async_client, payer.public_key, airdrop_lamports))
85+
await airdrop(async_client, payer.public_key, airdrop_lamports)
9786
return payer
9887

9988

stake-pool/py/tests/test_a_time_sensitive.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
@pytest.mark.asyncio
1414
async def test_increase_decrease_this_is_very_slow(async_client, validators, payer, stake_pool_addresses, waiter):
1515
(stake_pool_address, validator_list_address) = stake_pool_addresses
16+
1617
resp = await async_client.get_minimum_balance_for_rent_exemption(STAKE_LEN)
1718
stake_rent_exemption = resp['result']
18-
increase_amount = MINIMUM_ACTIVE_STAKE * 2
19+
increase_amount = MINIMUM_ACTIVE_STAKE * 4
1920
decrease_amount = increase_amount // 2
2021
deposit_amount = (increase_amount + stake_rent_exemption) * len(validators)
2122

0 commit comments

Comments
 (0)