From 1969df6869423e753de653dc0a17cefce8a91c13 Mon Sep 17 00:00:00 2001 From: Frank Kelly Date: Mon, 27 Oct 2025 14:32:07 -0400 Subject: [PATCH 1/3] Ensure we can handle messages with empty payloads that have properties --- pulsar/reader_test.go | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/pulsar/reader_test.go b/pulsar/reader_test.go index 58c72525cb..17c3afd102 100644 --- a/pulsar/reader_test.go +++ b/pulsar/reader_test.go @@ -161,6 +161,51 @@ func TestReader(t *testing.T) { } } +func TestReaderEmptyPayloadNonemptyProps(t *testing.T) { + client, err := NewClient(ClientOptions{ + URL: lookupURL, + }) + + assert.Nil(t, err) + defer client.Close() + + topic := newTopicName() + ctx := context.Background() + + // create reader + reader, err := client.CreateReader(ReaderOptions{ + Topic: topic, + StartMessageID: EarliestMessageID(), + }) + assert.Nil(t, err) + defer reader.Close() + + // create producer + producer, err := client.CreateProducer(ProducerOptions{ + Topic: topic, + }) + assert.Nil(t, err) + defer producer.Close() + + // send 10 messages + for i := 0; i < 10; i++ { + _, err := producer.Send(ctx, &ProducerMessage{ + Properties: map[string]string{"key": "value"}, + Payload: []byte{}}, + }) + assert.NoError(t, err) + } + + // receive 10 messages + for i := 0; i < 10; i++ { + msg, err := reader.Next(context.Background()) + assert.NoError(t, err) + + assert.Equal(t, map[string]string{"key": "value"}, msg.Properties()) + assert.Equal(t, []byte{}, msg.Payload()) + } +} + func TestReaderOnPartitionedTopic(t *testing.T) { client, err := NewClient(ClientOptions{ URL: lookupURL, From ca96c152fb9d8f4dff08b3d006b303e30913a4f3 Mon Sep 17 00:00:00 2001 From: "Kelly, Frank" Date: Mon, 27 Oct 2025 15:05:36 -0400 Subject: [PATCH 2/3] Fix typo --- pulsar/reader_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pulsar/reader_test.go b/pulsar/reader_test.go index 17c3afd102..fb7a6fbf05 100644 --- a/pulsar/reader_test.go +++ b/pulsar/reader_test.go @@ -191,7 +191,7 @@ func TestReaderEmptyPayloadNonemptyProps(t *testing.T) { for i := 0; i < 10; i++ { _, err := producer.Send(ctx, &ProducerMessage{ Properties: map[string]string{"key": "value"}, - Payload: []byte{}}, + Payload: []byte{}, }) assert.NoError(t, err) } From 08a0888b615a08523f0889c3b7d9f977a24c7aa1 Mon Sep 17 00:00:00 2001 From: "Kelly, Frank" Date: Mon, 27 Oct 2025 15:42:40 -0400 Subject: [PATCH 3/3] Empty array passed the tests, how about nil? --- pulsar/reader_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pulsar/reader_test.go b/pulsar/reader_test.go index fb7a6fbf05..883e4eba75 100644 --- a/pulsar/reader_test.go +++ b/pulsar/reader_test.go @@ -191,7 +191,7 @@ func TestReaderEmptyPayloadNonemptyProps(t *testing.T) { for i := 0; i < 10; i++ { _, err := producer.Send(ctx, &ProducerMessage{ Properties: map[string]string{"key": "value"}, - Payload: []byte{}, + Payload: nil, }) assert.NoError(t, err) } @@ -202,7 +202,7 @@ func TestReaderEmptyPayloadNonemptyProps(t *testing.T) { assert.NoError(t, err) assert.Equal(t, map[string]string{"key": "value"}, msg.Properties()) - assert.Equal(t, []byte{}, msg.Payload()) + assert.Equal(t, nil, msg.Payload()) } }