docs(history): e2e телеметрия пройдена (API -> wss MQTT -> EMQX -> SQS -> consumer -> tenant PG -> API)
This commit is contained in:
@@ -177,3 +177,31 @@ jlib.k8s [correctReplicaActive] | Под(ы) не работают: 'containerk8
|
||||
|
||||
Осталось (не блокеры): end-to-end телеметрия (устройство → MQTT → SQS → per-tenant PG),
|
||||
домен EMQX `wss://exqx-iot/mqtt` для внешних устройств, Terraform на PROD.
|
||||
|
||||
## 8. E2E-тест телеметрии — ✅ ПРОЙДЕН (2026-10-11)
|
||||
|
||||
Проверен полный путь снаружи кластера: HTTP API → MQTT (`wss`) → EMQX → bridge → SQS →
|
||||
consumer → per-tenant PostgreSQL → HTTP API.
|
||||
|
||||
1. **Устройство через API** (`/tmp/e2e_api.py`, PyJWT HS256 `sub=<ns>`):
|
||||
`POST /v1/namespaces/e2e-nubes/iot/devices {"name":"dev1","device_id":"d-01"}` → **201**,
|
||||
выданы `mqtt_username=e2e-nubes_d-01`, `mqtt_password=347425f2…753e`,
|
||||
`telemetry_topic=e2e-nubes/telemetry/d-01`.
|
||||
⚠ `GET …/devices/dev1` пароль НЕ возвращает (как и задокументировано ранее).
|
||||
2. **Публикация через внешний MQTT** `wss://exqx-iot.containerk8s.dev.nubes.ru/mqtt`
|
||||
(`/tmp/e2e_mqtt.py`; MQTT-over-WS написан вручную на stdlib — локально нет
|
||||
paho/websockets): `HTTP/1.1 101 Switching Protocols` → **`CONNACK rc=0`**
|
||||
(auth прошёл: bcrypt-хеш сверен EMQX напрямую с `iot_devices`) → `PUBLISH
|
||||
e2e-nubes/telemetry/d-01 {"temp":21.5,…}`.
|
||||
ACL: разрешён только свой топик — публикация в него не отклонена.
|
||||
3. **Доставка**: лог iot-service — `iotpg: created tenant DB namespace=e2e-nubes
|
||||
db=tenant_e2e_nubes`; в `iotdb` появилась строка `e2e-nubes/dev1 (d-01)`.
|
||||
4. **Чтение**: `GET /v1/namespaces/e2e-nubes/iot/telemetry?device_id=d-01` → **200**
|
||||
`{"count":1,"items":[{"id":1,"device_id":"d-01","payload":{"ts":1791737028,
|
||||
"src":"e2e-manual","temp":21.5}}]}`; в PG `tenant_e2e_nubes.iot_telemetry` —
|
||||
1 строка, `payload` совпадает побайтово, `message_id=30cf2047a060…` (SHA256-дедуп).
|
||||
|
||||
Следствия: внешний MQTT-домен EMQX годится для устройств; SQS-креды, PG-DSN, ACL и
|
||||
дедуп работают. Тестовые артефакты: устройство `e2e-nubes/dev1`, БД `tenant_e2e_nubes`.
|
||||
|
||||
Осталось (не блокеры): Terraform на PROD; чистка тестовых артефактов e2e (по команде).
|
||||
|
||||
Reference in New Issue
Block a user