test: re-test v0.1.69 — все 8 тестов PASS, 1000/1000 при нагрузке

This commit is contained in:
Naeel
2026-04-06 18:45:57 +03:00
parent 387932ce10
commit 69451007f6
2 changed files with 96 additions and 2 deletions
+28 -2
View File
@@ -1,10 +1,36 @@
# Прогресс разработки
Последнее обновление: 2026-04-06 19:00 МСК
Последнее обновление: 2026-04-06 21:00 МСК
---
## 2026-04-06 (вечер) — Полное суровое тестирование IoT pipeline
## 2026-04-06 (ночь) — Re-test v0.1.69: полный прогон 8 тестов, все PASS
### Повод
После фикса async-бага (v0.1.68→v0.1.69) — полный повторный прогон всех тестов.
### Тест-матрица (baseline: 163 строки перед стартом)
| # | Тест | v0.1.68 | v0.1.69 | Примечание |
|---|------|---------|---------|-----------|
| 1 | Cold start | ✅ PASS | ✅ PASS | 15 retry, id=163 |
| 2 | Restart 3× | ✅ PASS | ✅ PASS | <1с каждый |
| 3 | Load 100 msgs | ❌ 27/100 | ✅ 100/100 | Баг исправлен! |
| 4 | Burst offline consumer | ✅ PASS | ✅ PASS | 20/20, буфер Kafka |
| 5 | Невалидные payload | ✅ PASS | ✅ PASS | 3/3, consumer жив |
| 6 | Дубликаты | ✅ PASS | ✅ PASS | 3/3 (at-least-once) |
| 7 | Kafka restart | ✅ PASS | ✅ PASS | 5/5 post-recovery |
| 8 | Load **1000** msgs (суровый) | — | ✅ 1000/1000 | 56с, 100% |
### Итог
- Все 8 тестов PASS
- DB: 163 → 1294 строк (суммарно по всем тестам)
- Pipeline стабилен: async fix решил проблему потерь при нагрузке
- Коммит: после документирования
---
## 2026-04-06 (вечер) — Async bug fix (v0.1.69)
### Тест-матрица (7 сценариев, baseline: 18 строк)
+68
View File
@@ -543,3 +543,71 @@ _ = w.WriteMessages(ctx, ...) // немедленный возврат, дос
- Bridge не теряет keepalive с EMQX при burst
- Throughput: лимитируется сетью/Kafka, а не синхронным write (~тысячи msg/сек)
- Load test 100 сообщений: должны дойти все 100
---
## Re-test v0.1.69 — полный прогон 8 тестов
**Дата:** 2026-04-06 (продолжение сессии)
**Базовое состояние:** 163 строки в DB перед стартом повторного прогона
### T1: Cold start
- Consumer pod ждал Kafka: 15 retry × 3с = 45с
- `kafka topic ready` → msg id=163 появился в DB
- **PASS**
### T2: Restart 3×
- 3 последовательных `kubectl delete pod` по consumer
- Каждый перезапуск < 1с до `kafka topic ready`
- **PASS**
### T3: Load 100 msgs (главный — здесь был баг)
- Baseline: 163. Отправлено: 100. Результат в DB: +100 (итого 263)
- v0.1.68 давал 27/100. v0.1.69: **100/100**
- **PASS** ← баг исправлен
### T4: Burst при offline consumer
- Baseline: 263. Consumer масштабирован в 0 → отправлено 20 msgs → DB +0 (consumer offline)
- Consumer поднят обратно → через 15с: DB +20
- Kafka буферизовал все 20 сообщений, consumer догнал сразу
- **PASS**
### T5: Невалидные payload
- Отправлено: non-JSON строка, пустая строка, валидный JSON
- DB: +3 строки (bridge оборачивает non-JSON в `{"raw": "..."}`)
- Consumer пережил 0 crashes
- **PASS**
### T6: Дубликаты (at-least-once)
- Baseline: 286. 3 идентичных сообщения `{"test":"t6_dup","value":42}`
- DB: +3 строки (каждый инстанс сохранён)
- Семантика at-least-once подтверждена
- **PASS**
### T7: Kafka restart
- Baseline: 289. Kafka pod `kafka-0` убит → 5 msgs отправлены во время рестарта
- Kafka восстановился: `pod/kafka-0 condition met`
- 5 msgs после восстановления: все дошли. Итого DB +5
- Msgs во время рестарта потеряны — ожидаемо (QoS 0 / async writer без буфера во время outage)
- **PASS** (recovery автоматический, post-recovery 100%)
### T8: Load 1000 msgs (суровый)
- Baseline: 294. 1000 msgs burst за 56 секунд
- DB: +1000 (итого 1294)
- **1000/1000 = 100%**
- **PASS**
### Итог v0.1.69
| Тест | v0.1.68 | v0.1.69 |
|------|---------|---------|
| T1 Cold start | PASS | PASS |
| T2 Restart 3× | PASS | PASS |
| T3 Load 100 | ❌ 27/100 | ✅ 100/100 |
| T4 Offline burst | PASS | PASS |
| T5 Invalid payload | PASS | PASS |
| T6 Duplicates | PASS | PASS |
| T7 Kafka restart | PASS | PASS |
| T8 Load 1000 | — (новый) | ✅ 1000/1000 |
**Вывод:** Async fix полностью решил проблему потерь. Система стабильна на нагрузке 1000 msgs.