This is an automated email from the ASF dual-hosted git repository.
addisonj pushed a commit to branch add_message_string
in repository https://gitbox.apache.org/repos/asf/pulsar-client-go.git
The following commit(s) were added to refs/heads/add_message_string by this
push:
new 0bd27e7 add tests
0bd27e7 is described below
commit 0bd27e79654018afa3cdf464728da172b88e4215
Author: Addison Higham <[email protected]>
AuthorDate: Sat May 22 15:53:25 2021 -0600
add tests
---
pulsar/impl_message.go | 8 ++++++++
pulsar/message.go | 4 +++-
pulsar/message_test.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++
pulsar/reader_test.go | 8 ++++++++
4 files changed, 66 insertions(+), 1 deletion(-)
diff --git a/pulsar/impl_message.go b/pulsar/impl_message.go
index c358c22..4a34768 100644
--- a/pulsar/impl_message.go
+++ b/pulsar/impl_message.go
@@ -112,6 +112,14 @@ func (id messageID) String() string {
return fmt.Sprintf("%d:%d:%d", id.ledgerID, id.entryID, id.partitionIdx)
}
+func (id messageID) Equals(other MessageID) bool {
+ rmsgid, ok := other.(messageID)
+ if !ok {
+ return false
+ }
+ return id.equal(rmsgid)
+}
+
func deserializeMessageID(data []byte) (MessageID, error) {
msgID := &pb.MessageIdData{}
err := proto.Unmarshal(data, msgID)
diff --git a/pulsar/message.go b/pulsar/message.go
index fc33e29..4131726 100644
--- a/pulsar/message.go
+++ b/pulsar/message.go
@@ -125,6 +125,8 @@ type MessageID interface {
Serialize() []byte
// String the message id represented as a string
String() string
+ // Equals indicates to message IDs are equal
+ Equals(other MessageID) bool
}
// DeserializeMessageID reconstruct a MessageID object from its serialized
representation
@@ -179,7 +181,7 @@ func EarliestMessageID() MessageID {
return newMessageID(-1, -1, -1, -1)
}
-// LatestMessage returns a messageID that points to the latest message
+// LatestMessageID returns a messageID that points to the latest message
func LatestMessageID() MessageID {
return newMessageID(math.MaxInt64, math.MaxInt64, -1, -1)
}
diff --git a/pulsar/message_test.go b/pulsar/message_test.go
new file mode 100644
index 0000000..1467a23
--- /dev/null
+++ b/pulsar/message_test.go
@@ -0,0 +1,47 @@
+package pulsar
+
+import (
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestMessageIDFromString(t *testing.T) {
+ id, err := MessageIDFromString("1:2")
+ assert.Nil(t, err)
+ assert.True(t, id.Equals(MessageIDFromParts(1, 2, -1, -1)))
+
+ id, err = MessageIDFromString("1:2:3")
+ assert.Nil(t, err)
+ assert.True(t, id.Equals(MessageIDFromParts(1, 2, -1, 3)))
+
+ id, err = MessageIDFromString("1:2:3:4")
+ assert.Nil(t, err)
+ assert.True(t, id.Equals(MessageIDFromParts(1, 2, 4, 3)))
+}
+
+func TestMessageIDFromStringErrors(t *testing.T) {
+ id, err := MessageIDFromString("1;1")
+ assert.Nil(t, id)
+ assert.NotNil(t, err)
+ assert.Equal(t, "invalid message id string. 1;1", err.Error())
+
+ id, err = MessageIDFromString("a:1")
+ assert.Nil(t, id)
+ assert.NotNil(t, err)
+ assert.Equal(t, "invalid ledger id. a:1", err.Error())
+
+ id, err = MessageIDFromString("1:a")
+ assert.Nil(t, id)
+ assert.NotNil(t, err)
+ assert.Equal(t, "invalid entry id. 1:a", err.Error())
+
+ id, err = MessageIDFromString("1:2:a")
+ assert.Nil(t, id)
+ assert.NotNil(t, err)
+ assert.Equal(t, "invalid partition index. 1:2:a", err.Error())
+
+ id, err = MessageIDFromString("1:2:3:a")
+ assert.Nil(t, id)
+ assert.NotNil(t, err)
+ assert.Equal(t, "invalid batch index. 1:2:3:a", err.Error())
+}
diff --git a/pulsar/reader_test.go b/pulsar/reader_test.go
index f72ba1d..fe99c79 100644
--- a/pulsar/reader_test.go
+++ b/pulsar/reader_test.go
@@ -391,6 +391,14 @@ func (id *myMessageID) Serialize() []byte {
return id.data
}
+func (id *myMessageID) String() string {
+ return ""
+}
+
+func (id *myMessageID) Equals(other MessageID) bool {
+ return true
+}
+
func TestReaderOnSpecificMessageWithCustomMessageID(t *testing.T) {
client, err := NewClient(ClientOptions{
URL: lookupURL,