frankvicky commented on code in PR #21411:
URL: https://github.com/apache/kafka/pull/21411#discussion_r2792496842


##########
streams/src/test/java/org/apache/kafka/streams/state/StateSerdesTest.java:
##########
@@ -137,4 +141,142 @@ public void shouldThrowIfIncompatibleSerdeForKey() throws 
ClassNotFoundException
                     "Change the default Serdes in StreamConfig or provide 
correct Serdes via method parameters."));
     }
 
+    @Test
+    public void shouldSerializeAndDeserializeKeyWithHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+        final Headers headers = new RecordHeaders()
+            .add("header-key", "header-value".getBytes());
+
+        final String key = "test-key";
+        final byte[] serialized = stateSerdes.rawKey(key, headers);
+        final String deserialized = stateSerdes.keyFrom(serialized, headers);
+
+        assertEquals(key, deserialized);
+    }
+
+    @Test
+    public void shouldSerializeAndDeserializeValueWithHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+        final Headers headers = new RecordHeaders()
+            .add("header-key", "header-value".getBytes());
+
+        final String value = "test-value";
+        final byte[] serialized = stateSerdes.rawValue(value, headers);
+        final String deserialized = stateSerdes.valueFrom(serialized, headers);
+
+        assertEquals(value, deserialized);
+    }
+
+    @Test
+    public void shouldSerializeKeyWithNullHeaders() {

Review Comment:
   Make sense



##########
streams/src/test/java/org/apache/kafka/streams/state/StateSerdesTest.java:
##########
@@ -137,4 +141,142 @@ public void shouldThrowIfIncompatibleSerdeForKey() throws 
ClassNotFoundException
                     "Change the default Serdes in StreamConfig or provide 
correct Serdes via method parameters."));
     }
 
+    @Test
+    public void shouldSerializeAndDeserializeKeyWithHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+        final Headers headers = new RecordHeaders()
+            .add("header-key", "header-value".getBytes());
+
+        final String key = "test-key";
+        final byte[] serialized = stateSerdes.rawKey(key, headers);
+        final String deserialized = stateSerdes.keyFrom(serialized, headers);
+
+        assertEquals(key, deserialized);
+    }
+
+    @Test
+    public void shouldSerializeAndDeserializeValueWithHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+        final Headers headers = new RecordHeaders()
+            .add("header-key", "header-value".getBytes());
+
+        final String value = "test-value";
+        final byte[] serialized = stateSerdes.rawValue(value, headers);
+        final String deserialized = stateSerdes.valueFrom(serialized, headers);
+
+        assertEquals(value, deserialized);
+    }
+
+    @Test
+    public void shouldSerializeKeyWithNullHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+
+        final String key = "test-key";
+        final byte[] serializedWithNull = stateSerdes.rawKey(key, null);
+        final byte[] serializedWithoutHeaders = stateSerdes.rawKey(key);
+
+        assertArrayEquals(serializedWithoutHeaders, serializedWithNull);
+    }
+
+    @Test
+    public void shouldSerializeValueWithNullHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+
+        final String value = "test-value";
+        final byte[] serializedWithNull = stateSerdes.rawValue(value, null);
+        final byte[] serializedWithoutHeaders = stateSerdes.rawValue(value);
+
+        assertArrayEquals(serializedWithoutHeaders, serializedWithNull);
+    }
+
+    @Test
+    public void shouldDeserializeKeyWithNullHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+
+        final String key = "test-key";
+        final byte[] serialized = stateSerdes.rawKey(key);
+
+        final String deserializedWithNull = stateSerdes.keyFrom(serialized, 
null);
+        final String deserializedWithoutHeaders = 
stateSerdes.keyFrom(serialized);
+
+        assertEquals(deserializedWithoutHeaders, deserializedWithNull);
+    }
+
+    @Test
+    public void shouldDeserializeValueWithNullHeaders() {
+        final StateSerdes<String, String> stateSerdes =
+            new StateSerdes<>("test-topic", Serdes.String(), Serdes.String());
+
+        final String value = "test-value";
+        final byte[] serialized = stateSerdes.rawValue(value);
+
+        final String deserializedWithNull = stateSerdes.valueFrom(serialized, 
null);
+        final String deserializedWithoutHeaders = 
stateSerdes.valueFrom(serialized);
+
+        assertEquals(deserializedWithoutHeaders, deserializedWithNull);
+    }
+
+    @Test
+    public void shouldSerializeKeyWithEmptyHeaders() {

Review Comment:
   Indeed, given that we will let the current `rawKey(key)` implementation to 
call  `rawKey(key, new RecordHeaders())`, this case doesn't have much value.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to