This is an automated email from the ASF dual-hosted git repository.
chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 348e64c57d8 MINOR: Add unit tests for verifying --formatter-property
in console tools. (#20560)
348e64c57d8 is described below
commit 348e64c57d80188334b441d1a06c4181c00a8afa
Author: Shivsundar R <[email protected]>
AuthorDate: Wed Sep 24 12:15:05 2025 -0400
MINOR: Add unit tests for verifying --formatter-property in console tools.
(#20560)
*What*
In the implementation of KIP-1147 for console tools -
https://github.com/apache/kafka/pull/20479/files#diff-85b87c675a4b933e8e0e05c654d35d60e9cfd36cebe3331af825191b2cc688ee,
we missed adding unit tests for verifying the new
"`--formatter-property`" option.
Thanks to @Yunyung for pointing this out.
PR adds unit tests to both `ConsoleConsumerOptionsTest` and
`ConsoleShareConsumerOptionsTest` to verify the same.
Reviewers: Jhen-Yung Hsu <[email protected]>, Chia-Ping Tsai
<[email protected]>
---
.../tools/consumer/ConsoleConsumerOptionsTest.java | 77 +++++++++++++++++++++-
.../consumer/ConsoleShareConsumerOptionsTest.java | 54 ++++++++++++++-
2 files changed, 126 insertions(+), 5 deletions(-)
diff --git
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
index 4639ff63a85..843d9785cf8 100644
---
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
+++
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
@@ -151,7 +151,7 @@ public class ConsoleConsumerOptionsTest {
}
@Test
- public void shouldParseValidSimpleConsumerValidConfigWithStringOffset()
throws Exception {
+ public void
shouldParseValidSimpleConsumerValidConfigWithStringOffsetDeprecated() throws
Exception {
String[] args = new String[]{
"--bootstrap-server", "localhost:9092",
"--topic", "test",
@@ -171,6 +171,27 @@ public class ConsoleConsumerOptionsTest {
assertFalse(((DefaultMessageFormatter)
config.formatter()).printValue());
}
+ @Test
+ public void shouldParseValidSimpleConsumerValidConfigWithStringOffset()
throws Exception {
+ String[] args = new String[]{
+ "--bootstrap-server", "localhost:9092",
+ "--topic", "test",
+ "--partition", "0",
+ "--offset", "LatEst",
+ "--formatter-property", "print.value=false"
+ };
+
+ ConsoleConsumerOptions config = new ConsoleConsumerOptions(args);
+
+ assertEquals("localhost:9092", config.bootstrapServer());
+ assertEquals("test", config.topicArg().orElse(""));
+ assertTrue(config.partitionArg().isPresent());
+ assertEquals(0, config.partitionArg().getAsInt());
+ assertEquals(-1, config.offsetArg());
+ assertFalse(config.fromBeginning());
+ assertFalse(((DefaultMessageFormatter)
config.formatter()).printValue());
+ }
+
@Test
public void
shouldParseValidConsumerConfigWithAutoOffsetResetLatestDeprecated() throws
IOException {
String[] args = new String[]{
@@ -355,7 +376,7 @@ public class ConsoleConsumerOptionsTest {
}
@Test
- public void testCustomPropertyShouldBePassedToConfigureMethod() throws
Exception {
+ public void testCustomPropertyShouldBePassedToConfigureMethodDeprecated()
throws Exception {
String[] args = new String[]{
"--bootstrap-server", "localhost:9092",
"--topic", "test",
@@ -378,7 +399,30 @@ public class ConsoleConsumerOptionsTest {
}
@Test
- public void testCustomConfigShouldBePassedToConfigureMethod() throws
Exception {
+ public void testCustomPropertyShouldBePassedToConfigureMethod() throws
Exception {
+ String[] args = new String[]{
+ "--bootstrap-server", "localhost:9092",
+ "--topic", "test",
+ "--formatter-property", "print.key=true",
+ "--formatter-property",
"key.deserializer=org.apache.kafka.test.MockDeserializer",
+ "--formatter-property", "key.deserializer.my-props=abc"
+ };
+
+ ConsoleConsumerOptions config = new ConsoleConsumerOptions(args);
+
+ assertInstanceOf(DefaultMessageFormatter.class, config.formatter());
+
assertTrue(config.formatterArgs().containsKey("key.deserializer.my-props"));
+ DefaultMessageFormatter formatter = (DefaultMessageFormatter)
config.formatter();
+ assertTrue(formatter.keyDeserializer().isPresent());
+ assertInstanceOf(MockDeserializer.class,
formatter.keyDeserializer().get());
+ MockDeserializer keyDeserializer = (MockDeserializer)
formatter.keyDeserializer().get();
+ assertEquals(1, keyDeserializer.configs.size());
+ assertEquals("abc", keyDeserializer.configs.get("my-props"));
+ assertTrue(keyDeserializer.isKey);
+ }
+
+ @Test
+ public void testCustomConfigShouldBePassedToConfigureMethodDeprecated()
throws Exception {
Map<String, String> configs = new HashMap<>();
configs.put("key.deserializer.my-props", "abc");
configs.put("print.key", "false");
@@ -404,6 +448,33 @@ public class ConsoleConsumerOptionsTest {
assertTrue(keyDeserializer.isKey);
}
+ @Test
+ public void testCustomConfigShouldBePassedToConfigureMethod() throws
Exception {
+ Map<String, String> configs = new HashMap<>();
+ configs.put("key.deserializer.my-props", "abc");
+ configs.put("print.key", "false");
+ File propsFile = ToolsTestUtils.tempPropertiesFile(configs);
+ String[] args = new String[]{
+ "--bootstrap-server", "localhost:9092",
+ "--topic", "test",
+ "--formatter-property", "print.key=true",
+ "--formatter-property",
"key.deserializer=org.apache.kafka.test.MockDeserializer",
+ "--formatter-config", propsFile.getAbsolutePath()
+ };
+
+ ConsoleConsumerOptions config = new ConsoleConsumerOptions(args);
+
+ assertInstanceOf(DefaultMessageFormatter.class, config.formatter());
+
assertTrue(config.formatterArgs().containsKey("key.deserializer.my-props"));
+ DefaultMessageFormatter formatter = (DefaultMessageFormatter)
config.formatter();
+ assertTrue(formatter.keyDeserializer().isPresent());
+ assertInstanceOf(MockDeserializer.class,
formatter.keyDeserializer().get());
+ MockDeserializer keyDeserializer = (MockDeserializer)
formatter.keyDeserializer().get();
+ assertEquals(1, keyDeserializer.configs.size());
+ assertEquals("abc", keyDeserializer.configs.get("my-props"));
+ assertTrue(keyDeserializer.isKey);
+ }
+
@Test
public void shouldParseGroupIdFromBeginningGivenTogether() throws
IOException {
// Start from earliest
diff --git
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
index fecf53dbbec..a097a9bf536 100644
---
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
+++
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
@@ -222,7 +222,7 @@ public class ConsoleShareConsumerOptionsTest {
}
@Test
- public void testCustomPropertyShouldBePassedToConfigureMethod() throws
Exception {
+ public void testCustomPropertyShouldBePassedToConfigureMethodDeprecated()
throws Exception {
String[] args = new String[]{
"--bootstrap-server", "localhost:9092",
"--topic", "test",
@@ -245,7 +245,30 @@ public class ConsoleShareConsumerOptionsTest {
}
@Test
- public void testCustomConfigShouldBePassedToConfigureMethod() throws
Exception {
+ public void testCustomPropertyShouldBePassedToConfigureMethod() throws
Exception {
+ String[] args = new String[]{
+ "--bootstrap-server", "localhost:9092",
+ "--topic", "test",
+ "--formatter-property", "print.key=true",
+ "--formatter-property",
"key.deserializer=org.apache.kafka.test.MockDeserializer",
+ "--formatter-property", "key.deserializer.my-props=abc"
+ };
+
+ ConsoleShareConsumerOptions config = new
ConsoleShareConsumerOptions(args);
+
+ assertInstanceOf(DefaultMessageFormatter.class, config.formatter());
+
assertTrue(config.formatterArgs().containsKey("key.deserializer.my-props"));
+ DefaultMessageFormatter formatter = (DefaultMessageFormatter)
config.formatter();
+ assertTrue(formatter.keyDeserializer().isPresent());
+ assertInstanceOf(MockDeserializer.class,
formatter.keyDeserializer().get());
+ MockDeserializer keyDeserializer = (MockDeserializer)
formatter.keyDeserializer().get();
+ assertEquals(1, keyDeserializer.configs.size());
+ assertEquals("abc", keyDeserializer.configs.get("my-props"));
+ assertTrue(keyDeserializer.isKey);
+ }
+
+ @Test
+ public void testCustomConfigShouldBePassedToConfigureMethodDeprecated()
throws Exception {
Map<String, String> configs = new HashMap<>();
configs.put("key.deserializer.my-props", "abc");
configs.put("print.key", "false");
@@ -271,6 +294,33 @@ public class ConsoleShareConsumerOptionsTest {
assertTrue(keyDeserializer.isKey);
}
+ @Test
+ public void testCustomConfigShouldBePassedToConfigureMethod() throws
Exception {
+ Map<String, String> configs = new HashMap<>();
+ configs.put("key.deserializer.my-props", "abc");
+ configs.put("print.key", "false");
+ File propsFile = ToolsTestUtils.tempPropertiesFile(configs);
+ String[] args = new String[]{
+ "--bootstrap-server", "localhost:9092",
+ "--topic", "test",
+ "--formatter-property", "print.key=true",
+ "--formatter-property",
"key.deserializer=org.apache.kafka.test.MockDeserializer",
+ "--formatter-config", propsFile.getAbsolutePath()
+ };
+
+ ConsoleShareConsumerOptions config = new
ConsoleShareConsumerOptions(args);
+
+ assertInstanceOf(DefaultMessageFormatter.class, config.formatter());
+
assertTrue(config.formatterArgs().containsKey("key.deserializer.my-props"));
+ DefaultMessageFormatter formatter = (DefaultMessageFormatter)
config.formatter();
+ assertTrue(formatter.keyDeserializer().isPresent());
+ assertInstanceOf(MockDeserializer.class,
formatter.keyDeserializer().get());
+ MockDeserializer keyDeserializer = (MockDeserializer)
formatter.keyDeserializer().get();
+ assertEquals(1, keyDeserializer.configs.size());
+ assertEquals("abc", keyDeserializer.configs.get("my-props"));
+ assertTrue(keyDeserializer.isKey);
+ }
+
@Test
public void testDefaultClientId() throws IOException {
String[] args = new String[]{