T05 — chmura, kolejka offline i baza danych
Wymagana infrastruktura
- testowy PostgreSQL z pełnym zestawem migracji;
- broker MQTT z trwałą sesją i ACL;
- testowe CA, certyfikat serwera i certyfikat urządzenia;
- zaufany terminator mTLS dla HTTP;
- osobna sieć/środowisko, bez danych produkcyjnych.
T05.1 — kontrakt czasu i rekordu
Wysłać rekord bieżący i rekord przechowany offline.
Zaliczenie:
- urządzenie przekazuje
measured_at; - PostgreSQL sam nadaje
received_at DEFAULT now(); - klient nie może przesłać ani nadpisać
received_at; - wszystkie pola pełnego rekordu zachowują jednostki i typy;
NaN, nieskończoność i wartości poza zakresem są odrzucane.
T05.2 — MQTT QoS 1
- Opublikować poprawny rekord.
- Potwierdzić commit w bazie przed ACK.
- Przerwać bazę po odebraniu publikacji.
- Przywrócić bazę i obserwować ponowną dostawę.
Zaliczenie: rekord nie znika z FIFO przed trwałym commitem, a ponowienie nie tworzy drugiego pomiaru.
T05.3 — HTTP ingress
Sprawdzić poprawny certyfikat, brak certyfikatu, sfałszowane nagłówki
X-SSL-*, klienta spoza zaufanego proxy i duplikat sekwencji.
Zaliczenie: tylko zaufany terminator może przekazać tożsamość klienta, a HTTP i MQTT korzystają z tej samej reguły idempotencji.
T05.4 — praca offline i opróżnianie kolejki
- Zapisywać dane przy wyłączonej sieci przez kontrolowany okres.
- Zanotować liczbę rekordów FIFO.
- Przywrócić sieć i poczekać na opróżnienie.
- Porównać sekwencje na karcie, w logu ingress i bazie.
Zaliczenie: nie brakuje sekwencji, kolejność jest zachowana, duplikaty są idempotentne, a dane bieżące nie głodzą danych historycznych.
T05.5 — awarie zależności
Osobno wyłączyć DNS, broker, bazę, terminator TLS i połączenie WAN.
Zaliczenie: urządzenie nie resetuje się w pętli, bufor rośnie w granicach, backoff ogranicza ruch, a po powrocie usługi całość zostaje dostarczona.
T05.6 — wymiana licznika
Potwierdzić, że wymiana sprzętowego licznika tworzy kontrolowaną nową bazę energii, nie daje ujemnego zużycia i nie scala przypadkowo dwóch urządzeń.
T05.7 — globalna i zdalna polityka telemetrii
- Ustawić dla jednego konwertera kolejno 300, 60 i 5 s.
- Potwierdzić zapis wartości i
config_versionw PostgreSQL. - Potwierdzić zachowaną publikację MQTT QoS 1 i potwierdzenie urządzenia.
- Sprawdzić, że wszystkie aktywne liczniki używają jednej efektywnej wartości.
- Odłączyć urządzenie, zmienić politykę i ponownie je połączyć.
- Wysłać starszą wersję, tę samą wersję z tą samą treścią oraz tę samą wersję ze zmienioną treścią.
- Powtórzyć operację endpointem całej floty, gdy jedno urządzenie jest offline.
- Porównać
measured_at,received_at, liczbę rekordów FIFO i czas pełnego cyklu Modbus.
Zaliczenie:
- urządzenie po ponownym połączeniu przyjmuje najnowszą zachowaną politykę;
- starsza wersja jest odrzucana, identyczne ponowienie jest idempotentne, a konflikt tej samej wersji nie zmienia ustawień;
- wszystkie aktywne liczniki zmieniają kadencję bez restartu i utraty danych;
- operacja flotowa raportuje liczbę zapisanych i opublikowanych konfiguracji;
- niedostępne urządzenie nie blokuje pozostałej floty;
- wartość 5 s jest przyjmowana tylko wtedy, gdy zmierzony cykl Modbus mieści się w zadanym budżecie albo system jawnie raportuje wolniejszą efektywną kadencję;
received_atpozostaje niezależnym czasem przyjęcia, szczególnie po offline.