38 lines
8.2 KiB
Markdown
38 lines
8.2 KiB
Markdown
# P03-A. Acto: поиск состояний
|
|
|
|
- **Версия и дата проверки:** 1.1, 07.09.2026.
|
|
- **Статус:** готово к назначению.
|
|
|
|
## Статья и исходные материалы
|
|
|
|
- **Основная статья:** Jiawei Tyler Gu и соавт. — [Acto: Automatic End-to-End Testing for Operation Correctness of Cloud System Management](https://research.ibm.com/publications/acto-automatic-end-to-end-testing-for-operation-correctness-of-cloud-system-management). SOSP 2023.
|
|
- **Кратко о статье:** Операторы Kubernetes должны многократно приводить управляемую систему к объявленному состоянию, поэтому отдельные тесты обработчиков не покрывают поведение длинных последовательностей операций. Acto представляет операции как переходы состояния, систематически строит их последовательности и проверяет фактическое состояние системы на соответствие требуемому. В проекте основной акцент сделан на стратегии поиска состояний и её преимуществе перед случайной генерацией.
|
|
- **Почему результат актуален:** Acto продолжает развиваться и применён уже к одиннадцати операторам; [работа NSDI 2026 о надёжности операторов](https://www.usenix.org/conference/nsdi26/presentation/gu) подтверждает, что ошибки во взаимодействии оператора с управляемой системой остаются существенным классом отказов.
|
|
- **Артефакты и данные:** [xlab-uiuc/acto](https://github.com/xlab-uiuc/acto) под Apache-2.0, с локальными режимами Kind, Minikube и K3d, воспроизводимыми ошибками и конфигурациями реальных операторов. При [проверке артефакта](https://sysartifacts.github.io/sosp2023/summaries/acto) подтверждены его доступность, работоспособность и воспроизведение результатов. Зафиксированные ревизии: `xlab-uiuc/acto@a0d0fb7bb840` (Apache-2.0).
|
|
- **Что уже предоставляет артефакт:** Acto уже генерирует переходы, проверяет достижение состояния, разворачивает операторы и воспроизводит известные ошибки; есть конфигурации и средства сбора статистики. Эти компоненты разрешено использовать, а готовую демонстрационную ошибку — только для проверки стенда. Проверенные исходные материалы: [генераторы](https://github.com/xlab-uiuc/acto/blob/a0d0fb7bb840/docs/test_generator.md), [сбор статистики](https://github.com/xlab-uiuc/acto/blob/a0d0fb7bb840/scripts/collect_statistics.py).
|
|
|
|
## Обязательный результат
|
|
|
|
- **Проверяемый вопрос или утверждение:** генерация последовательностей переходов и сквозная проверка состояния позволяют находить ошибки согласования, которые пропускают отдельные тесты обработчиков и случайная генерация операций.
|
|
- **Технический результат:** Развернуть небольшой оператор и управляемую систему в Kind, подготовить новую конфигурацию и подключить генератор переходов Acto. Самостоятельно реализовать воспроизводимый случайный baseline и расчёт покрытия общей модели переходов, связав их с автоматической проверкой достижения желаемого состояния.
|
|
- **Обязательное приращение команды:** Подготовить новую конфигурацию выбранного оператора с содержательно отличающимися начальными условиями или сочетанием операций, самостоятельно реализовать случайный baseline и расчёт покрытия общей модели переходов. Провести сравнение на этой конфигурации; изменение имени, seed или числа повторов готовой демонстрации не заменяет её.
|
|
- **Эксперимент:** На новой конфигурации одного оператора выполнить не менее трёх серий систематической и случайной генерации с одинаковым бюджетом. Собственным расчётом сравнить покрытие переходов, число уникальных расхождений и время до первого сбоя; найденный сбой подтвердить отдельным тестом. При отсутствии сбоев зафиксировать исчерпание бюджета без обнаружения; готовая демонстрационная ошибка проверяет только стенд.
|
|
- **Границы выводов:** результат показывает покрытие и обнаружение сбоев для выбранного оператора, модели переходов и бюджета генерации; он не доказывает полноту поиска или корректность оператора во всех конфигурациях.
|
|
- **Ресурсный профиль:** Расширенно локально, Linux, Docker, Kind, CPU, желательно 16 ГБ памяти. Если выбранный оператор слишком тяжёл, использовать малую конфигурацию Cassandra с новым сочетанием операций либо собственный минимальный оператор с намеренно внесёнными ошибками согласования. Собственные случайный baseline и расчёт покрытия обязательны в обоих случаях.
|
|
|
|
## Содержательные направления
|
|
|
|
- новая конфигурация оператора и локальный стенд.
|
|
- самостоятельный случайный baseline и сопоставление стратегий.
|
|
- собственный расчёт покрытия, проверка состояния и анализ сбоев.
|
|
|
|
## Возможное продолжение
|
|
|
|
Перенести Acto на новый оператор, добавить новый тип перехода или вид проверки, исследовать раннюю остановку либо автоматическое уменьшение ошибочной последовательности.
|
|
|
|
## История уточнений
|
|
|
|
| Дата | Версия | Основание | Изменение обязательного результата |
|
|
|---|---|---|---|
|
|
| 07.09.2026 | 1.1 | Статический просмотр закреплённого артефакта: готовые сценарии частично покрывают задание. | Закреплены новая конфигурация, собственные случайный baseline и расчёт покрытия; демонстрационная ошибка служит проверке стенда. |
|