fapaul commented on code in PR #108:
URL: 
https://github.com/apache/flink-connector-kafka/pull/108#discussion_r1677400714


##########
flink-connector-kafka/src/test/java/org/apache/flink/connector/kafka/source/KafkaSourceBuilderTest.java:
##########
@@ -191,6 +193,72 @@ public void testSettingCustomKafkaSubscriber() {
                         "Cannot use partitions for consumption because a 
ExampleCustomSubscriber is already set for consumption.");
     }
 
+    @Test
+    public void testSettingCustomKeyDeserializer() {
+        final String keyDeserializer = 
TestByteArrayDeserializer.class.getName();
+        final KafkaSource<String> kafkaSource = 
getBasicBuilder().setProperty("key.deserializer", keyDeserializer).build();
+        // key.deserializer should be overridden
+        assertThat(
+                kafkaSource
+                        .getConfiguration()
+                        .get(
+                                
ConfigOptions.key(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG)
+                                        .stringType()
+                                        .noDefaultValue()))
+                .isEqualTo(keyDeserializer);
+    }
+
+    @Test
+    public void testSettingCustomValueDeserializer() {
+        final String valueDeserializer = 
TestByteArrayDeserializer.class.getName();
+        final KafkaSource<String> kafkaSource = 
getBasicBuilder().setProperty("value.deserializer", valueDeserializer).build();
+        // value.deserializer should be overridden
+        assertThat(
+                kafkaSource
+                        .getConfiguration()
+                        .get(
+                                
ConfigOptions.key(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG)
+                                        .stringType()
+                                        .noDefaultValue()))
+                .isEqualTo(valueDeserializer);
+    }
+
+    @Test
+    public void testSettingCustomNonByteArrayKeyDeserializer() {
+        final String keyDeserializer = StringDeserializer.class.getName();
+        assertThatThrownBy(() -> 
getBasicBuilder().setProperty("key.deserializer", keyDeserializer).build())
+                .isInstanceOf(IllegalArgumentException.class)
+                .hasMessageContaining(
+                        String.format("Deserializer class %s does not 
deserialize byte[]", keyDeserializer));
+    }
+
+    @Test
+    public void testSettingCustomNonByteArrayValueDeserializer() {
+        final String valueDeserializer = StringDeserializer.class.getName();
+        assertThatThrownBy(() -> 
getBasicBuilder().setProperty("value.deserializer", valueDeserializer).build())
+                .isInstanceOf(IllegalArgumentException.class)
+                .hasMessageContaining(
+                        String.format("Deserializer class %s does not 
deserialize byte[]", valueDeserializer));
+    }
+
+    @Test
+    public void testSettingCustomNonDeserializer() {

Review Comment:
   Can you use parameterized tests here [1]? It should remove the duplicated 
setup. We can have three test cases and provide the property string as a 
parameter for those tests.
   
   [1] 
https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to