Skip to content

Commit

Permalink
[ISSUE #33] Add 6 features according to original message test classes…
Browse files Browse the repository at this point in the history
… to bdd resource (#34)

* features

* Delete ConsumerGroup.feature

* features

* Delete bdd/src/main/resources/consumer directory

* features

* features

---------

Co-authored-by: alani <[email protected]>
  • Loading branch information
nannananananana and alani authored Jun 1, 2023
1 parent 29f5976 commit 8c94688
Show file tree
Hide file tree
Showing 12 changed files with 567 additions and 43 deletions.
128 changes: 116 additions & 12 deletions bdd/src/main/java/org/apache/rocketmq/ClientInitStepdefs.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,6 @@
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() {
Expand All @@ -46,11 +43,7 @@ public void createAPushConsumerSetThe(String arg0, String arg1, String arg2, Str

@And("Send {string} messages {string}")
public void sendMessages(String arg0, String arg1) {

}

@And("Shutdown the producer")
public void shutdownTheProducer() {


}

Expand Down Expand Up @@ -90,8 +83,9 @@ public void checkAllMessagesSend(String arg0) {

}

@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) {


}

Expand All @@ -100,18 +94,128 @@ public void createAProducerSetTheEndpointRequestTimeoutTopicTransactionChecker(S

}

@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) {


}

@Then("Check send message failed")
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) {
}
}
16 changes: 8 additions & 8 deletions bdd/src/main/resources/delay.feature
Original file line number Diff line number Diff line change
Expand Up @@ -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
And Shutdown the producer and consumer if they are started
36 changes: 36 additions & 0 deletions bdd/src/main/resources/message/MessageBodyContent.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 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 body contents

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"), 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"), 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:
| MessageBodyContent |
| |
| 中文字符 |
| 😱 |




61 changes: 61 additions & 0 deletions bdd/src/main/resources/message/MessageKey.feature
Original file line number Diff line number Diff line change
@@ -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


57 changes: 57 additions & 0 deletions bdd/src/main/resources/message/MessageProperties.feature
Original file line number Diff line number Diff line change
@@ -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

Loading

0 comments on commit 8c94688

Please sign in to comment.