49 lines
1.5 KiB
Python

import os
from pathlib import Path
from typing import Generator
import pytest
from urllib3.util import parse_url
from benchmarks.core import utils
from benchmarks.core.utils import megabytes, await_predicate
from benchmarks.deluge.deluge_node import DelugeNode
from benchmarks.deluge.tracker import Tracker
from benchmarks.tests.utils import shared_volume
def deluge_node(name: str, address: str, port: int) -> Generator[DelugeNode, None, None]:
node = DelugeNode(name, volume=shared_volume(), daemon_address=address, daemon_port=port)
assert await_predicate(node.is_ready, timeout=10, polling_interval=0.5)
node.wipe_all_torrents()
try:
yield node
finally:
node.wipe_all_torrents()
@pytest.fixture
def deluge_node1() -> Generator[DelugeNode, None, None]:
yield from deluge_node('deluge-1', os.environ.get('DELUGE_NODE_1', 'localhost'), 6890)
@pytest.fixture
def deluge_node2() -> Generator[DelugeNode, None, None]:
yield from deluge_node('deluge-2', os.environ.get('DELUGE_NODE_2', 'localhost'), 6893)
@pytest.fixture
def deluge_node3() -> Generator[DelugeNode, None, None]:
yield from deluge_node('deluge-3', os.environ.get('DELUGE_NODE_3', 'localhost'), 6896)
@pytest.fixture
def temp_random_file() -> Generator[Path, None, None]:
with utils.temp_random_file(size=megabytes(1)) as random_file:
yield random_file
@pytest.fixture
def tracker() -> Tracker:
return Tracker(parse_url(os.environ.get('TRACKER_ANNOUNCE_URL', 'http://127.0.0.1:8000/announce')))