fix(go): batch durable kafka replay
This commit is contained in:
@@ -64,6 +64,29 @@ func TestKafkaSinkRejectsUnknownProtocol(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestKafkaSinkPublishesDurableRecordsInSingleWriterCall(t *testing.T) {
|
||||
writer := &recordingWriter{}
|
||||
sink := newKafkaSinkWithWriter(writer, KafkaConfig{UnifiedTopic: "custom.unified"})
|
||||
env := envelope.FrameEnvelope{Protocol: envelope.ProtocolJT808, Phone: "13307795425", MessageID: "0x0200"}
|
||||
|
||||
err := sink.PublishRecords(context.Background(), []durableRecord{
|
||||
{Kind: "raw", Envelope: env},
|
||||
{Kind: "unified", Envelope: env},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("PublishRecords() error = %v", err)
|
||||
}
|
||||
if writer.writeCalls != 1 {
|
||||
t.Fatalf("WriteMessages calls = %d, want 1", writer.writeCalls)
|
||||
}
|
||||
if len(writer.messages) != 2 {
|
||||
t.Fatalf("messages = %d, want 2", len(writer.messages))
|
||||
}
|
||||
if writer.messages[0].Topic != "vehicle.raw.jt808.v1" || writer.messages[1].Topic != "custom.unified" {
|
||||
t.Fatalf("topics = %q, %q", writer.messages[0].Topic, writer.messages[1].Topic)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewKafkaSinkUsesProductionDeliveryGuarantees(t *testing.T) {
|
||||
sink, err := NewKafkaSink(KafkaConfig{Brokers: []string{"127.0.0.1:9092"}})
|
||||
if err != nil {
|
||||
@@ -90,10 +113,12 @@ func TestNewKafkaSinkUsesProductionDeliveryGuarantees(t *testing.T) {
|
||||
}
|
||||
|
||||
type recordingWriter struct {
|
||||
messages []kafka.Message
|
||||
messages []kafka.Message
|
||||
writeCalls int
|
||||
}
|
||||
|
||||
func (w *recordingWriter) WriteMessages(_ context.Context, messages ...kafka.Message) error {
|
||||
w.writeCalls++
|
||||
w.messages = append(w.messages, messages...)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user