This is an automated email from the ASF dual-hosted git repository.
jinrongtong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-e2e.git
The following commit(s) were added to refs/heads/master by this push:
new 8c94688 [ISSUE #33] Add 6 features according to original message test
classes to bdd resource (#34)
8c94688 is described below
commit 8c94688c7e72772959423f072c3e2320794ae22c
Author: alani <[email protected]>
AuthorDate: Thu Jun 1 16:40:25 2023 +0800
[ISSUE #33] Add 6 features according to original message test classes to
bdd resource (#34)
* features
* Delete ConsumerGroup.feature
* features
* Delete bdd/src/main/resources/consumer directory
* features
* features
---------
Co-authored-by: alani <[email protected]>
---
.../org/apache/rocketmq/ClientInitStepdefs.java | 128 +++++++++++++++++++--
bdd/src/main/resources/delay.feature | 16 +--
.../MessageBodyContent.feature} | 26 +++--
bdd/src/main/resources/message/MessageKey.feature | 61 ++++++++++
.../resources/message/MessageProperties.feature | 57 +++++++++
bdd/src/main/resources/message/MessageSize.feature | 105 +++++++++++++++++
bdd/src/main/resources/message/MessageTag.feature | 62 ++++++++++
.../resources/message/MessageUserProperty.feature | 113 ++++++++++++++++++
bdd/src/main/resources/normal.feature | 6 +-
bdd/src/main/resources/order.feature | 6 +-
bdd/src/main/resources/transaction.feature | 6 +-
.../broker/client/message/MessageTagTest.java | 14 ---
12 files changed, 547 insertions(+), 53 deletions(-)
diff --git a/bdd/src/main/java/org/apache/rocketmq/ClientInitStepdefs.java
b/bdd/src/main/java/org/apache/rocketmq/ClientInitStepdefs.java
index c7bdc2d..021186c 100644
--- a/bdd/src/main/java/org/apache/rocketmq/ClientInitStepdefs.java
+++ b/bdd/src/main/java/org/apache/rocketmq/ClientInitStepdefs.java
@@ -23,9 +23,6 @@ import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
public class ClientInitStepdefs {
- @And("Shutdown the producer and consumer")
- public void shutdownTheProducerAndConsumer() {
- }
@And("Create a Producer, set the <NameServer>, <RequestTimeout>")
public void createAProducerSetTheNameServerRequestTimeout() {
@@ -46,11 +43,7 @@ public class ClientInitStepdefs {
@And("Send {string} messages {string}")
public void sendMessages(String arg0, String arg1) {
-
- }
-
- @And("Shutdown the producer")
- public void shutdownTheProducer() {
+
}
@@ -90,8 +83,9 @@ public class ClientInitStepdefs {
}
- @When("Create a PushConsumer, set the Endpoint\\({string}),
ConsumerGroup\\({string}), SubscriptionExpression\\({string}),
Topic\\({string}), MessageListener\\({string})")
- public void
createAPushConsumerSetTheEndpointConsumerGroupSubscriptionExpressionTopicMessageListener(String
arg0, String arg1, String arg2, String arg3, String arg4) {
+ @When("Create a PushConsumer, set the Endpoint\\({string}),
ConsumerGroup\\({string}), Tag\\({string}), Topic\\({string}),
MessageListener\\({string})")
+ public void
createAPushConsumerSetTheEndpointConsumerGroupTagTopicMessageListener(String
arg0, String arg1, String arg2, String arg3, String arg4) {
+
}
@@ -100,13 +94,15 @@ public class ClientInitStepdefs {
}
- @Then("Create a message, including the Topic\\({string}),
SubscriptionExpression\\({string}), Key\\({string}), and Body\\({string})")
- public void
createAMessageIncludingTheTopicSubscriptionExpressionKeyAndBody(String arg0,
String arg1, String arg2, String arg3) {
+ @Then("Create a message, including the Topic\\({string}), Tag\\({string}),
Key\\({string}), and Body\\({string})")
+ public void createAMessageIncludingTheTopicTagKeyAndBody(String arg0,
String arg1, String arg2, String arg3) {
+
}
@And("Create a Producer, set the Endpoint\\({string}),
RequestTimeout:\\({string}), Topic\\({string})")
public void createAProducerSetTheEndpointRequestTimeoutTopic(String arg0,
String arg1, String arg2) {
+
}
@@ -114,4 +110,112 @@ public class ClientInitStepdefs {
public void checkSendMessageFailed() {
}
+
+ @And("Check each MessageGroup consumes up to {int} messages separately and
is consumed orderly")
+ public void
checkEachMessageGroupConsumesUpToMessagesSeparatelyAndIsConsumedOrderly(int
arg0) {
+ }
+
+
+ @And("Create a SimpleConsumer, set the Endpoint\\({string}),
ConsumerGroup\\({string}), SubscriptionExpression\\({string}),
Topic\\({string}), Duration\\({string})")
+ public void
createASimpleConsumerSetTheEndpointConsumerGroupSubscriptionExpressionTopicDuration(String
arg0, String arg1, String arg2, String arg3, String arg4) {
+ }
+
+ @And("Check the subscribed message body is equal to {string}")
+ public void checkTheSubscribedMessageBodyEqualsTo(String arg0) {
+ }
+
+ @And("Create a message, including the Topic\\({string}), Tag\\({string}),
Key\\({string}), and Body\\(null)")
+ public void createAMessageIncludingTheTopicTagKeyAndBodyNull(String arg0,
String arg1, String arg2) {
+ }
+
+
+ @And("Create a message, including the Topic\\(null), Tag\\({string}),
Key\\({string}), and Body\\({string})")
+ public void createAMessageIncludingTheTopicNullTagKeyAndBody(String arg0,
String arg1, String arg2) {
+
+ }
+
+ @And("Create a message, including the Topic\\({string}), Tag\\(null),
Key\\({string}), and Body\\({string})")
+ public void createAMessageIncludingTheTopicTagNullKeyAndBody(String arg0,
String arg1, String arg2) {
+
+ }
+
+ @And("Create a message, including the Topic\\({string}),
SubscriptionExpression\\({string}),
Key\\(RandomStringUtils.randomAlphabetic\\({int} * {int} + {int})), and
Body\\({string})")
+ public void
createAMessageIncludingTheTopicSubscriptionExpressionKeyRandomStringUtilsRandomAlphabeticAndBody(String
arg0, String arg1, int arg2, int arg3, int arg4, String arg5) {
+
+ }
+
+ @Then("Check exceptions can be thrown")
+ public void checkBuildMethodThatCanThrowExceptions() {
+ }
+
+ @Given("Create a {string} topic:{string} if not exist")
+ public void createATopicIfNotExist(String arg0, String arg1) {
+
+
+ }
+
+ @And("Shutdown the producer and consumer if they are started")
+ public void shutdownTheProducerAndConsumerIfTheyAreStarted() {
+ }
+
+ @And("Create a message, including the Topic\\({string}), Tag\\({string}),
Key\\({string}, {string}), and Body\\({string})")
+ public void createAMessageIncludingTheTopicTagKeyAndBody(String arg0,
String arg1, String arg2, String arg3, String arg4) {
+
+ }
+
+ @And("Send a half message")
+ public void sendAHalfMessage() {
+
+ }
+
+ @And("Create a transaction branch")
+ public void createATransactionBranch() {
+ }
+
+ @And("Create a message, including the Topic\\({string}), Tag\\({string}),
and Body\\({string})")
+ public void createAMessageIncludingTheTopicTagAndBody(String arg0, String
arg1, String arg2) {
+
+ }
+
+ @And("Create a message, including the Topic\\({string}), Tag\\({string}),
Body\\({string}), deliveryTimestamp\\({string})")
+ public void createAMessageIncludingTheTopicTagBodyDeliveryTimestamp(String
arg0, String arg1, String arg2, String arg3) {
+
+ }
+
+ @And("Create a message, including the Topic\\({string}), Tag\\({string}),
Body\\({string}), messageGroup\\({string})")
+ public void createAMessageIncludingTheTopicTagBodyMessageGroup(String
arg0, String arg1, String arg2, String arg3) {
+
+ }
+
+ @And("Create a message, including the Topic\\({string}), Tag\\({string}),
Key\\({string}), Value\\({string}), Body\\({string}), msgKey\\({string})")
+ public void createAMessageIncludingTheTopicTagKeyValueBodyMsgKey(String
arg0, String arg1, String arg2, String arg3, String arg4, String arg5) {
+
+ }
+
+ @And("Create a message, including the Topic\\({string}), and
messageProperty\\({string}, {string})")
+ public void createAMessageIncludingTheTopicAndMessageProperty(String arg0,
String arg1, String arg2) {
+ }
+
+ @And("Create a message, including the Topic\\({string}), Body\\({string}),
and messageProperty\\({string})")
+ public void createAMessageIncludingTheTopicBodyAndMessageProperty(String
arg0, String arg1, String arg2) {
+
+ }
+
+ @And("Create a message, including the Topic\\({string}), Body\\({string}),
messageGroup\\({string}), and messageProperty\\({string})")
+ public void
createAMessageIncludingTheTopicBodyMessageGroupAndMessageProperty(String arg0,
String arg1, String arg2, String arg3) {
+ }
+
+ @And("Set message {string} {string} times")
+ public void setMessageTimes(String arg0, String arg1) {
+
+ }
+
+ @And("Set Key\\({string}), Value\\({string})")
+ public void setKeyValue(String arg0, String arg1) {
+
+ }
+
+ @And("Set messageProperty {string} to {string} and {string} to {string}")
+ public void setMessagePropertyToAndTo(String arg0, String arg1, String
arg2, String arg3) {
+ }
}
diff --git a/bdd/src/main/resources/delay.feature
b/bdd/src/main/resources/delay.feature
index 511403a..7842fbe 100644
--- a/bdd/src/main/resources/delay.feature
+++ b/bdd/src/main/resources/delay.feature
@@ -17,32 +17,32 @@ Feature: Test the message transfer mode and topic type
Scenario: Send 10 messages set delivery timestamp after 30s after the
current system time. Expect to consume all 10 messages after 30s
Given Create a "DELAY" topic:"random-topic" if not exist, a "Concurrently"
group:"random-group"
- When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), SubscriptionExpression("TagA"),
Topic("random-topic"), MessageListener("default")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
And Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
- Then Create a message, including the Topic("random-topic"),
SubscriptionExpression("TagA"), Key("Key"), and Body("Body")
+ Then Create a message, including the Topic("random-topic"), Tag("TagA"),
Key("Key"), and Body("Body")
And Set message "DeliveryTimestamp" to 20 seconds before the current
system time
And Send "10" messages "synchronous"
Then Check all messages that can be consumed within 60s
And Check the received message's "DeliveryTimestamp" property "isNotNull"
and value is expected
And Check consume all messages immediately
- And Shutdown the producer and consumer
+ And Shutdown the producer and consumer if they are started
Scenario: Send 10 messages set delivery timestamp 10s before the current
system time. Expect timing does not take effect, all 10 messages can be
consumed immediately
Given Create a "DELAY" topic:"random-topic" if not exist, a "Concurrently"
group:"random-group"
- When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), SubscriptionExpression("TagA"),
Topic("random-topic"), MessageListener("default")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
And Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
- Then Create a message, including the Topic("random-topic"),
SubscriptionExpression("TagA"), Key("Key"), and Body("Body")
+ Then Create a message, including the Topic("random-topic"), Tag("TagA"),
Key("Key"), and Body("Body")
And Set message "DeliveryTimestamp" to 30 seconds after the current system
time
And Send "10" messages "synchronous"
Then Check consume all 10 messages after 30s(±5s)
And Check the received message's "DeliveryTimestamp" property "isNotNull"
and value is expected
- And Shutdown the producer and consumer
+ And Shutdown the producer and consumer if they are started
Scenario: Send a message set delivery timestamp 24h+5s after the current
system time. Expect send message failed
Given Create a "DELAY" topic:"random-topic" if not exist, a "Concurrently"
group:"random-group"
And Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
- Then Create a message, including the Topic("random-topic"),
SubscriptionExpression("TagA"), Key("Key"), and Body("Body")
+ Then Create a message, including the Topic("random-topic"), Tag("TagA"),
Key("Key"), and Body("Body")
And Set message "DeliveryTimestamp" to 86405 seconds after the current
system time
And Send "1" messages "synchronous"
Then Check send message failed
- And Shutdown the producer
\ No newline at end of file
+ And Shutdown the producer and consumer if they are started
\ No newline at end of file
diff --git a/bdd/src/main/resources/normal.feature
b/bdd/src/main/resources/message/MessageBodyContent.feature
similarity index 63%
copy from bdd/src/main/resources/normal.feature
copy to bdd/src/main/resources/message/MessageBodyContent.feature
index 550e7b0..1d98e97 100644
--- a/bdd/src/main/resources/normal.feature
+++ b/bdd/src/main/resources/message/MessageBodyContent.feature
@@ -13,18 +13,24 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-Feature: Test the message transfer mode
+Feature: Test message body contents
- Scenario Outline: 10 normal messages are sent synchronously and are
expected to be received
+ Scenario Outline: Send normal message, setting message body, expect send and
consume success
Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
- When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), SubscriptionExpression("TagA"),
Topic("random-topic"), MessageListener("default")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
And Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
- Then Create a message, including the Topic("random-topic"),
SubscriptionExpression("TagA"), Key("Key"), and Body("Body")
- And Send "10" messages "<TransmissionMode>"
- Then Check all messages that can be consumed within 60s
- And Shutdown the producer and consumer
+ Then Create a message, including the Topic("random-topic"), Tag("TagA"),
Key("Key"), and Body("<MessageBodyContent>")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Check the subscribed message body is equal to "<MessageBodyContent>"
+ And Shutdown the producer and consumer if they are started
Examples:
- | TransmissionMode |
- | synchronous |
- | asynchronous |
+ | MessageBodyContent |
+ | |
+ | 中文字符 |
+ | 😱 |
+
+
+
+
diff --git a/bdd/src/main/resources/message/MessageKey.feature
b/bdd/src/main/resources/message/MessageKey.feature
new file mode 100644
index 0000000..6345a0a
--- /dev/null
+++ b/bdd/src/main/resources/message/MessageKey.feature
@@ -0,0 +1,61 @@
+# 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.
+
+Feature: Test message key
+
+ Scenario: Message Key beyond 16KB, expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Key("size:16kB+1"), and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message Key beyond 16KB, expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Key("\u0000"), and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message Key equals 16KB, expect send and consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Key("size:16KB"), and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message key contains Chinese, expect send and consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Key("中文字符"), and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: The message contains multiple keys, expect send and consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Key("random-key1", "random-key2"), and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+
diff --git a/bdd/src/main/resources/message/MessageProperties.feature
b/bdd/src/main/resources/message/MessageProperties.feature
new file mode 100644
index 0000000..106c935
--- /dev/null
+++ b/bdd/src/main/resources/message/MessageProperties.feature
@@ -0,0 +1,57 @@
+# 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.
+
+Feature: Test message properties
+
+ Scenario: producer invoke send(messageBody=null), expect build message throw
exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Key("Key"), and Body(null)
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: producer invoke send(topic=""), expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic(""), Tag("random-tag"),
Key("Key"), and Body("Body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: producer invoke send(topic=null), expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic(null), Tag("random-tag"),
Key("Key"), and Body("Body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: producer invoke send(tag=null), expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"), Tag(null),
Key("Key"), and Body("Body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: producer invoke send(tag=""), expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"), Tag(" "),
Key("Key"), and Body("Body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
diff --git a/bdd/src/main/resources/message/MessageSize.feature
b/bdd/src/main/resources/message/MessageSize.feature
new file mode 100644
index 0000000..7960d34
--- /dev/null
+++ b/bdd/src/main/resources/message/MessageSize.feature
@@ -0,0 +1,105 @@
+# 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.
+
+Feature: Test message size
+
+ Scenario Outline: Send normal/transaction messages with the body size of
4M+1, expect send failed
+ Given Create a "<MessageType>" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), and Body("size:4M+1")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Examples:
+ | MessageType |
+ | Normal |
+ | Transaction |
+
+ Scenario: Send delay messages with the body size of 4M+1, expect send failed
+ Given Create a "delay" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Body("size:4M+1"), deliveryTimestamp("10L")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Send FIFO messages with the body size of 4M+1, expect send failed
+ Given Create a "FIFO" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Body("size:4M+1"), messageGroup("a")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario Outline: Send normal/transaction messages with the body size of 4M,
expect send and consume success
+ Given Create a "<MessageType>" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), and Body("size:4M")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Examples:
+ | MessageType |
+ | Normal |
+ | Transaction |
+
+ Scenario: Send delay messages with the body size of 4M, expect send and
consume success
+ Given Create a "delay" topic:"random-topic" if not exist, a "Concurrently"
group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Body("size:4M"), deliveryTimestamp("10s")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Send FIFO messages with the body size of 4M, expect send and
consume success
+ Given Create a "FIFO" topic:"random-topic" if not exist, a "Concurrently"
group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Body("size:4M"), messageGroup("a")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Send normal messages with the body size of 4M and the property
size of 16KB, expect send and consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Body("size:4M"), and messageProperty("size:16kB")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Send FIFO messages with the body size of 4M and the property size
of 16KB, expect send and consume success
+ Given Create a "FIFO" topic:"random-topic" if not exist, a "Concurrently"
group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Body("size:4M"), messageGroup("a"), and messageProperty("size:16kB")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+
+
+
+
+
+
+
+
+
diff --git a/bdd/src/main/resources/message/MessageTag.feature
b/bdd/src/main/resources/message/MessageTag.feature
new file mode 100644
index 0000000..7c1692d
--- /dev/null
+++ b/bdd/src/main/resources/message/MessageTag.feature
@@ -0,0 +1,62 @@
+# 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.
+
+Feature: Test message tag
+
+ Scenario: Message Tag beyond 16KB, expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("size:16kB+1"), and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message Tag equals 16KB, expect send and consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("size:16kB"), and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message Tag contains invisible characters \u0000, expect throw
exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"), Tag("\u0000"),
and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message Tag contains | , expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"), Tag("tag|"),
and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message Tag contains Chinese, expect send and consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"), Tag("中文字符"),
and Body("random-body")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+
+
+
diff --git a/bdd/src/main/resources/message/MessageUserProperty.feature
b/bdd/src/main/resources/message/MessageUserProperty.feature
new file mode 100644
index 0000000..8828e00
--- /dev/null
+++ b/bdd/src/main/resources/message/MessageUserProperty.feature
@@ -0,0 +1,113 @@
+# 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.
+
+Feature: Test message property
+
+ Scenario: Message property beyond limit 128 ,expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Body("random-body"), and messageProperty("random-messageProperty")
+ And Set message "messageProperty" "129" times
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: The number of message properties equals limit 128, expect send and
consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Body("random-body"), and messageProperty("random-messageProperty")
+ And Set message "messageProperty" "128" times
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message property equals 16KB, expect send and consume success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Body("random-body"), and messageProperty("size:16kB")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+
+ Scenario: Message property beyond 16KB, expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Body("random-body"), and messageProperty("size:16kB+1")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario Outline: Message property contains invisible character \u0000 / use
SystemKey UNIQ_KEY ,expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"), and
messageProperty("<KeyContent>", "<ValueContent>")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Examples:
+ | KeyContent | ValueContent |
+ | \u0000 | value |
+ | UNIQ_KEY | value |
+
+ Scenario: Message property ,key and tag beyond 16KB ,expect throw exception
+ Given Create a "Normal" topic:"random-topic" if not exist
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("size:4kB"), Key("size:4kB"), Value("size:4kB"), Body("size:4M"),
msgKey("size:4kB+1")
+ And Send "a" messages "synchronous"
+ Then Check exceptions can be thrown
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message property ,key and tag equals 16KB, expect send and consume
success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("size:4kB"), Key("size:4kB"), Value("size:4kB"), Body("size:4M"),
msgKey("size:4kB")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message property ,key and tag equals 64B, expect send and consume
success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a message, including the Topic("random-topic"),
Tag("size:64B"), Key("size:64B"), Value("size:64B"), Body("size:64B"),
msgKey("size:64B")
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+ Scenario: Message property is the visible character, expect send and consume
success
+ Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
+ When Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
+ And Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
+ And Create a message, including the Topic("random-topic"),
Tag("random-tag"), Key("中文"), Value("中文"), Body("random-body"),
msgKey("random-msgkey")
+ And Set messageProperty "Key" to "_" and "Value" to "_"
+ And Set messageProperty "Key" to "%" and "Value" to "%"
+ And Set messageProperty "Key" to "。" and "Value" to "。"
+ And Set messageProperty "Key" to "|" and "Value" to "|"
+ And Set messageProperty "Key" to "&&" and "Value" to "&&"
+ And Set messageProperty "Key" to "🏷" and "Value" to "🏷"
+ And Send "a" messages "synchronous"
+ Then Check all messages that can be consumed within 60s
+ And Shutdown the producer and consumer if they are started
+
+
+
+
+
+
+
diff --git a/bdd/src/main/resources/normal.feature
b/bdd/src/main/resources/normal.feature
index 550e7b0..0ba6c3d 100644
--- a/bdd/src/main/resources/normal.feature
+++ b/bdd/src/main/resources/normal.feature
@@ -17,12 +17,12 @@ Feature: Test the message transfer mode
Scenario Outline: 10 normal messages are sent synchronously and are
expected to be received
Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
- When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), SubscriptionExpression("TagA"),
Topic("random-topic"), MessageListener("default")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
And Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
- Then Create a message, including the Topic("random-topic"),
SubscriptionExpression("TagA"), Key("Key"), and Body("Body")
+ Then Create a message, including the Topic("random-topic"), Tag("TagA"),
Key("Key"), and Body("Body")
And Send "10" messages "<TransmissionMode>"
Then Check all messages that can be consumed within 60s
- And Shutdown the producer and consumer
+ And Shutdown the producer and consumer if they are started
Examples:
| TransmissionMode |
diff --git a/bdd/src/main/resources/order.feature
b/bdd/src/main/resources/order.feature
index e1e12c4..a224336 100644
--- a/bdd/src/main/resources/order.feature
+++ b/bdd/src/main/resources/order.feature
@@ -17,10 +17,10 @@ Feature: Test the message transfer mode and topic type
Scenario: Send 100 messages with in 2 MessageGroup, expect consumed all
messages orderly
Given Create a "FIFO" topic:"random-topic" if not exist, a "Orderly"
group:"random-group"
- When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), SubscriptionExpression("TagA"),
Topic("random-topic"), MessageListener("default")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
And Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic")
- Then Create a message, including the Topic("random-topic"),
SubscriptionExpression("TagA"), Key("Key"), and Body("Body")
+ Then Create a message, including the Topic("random-topic"), Tag("TagA"),
Key("Key"), and Body("Body")
And A total of 100 messages are sent "<TransmissionMode>" to the 2
MessageGroups in turn
Then Check all messages that can be consumed within 60s
And Check each MessageGroup consumes up to 50 messages separately and is
consumed orderly
- And Shutdown the producer and consumer
+ And Shutdown the producer and consumer if they are started
diff --git a/bdd/src/main/resources/transaction.feature
b/bdd/src/main/resources/transaction.feature
index 733f601..f4e13eb 100644
--- a/bdd/src/main/resources/transaction.feature
+++ b/bdd/src/main/resources/transaction.feature
@@ -17,15 +17,15 @@ Feature: Test the message transfer mode
Scenario Outline: 10 transaction messages are sent synchronously and are
expected to be received
Given Create a "Normal" topic:"random-topic" if not exist, a
"Concurrently" group:"random-group"
- When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), SubscriptionExpression("TagA"),
Topic("random-topic"), MessageListener("default")
+ When Create a PushConsumer, set the Endpoint("127.0.0.1:9876"),
ConsumerGroup("random-group"), Tag("TagA"), Topic("random-topic"),
MessageListener("default")
And Create a Producer, set the Endpoint("127.0.0.1:9876"),
RequestTimeout:("10s"), Topic("random-topic"),
TransactionChecker:("<TransactionChecker>")
And Create a transaction branch
- Then Create a message, including the Topic("random-topic"),
SubscriptionExpression("TagA"), Key("Key"), and Body("Body")
+ Then Create a message, including the Topic("random-topic"), Tag("TagA"),
Key("Key"), and Body("Body")
And Send a half message
And Execute transaction:"<TransactionExecutor>"
Then Check all messages send "success"
And Check all messages that can be consumed within 60s
- And Shutdown the producer and consumer
+ And Shutdown the producer and consumer if they are started
Examples:
| TransactionChecker | TransactionExecutor |
diff --git
a/java/e2e/src/test/java/org/apache/rocketmq/broker/client/message/MessageTagTest.java
b/java/e2e/src/test/java/org/apache/rocketmq/broker/client/message/MessageTagTest.java
index 07e6c2a..594a1e0 100644
---
a/java/e2e/src/test/java/org/apache/rocketmq/broker/client/message/MessageTagTest.java
+++
b/java/e2e/src/test/java/org/apache/rocketmq/broker/client/message/MessageTagTest.java
@@ -111,20 +111,6 @@ public class MessageTagTest extends BaseOperate {
}, " message tag contains invisible character ,expect throw exception
but it didn't");
}
- @Test
- @DisplayName("Message Tag and User Property beyond 16KB ,expect throw
exception")
- public void testMessageUserPropertyAndTagBeyond16KB() {
- producer = ProducerFactory.getRMQProducer(account, topic);
- String tag = RandomStringUtils.randomAlphabetic(16 * 1024 + 1);
- String body = RandomStringUtils.randomAlphabetic(64);
-
- Assertions.assertNotNull(producer);
- assertThrows(Exception.class, () -> {
- Message message = MessageFactory.buildMessage(topic, tag, body);
- producer.getProducer().send(message);
- }, " message tag and user property beyond 16KB ,expect throw exception
but it didn't");
- }
-
@Test
@DisplayName("Message Tag contains | , expect throw exception")
public void testMessageTagContentWith() {