Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions gcsfs/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -485,10 +485,8 @@ def pytest_ignore_collect(collection_path, config):
"delete",
"listing",
"read",
"read_fixed_duration",
"rename",
"write",
"write_fixed_duration",
"info",
}

Expand Down
4 changes: 2 additions & 2 deletions gcsfs/tests/perf/microbenchmarks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Configuration values are stored in YAML files (e.g., `configs.yaml`) located wit

## Configurators

Configurators are Python classes (e.g., `ReadFixedDurationConfigurator`, `ListingConfigurator`) responsible for parsing the YAML configuration files and converting them into a list of parameter objects (`BenchmarkParameters`). These objects are then consumed by the test files to generate parameterized test cases.
Configurators are Python classes (e.g., `ReadConfigurator`, `ListingConfigurator`) responsible for parsing the YAML configuration files and converting them into a list of parameter objects (`BenchmarkParameters`). These objects are then consumed by the test files to generate parameterized test cases.

## Benchmark File

Expand All @@ -77,7 +77,7 @@ The `run.py` script is the central entry point for executing benchmarks. It hand

| Option | Description | Required |
| :--- | :--- | :--- |
| `--group` | The benchmark group to run (e.g., `read`, `write`, `read_fixed_duration`, `write_fixed_duration`, `listing`, `info`). Runs all groups if not specified. | No |
| `--group` | The benchmark group to run (e.g., `read`, `write`, `listing`, `info`). Runs all groups if not specified. | No |
| `--config` | Specific scenario names to run (e.g., `read_seq`, `list_flat`). Accepts multiple values. | No |
| `--regional-bucket` | Name of the regional GCS bucket. | Yes* |
| `--zonal-bucket` | Name of the zonal GCS bucket. | Yes* |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
from gcsfs.tests.perf.microbenchmarks.configs import BaseBenchmarkConfigurator
from gcsfs.tests.perf.microbenchmarks.conftest import MB

from .parameters import ReadFixedDurationBenchmarkParameters
from .parameters import ReadBenchmarkParameters


class ReadFixedDurationConfigurator(BaseBenchmarkConfigurator):
class ReadConfigurator(BaseBenchmarkConfigurator):
def build_cases(self, scenario, common_config):
procs_list = scenario.get("processes", [1])
threads_list = scenario.get("threads", [1])
Expand Down Expand Up @@ -52,7 +52,7 @@ def build_cases(self, scenario, common_config):
else:
files_count = threads * procs

