mirror of
https://github.com/esphome/esphome.git
synced 2026-07-10 17:05:36 +00:00
2d9d1eabfa
Each component that uses external_files (audio_file, speaker media_player, ...) currently calls download_content once per file inline inside a per-item config validator. With ~24 cached audio files in a Home Assistant Voice PE config, that means ~24 sequential HEAD round-trips, even when every response is a 304. This adds download_content_many(items, ...) which fans the per-file checks out across a ThreadPoolExecutor (capped at 16 workers so configs with hundreds of files don't open hundreds of sockets), then refactors audio_file and speaker.media_player to collect URLs at the list level and call the batch helper once instead of downloading inside each per-item validator. Wall time for the validation phase drops from sum(latency) to roughly max(latency) when the cache is warm.
Tests for ESPHome
This directory contains some tests for ESPHome.
At the moment, all the tests only work by simply executing
esphome over some YAML files that are made to test
whether the yaml gets converted to the proper C++ code.
Of course this is all just very high-level and things like unit tests would be much better. So if you have time and know how to set up a unit testing framework for python, please do give it a try.
When adding entries in test_.yaml files we usually need only
one file updated, unless conflicting code is generated for
different configurations, e.g. wifi and ethernet cannot
be tested on the same device.
Current test_.yaml file contents.
| Test name | Platform | Network | BLE |
|---|---|---|---|
| test1.yaml | ESP32 | wifi | None |
| test2.yaml | ESP32 | ethernet | esp32_ble_tracker |
| test3.yaml | ESP8266 | wifi | N/A |
| test4.yaml | ESP32 | ethernet | None |
| test5.yaml | ESP32 | wifi | ble_server |
| test6.yaml | RP2040 | wifi | N/A |
| test7.yaml | ESP32-C3 | wifi | N/A |
| test8.yaml | ESP32-S3 | wifi | None |
| test10.yaml | ESP32 | wifi | None |