This is an automated email from the ASF dual-hosted git repository.
dinglei pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new d94d0751a9 [ISSUE #8476] Add test cases for
org.apache.rocketmq.common.attribute (#8477)
d94d0751a9 is described below
commit d94d0751a92a43f5368f896418df95cf325a5552
Author: 我是管小亮_V0x3f <[email protected]>
AuthorDate: Mon Aug 5 09:53:55 2024 +0800
[ISSUE #8476] Add test cases for org.apache.rocketmq.common.attribute
(#8477)
* Which Issue(s) This PR Fixes
add test case for AclConfig in commom module
Fixes #8417
Brief Description
add test case for AclConfig in commom module by using tongyi tools.
How Did You Test This Change?
run test case successfull.
* Which Issue(s) This PR Fixes
add test case for AclConfig in commom module
Fixes #8476
Brief Description
add test case for org.apache.rocketmq.common.attribute in commom module by
using tongyi tools.
How Did You Test This Change?
run test case successfull.
* Which Issue(s) This PR Fixes
add test case for AclConfig in commom module
Fixes #8476
Brief Description
add test case for org.apache.rocketmq.common.attribute in commom module by
using tongyi tools.
How Did You Test This Change?
run test case successfull.
* Which Issue(s) This PR Fixes
add test case for AclConfig in commom module
Fixes #8476
Brief Description
add test case for org.apache.rocketmq.common.attribute in commom module by
using tongyi tools.
How Did You Test This Change?
run test case successfull.
---
.../common/attribute/AttributeParserTest.java | 72 ++++++++++++-
.../rocketmq/common/attribute/AttributeTest.java | 43 ++++++++
.../common/attribute/AttributeUtilTest.java | 119 +++++++++++++++++++++
.../common/attribute/BooleanAttributeTest.java | 52 +++++++++
.../rocketmq/common/attribute/CQTypeTest.java | 45 ++++++++
.../common/attribute/CleanupPolicyTest.java | 36 +++++++
.../common/attribute/EnumAttributeTest.java | 62 +++++++++++
.../common/attribute/LongRangeAttributeTest.java | 65 +++++++++++
.../common/attribute/TopicMessageTypeTest.java | 63 +++++++++++
9 files changed, 554 insertions(+), 3 deletions(-)
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeParserTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeParserTest.java
index 12398100be..a89587354b 100644
---
a/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeParserTest.java
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeParserTest.java
@@ -17,18 +17,84 @@
package org.apache.rocketmq.common.attribute;
import com.google.common.collect.Maps;
-import org.junit.Assert;
-import org.junit.Test;
-
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.junit.Assert;
+import org.junit.Test;
import static com.google.common.collect.Maps.newHashMap;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class AttributeParserTest {
+
+ @Test
+ public void parseToMap_EmptyString_ReturnsEmptyMap() {
+ String attributesModification = "";
+ Map<String, String> result =
AttributeParser.parseToMap(attributesModification);
+ assertTrue(result.isEmpty());
+ }
+
+ @Test
+ public void parseToMap_NullString_ReturnsEmptyMap() {
+ String attributesModification = null;
+ Map<String, String> result =
AttributeParser.parseToMap(attributesModification);
+ assertTrue(result.isEmpty());
+ }
+
+ @Test
+ public void parseToMap_ValidAttributesModification_ReturnsExpectedMap() {
+ String attributesModification =
"+key1=value1,+key2=value2,-key3,+key4=value4";
+ Map<String, String> result =
AttributeParser.parseToMap(attributesModification);
+
+ Map<String, String> expectedMap = new HashMap<>();
+ expectedMap.put("+key1", "value1");
+ expectedMap.put("+key2", "value2");
+ expectedMap.put("-key3", "");
+ expectedMap.put("+key4", "value4");
+
+ assertEquals(expectedMap, result);
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void parseToMap_InvalidAddAttributeFormat_ThrowsRuntimeException() {
+ String attributesModification =
"+key1=value1,key2=value2,-key3,+key4=value4";
+ AttributeParser.parseToMap(attributesModification);
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void
parseToMap_InvalidDeleteAttributeFormat_ThrowsRuntimeException() {
+ String attributesModification =
"+key1=value1,+key2=value2,key3,+key4=value4";
+ AttributeParser.parseToMap(attributesModification);
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void parseToMap_DuplicateKey_ThrowsRuntimeException() {
+ String attributesModification = "+key1=value1,+key1=value2";
+ AttributeParser.parseToMap(attributesModification);
+ }
+
+ @Test
+ public void parseToString_EmptyMap_ReturnsEmptyString() {
+ Map<String, String> attributes = new HashMap<>();
+ String result = AttributeParser.parseToString(attributes);
+ assertEquals("", result);
+ }
+
+ @Test
+ public void parseToString_ValidAttributes_ReturnsExpectedString() {
+ Map<String, String> attributes = new HashMap<>();
+ attributes.put("key1", "value1");
+ attributes.put("key2", "value2");
+ attributes.put("key3", "");
+
+ String result = AttributeParser.parseToString(attributes);
+ String expectedString = "key1=value1,key2=value2,key3";
+ assertEquals(expectedString, result);
+ }
+
@Test
public void testParseToMap() {
Assert.assertEquals(0, AttributeParser.parseToMap(null).size());
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeTest.java
index 39a12b97ef..9be0f31f06 100644
---
a/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeTest.java
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeTest.java
@@ -17,12 +17,55 @@
package org.apache.rocketmq.common.attribute;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
import static com.google.common.collect.Sets.newHashSet;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
public class AttributeTest {
+ private Attribute attribute;
+
+ @Before
+ public void setUp() {
+ attribute = new Attribute("testAttribute", true) {
+ @Override
+ public void verify(String value) {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+
+ @Test
+ public void testGetName_ShouldReturnCorrectName() {
+ assertEquals("testAttribute", attribute.getName());
+ }
+
+ @Test
+ public void testSetName_ShouldSetCorrectName() {
+ attribute.setName("newTestAttribute");
+ assertEquals("newTestAttribute", attribute.getName());
+ }
+
+ @Test
+ public void testIsChangeable_ShouldReturnCorrectChangeableStatus() {
+ assertTrue(attribute.isChangeable());
+ }
+
+ @Test
+ public void testSetChangeable_ShouldSetCorrectChangeableStatus() {
+ attribute.setChangeable(false);
+ assertFalse(attribute.isChangeable());
+ }
+
+ @Test(expected = UnsupportedOperationException.class)
+ public void testVerify_ShouldThrowUnsupportedOperationException() {
+ attribute.verify("testValue");
+ }
+
@Test
public void testEnumAttribute() {
EnumAttribute enumAttribute = new EnumAttribute("enum.key", true,
newHashSet("enum-1", "enum-2", "enum-3"), "enum-1");
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeUtilTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeUtilTest.java
new file mode 100644
index 0000000000..aef46c1668
--- /dev/null
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/AttributeUtilTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.
+ */
+package org.apache.rocketmq.common.attribute;
+
+import com.google.common.collect.ImmutableMap;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class AttributeUtilTest {
+
+ private Map<String, Attribute> allAttributes;
+ private ImmutableMap<String, String> currentAttributes;
+
+ @Before
+ public void setUp() {
+ allAttributes = new HashMap<>();
+ allAttributes.put("attr1", new TestAttribute("value1", true, value ->
true));
+ allAttributes.put("attr2", new TestAttribute("value2", true, value ->
true));
+ allAttributes.put("attr3", new TestAttribute("value3", true, value ->
value.equals("valid")));
+
+ currentAttributes = ImmutableMap.of("attr1", "value1", "attr2",
"value2");
+ }
+
+ @Test
+ public void
alterCurrentAttributes_CreateMode_ShouldReturnOnlyAddedAttributes() {
+ ImmutableMap<String, String> newAttributes = ImmutableMap.of("+attr1",
"new_value1", "+attr2", "value2", "+attr3", "value3");
+
+ Map<String, String> result =
AttributeUtil.alterCurrentAttributes(true, allAttributes, currentAttributes,
newAttributes);
+
+ assertEquals(3, result.size());
+ assertTrue(result.containsKey("attr1"));
+ assertEquals("new_value1", result.get("attr1"));
+ assertTrue(result.containsKey("attr3"));
+ assertEquals("value3", result.get("attr3"));
+ assertTrue(result.containsKey("attr2"));
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void
alterCurrentAttributes_CreateMode_AddNonAddableAttribute_ShouldThrowException()
{
+ ImmutableMap<String, String> newAttributes = ImmutableMap.of("attr1",
"value1");
+ AttributeUtil.alterCurrentAttributes(true, allAttributes,
currentAttributes, newAttributes);
+ }
+
+ @Test
+ public void
alterCurrentAttributes_UpdateMode_ShouldReturnUpdatedAndAddedAttributes() {
+ ImmutableMap<String, String> newAttributes = ImmutableMap.of("+attr1",
"new_value1", "-attr2", "value2", "+attr3", "value3");
+
+ Map<String, String> result =
AttributeUtil.alterCurrentAttributes(false, allAttributes, currentAttributes,
newAttributes);
+
+ assertEquals(2, result.size());
+ assertTrue(result.containsKey("attr1"));
+ assertEquals("new_value1", result.get("attr1"));
+ assertTrue(result.containsKey("attr3"));
+ assertEquals("value3", result.get("attr3"));
+ assertFalse(result.containsKey("attr2"));
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void
alterCurrentAttributes_UpdateMode_DeleteNonExistentAttribute_ShouldThrowException()
{
+ ImmutableMap<String, String> newAttributes = ImmutableMap.of("-attr4",
"value4");
+ AttributeUtil.alterCurrentAttributes(false, allAttributes,
currentAttributes, newAttributes);
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void
alterCurrentAttributes_UpdateMode_WrongFormatKey_ShouldThrowException() {
+ ImmutableMap<String, String> newAttributes = ImmutableMap.of("attr1",
"+value1");
+ AttributeUtil.alterCurrentAttributes(false, allAttributes,
currentAttributes, newAttributes);
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void alterCurrentAttributes_UnsupportedKey_ShouldThrowException() {
+ ImmutableMap<String, String> newAttributes =
ImmutableMap.of("unsupported_attr", "value");
+ AttributeUtil.alterCurrentAttributes(false, allAttributes,
currentAttributes, newAttributes);
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void
alterCurrentAttributes_AttemptToUpdateUnchangeableAttribute_ShouldThrowException()
{
+ ImmutableMap<String, String> newAttributes = ImmutableMap.of("attr2",
"new_value2");
+ AttributeUtil.alterCurrentAttributes(false, allAttributes,
currentAttributes, newAttributes);
+ }
+
+ private static class TestAttribute extends Attribute {
+ private final AttributeValidator validator;
+
+ public TestAttribute(String name, boolean changeable,
AttributeValidator validator) {
+ super(name, changeable);
+ this.validator = validator;
+ }
+
+ @Override
+ public void verify(String value) {
+ validator.validate(value);
+ }
+ }
+
+ private interface AttributeValidator {
+ boolean validate(String value);
+ }
+}
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/BooleanAttributeTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/BooleanAttributeTest.java
new file mode 100644
index 0000000000..6bed6ffac6
--- /dev/null
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/BooleanAttributeTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+package org.apache.rocketmq.common.attribute;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThrows;
+
+public class BooleanAttributeTest {
+
+ private BooleanAttribute booleanAttribute;
+
+ @Before
+ public void setUp() {
+ booleanAttribute = new BooleanAttribute("testAttribute", true, false);
+ }
+
+ @Test
+ public void testVerify_ValidValue_NoExceptionThrown() {
+ booleanAttribute.verify("true");
+ booleanAttribute.verify("false");
+ }
+
+ @Test
+ public void testVerify_InvalidValue_ExceptionThrown() {
+ assertThrows(RuntimeException.class, () ->
booleanAttribute.verify("invalid"));
+ assertThrows(RuntimeException.class, () ->
booleanAttribute.verify("1"));
+ assertThrows(RuntimeException.class, () ->
booleanAttribute.verify("0"));
+ assertThrows(RuntimeException.class, () ->
booleanAttribute.verify(""));
+ }
+
+ @Test
+ public void testGetDefaultValue() {
+ assertFalse(booleanAttribute.getDefaultValue());
+ }
+}
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/CQTypeTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/CQTypeTest.java
new file mode 100644
index 0000000000..41aa98ba86
--- /dev/null
+++ b/common/src/test/java/org/apache/rocketmq/common/attribute/CQTypeTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+package org.apache.rocketmq.common.attribute;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class CQTypeTest {
+
+ @Test
+ public void testValues() {
+ CQType[] values = CQType.values();
+ assertEquals(3, values.length);
+ assertEquals(CQType.SimpleCQ, values[0]);
+ assertEquals(CQType.BatchCQ, values[1]);
+ assertEquals(CQType.RocksDBCQ, values[2]);
+ }
+
+ @Test
+ public void testValueOf() {
+ assertEquals(CQType.SimpleCQ, CQType.valueOf("SimpleCQ"));
+ assertEquals(CQType.BatchCQ, CQType.valueOf("BatchCQ"));
+ assertEquals(CQType.RocksDBCQ, CQType.valueOf("RocksDBCQ"));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testValueOf_InvalidName() {
+ CQType.valueOf("InvalidCQ");
+ }
+}
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/CleanupPolicyTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/CleanupPolicyTest.java
new file mode 100644
index 0000000000..584de2b7e4
--- /dev/null
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/CleanupPolicyTest.java
@@ -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.
+ */
+package org.apache.rocketmq.common.attribute;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class CleanupPolicyTest {
+
+ @Test
+ public void testCleanupPolicy_Delete() {
+ CleanupPolicy cleanupPolicy = CleanupPolicy.DELETE;
+ assertEquals("DELETE", cleanupPolicy.toString());
+ }
+
+ @Test
+ public void testCleanupPolicy_Compaction() {
+ CleanupPolicy cleanupPolicy = CleanupPolicy.COMPACTION;
+ assertEquals("COMPACTION", cleanupPolicy.toString());
+ }
+}
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/EnumAttributeTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/EnumAttributeTest.java
new file mode 100644
index 0000000000..637dc302f5
--- /dev/null
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/EnumAttributeTest.java
@@ -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.
+ */
+package org.apache.rocketmq.common.attribute;
+
+import org.junit.Before;
+import org.junit.Test;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+
+public class EnumAttributeTest {
+
+ private EnumAttribute enumAttribute;
+
+ @Before
+ public void setUp() {
+ Set<String> universe = new HashSet<>();
+ universe.add("value1");
+ universe.add("value2");
+ universe.add("value3");
+
+ enumAttribute = new EnumAttribute("testAttribute", true, universe,
"value1");
+ }
+
+ @Test
+ public void verify_ValidValue_NoExceptionThrown() {
+ enumAttribute.verify("value1");
+ enumAttribute.verify("value2");
+ enumAttribute.verify("value3");
+ }
+
+ @Test
+ public void verify_InvalidValue_ExceptionThrown() {
+ RuntimeException exception = assertThrows(RuntimeException.class, ()
-> {
+ enumAttribute.verify("invalidValue");
+ });
+
+ assertTrue(exception.getMessage().startsWith("value is not in set:"));
+ }
+
+ @Test
+ public void getDefaultValue_ReturnsDefaultValue() {
+ assertEquals("value1", enumAttribute.getDefaultValue());
+ }
+}
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/LongRangeAttributeTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/LongRangeAttributeTest.java
new file mode 100644
index 0000000000..222f9092d5
--- /dev/null
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/LongRangeAttributeTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.rocketmq.common.attribute;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+
+public class LongRangeAttributeTest {
+
+ private LongRangeAttribute longRangeAttribute;
+
+ @Before
+ public void setUp() {
+ longRangeAttribute = new LongRangeAttribute("testAttribute", true, 0,
100, 50);
+ }
+
+ @Test
+ public void verify_ValidValue_NoExceptionThrown() {
+ longRangeAttribute.verify("50");
+ }
+
+ @Test
+ public void verify_MinValue_NoExceptionThrown() {
+ longRangeAttribute.verify("0");
+ }
+
+ @Test
+ public void verify_MaxValue_NoExceptionThrown() {
+ longRangeAttribute.verify("100");
+ }
+
+ @Test
+ public void verify_ValueLessThanMin_ThrowsRuntimeException() {
+ RuntimeException exception = assertThrows(RuntimeException.class, ()
-> longRangeAttribute.verify("-1"));
+ assertEquals("value is not in range(0, 100)", exception.getMessage());
+ }
+
+ @Test
+ public void verify_ValueGreaterThanMax_ThrowsRuntimeException() {
+ RuntimeException exception = assertThrows(RuntimeException.class, ()
-> longRangeAttribute.verify("101"));
+ assertEquals("value is not in range(0, 100)", exception.getMessage());
+ }
+
+ @Test
+ public void getDefaultValue_ReturnsDefaultValue() {
+ assertEquals(50, longRangeAttribute.getDefaultValue());
+ }
+}
diff --git
a/common/src/test/java/org/apache/rocketmq/common/attribute/TopicMessageTypeTest.java
b/common/src/test/java/org/apache/rocketmq/common/attribute/TopicMessageTypeTest.java
index 67525ae808..0321679ccc 100644
---
a/common/src/test/java/org/apache/rocketmq/common/attribute/TopicMessageTypeTest.java
+++
b/common/src/test/java/org/apache/rocketmq/common/attribute/TopicMessageTypeTest.java
@@ -16,13 +16,76 @@
*/
package org.apache.rocketmq.common.attribute;
+import com.google.common.collect.Sets;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import org.apache.rocketmq.common.message.MessageConst;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+
public class TopicMessageTypeTest {
+
+ private Map<String, String> normalMessageProperty;
+ private Map<String, String> transactionMessageProperty;
+ private Map<String, String> delayMessageProperty;
+ private Map<String, String> fifoMessageProperty;
+
+ @Before
+ public void setUp() {
+ normalMessageProperty = new HashMap<>();
+ transactionMessageProperty = new HashMap<>();
+ delayMessageProperty = new HashMap<>();
+ fifoMessageProperty = new HashMap<>();
+
+
transactionMessageProperty.put(MessageConst.PROPERTY_TRANSACTION_PREPARED,
"true");
+ delayMessageProperty.put(MessageConst.PROPERTY_DELAY_TIME_LEVEL, "1");
+ fifoMessageProperty.put(MessageConst.PROPERTY_SHARDING_KEY,
"shardingKey");
+ }
+
+ @Test
+ public void testTopicMessageTypeSet() {
+ Set<String> expectedSet = Sets.newHashSet("UNSPECIFIED", "NORMAL",
"FIFO", "DELAY", "TRANSACTION", "MIXED");
+ Set<String> actualSet = TopicMessageType.topicMessageTypeSet();
+ assertEquals(expectedSet, actualSet);
+ }
+
+ @Test
+ public void testParseFromMessageProperty_Normal() {
+ TopicMessageType actual =
TopicMessageType.parseFromMessageProperty(normalMessageProperty);
+ assertEquals(TopicMessageType.NORMAL, actual);
+ }
+
+ @Test
+ public void testParseFromMessageProperty_Transaction() {
+ TopicMessageType actual =
TopicMessageType.parseFromMessageProperty(transactionMessageProperty);
+ assertEquals(TopicMessageType.TRANSACTION, actual);
+ }
+
+ @Test
+ public void testParseFromMessageProperty_Delay() {
+ TopicMessageType actual =
TopicMessageType.parseFromMessageProperty(delayMessageProperty);
+ assertEquals(TopicMessageType.DELAY, actual);
+ }
+
+ @Test
+ public void testParseFromMessageProperty_Fifo() {
+ TopicMessageType actual =
TopicMessageType.parseFromMessageProperty(fifoMessageProperty);
+ assertEquals(TopicMessageType.FIFO, actual);
+ }
+
+ @Test
+ public void testGetMetricsValue() {
+ for (TopicMessageType type : TopicMessageType.values()) {
+ String expected = type.getValue().toLowerCase();
+ String actual = type.getMetricsValue();
+ assertEquals(expected, actual);
+ }
+ }
+
@Test
public void testParseFromMessageProperty() {
Map<String, String> properties = new HashMap<>();