private void testSchemaHeaderNames(String customKeySchemaHeaderName,
String customValueSchemaHeaderName) {
TestRecord record = new TestRecord();
record.setField1("Hello");
record.setField2("World");
Map<String, Object> configs = new HashMap<>();
configs.put(KafkaAvroSerde.KEY_SCHEMA_VERSION_ID_HEADER_NAME, customKeySchemaHeaderName);
configs.put(KafkaAvroSerde.VALUE_SCHEMA_VERSION_ID_HEADER_NAME, customValueSchemaHeaderName);
configs.put(KafkaAvroSerializer.STORE_SCHEMA_VERSION_ID_IN_HEADER, "true");
configs.put(AbstractAvroSnapshotDeserializer.SPECIFIC_AVRO_READER, true);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
AvroSerDesHandler handler = new DefaultAvroSerDesHandler();
handler.handlePayloadSerialization(outputStream, record);
for (Boolean isKey : Arrays.asList(true, false)) {
KafkaAvroSerde serde = new KafkaAvroSerde(schemaRegistryClient);
final ExtendedSerializer<Object> serializer = serde.extendedSerializer();
serializer.configure(configs, isKey);
Headers headers = new RecordHeaders();
final byte[] bytes = serializer.serialize(topic, headers, record);
Assert.assertArrayEquals(outputStream.toByteArray(), bytes);
Assert.assertEquals(isKey, headers.lastHeader(customKeySchemaHeaderName) != null);
Assert.assertEquals(!isKey, headers.lastHeader(customValueSchemaHeaderName) != null);
final ExtendedDeserializer<Object> deserializer = serde.extendedDeserializer();
deserializer.configure(configs, isKey);
final TestRecord actual = (TestRecord) deserializer.deserialize(topic, headers, bytes);
Assert.assertEquals(record, actual);
}
}