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 <[email protected]>
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()