Тестовое на стажировку Golang
docker compose up --build
Выдвинутых требований к логину со сторону ТЗ не было
Но и хранить любой логин мы не должны, как минимум это странно
Логин приведен в строгий формат second_name.first_name
(если у нас есть уже сотрудник с данным именем то добавляются цифры,
сейчас это не играет роли, но в целом в развитии идеи)
и домен @avito.ru
Пароль должен быть не менее 4 символов
- тест идет через поднятие тестовой базы в случае теста internal/db
- тест должен идти через поднятие полного окружения бд + бек (в данный момент имеются недоработки этого пункта из-за отсутсвия времени)
ok avito 0.859s
ok avito/internal/db 3.995s coverage: 75.0% of statements
? avito/internal/entity [no test files]
ok avito/internal/js 1.001s coverage: 100.0% of statements
ok avito/internal/server 1.481s coverage: 1.2% of statements
ok avito/internal/service 1.242s coverage: 80.4% of statements
ok avito/pkg/auth 2.307s coverage: 100.0% of statements
ok avito/pkg/jwt 2.047s coverage: 81.8% of statements
total: (statements) 58.6%
Для нагрузочного тестирования будет использована утилита wrk
Скрипты с параметрами находятся в папке script
Пример запуска wrk -t 8 -c 100 -d 30s --latency --timeout 1s <url> -s <script_path>
- колличество юзеров на поднятом сервере < 100 000
- сейчас крипты не ведут статистику успешных и не упешных ответов(довольно сложно реализовть, так как мы в тесте списываем даже если по рублю - то у нас буквально за 3 секунды баланс уйдет в 0 и в такие моменты ошибка сервера - правильная реакция )
Running 30s test @ http://localhost:8080/api/auth
8 threads and 100 connections
Requests/sec: 19657.42
Transfer/sec: 4.93MB
Running 30s test @ http://localhost:8080/api/info
8 threads and 100 connections
Requests/sec: 2958.86
Transfer/sec: 137.75MB
Running 30s test @ http://localhost:8080/api/sendCoin
8 threads and 100 connections
Requests/sec: 5115.77
Transfer/sec: 0.90MB
Running 30s test @ http://localhost:8080/api/buy/t-shirt
8 threads and 100 connections
Requests/sec: 3368.41
Transfer/sec: 608.53KB