From d4c164480f2b67d25b1f0881c10b1efc60f4a8c9 Mon Sep 17 00:00:00 2001 From: lingniu Date: Fri, 3 Jul 2026 08:48:07 +0800 Subject: [PATCH] perf(go): avoid mqtt raw hex duplication --- go/vehicle-gateway/internal/gateway/mqtt_client.go | 2 -- .../internal/gateway/mqtt_client_test.go | 12 ++++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/go/vehicle-gateway/internal/gateway/mqtt_client.go b/go/vehicle-gateway/internal/gateway/mqtt_client.go index ae24d7a4..ed7873b0 100644 --- a/go/vehicle-gateway/internal/gateway/mqtt_client.go +++ b/go/vehicle-gateway/internal/gateway/mqtt_client.go @@ -4,7 +4,6 @@ import ( "context" "crypto/tls" "crypto/x509" - "encoding/hex" "errors" "fmt" "log/slog" @@ -193,7 +192,6 @@ func (c *MQTTClient) handleMessage(ctx context.Context, topic string, payload [] EventTimeMS: receivedAtMS, ReceivedAtMS: receivedAtMS, RawText: string(payload), - RawHex: strings.ToUpper(hex.EncodeToString(payload)), ParseStatus: envelope.ParseBadFrame, ParseError: err.Error(), } diff --git a/go/vehicle-gateway/internal/gateway/mqtt_client_test.go b/go/vehicle-gateway/internal/gateway/mqtt_client_test.go index 54ea4e20..072b884c 100644 --- a/go/vehicle-gateway/internal/gateway/mqtt_client_test.go +++ b/go/vehicle-gateway/internal/gateway/mqtt_client_test.go @@ -45,6 +45,12 @@ func TestMQTTClientHandleMessagePublishesOnlyRawByDefault(t *testing.T) { if sink.raw[0].Protocol != envelope.ProtocolYutongMQTT || sink.raw[0].VIN != "LTEST000000000001" { t.Fatalf("unexpected raw envelope: %#v", sink.raw[0]) } + if sink.raw[0].RawText == "" { + t.Fatal("mqtt raw envelope should keep text payload") + } + if sink.raw[0].RawHex != "" { + t.Fatalf("mqtt raw envelope should not duplicate text payload as hex: %q", sink.raw[0].RawHex) + } } func TestMQTTClientRecordsMessageMetrics(t *testing.T) { @@ -104,6 +110,12 @@ func TestMQTTClientHandleBadPayloadPublishesOnlyRaw(t *testing.T) { if sink.raw[0].ParseStatus != envelope.ParseBadFrame { t.Fatalf("parse status = %q", sink.raw[0].ParseStatus) } + if sink.raw[0].RawText == "" { + t.Fatal("bad mqtt raw envelope should keep text payload") + } + if sink.raw[0].RawHex != "" { + t.Fatalf("bad mqtt raw envelope should not duplicate text payload as hex: %q", sink.raw[0].RawHex) + } } func TestMQTTClientUsesUncancelledMessageContextForReceivedMessage(t *testing.T) {