params = ReadFixedDurationBenchmarkParameters(
params = ReadBenchmarkParameters(
name=name,
pattern=pattern,
bucket_name=bucket_name,
Expand All @@ -70,5 +70,5 @@ def build_cases(self, scenario, common_config):
return cases


def get_read_fixed_duration_benchmark_cases():
return ReadFixedDurationConfigurator(__file__).generate_cases()
def get_read_benchmark_cases():
return ReadConfigurator(__file__).generate_cases()
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


@dataclass
class ReadFixedDurationBenchmarkParameters(IOBenchmarkParameters):
class ReadBenchmarkParameters(IOBenchmarkParameters):
"""
Defines the parameters for a read benchmark test cases with runtime.
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,14 @@

import pytest

from gcsfs.tests.perf.microbenchmarks.read_fixed_duration.configs import (
get_read_fixed_duration_benchmark_cases,
)
from gcsfs.tests.perf.microbenchmarks.read.configs import get_read_benchmark_cases
from gcsfs.tests.perf.microbenchmarks.runner import (
filter_test_cases,
run_multi_process,
run_single_threaded_fixed_duration,
)

BENCHMARK_GROUP = "read_fixed_duration"
BENCHMARK_GROUP = "read"


def _read_op_seq(gcs, file_paths, chunk_size, runtime):
Expand Down Expand Up @@ -57,7 +55,7 @@ def _random_read_worker(gcs, file_paths, chunk_size, offsets, runtime):
return _read_op_rand(gcs, file_paths, chunk_size, local_offsets, runtime)


all_benchmark_cases = get_read_fixed_duration_benchmark_cases()
all_benchmark_cases = get_read_benchmark_cases()
single_threaded_cases, _, multi_process_cases = filter_test_cases(all_benchmark_cases)


Expand Down
22 changes: 11 additions & 11 deletions gcsfs/tests/perf/microbenchmarks/test_configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@
ListingConfigurator,
get_listing_benchmark_cases,
)
from gcsfs.tests.perf.microbenchmarks.read_fixed_duration.configs import (
ReadFixedDurationConfigurator,
get_read_fixed_duration_benchmark_cases,
from gcsfs.tests.perf.microbenchmarks.read.configs import (
ReadConfigurator,
get_read_benchmark_cases,
)
from gcsfs.tests.perf.microbenchmarks.rename.configs import get_rename_benchmark_cases
from gcsfs.tests.perf.microbenchmarks.write_fixed_duration.configs import (
WriteFixedDurationConfigurator,
get_write_fixed_duration_benchmark_cases,
from gcsfs.tests.perf.microbenchmarks.write.configs import (
WriteConfigurator,
get_write_benchmark_cases,
)

MB = 1024 * 1024
Expand Down Expand Up @@ -87,7 +87,7 @@ def test_read_configurator(mock_config_dependencies):
"block_sizes_mb": [16],
}

configurator = ReadFixedDurationConfigurator("dummy")
configurator = ReadConfigurator("dummy")
cases = configurator.build_cases(scenario, common)

assert len(cases) == 1
Expand All @@ -113,7 +113,7 @@ def test_write_configurator(mock_config_dependencies):
}
scenario = {"name": "write_test", "processes": [2], "threads": [1]}

configurator = WriteFixedDurationConfigurator("dummy")
configurator = WriteConfigurator("dummy")
cases = configurator.build_cases(scenario, common)

assert len(cases) == 1
Expand Down Expand Up @@ -201,7 +201,7 @@ def test_generate_cases_calls_load(mock_config_dependencies):
mock.patch("yaml.safe_load", return_value=config_content),
):

configurator = WriteFixedDurationConfigurator("dummy")
configurator = WriteConfigurator("dummy")
cases = configurator.generate_cases()
assert len(cases) == 1
assert cases[0].name.startswith("test")
Expand All @@ -216,11 +216,11 @@ def test_validate_actual_yaml_configs():
# Ensure BENCHMARK_FILTER is empty so we load all cases
with mock.patch("gcsfs.tests.perf.microbenchmarks.configs.BENCHMARK_FILTER", ""):
# Read
cases = get_read_fixed_duration_benchmark_cases()
cases = get_read_benchmark_cases()
assert len(cases) > 0, "Read config produced no cases"

# Write
cases = get_write_fixed_duration_benchmark_cases()
cases = get_write_benchmark_cases()
assert len(cases) > 0, "Write config produced no cases"

# Listing
Expand Down
8 changes: 4 additions & 4 deletions gcsfs/tests/perf/microbenchmarks/test_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def test_setup_environment_missing_buckets():
@mock.patch("subprocess.run")
@mock.patch("os.path.isdir", return_value=True)
def test_run_benchmarks(mock_isdir, mock_subprocess):
args = argparse.Namespace(group="read_fixed_duration", log="true", log_level="INFO")
args = argparse.Namespace(group="read", log="true", log_level="INFO")
results_dir = "/tmp/results"

expected_json_path = os.path.join(results_dir, "results.json")
Expand All @@ -55,7 +55,7 @@ def test_run_benchmarks(mock_isdir, mock_subprocess):
def test_process_benchmark_result():
bench = {
"name": "test_bench",
"group": "read_fixed_duration",
"group": "read",
"extra_info": {"file_size": 100, "files": 2},
"stats": {"min": 0.1, "data": [0.1, 0.2]},
}
Expand All @@ -66,7 +66,7 @@ def test_process_benchmark_result():
row = run._process_benchmark_result(bench, headers, extra, stats)

assert row["name"] == "test_bench"
assert row["group"] == "read_fixed_duration"
assert row["group"] == "read"
assert row["file_size"] == 100
assert "p90" in row

Expand Down Expand Up @@ -116,7 +116,7 @@ def test_format_mb():
def test_create_table_row():
row = {
"bucket_type": "regional",
"group": "read_fixed_duration",
"group": "read",
"pattern": "seq",
"files": 1,
"folders": 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
from gcsfs.tests.perf.microbenchmarks.configs import BaseBenchmarkConfigurator
from gcsfs.tests.perf.microbenchmarks.conftest import MB

from .parameters import WriteFixedDurationBenchmarkParameters
from .parameters import WriteBenchmarkParameters


class WriteFixedDurationConfigurator(BaseBenchmarkConfigurator):
class WriteConfigurator(BaseBenchmarkConfigurator):
def build_cases(self, scenario, common_config):
procs_list = scenario.get("processes", [1])
threads_list = scenario.get("threads", [1])
Expand Down Expand Up @@ -40,7 +40,7 @@ def build_cases(self, scenario, common_config):
f"{chunk_size_mb}MB_chunk_{block_size_mb}MB_block_{bucket_type}_{runtime}s_duration"
)

params = WriteFixedDurationBenchmarkParameters(
params = WriteBenchmarkParameters(
name=name,
bucket_name=bucket_name,
bucket_type=bucket_type,
Expand All @@ -57,5 +57,5 @@ def build_cases(self, scenario, common_config):
return cases


def get_write_fixed_duration_benchmark_cases():
return WriteFixedDurationConfigurator(__file__).generate_cases()
def get_write_benchmark_cases():
return WriteConfigurator(__file__).generate_cases()
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


@dataclass
class WriteFixedDurationBenchmarkParameters(IOBenchmarkParameters):
class WriteBenchmarkParameters(IOBenchmarkParameters):
"""
Defines the parameters for a write benchmark test cases with runtime.
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@
run_multi_process,
run_single_threaded_fixed_duration,
)
from gcsfs.tests.perf.microbenchmarks.write_fixed_duration.configs import (
get_write_fixed_duration_benchmark_cases,
)
from gcsfs.tests.perf.microbenchmarks.write.configs import get_write_benchmark_cases

BENCHMARK_GROUP = "write_fixed_duration"
BENCHMARK_GROUP = "write"


def _write_op_seq_fixed_duration(gcs, file_path, chunk_size, runtime):
Expand All @@ -37,7 +35,7 @@ def _write_op_seq_fixed_duration(gcs, file_path, chunk_size, runtime):
return total_bytes_written


all_benchmark_cases = get_write_fixed_duration_benchmark_cases()
all_benchmark_cases = get_write_benchmark_cases()
single_threaded_cases, _, multi_process_cases = filter_test_cases(all_benchmark_cases)


Expand Down
Loading