server selection

This commit is contained in:
2025-11-06 07:11:15 +09:00
parent 8bc115acf3
commit 8276c57010
24 changed files with 1964 additions and 43 deletions

View File

@@ -0,0 +1,174 @@
# 📋 Инструкция по тестированию Health Check'а серверов
## 🎯 Что тестируем
Новую функциональность автоматической проверки здоровья серверов в диалоге настроек.
## 🔧 Подготовка к тестированию
### 1. Сборка приложения
```bash
cd /home/trevor/StudioProjects/WellShe
./gradlew assembleDebug
```
### 2. Установка на устройство/эмулятор
```bash
adb install -r app/build/outputs/apk/debug/app-debug.apk
```
### 3. Включение детального логирования
```bash
adb logcat -s ServerHealthRepository:D ServerSettingsViewModel:D HealthApi:D
```
## 🧪 Тестовые сценарии
### Сценарий 1: Основная функциональность
1. **Запустите приложение**
2. **Откройте диалог настроек** (нажмите ⚙️)
3. **Наблюдайте автоматическую проверку серверов**
**Ожидаемый результат:**
- Появляется диалог с кнопкой обновления (🔄)
- Рядом с каждым сервером показывается индикатор загрузки
- Через несколько секунд индикаторы меняются на цветные статусы
- Отображается время отклика и статус
### Сценарий 2: Различные статусы серверов
1. **Убедитесь что сервер `http://10.0.2.2:8000` запущен**
2. **Откройте диалог настроек**
3. **Проверьте индикаторы:**
**Ожидаемые результаты:**
- 🟢 Зеленый для `http://10.0.2.2:8000` (если работает быстро)
- ⚫ Серый для недоступных серверов
- Время отклика в миллисекундах
### Сценарий 3: Ручное обновление
1. **Откройте диалог настроек**
2. **Дождитесь завершения проверки**
3. **Нажмите кнопку обновления** (🔄)
**Ожидаемый результат:**
- Кнопка становится неактивной
- Появляются индикаторы загрузки
- Статусы обновляются
### Сценарий 4: Выбор сервера по статусу
1. **Откройте диалог настроек**
2. **Найдите сервер с зеленым индикатором** 🟢
3. **Выберите его**
4. **Сохраните настройки**
**Ожидаемый результат:**
- Сервер выделяется при выборе
- Toast показывает изменение сервера
- Последующие запросы идут на новый сервер
## 🔍 Проверка логов
### Ключевые логи для поиска:
```bash
# Инициализация проверки
ServerSettingsViewModel: ServerSettingsViewModel initialized
ServerHealthRepository: Checking health for 4 servers
# Проверка отдельного сервера
ServerHealthRepository: Checking health for server: http://10.0.2.2:8000
ServerHealthRepository: Health check for http://10.0.2.2:8000 completed in 15ms
ServerHealthRepository: Server http://10.0.2.2:8000 is healthy, ping: 15ms
# Завершение проверки
ServerHealthRepository: Health check completed for all servers
ServerSettingsViewModel: Health check completed. Results: [...]
```
## ⚠️ Возможные проблемы
### Проблема: Все серверы показывают "Недоступен"
**Причина:** Сетевые ограничения или неправильная конфигурация
**Решение:**
1. Проверить подключение к интернету
2. Убедиться что сервер запущен на `http://10.0.2.2:8000`
3. Проверить настройки эмулятора
### Проблема: Долгая проверка (>10 секунд)
**Причина:** Медленная сеть или высокие таймауты
**Решение:**
1. Проверить скорость соединения
2. Уменьшить таймауты в `ServerHealthRepository`
### Проблема: Крашь при открытии диалога
**Причина:** Ошибки в коде или зависимостях
**Решение:**
1. Проверить логи с помощью `adb logcat`
2. Убедиться что все зависимости добавлены
## ✅ Критерии успеха
Тест считается пройденным если:
1. ✅ Диалог открывается без ошибок
2. ✅ Автоматически запускается проверка серверов
3. ✅ Отображаются цветные индикаторы статуса
4. ✅ Показывается время отклика
5. ✅ Кнопка обновления работает
6. ✅ Можно выбрать сервер по статусу
7. ✅ Настройки сохраняются корректно
8.В логах видны детали проверки
## 📊 Примеры ожидаемых результатов
### Быстрый локальный сервер:
```
🟢 http://10.0.2.2:8000
8ms • Отлично
```
### Медленный сервер:
```
🔴 http://slow-server.com:8000
650ms • Очень медленно
```
### Недоступный сервер:
```
⚫ http://offline-server.com:8000
Connection failed
```
### Проверяется:
```
⏳ http://checking-server.com:8000
Проверка...
```
## 🚀 Дополнительные тесты
### Стресс-тест
1. Открывайте и закрывайте диалог несколько раз подряд
2. Нажимайте кнопку обновления многократно
3. Проверяйте что нет утечек памяти
### Тест сети
1. Отключите интернет и откройте диалог
2. Включите интернет и нажмите обновление
3. Проверьте корректную обработку ошибок
## 📝 Отчет о результатах
После тестирования заполните:
- [ ] Основная функциональность работает
- [ ] Индикаторы отображаются корректно
- [ ] Время отклика измеряется точно
- [ ] Ручное обновление работает
- [ ] Логирование детальное и понятное
- [ ] Нет критических ошибок
- [ ] UI отзывчивый и интуитивный
**Замечания:** ___________________
**Предложения по улучшению:** ___________________