diff options
Diffstat (limited to 'weed/pb/mq_agent_pb/publish_response_test.go')
| -rw-r--r-- | weed/pb/mq_agent_pb/publish_response_test.go | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/weed/pb/mq_agent_pb/publish_response_test.go b/weed/pb/mq_agent_pb/publish_response_test.go new file mode 100644 index 000000000..1f2e767e4 --- /dev/null +++ b/weed/pb/mq_agent_pb/publish_response_test.go @@ -0,0 +1,102 @@ +package mq_agent_pb + +import ( + "testing" + "google.golang.org/protobuf/proto" +) + +func TestPublishRecordResponseSerialization(t *testing.T) { + // Test that PublishRecordResponse can serialize/deserialize with new offset fields + original := &PublishRecordResponse{ + AckSequence: 123, + Error: "", + BaseOffset: 1000, // New field + LastOffset: 1005, // New field + } + + // Test proto marshaling/unmarshaling + data, err := proto.Marshal(original) + if err != nil { + t.Fatalf("Failed to marshal PublishRecordResponse: %v", err) + } + + restored := &PublishRecordResponse{} + err = proto.Unmarshal(data, restored) + if err != nil { + t.Fatalf("Failed to unmarshal PublishRecordResponse: %v", err) + } + + // Verify all fields are preserved + if restored.AckSequence != original.AckSequence { + t.Errorf("AckSequence = %d, want %d", restored.AckSequence, original.AckSequence) + } + if restored.BaseOffset != original.BaseOffset { + t.Errorf("BaseOffset = %d, want %d", restored.BaseOffset, original.BaseOffset) + } + if restored.LastOffset != original.LastOffset { + t.Errorf("LastOffset = %d, want %d", restored.LastOffset, original.LastOffset) + } +} + +func TestSubscribeRecordResponseSerialization(t *testing.T) { + // Test that SubscribeRecordResponse can serialize/deserialize with new offset field + original := &SubscribeRecordResponse{ + Key: []byte("test-key"), + TsNs: 1234567890, + Error: "", + IsEndOfStream: false, + IsEndOfTopic: false, + Offset: 42, // New field + } + + // Test proto marshaling/unmarshaling + data, err := proto.Marshal(original) + if err != nil { + t.Fatalf("Failed to marshal SubscribeRecordResponse: %v", err) + } + + restored := &SubscribeRecordResponse{} + err = proto.Unmarshal(data, restored) + if err != nil { + t.Fatalf("Failed to unmarshal SubscribeRecordResponse: %v", err) + } + + // Verify all fields are preserved + if restored.TsNs != original.TsNs { + t.Errorf("TsNs = %d, want %d", restored.TsNs, original.TsNs) + } + if restored.Offset != original.Offset { + t.Errorf("Offset = %d, want %d", restored.Offset, original.Offset) + } + if string(restored.Key) != string(original.Key) { + t.Errorf("Key = %s, want %s", string(restored.Key), string(original.Key)) + } +} + +func TestPublishRecordResponseBackwardCompatibility(t *testing.T) { + // Test that PublishRecordResponse without offset fields still works + original := &PublishRecordResponse{ + AckSequence: 123, + Error: "", + // BaseOffset and LastOffset not set (defaults to 0) + } + + data, err := proto.Marshal(original) + if err != nil { + t.Fatalf("Failed to marshal PublishRecordResponse: %v", err) + } + + restored := &PublishRecordResponse{} + err = proto.Unmarshal(data, restored) + if err != nil { + t.Fatalf("Failed to unmarshal PublishRecordResponse: %v", err) + } + + // Offset fields should default to 0 + if restored.BaseOffset != 0 { + t.Errorf("BaseOffset = %d, want 0", restored.BaseOffset) + } + if restored.LastOffset != 0 { + t.Errorf("LastOffset = %d, want 0", restored.LastOffset) + } +} |
