mirror of
https://github.com/esphome/esphome.git
synced 2026-10-07 11:26:39 +00:00
[ci] Trigger CodSpeed benchmarks on host platform changes (#15995)
This commit is contained in:
@@ -402,8 +402,11 @@ def should_run_benchmarks(branch: str | None = None) -> bool:
|
|||||||
Benchmarks run when any of the following conditions are met:
|
Benchmarks run when any of the following conditions are met:
|
||||||
|
|
||||||
1. Core C++ files changed (esphome/core/*)
|
1. Core C++ files changed (esphome/core/*)
|
||||||
2. A directly changed component has benchmark files (no dependency expansion)
|
2. The host platform changed (esphome/components/host/*) — benchmarks
|
||||||
3. Benchmark infrastructure changed (tests/benchmarks/*, script/cpp_benchmark.py,
|
are built and run on the host platform, so its implementations of
|
||||||
|
``millis()``/``micros()``/etc. affect every benchmark
|
||||||
|
3. A directly changed component has benchmark files (no dependency expansion)
|
||||||
|
4. Benchmark infrastructure changed (tests/benchmarks/*, script/cpp_benchmark.py,
|
||||||
script/build_helpers.py, script/setup_codspeed_lib.py)
|
script/build_helpers.py, script/setup_codspeed_lib.py)
|
||||||
|
|
||||||
Unlike unit tests, benchmarks do NOT expand to dependent components.
|
Unlike unit tests, benchmarks do NOT expand to dependent components.
|
||||||
@@ -420,6 +423,10 @@ def should_run_benchmarks(branch: str | None = None) -> bool:
|
|||||||
if core_changed(files):
|
if core_changed(files):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# Host platform supplies the runtime that benchmarks execute on
|
||||||
|
if any(f.startswith("esphome/components/host/") for f in files):
|
||||||
|
return True
|
||||||
|
|
||||||
# Check if benchmark infrastructure changed
|
# Check if benchmark infrastructure changed
|
||||||
if any(
|
if any(
|
||||||
f.startswith("tests/benchmarks/") or f in BENCHMARK_INFRASTRUCTURE_FILES
|
f.startswith("tests/benchmarks/") or f in BENCHMARK_INFRASTRUCTURE_FILES
|
||||||
|
|||||||
@@ -1842,6 +1842,22 @@ def test_should_run_benchmarks_core_header_change() -> None:
|
|||||||
assert determine_jobs.should_run_benchmarks() is True
|
assert determine_jobs.should_run_benchmarks() is True
|
||||||
|
|
||||||
|
|
||||||
|
def test_should_run_benchmarks_host_platform_change() -> None:
|
||||||
|
"""Test benchmarks trigger on host platform changes.
|
||||||
|
|
||||||
|
Benchmarks build and run on the host platform, so changes to its
|
||||||
|
millis()/micros()/etc. implementations affect every benchmark.
|
||||||
|
"""
|
||||||
|
for host_file in [
|
||||||
|
"esphome/components/host/core.cpp",
|
||||||
|
"esphome/components/host/__init__.py",
|
||||||
|
]:
|
||||||
|
with patch.object(determine_jobs, "changed_files", return_value=[host_file]):
|
||||||
|
assert determine_jobs.should_run_benchmarks() is True, (
|
||||||
|
f"Expected benchmarks to run for {host_file}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_should_run_benchmarks_benchmark_infra_change() -> None:
|
def test_should_run_benchmarks_benchmark_infra_change() -> None:
|
||||||
"""Test benchmarks trigger on benchmark infrastructure changes."""
|
"""Test benchmarks trigger on benchmark infrastructure changes."""
|
||||||
for infra_file in [
|
for infra_file in [
|
||||||
|
|||||||
Reference in New Issue
Block a user