diff --git a/gcsfs/tests/conftest.py b/gcsfs/tests/conftest.py index 2318b49e7..ac9e9e8d3 100644 --- a/gcsfs/tests/conftest.py +++ b/gcsfs/tests/conftest.py @@ -485,10 +485,8 @@ def pytest_ignore_collect(collection_path, config): "delete", "listing", "read", - "read_fixed_duration", "rename", "write", - "write_fixed_duration", "info", } diff --git a/gcsfs/tests/perf/microbenchmarks/README.md b/gcsfs/tests/perf/microbenchmarks/README.md index 4d35fab92..ddb314eb4 100644 --- a/gcsfs/tests/perf/microbenchmarks/README.md +++ b/gcsfs/tests/perf/microbenchmarks/README.md @@ -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 @@ -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* | diff --git a/gcsfs/tests/perf/microbenchmarks/read_fixed_duration/configs.py b/gcsfs/tests/perf/microbenchmarks/read/configs.py similarity index 88% rename from gcsfs/tests/perf/microbenchmarks/read_fixed_duration/configs.py rename to gcsfs/tests/perf/microbenchmarks/read/configs.py index d6a6526e0..2352f4dd1 100644 --- a/gcsfs/tests/perf/microbenchmarks/read_fixed_duration/configs.py +++ b/gcsfs/tests/perf/microbenchmarks/read/configs.py @@ -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]) @@ -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, @@ -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() diff --git a/gcsfs/tests/perf/microbenchmarks/read_fixed_duration/configs.yaml b/gcsfs/tests/perf/microbenchmarks/read/configs.yaml similarity index 100% rename from gcsfs/tests/perf/microbenchmarks/read_fixed_duration/configs.yaml rename to gcsfs/tests/perf/microbenchmarks/read/configs.yaml diff --git a/gcsfs/tests/perf/microbenchmarks/read_fixed_duration/parameters.py b/gcsfs/tests/perf/microbenchmarks/read/parameters.py similarity index 86% rename from gcsfs/tests/perf/microbenchmarks/read_fixed_duration/parameters.py rename to gcsfs/tests/perf/microbenchmarks/read/parameters.py index 6cfc8b1ed..8c6a3151b 100644 --- a/gcsfs/tests/perf/microbenchmarks/read_fixed_duration/parameters.py +++ b/gcsfs/tests/perf/microbenchmarks/read/parameters.py @@ -4,7 +4,7 @@ @dataclass -class ReadFixedDurationBenchmarkParameters(IOBenchmarkParameters): +class ReadBenchmarkParameters(IOBenchmarkParameters): """ Defines the parameters for a read benchmark test cases with runtime. """ diff --git a/gcsfs/tests/perf/microbenchmarks/read_fixed_duration/test_read.py b/gcsfs/tests/perf/microbenchmarks/read/test_read.py similarity index 95% rename from gcsfs/tests/perf/microbenchmarks/read_fixed_duration/test_read.py rename to gcsfs/tests/perf/microbenchmarks/read/test_read.py index b1f91a21b..4b472b9fb 100644 --- a/gcsfs/tests/perf/microbenchmarks/read_fixed_duration/test_read.py +++ b/gcsfs/tests/perf/microbenchmarks/read/test_read.py @@ -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): @@ -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) diff --git a/gcsfs/tests/perf/microbenchmarks/test_configs.py b/gcsfs/tests/perf/microbenchmarks/test_configs.py index 55870e1ea..0f3be17c5 100644 --- a/gcsfs/tests/perf/microbenchmarks/test_configs.py +++ b/gcsfs/tests/perf/microbenchmarks/test_configs.py @@ -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 @@ -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 @@ -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 @@ -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") @@ -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 diff --git a/gcsfs/tests/perf/microbenchmarks/test_run.py b/gcsfs/tests/perf/microbenchmarks/test_run.py index 7e2156051..489f3dbff 100644 --- a/gcsfs/tests/perf/microbenchmarks/test_run.py +++ b/gcsfs/tests/perf/microbenchmarks/test_run.py @@ -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") @@ -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]}, } @@ -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 @@ -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, diff --git a/gcsfs/tests/perf/microbenchmarks/write_fixed_duration/configs.py b/gcsfs/tests/perf/microbenchmarks/write/configs.py similarity index 86% rename from gcsfs/tests/perf/microbenchmarks/write_fixed_duration/configs.py rename to gcsfs/tests/perf/microbenchmarks/write/configs.py index 5991f58c0..8566f1719 100644 --- a/gcsfs/tests/perf/microbenchmarks/write_fixed_duration/configs.py +++ b/gcsfs/tests/perf/microbenchmarks/write/configs.py @@ -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]) @@ -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, @@ -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() diff --git a/gcsfs/tests/perf/microbenchmarks/write_fixed_duration/configs.yaml b/gcsfs/tests/perf/microbenchmarks/write/configs.yaml similarity index 100% rename from gcsfs/tests/perf/microbenchmarks/write_fixed_duration/configs.yaml rename to gcsfs/tests/perf/microbenchmarks/write/configs.yaml diff --git a/gcsfs/tests/perf/microbenchmarks/write_fixed_duration/parameters.py b/gcsfs/tests/perf/microbenchmarks/write/parameters.py similarity index 83% rename from gcsfs/tests/perf/microbenchmarks/write_fixed_duration/parameters.py rename to gcsfs/tests/perf/microbenchmarks/write/parameters.py index 6ac26c3bf..95f141f3f 100644 --- a/gcsfs/tests/perf/microbenchmarks/write_fixed_duration/parameters.py +++ b/gcsfs/tests/perf/microbenchmarks/write/parameters.py @@ -4,7 +4,7 @@ @dataclass -class WriteFixedDurationBenchmarkParameters(IOBenchmarkParameters): +class WriteBenchmarkParameters(IOBenchmarkParameters): """ Defines the parameters for a write benchmark test cases with runtime. """ diff --git a/gcsfs/tests/perf/microbenchmarks/write_fixed_duration/test_write.py b/gcsfs/tests/perf/microbenchmarks/write/test_write.py similarity index 93% rename from gcsfs/tests/perf/microbenchmarks/write_fixed_duration/test_write.py rename to gcsfs/tests/perf/microbenchmarks/write/test_write.py index bccd39314..dd58a81ec 100644 --- a/gcsfs/tests/perf/microbenchmarks/write_fixed_duration/test_write.py +++ b/gcsfs/tests/perf/microbenchmarks/write/test_write.py @@ -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): @@ -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)