Skip to content

Commit

Permalink
more fallback provider test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
miohtama committed Jul 22, 2023
1 parent bf8fb41 commit 33109e1
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

- Add MEV blocking support
- Add JSON-RPC fallback switching
- Add `HotWallet.create_for_testing`

# 0.21.8

Expand Down
31 changes: 27 additions & 4 deletions tests/test_fallback_provider.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""Test JSON-RPC provider fallback mechanism."""
from unittest.mock import patch
from unittest.mock import patch, DEFAULT

import pytest
import requests
Expand Down Expand Up @@ -84,8 +84,31 @@ def test_fallback_double_fault_recovery(fallback_provider: FallbackProvider, pro

web3 = Web3(fallback_provider)

with patch.object(provider_1, "make_request", side_effect=requests.exceptions.ConnectionError), \
patch.object(provider_2, "make_request", side_effect=requests.exceptions.ConnectionError):
count = 0

with pytest.raises(requests.exceptions.ConnectionError):
def borg_start(*args, **kwargs):
nonlocal count
count += 1
if count <= 2:
raise requests.exceptions.ConnectionError()
return DEFAULT

with patch.object(provider_1, "make_request", side_effect=borg_start), \
patch.object(provider_2, "make_request", side_effect=borg_start):

web3.eth.block_number

assert fallback_provider.api_call_counts[0]["eth_blockNumber"] == 1
assert fallback_provider.api_call_counts[1]["eth_blockNumber"] == 0
assert fallback_provider.retry_count == 2
assert fallback_provider.currently_active_provider == 0


def test_fallback_unhandled_exception(fallback_provider: FallbackProvider, provider_1):
"""Exception fallback provider cannot handle"""

web3 = Web3(fallback_provider)

with patch.object(provider_1, "make_request", side_effect=RuntimeError):
with pytest.raises(RuntimeError):
web3.eth.block_number

0 comments on commit 33109e1

Please sign in to comment.