Add initial MQTT scrubber service scaffold
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package influx
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"mqqt-scrubber/internal/model"
|
||||
"mqqt-scrubber/internal/parser"
|
||||
)
|
||||
|
||||
func TestToLineProtocolFromParsedLWT(t *testing.T) {
|
||||
receivedAt := time.Date(2026, time.March, 12, 15, 21, 39, 0, time.UTC)
|
||||
records, err := parser.ParseTasmota(model.RawMessage{
|
||||
Topic: "tele/tasmota_896001/LWT",
|
||||
Payload: []byte("Online"),
|
||||
ReceivedAt: receivedAt,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("ParseTasmota returned error: %v", err)
|
||||
}
|
||||
|
||||
line, err := toLineProtocol(records[0])
|
||||
if err != nil {
|
||||
t.Fatalf("toLineProtocol returned error: %v", err)
|
||||
}
|
||||
|
||||
expected := fmt.Sprintf(
|
||||
"tasmota_lwt,device=tasmota_896001,message_type=lwt,source=tasmota online=true,state=\"Online\" %d",
|
||||
receivedAt.UnixNano(),
|
||||
)
|
||||
if line != expected {
|
||||
t.Fatalf("unexpected line protocol:\n got: %s\nwant: %s", line, expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestToLineProtocolFromParsedSensor(t *testing.T) {
|
||||
receivedAt := time.Date(2026, time.March, 12, 16, 23, 13, 0, time.UTC)
|
||||
records, err := parser.ParseTasmota(model.RawMessage{
|
||||
Topic: "tele/tasmota_C88994/SENSOR",
|
||||
Payload: []byte(`{"Time":"2026-03-12T16:23:13","ENERGY":{"TotalStartTime":"2026-02-04T19:13:40","Total":41.385,"Yesterday":1.124,"Today":0.799,"Period":0,"Power":1,"ApparentPower":4,"ReactivePower":4,"Factor":0.22,"Voltage":231,"Current":0.016}}`),
|
||||
ReceivedAt: receivedAt,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("ParseTasmota returned error: %v", err)
|
||||
}
|
||||
|
||||
line, err := toLineProtocol(records[0])
|
||||
if err != nil {
|
||||
t.Fatalf("toLineProtocol returned error: %v", err)
|
||||
}
|
||||
|
||||
expected := fmt.Sprintf(
|
||||
"tasmota_sensor,device=tasmota_c88994,message_type=sensor,source=tasmota energy_apparent_power=4,energy_current=0.016,energy_factor=0.22,energy_period=0,energy_power=1,energy_reactive_power=4,energy_today=0.799,energy_total=41.385,energy_total_start_time=\"2026-02-04T19:13:40\",energy_voltage=231,energy_yesterday=1.124 %d",
|
||||
receivedAt.UnixNano(),
|
||||
)
|
||||
if line != expected {
|
||||
t.Fatalf("unexpected line protocol:\n got: %s\nwant: %s", line, expected)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user