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,

Reply via email to