diff --git a/.gitignore b/.gitignore index b32d8aa..80db74b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.pyc -.idea \ No newline at end of file +.idea +/volume/deluge* \ No newline at end of file diff --git a/benchmarks/conftest.py b/benchmarks/conftest.py index 0e09841..0b1b15c 100644 --- a/benchmarks/conftest.py +++ b/benchmarks/conftest.py @@ -1 +1 @@ -from benchmarks.core.tests.fixtures import * +from benchmarks.deluge.tests.fixtures import * diff --git a/benchmarks/core/tests/__init__.py b/benchmarks/core/experiments/__init__.py similarity index 100% rename from benchmarks/core/tests/__init__.py rename to benchmarks/core/experiments/__init__.py diff --git a/benchmarks/experiments/experiments.py b/benchmarks/core/experiments/experiments.py similarity index 100% rename from benchmarks/experiments/experiments.py rename to benchmarks/core/experiments/experiments.py diff --git a/benchmarks/experiments/static_experiment.py b/benchmarks/core/experiments/static_experiment.py similarity index 93% rename from benchmarks/experiments/static_experiment.py rename to benchmarks/core/experiments/static_experiment.py index b9dc068..fd6351e 100644 --- a/benchmarks/experiments/static_experiment.py +++ b/benchmarks/core/experiments/static_experiment.py @@ -1,10 +1,8 @@ -from pathlib import Path - from typing_extensions import Generic, List from benchmarks.core.network import TInitialMetadata, TNetworkHandle, Node from benchmarks.core.utils import Sampler, DataGenerator, DataHandle -from benchmarks.experiments.experiments import Experiment, RunnableExperiment, TRunnableExperiment +from benchmarks.core.experiments.experiments import Experiment, RunnableExperiment class _RunnableSDE(RunnableExperiment, Generic[TNetworkHandle, TInitialMetadata]): diff --git a/benchmarks/experiments/__init__.py b/benchmarks/core/experiments/tests/__init__.py similarity index 100% rename from benchmarks/experiments/__init__.py rename to benchmarks/core/experiments/tests/__init__.py diff --git a/benchmarks/experiments/tests/test_static_experiment.py b/benchmarks/core/experiments/tests/test_static_experiment.py similarity index 95% rename from benchmarks/experiments/tests/test_static_experiment.py rename to benchmarks/core/experiments/tests/test_static_experiment.py index 92043cb..cd5e56a 100644 --- a/benchmarks/experiments/tests/test_static_experiment.py +++ b/benchmarks/core/experiments/tests/test_static_experiment.py @@ -3,8 +3,8 @@ from pathlib import Path from typing import Optional, List, Tuple, Union from benchmarks.core.network import Node, DownloadHandle -from benchmarks.experiments.static_experiment import StaticDisseminationExperiment -from benchmarks.experiments.tests.utils import mock_sampler, MockGenerator +from benchmarks.core.experiments.static_experiment import StaticDisseminationExperiment +from benchmarks.core.experiments.tests.utils import mock_sampler, MockGenerator @dataclass diff --git a/benchmarks/experiments/tests/utils.py b/benchmarks/core/experiments/tests/utils.py similarity index 100% rename from benchmarks/experiments/tests/utils.py rename to benchmarks/core/experiments/tests/utils.py diff --git a/benchmarks/core/utils.py b/benchmarks/core/utils.py index 09c050d..5888d7b 100644 --- a/benchmarks/core/utils.py +++ b/benchmarks/core/utils.py @@ -1,5 +1,8 @@ +import os import random +import tempfile from abc import ABC, abstractmethod +from contextlib import contextmanager from dataclasses import dataclass from pathlib import Path from typing import Callable, Iterator, Tuple @@ -33,6 +36,18 @@ class DataGenerator(Generic[TInitialMetadata], ABC): pass +@contextmanager +def temp_random_file(size: int, name: str = 'data.bin'): + with tempfile.TemporaryDirectory() as temp_dir_str: + temp_dir = Path(temp_dir_str) + random_file = temp_dir / name + random_bytes = os.urandom(size) + with random_file.open('wb') as outfile: + outfile.write(random_bytes) + + yield random_file + + def sample(n: int) -> Iterator[int]: """Samples without replacement using a basic Fisher-Yates shuffle.""" p = list(range(0, n)) diff --git a/benchmarks/experiments/tests/__init__.py b/benchmarks/deluge/__init__.py similarity index 100% rename from benchmarks/experiments/tests/__init__.py rename to benchmarks/deluge/__init__.py diff --git a/benchmarks/core/deluge.py b/benchmarks/deluge/deluge_node.py similarity index 100% rename from benchmarks/core/deluge.py rename to benchmarks/deluge/deluge_node.py diff --git a/benchmarks/deluge/tests/__init__.py b/benchmarks/deluge/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/benchmarks/core/tests/fixtures.py b/benchmarks/deluge/tests/fixtures.py similarity index 71% rename from benchmarks/core/tests/fixtures.py rename to benchmarks/deluge/tests/fixtures.py index 84e0c43..a1af273 100644 --- a/benchmarks/core/tests/fixtures.py +++ b/benchmarks/deluge/tests/fixtures.py @@ -1,13 +1,12 @@ -import os -import tempfile from pathlib import Path from typing import Generator import pytest from urllib3.util import Url, parse_url -from benchmarks.core.deluge import DelugeNode +from benchmarks.core import utils from benchmarks.core.utils import megabytes +from benchmarks.deluge.deluge_node import DelugeNode from benchmarks.tests.utils import shared_volume @@ -31,14 +30,13 @@ def deluge_node2() -> Generator[DelugeNode, None, None]: @pytest.fixture -def temp_random_file() -> Generator[Path, None, None]: - with tempfile.TemporaryDirectory() as temp_dir_str: - temp_dir = Path(temp_dir_str) - random_file = temp_dir / 'data.bin' - random_bytes = os.urandom(megabytes(1)) - with random_file.open('wb') as outfile: - outfile.write(random_bytes) +def deluge_node3() -> Generator[DelugeNode, None, None]: + yield from deluge_node('deluge-3', 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 diff --git a/benchmarks/core/tests/test_deluge_node.py b/benchmarks/deluge/tests/test_deluge_node.py similarity index 95% rename from benchmarks/core/tests/test_deluge_node.py rename to benchmarks/deluge/tests/test_deluge_node.py index 8862dba..c35405d 100644 --- a/benchmarks/core/tests/test_deluge_node.py +++ b/benchmarks/deluge/tests/test_deluge_node.py @@ -2,8 +2,8 @@ from pathlib import Path from urllib3.util import Url -from benchmarks.core.deluge import DelugeNode, DelugeMeta from benchmarks.core.utils import megabytes +from benchmarks.deluge.deluge_node import DelugeNode, DelugeMeta def test_should_seed_files(deluge_node1: DelugeNode, temp_random_file: Path, tracker: Url): diff --git a/benchmarks/deluge/tests/test_deluge_static_experiment.py b/benchmarks/deluge/tests/test_deluge_static_experiment.py new file mode 100644 index 0000000..e700faa --- /dev/null +++ b/benchmarks/deluge/tests/test_deluge_static_experiment.py @@ -0,0 +1,16 @@ +# from benchmarks.core.utils import megabytes +# from benchmarks.core.experiments.static_experiment import StaticDisseminationExperiment +# from benchmarks.core.experiments.tests.utils import mock_sampler +# +# +# def test_should_run_with_a_single_seeder(deluge_node1, deluge_node2, deluge_node3): +# network = [deluge_node1, deluge_node2, deluge_node3] +# experiment = StaticDisseminationExperiment( +# network=network, +# seeders=1, +# sampler=mock_sampler([1]), +# generator=RandomTempFileGenerator(size=megabytes(50)) +# ) +# +# ready = experiment.setup() +# ready.run()