Skip to content

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

  1. Opublikować poprawny rekord.
  2. Potwierdzić commit w bazie przed ACK.
  3. Przerwać bazę po odebraniu publikacji.
  4. 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

  1. Zapisywać dane przy wyłączonej sieci przez kontrolowany okres.
  2. Zanotować liczbę rekordów FIFO.
  3. Przywrócić sieć i poczekać na opróżnienie.
  4. 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

  1. Ustawić dla jednego konwertera kolejno 300, 60 i 5 s.
  2. Potwierdzić zapis wartości i config_version w PostgreSQL.
  3. Potwierdzić zachowaną publikację MQTT QoS 1 i potwierdzenie urządzenia.
  4. Sprawdzić, że wszystkie aktywne liczniki używają jednej efektywnej wartości.
  5. Odłączyć urządzenie, zmienić politykę i ponownie je połączyć.
  6. Wysłać starszą wersję, tę samą wersję z tą samą treścią oraz tę samą wersję ze zmienioną treścią.
  7. Powtórzyć operację endpointem całej floty, gdy jedno urządzenie jest offline.
  8. 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_at pozostaje niezależnym czasem przyjęcia, szczególnie po offline.