Commit Graph

632 Commits (assist-pipeline-tts-end)

Author SHA1 Message Date
J. Nick Koston db494de809
Restore __slots__ to core objects (#127441) 2024-10-03 22:23:47 +02:00
Erik Montnemery 3f1acdc9ec
Make recorder WS command recorder/clear_statistics wait (#127120) 2024-10-02 10:43:40 +02:00
Erik Montnemery 2a2af01d12
Make recorder WS command recorder/update_statistics_metadata wait (#127179) 2024-10-02 09:56:36 +02:00
J. Nick Koston e87542e091
Fix removing nulls when encoding events for PostgreSQL (#127053) 2024-09-30 09:01:41 +02:00
Erik Montnemery 66ab90b518
Add EntityIDPostMigration data migrator class (#125307) 2024-09-27 14:58:34 +02:00
Erik Montnemery 771575cfc5
Make statistics validation create issue registry issues (#122595)
* Make statistics validation create issue registry issues

* Disable creating issue about outdated MariaDB version in tests

* Use call_soon_threadsafe instead of run_callback_threadsafe

* Update tests

* Fix flapping test

* Disable creating issue about outdated SQLite version in tests

* Implement agreed changes

* Add translation strings for issue titles

* Update test
2024-09-25 11:11:11 +02:00
Erik Montnemery 161f37bb98
Add tests which directly test the recorder job wrappers (#125338) 2024-09-24 23:00:00 +02:00
Erik Montnemery ba5f1ac2a9
Bump version of recorder context ID data migrators (#125293) 2024-09-24 13:45:37 +02:00
G Johansson 93aade6e8e
Change lock state to an enum (#126379)
* Add new LockState enum for lock states

* Add rest

* Fix insteon tests

* Fix mqtt tests

* Fix tesla_fleet

* Revert back ST_STATE_LOCKED

* Add back constant
2024-09-24 12:30:50 +02:00
Erik Montnemery bde92b34dd
Remove recorder history queries for database schemas < 31 (#125652) 2024-09-10 19:26:19 +02:00
Erik Montnemery 99122fcb78
Remove recorder history queries for database schemas < 25 (#125649) 2024-09-10 12:43:08 +02:00
Erik Montnemery 2a1df2063d
Separate recorder test fixtures disabling context id migration (#125324)
* Separate recorder test fixtures disabling context id migration

* Fix test
2024-09-09 08:16:30 +02:00
Erik Montnemery 0ca0836e83
Correct check for removed index in recorder test (#125323) 2024-09-06 07:21:41 +02:00
Erik Montnemery 8fd691be69
Teach recorder data migrator base class to remove index (#125168)
* Teach recorder data migrator base class to remove index

* Fix tests
2024-09-04 09:52:41 +02:00
Erik Montnemery 7fc0e36b2f
Move recorder EntityIDPostMigrationTask to migration (#125136)
* Move recorder EntityIDPostMigrationTask to migration

* Update test
2024-09-04 08:38:46 +02:00
Erik Montnemery d8382c6de2
Improve recorder tests to check indices are removed (#125164) 2024-09-03 22:56:27 +02:00
Erik Montnemery cc3d059783
Refactor recorder EventIDPostMigration data migrator (#125126) 2024-09-03 22:37:50 +02:00
Erik Montnemery 1dcae0c0a6
Improve some comments in recorder tests (#125118) 2024-09-03 17:04:08 +02:00
Erik Montnemery 606524f9e7
Test string timestamps are wiped after migration to schema version 32 (#125091)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-09-02 21:33:35 +02:00
Erik Montnemery 0b14f0a379
Add test of statistics timestamp migration (#125100) 2024-09-02 09:13:26 -10:00
Erik Montnemery 9f558d13e6
Correct start version in recorder schema migration tests (#125090)
* Correct start version in recorder schema migration tests

* Remove default from states.last_updated_ts
2024-09-02 19:32:01 +02:00
Erik Montnemery b9aaba0432
Prevent duplicating constraints during schema migration (#124616) 2024-08-26 08:35:54 -10:00
J. Nick Koston 6f66f37fc7
Shutdown database engine before waiting for executor shutdown (#117339)
* Close database connection before stopping the executor

related issue #117004

* Close database connection before waiting for database executor to finish

related issue #117004

* fix test

* fix

* drop unused arg

* Revert "drop unused arg"

This reverts commit 8a9fe6a24a.

* docstring

* comment
2024-08-22 16:47:22 +02:00
epenet c76d68503a
Add missing hass type hint in history and recorder tests (#124204) 2024-08-19 15:41:09 +02:00
Erik Montnemery 06d1bbc20f
Update recorder tests to async (#124161) 2024-08-18 21:14:41 +02:00
Erik Montnemery ce2ffde22e
Update sensor recorder tests to async (#124061) 2024-08-18 13:20:58 -05:00
Erik Montnemery a7bca9bcea
Use BIGINT SQL type for ID columns (#123973)
Redo recorder ID migration from INT to BIGINT
2024-08-17 11:01:14 +02:00
epenet 66a8733333
Add missing return type in test __init__ method (part 4) (#123947) 2024-08-16 10:26:12 +02:00
Erik Montnemery 64a68b17f4
Simplify recorder.migration._drop_foreign_key_constraints (#123968) 2024-08-15 11:58:52 -05:00
Erik Montnemery f72d9a2c02
Raise on database error in recorder.migration._modify_columns (#123642)
* Raise on database error in recorder.migration._modify_columns

* Improve test coverage
2024-08-15 14:46:23 +02:00
Erik Montnemery 26e80cec3d
Deduplicate some recorder migration tests (#123972) 2024-08-15 11:09:24 +02:00
Erik Montnemery 81c4bb5f72
Fix flaky recorder migration tests (#123971) 2024-08-15 10:32:40 +02:00
Erik Montnemery 667414a457
Raise on database error in recorder.migration._drop_foreign_key_constraints (#123645)
* Raise on database error in recorder.migration._drop_foreign_key_constraints

* Fix test

* Fix test

* Revert "Fix test"

This reverts commit 940b8cb506e912826d43d09d7697c10888bdf685.

* Update test

* Improve test coverage

* Disable test for SQLite
2024-08-15 08:25:18 +02:00
Erik Montnemery e6ed3c8c5c
Raise on database error in recorder.migration function (#123644)
* Raise on database error in recorder.migration._update_states_table_with_foreign_key_options

* Improve test coverage

* Fix test

* Fix test
2024-08-14 22:37:23 +02:00
epenet 3e967700fd
Add missing return type in test __init__ method (part 2) (#123939)
* Add missing return type in test __init__ method (part 2)

* Adjust

* One more

* One more

* More
2024-08-14 17:59:15 +02:00
Erik Montnemery e050d187c4
Clarify SQLite can't drop foreign key constraints (#123898) 2024-08-14 07:04:53 -05:00
Erik Montnemery 80f5683cd6
Raise on database error in recorder.migration._add_constraint (#123646)
* Raise on database error in recorder.migration._add_constraint

* Fix test
2024-08-14 13:59:06 +02:00
Erik Montnemery b7bbc938d3
Drop violating rows before adding foreign constraints in DB schema 44 migration (#123454)
* Drop violating rows before adding foreign constraints

* Don't delete rows with null-references

* Only delete rows when integrityerror is caught

* Move restore of dropped foreign key constraints to a separate migration step

* Use aliases for tables

* Update homeassistant/components/recorder/migration.py

* Update test

* Don't use alias for table we're deleting from, improve test

* Fix MySQL

* Update instead of deleting in case of self references

* Improve log messages

* Batch updates

* Add workaround for unsupported LIMIT in PostgreSQL

* Simplify

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-08-14 09:31:37 +02:00
J. Nick Koston 00c1a3fd4e
Ensure legacy event foreign key is removed from the states table when a previous rebuild failed (#123388)
* Ensure legacy event foreign key is removed from the states table

If the system ran out of disk space removing the FK, it would
fail. #121938 fixed that to try again, however that PR was made
ineffective by #122069 since it will never reach the check.

To solve this, the migration version is incremented to 2, and
the migration is no longer marked as done unless the rebuild
/fk removal is successful.

* fix logic for mysql

* fix test

* asserts

* coverage

* coverage

* narrow test

* fixes

* split tests

* should have skipped

* fixture must be used
2024-08-09 06:19:12 +02:00
J. Nick Koston a35fa0e95a
Warn that the minimum SQLite version will change to 3.40.1 as of 2025.2 (#104298)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-07-31 08:13:04 -05:00
Erik Montnemery ea75c8864f
Remove support for live schema migration of old recorder databases (#122399)
* Remove support for live schema migration of old recorder databases

* Update test
2024-07-29 15:52:18 +02:00
Erik Montnemery 8a84addc54
Add test of recorder platform with statistics support (#122754)
* Add test of recorder platform with statistics support

* Remove excessive line breaks
2024-07-29 11:57:53 +02:00
Erik Montnemery 81983d66f4
Avoid nesting sessions in recorder auto repairs tests (#122596) 2024-07-25 12:52:13 -05:00
Erik Montnemery ec957e4a94
Run statistics on 5-minute intervals in tests (#122592)
* Run statistics on 5-minute intervals in tests

* Fix test failing when mysql does not return rows in insert order
2024-07-25 17:32:49 +02:00
Erik Montnemery 1f2c54f112
Avoid nesting sessions in recorder purge tests (#122581) 2024-07-25 13:12:10 +02:00
Erik Montnemery 33d5ed52e6
Avoid nesting sessions in recorder statistics tests (#122582) 2024-07-25 12:26:44 +02:00
Erik Montnemery 108dc3795e
Remove incorrect use of Mock.assert_has_calls from recorder tests (#122439)
* Remove incorrect use of Mock.assert_has_calls from recorder tests

* Fix test
2024-07-23 09:39:27 +02:00
Erik Montnemery 96de0a4c94
Correct off-by-one bug in recorder non live schema migration (#122428)
* Correct off-by-one bug in recorder non live schema migration

* Remove change from the future
2024-07-23 00:30:31 +02:00
Erik Montnemery 42716723e6
Register WS command recorder/info early (#122425) 2024-07-22 16:26:52 -05:00
Erik Montnemery 3dc36cf068
Improve error handling when creating new SQLite database (#122406)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-07-22 14:16:11 -05:00
Erik Montnemery 20fc5233a1
Add recorder data migrator class to clean up states table (#122069) 2024-07-22 13:04:01 -05:00
Erik Montnemery 76cd53a864
Improve error handling when recorder schema migration fails (#122397) 2024-07-22 18:55:12 +02:00
Erik Montnemery e8b88557ee
Refactor recorder schema migration (#122372)
* Refactor recorder schema migration

* Simplify

* Remove unused imports

* Refactor _migrate_schema according to review comments

* Add comment
2024-07-22 16:53:54 +02:00
Erik Montnemery 2f47312eeb
Fix recorder setup hanging if non live schema migration fails (#122242) 2024-07-20 13:10:23 +02:00
Erik Montnemery 436a38c1d2
Revert "Fix recorder setup hanging if non live schema migration fails" (#122232) 2024-07-20 12:29:08 +02:00
Erik Montnemery 153b69c971
Fix recorder setup hanging if non live schema migration fails (#122207) 2024-07-20 11:17:40 +02:00
Marc Mueller a6068dcdf2
Update import locations in tests (#122216) 2024-07-20 11:16:04 +02:00
Marc Mueller 768d20c645
Fix recorder datetime annotations (#122214) 2024-07-20 11:10:25 +02:00
Erik Montnemery a0332d049b
Fix flaky recorder test (#122205) 2024-07-20 11:09:52 +02:00
Marc Mueller 2b486c3bd5
Replace unnecessary typing_extensions imports for Generator (#122169) 2024-07-19 12:56:27 +02:00
Marc Mueller ec937781ca
Update pylint to 3.2.5 (#122126)
* Update pylint to 3.2.5

* Remove unused pylint disable comment
2024-07-18 15:54:54 +02:00
Erik Montnemery 9970b7eece
Refactor recorder data migration (#121009)
* Refactor recorder data migration

* Fix stale docstrings

* Don't store a session object in BaseRunTimeMigration instances

* Simplify logic in EntityIDMigration.migration_done

* Fix tests
2024-07-16 21:50:19 +02:00
Erik Montnemery d8440e809a
Avoid mutating database schema definitions during schema migration (#122012)
* Avoid mutating database schema definitions during schema migration

* Adjust test when using mysql

* Address review comment
2024-07-16 20:27:49 +02:00
Erik Montnemery 336740dbfa
Add recorder migration test starting with schema version 9 (#122011) 2024-07-16 15:12:23 +02:00
J. Nick Koston 73f6e3c07b
Narrow sqlite database corruption check to ensure disk image is malformed (#121947)
* Narrow sqlite database corruption check to ensure disk image is malformed

The database corruption check would also replace the database when it
locked externally instead of only when its malformed.

This was discovered in https://github.com/home-assistant/core/issues/121909#issuecomment-2227409124
when a user did a manual index creation while HA was online

* tweak

* tweak

* fix

* fix
2024-07-14 23:23:07 +02:00
J. Nick Koston 19d2d023ab
Ensure states table rebuild still happens if the event_id index was removed (#121938)
* Ensure states table rebuild still happens if the event_id index was removed

If ix_states_event_id was removed by the foreign key still
exists, the states table would not get rebuilt. This should
not happen under normal circumstances and seems to only be
possible if the index was removed manually or Home
Assistant was restarted forcefully in the middle
of a previous migration from years ago.

* cover

* fix tests

* mysql wont allow at that point but thats ok as long as its gone at the end
2024-07-14 23:20:52 +02:00
J. Nick Koston 43596f22a4
Fix recorder max backlog calculation being too small (#121739) 2024-07-11 09:09:35 +02:00
J. Nick Koston c81d5a1ac2
Handle empty entity_id in the recorder filter (#121681)
fixes #111745
2024-07-10 09:53:38 -05:00
epenet bff663b3c1
Improve type hints in recorder result_processor (#121593) 2024-07-09 21:12:03 +02:00
J. Nick Koston 89ffee9ad5
Update ulid-transform to 0.10.1 (#121321) 2024-07-05 14:07:39 -05:00
Erik Montnemery 6eeb70151d
Use BIGINT SQL type for ID columns (#121025) 2024-07-05 10:42:39 -05:00
Erik Montnemery e47cbf3cf7
Use async_setup_recorder_instance fixture in recorder v32_migration tests (#121081)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-07-04 17:49:51 -05:00
Erik Montnemery 6df15ad8fc
Drop use of async_setup_recorder_instance fixture in recorder purge tests (#121193) 2024-07-04 10:39:24 -05:00
Erik Montnemery a1e6f8c2ec
Drop use of async_setup_recorder_instance fixture in recorder migration tests (#121196) 2024-07-04 10:39:13 -05:00
Erik Montnemery f1d6ad9073
Add test fixture to control recorder migration (#121180)
* Add test fixture to control recorder migration

* Update tests/components/recorder/conftest.py

Co-authored-by: J. Nick Koston <nick@koston.org>

* Update tests/components/recorder/conftest.py

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-07-04 13:10:08 +02:00
Erik Montnemery 255778d0c7
Use recorder test fixtures in recorder init tests (#121176) 2024-07-04 04:54:40 -05:00
Erik Montnemery d55d02623a
Add recorder test fixture to enable persistent SQLite database (#121137)
* Add recorder test fixture to enable persistent SQLite database

* Fix tests directly using async_test_home_assistant context manager
2024-07-04 09:59:37 +02:00
Erik Montnemery cc2782edc7
Use async_test_recorder fixture in recorder auto_repairs tests (#121125) 2024-07-04 01:38:01 +02:00
Erik Montnemery 408e524551
Add recorder test fixture for skipping tests by DB engine (#121118)
* Add recorder test fixture for skipping tests by DB engine

* Fix mistake
2024-07-04 00:02:46 +02:00
Erik Montnemery 5029da6919
Make the async_setup_recorder_instance fixture a context manager (#121086) 2024-07-03 14:05:34 -05:00
J. Nick Koston 44c89e6c3b
Cleanup v32 recorder migration test (#121083) 2024-07-03 10:45:19 -05:00
Erik Montnemery 46a488d871
Use async_setup_recorder_instance fixture in recorder auto_repairs tests (#121077) 2024-07-03 17:04:39 +02:00
Erik Montnemery 87f7703f3c
Use async_setup_recorder_instance fixture in recorder migration tests (#121050) 2024-07-03 08:56:05 -05:00
Marc Mueller f11b316dac
Import Generator from collections.abc (4) (#120917) 2024-07-01 11:54:42 +02:00
J. Nick Koston c5804d362c
Remove legacy foreign key constraint from sqlite states table (#120779) 2024-06-29 07:50:53 -05:00
Joost Lekkerkerker c13786c952
Fix ruff manual-dict-comprehension PERF403 in tests (#120738)
Fix PERF403 in tests
2024-06-28 12:14:24 +02:00
G Johansson 753ab08b5e
Add capability to exclude all attributes from recording (#119725) 2024-06-22 19:30:28 +02:00
epenet 83b97d3218
Add missing argument type hints to recorder tests (#119672) 2024-06-14 09:25:26 +02:00
epenet 2f5f372f63
Remove pointless TODO in recorder tests (#119490) 2024-06-12 18:08:01 +02:00
epenet 0f0c2f0553
Fix redefined-argument-from-local pylint warning in tests (#119475) 2024-06-12 17:58:58 +02:00
epenet 7388271689
Fix unspecified-encoding warnings in tests (#119405) 2024-06-11 17:58:40 +02:00
epenet 2c7022950c
Fix import-outside-toplevel pylint warnings in tests (#119389) 2024-06-11 14:57:50 +02:00
Erik Montnemery def9d5b101
Fix statistic_during_period after core restart (#119323) 2024-06-10 21:44:55 +02:00
karwosts aa419686cb
Fix statistic_during_period wrongly prioritizing ST statistics over LT (#115291)
* Fix statistic_during_period wrongly prioritizing ST statistics over LT

* comment

* start of a test

* more testcases

* fix sts insertion range

* update from review

* remove unneeded comments

* update logic

* min/mean/max testing
2024-06-10 20:23:21 +02:00
epenet ac588ddc75
Use relative imports in tests [j-r] (#119282) 2024-06-10 13:32:31 +02:00
Sid 721b2c2ca8
Enable Ruff PT012 (#113957) 2024-06-08 17:59:08 +02:00
Marc Mueller 837ee7c4fb
Import Generator from typing_extensions (4) (#118992) 2024-06-06 17:41:37 +02:00
epenet b54a68750b
Add type hints for FixtureRequest in tests (#118779) 2024-06-04 10:37:54 +02:00
J. Nick Koston 35a1ecea27
Speed up statistics_during_period websocket api (#118672) 2024-06-03 18:08:46 -05:00
epenet 8772a59f5c
Add type hints for Recorder in test fixtures (#118685) 2024-06-03 10:17:51 +02:00