mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-18 20:47:54 +00:00
Smallest possible benchmark result tracking.
This commit is contained in:
parent
31624019be
commit
c88c241f5c
@ -9,6 +9,8 @@ from os.path import abspath
|
||||
from shutil import which, rmtree
|
||||
from tempfile import mkdtemp
|
||||
from pathlib import Path
|
||||
from contextlib import contextmanager
|
||||
from time import time
|
||||
|
||||
import pytest
|
||||
import pytest_twisted
|
||||
@ -105,3 +107,22 @@ def client_node(request, grid, storage_nodes, number_of_nodes) -> Client:
|
||||
)
|
||||
print(f"Client node pid: {client_node.process.transport.pid}")
|
||||
return client_node
|
||||
|
||||
|
||||
class Benchmarker:
|
||||
"""Keep track of benchmarking results."""
|
||||
|
||||
@contextmanager
|
||||
def record(self, name, **parameters):
|
||||
"""Record the timing of running some code, if it succeeds."""
|
||||
start = time()
|
||||
yield
|
||||
elapsed = time() - start
|
||||
# For now we just print the outcome:
|
||||
parameters = " ".join(f"{k}={v}" for (k, v) in parameters.items())
|
||||
print(f"BENCHMARK RESULT: {name} {parameters} elapsed {elapsed} secs")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def tahoe_benchmarker():
|
||||
return Benchmarker()
|
||||
|
@ -12,7 +12,9 @@ def cli_alias(client_node):
|
||||
cli(client_node.process, "create-alias", "cli")
|
||||
|
||||
|
||||
def test_get_put_one_file(client_node, cli_alias, tmp_path):
|
||||
def test_get_put_one_file(
|
||||
client_node, cli_alias, tmp_path, tahoe_benchmarker, number_of_nodes
|
||||
):
|
||||
"""
|
||||
Upload a file with ``tahoe put`` and then download it with ``tahoe get``,
|
||||
measuring the latency of both operations.
|
||||
@ -20,21 +22,27 @@ def test_get_put_one_file(client_node, cli_alias, tmp_path):
|
||||
file_size = 1000 # parameterize later on
|
||||
file_path = tmp_path / "file"
|
||||
DATA = b"0123456789" * (file_size // 10)
|
||||
|
||||
with file_path.open("wb") as f:
|
||||
f.write(DATA)
|
||||
cli(client_node.process, "put", str(file_path), "cli:tostdout")
|
||||
|
||||
p = Popen(
|
||||
[
|
||||
"tahoe",
|
||||
"--node-directory",
|
||||
client_node.process.node_dir,
|
||||
"get",
|
||||
"cli:tostdout",
|
||||
"-",
|
||||
],
|
||||
stdout=PIPE,
|
||||
)
|
||||
assert p.stdout.read() == DATA
|
||||
assert p.wait() == 0
|
||||
with tahoe_benchmarker.record(
|
||||
"cli-put-file", file_size=file_size, number_of_nodes=number_of_nodes
|
||||
):
|
||||
cli(client_node.process, "put", str(file_path), "cli:tostdout")
|
||||
|
||||
with tahoe_benchmarker.record(
|
||||
"cli-get-file", file_size=file_size, number_of_nodes=number_of_nodes
|
||||
):
|
||||
p = Popen(
|
||||
[
|
||||
"tahoe",
|
||||
"--node-directory",
|
||||
client_node.process.node_dir,
|
||||
"get",
|
||||
"cli:tostdout",
|
||||
"-",
|
||||
],
|
||||
stdout=PIPE,
|
||||
)
|
||||
assert p.stdout.read() == DATA
|
||||
assert p.wait() == 0
|
||||
|
Loading…
Reference in New Issue
Block a user