mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-09 22:50:54 +00:00
Refactor interop tests and factories
- Add `close` and `disconnect` in `Host` - Add `close` and `close_peer` in `Network` - Change `IListener.close` to async, to await for server's closing - Add factories for security transports, and modify `HostFactory`
This commit is contained in:
@ -1,38 +1,7 @@
|
||||
import asyncio
|
||||
|
||||
import pytest
|
||||
|
||||
from tests.configs import LISTEN_MADDR
|
||||
from tests.factories import FloodsubFactory, GossipsubFactory, PubsubFactory
|
||||
from tests.pubsub.configs import GOSSIPSUB_PARAMS
|
||||
from tests.pubsub.factories import (
|
||||
FloodsubFactory,
|
||||
GossipsubFactory,
|
||||
HostFactory,
|
||||
PubsubFactory,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def num_hosts():
|
||||
return 3
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
async def hosts(num_hosts):
|
||||
_hosts = HostFactory.create_batch(num_hosts)
|
||||
await asyncio.gather(
|
||||
*[_host.get_network().listen(LISTEN_MADDR) for _host in _hosts]
|
||||
)
|
||||
try:
|
||||
yield _hosts
|
||||
finally:
|
||||
# Clean up
|
||||
listeners = []
|
||||
for _host in _hosts:
|
||||
for listener in _host.get_network().listeners.values():
|
||||
listener.server.close()
|
||||
listeners.append(listener)
|
||||
await asyncio.gather(*[listener.server.wait_closed() for listener in listeners])
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@ -5,8 +5,8 @@ from libp2p.host.host_interface import IHost
|
||||
from libp2p.pubsub.floodsub import FloodSub
|
||||
from libp2p.pubsub.pubsub import Pubsub
|
||||
from tests.configs import LISTEN_MADDR
|
||||
from tests.factories import FloodsubFactory, PubsubFactory
|
||||
|
||||
from .factories import FloodsubFactory, PubsubFactory
|
||||
from .utils import message_id_generator
|
||||
|
||||
CRYPTO_TOPIC = "ethereum"
|
||||
|
||||
@ -1,57 +0,0 @@
|
||||
import factory
|
||||
|
||||
from libp2p import initialize_default_swarm
|
||||
from libp2p.crypto.rsa import create_new_key_pair
|
||||
from libp2p.host.basic_host import BasicHost
|
||||
from libp2p.pubsub.floodsub import FloodSub
|
||||
from libp2p.pubsub.gossipsub import GossipSub
|
||||
from libp2p.pubsub.pubsub import Pubsub
|
||||
from tests.configs import LISTEN_MADDR
|
||||
from tests.pubsub.configs import (
|
||||
FLOODSUB_PROTOCOL_ID,
|
||||
GOSSIPSUB_PARAMS,
|
||||
GOSSIPSUB_PROTOCOL_ID,
|
||||
)
|
||||
|
||||
|
||||
def swarm_factory():
|
||||
private_key = create_new_key_pair()
|
||||
return initialize_default_swarm(private_key, transport_opt=[str(LISTEN_MADDR)])
|
||||
|
||||
|
||||
class HostFactory(factory.Factory):
|
||||
class Meta:
|
||||
model = BasicHost
|
||||
|
||||
network = factory.LazyFunction(swarm_factory)
|
||||
|
||||
|
||||
class FloodsubFactory(factory.Factory):
|
||||
class Meta:
|
||||
model = FloodSub
|
||||
|
||||
protocols = (FLOODSUB_PROTOCOL_ID,)
|
||||
|
||||
|
||||
class GossipsubFactory(factory.Factory):
|
||||
class Meta:
|
||||
model = GossipSub
|
||||
|
||||
protocols = (GOSSIPSUB_PROTOCOL_ID,)
|
||||
degree = GOSSIPSUB_PARAMS.degree
|
||||
degree_low = GOSSIPSUB_PARAMS.degree_low
|
||||
degree_high = GOSSIPSUB_PARAMS.degree_high
|
||||
time_to_live = GOSSIPSUB_PARAMS.time_to_live
|
||||
gossip_window = GOSSIPSUB_PARAMS.gossip_window
|
||||
gossip_history = GOSSIPSUB_PARAMS.gossip_history
|
||||
heartbeat_interval = GOSSIPSUB_PARAMS.heartbeat_interval
|
||||
|
||||
|
||||
class PubsubFactory(factory.Factory):
|
||||
class Meta:
|
||||
model = Pubsub
|
||||
|
||||
host = factory.SubFactory(HostFactory)
|
||||
router = None
|
||||
my_id = factory.LazyAttribute(lambda obj: obj.host.get_id())
|
||||
cache_size = None
|
||||
@ -3,10 +3,10 @@ import asyncio
|
||||
import pytest
|
||||
|
||||
from tests.configs import LISTEN_MADDR
|
||||
from tests.factories import PubsubFactory
|
||||
from tests.utils import cleanup, connect
|
||||
|
||||
from .configs import FLOODSUB_PROTOCOL_ID
|
||||
from .factories import PubsubFactory
|
||||
|
||||
SUPPORTED_PROTOCOLS = [FLOODSUB_PROTOCOL_ID]
|
||||
|
||||
|
||||
@ -3,9 +3,9 @@ import asyncio
|
||||
import pytest
|
||||
|
||||
from libp2p.peer.id import ID
|
||||
from tests.factories import FloodsubFactory
|
||||
from tests.utils import cleanup, connect
|
||||
|
||||
from .factories import FloodsubFactory
|
||||
from .floodsub_integration_test_settings import (
|
||||
floodsub_protocol_pytest_params,
|
||||
perform_test_from_obj,
|
||||
|
||||
@ -2,8 +2,9 @@ import functools
|
||||
|
||||
import pytest
|
||||
|
||||
from tests.factories import GossipsubFactory
|
||||
|
||||
from .configs import FLOODSUB_PROTOCOL_ID
|
||||
from .factories import GossipsubFactory
|
||||
from .floodsub_integration_test_settings import (
|
||||
floodsub_protocol_pytest_params,
|
||||
perform_test_from_obj,
|
||||
|
||||
Reference in New Issue
Block a user