This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-client-python.git


The following commit(s) were added to refs/heads/main by this push:
     new af6a555  Upgrade the C++ client to 3.5.0 for some bug fixes (#202)
af6a555 is described below

commit af6a555a7f20e5bc39a34e30f608277e19ac3110
Author: Yunze Xu <xyzinfern...@163.com>
AuthorDate: Tue Mar 19 17:33:47 2024 +0800

    Upgrade the C++ client to 3.5.0 for some bug fixes (#202)
---
 dependencies.yaml    |  2 +-
 tests/pulsar_test.py |  1 +
 tests/reader_test.py | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 70 insertions(+), 1 deletion(-)

diff --git a/dependencies.yaml b/dependencies.yaml
index 00e1747..1ffd1c0 100644
--- a/dependencies.yaml
+++ b/dependencies.yaml
@@ -18,7 +18,7 @@
 #
 
 cmake: 3.24.2
-pulsar-cpp: 3.4.2
+pulsar-cpp: 3.5.0
 pybind11: 2.10.1
 boost: 1.80.0
 protobuf: 3.20.0
diff --git a/tests/pulsar_test.py b/tests/pulsar_test.py
index 1872e0f..a3b97b6 100755
--- a/tests/pulsar_test.py
+++ b/tests/pulsar_test.py
@@ -52,6 +52,7 @@ from pulsar.schema import JsonSchema, Record, Integer
 from _pulsar import ProducerConfiguration, ConsumerConfiguration, 
RegexSubscriptionMode
 
 from schema_test import *
+from reader_test import *
 
 from urllib.request import urlopen, Request
 
diff --git a/tests/reader_test.py b/tests/reader_test.py
new file mode 100644
index 0000000..267991c
--- /dev/null
+++ b/tests/reader_test.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from unittest import TestCase, main
+import time
+
+from pulsar import Client, MessageId
+
+class ReaderTest(TestCase):
+
+    def setUp(self):
+        self._client: Client = Client('pulsar://localhost:6650')
+
+    def tearDown(self) -> None:
+        self._client.close()
+
+    def test_has_message_available_after_seek(self):
+        topic = f'test_has_message_available_after_seek-{time.time()}'
+        producer = self._client.create_producer(topic)
+        reader = self._client.create_reader(topic, 
start_message_id=MessageId.earliest)
+
+        producer.send('msg-0'.encode())
+        self.assertTrue(reader.has_message_available())
+
+        reader.seek(MessageId.latest)
+        self.assertFalse(reader.has_message_available())
+
+        producer.send('msg-1'.encode())
+        self.assertTrue(reader.has_message_available())
+
+    def test_seek_latest_message_id(self):
+        topic = f'test_seek_latest_message_id-{time.time()}'
+        producer = self._client.create_producer(topic)
+        msg_id = producer.send('msg'.encode())
+
+        reader = self._client.create_reader(topic,
+            start_message_id=MessageId.latest)
+        self.assertFalse(reader.has_message_available())
+        reader.close()
+
+        reader = self._client.create_reader(topic,
+            start_message_id=MessageId.latest,
+            start_message_id_inclusive=True)
+        self.assertTrue(reader.has_message_available())
+        msg = reader.read_next(3000)
+        self.assertEqual(msg.message_id(), msg_id)
+        reader.close()
+
+
+if __name__ == "__main__":
+    main()

Reply via email to