[hw-5] concurrency, graceful shutdown, concurrent tests

This commit is contained in:
Никита Шубин
2025-07-06 20:52:27 +00:00
parent dbf8aaedcf
commit 84201fe495
23 changed files with 742 additions and 157 deletions

35
docs/homework-5/README.md Normal file
View File

@@ -0,0 +1,35 @@
# Домашнее задание по модулю "Многопоточное программирование"
## Основное задание
Уменьшить время ответа cart.list.
- Распараллельные вызовы ручки http://route256.pavl.uk:8080/docs/#/ProductService/ProductService_GetProduct продакт
сервиса
- Самим написать аналог https://pkg.go.dev/golang.org/x/sync/errgroup и использовать его
- В случае ошибки - отменять все текущие запросы и вернуть ошибку из errgroup
- При общении с Product Service необходимо использовать лимит 10 RPS на клиентской стороне
- Группа живет в рамках одного запроса = группа не переиспользуется между запросами
- in-memory репозитории защитить мьютексами
## Дополнительное задание
- Тесты на многопоточность in-memory репозитория
- Грейсфул завершение приложения (использовать signal.Notify)
- Контроль утечек (горутин через https://github.com/uber-go/goleak)
- Контроль рейзов (через тесты с флагом -race)
- Реализовать параллельный запуск тестов
## Автоматические проверки
Ваше решение должно проходить автоматические проверки:
- Компиляция
- Линтер
- Unit-тесты
- Code coverage >40%
- Автотесты
Прохождение автоматических проверок влияет на итоговую оценку за домашнюю работу.
### Дедлайны сдачи и проверки задания:
- 28 июня 23:59 (сдача) / 1 июля, 23:59 (проверка)