@Test void testCachingSerde() { KeyValue<Integer, String> keyValue1 = new KeyValue<>(1, "test"); KeyValue<Integer, String> keyValue2 = new KeyValue<>(2, "test"); KeyValue<Integer, String> keyValue3 = new KeyValue<>(3, "test");
KeyValueSerializer<Integer, String> innerSerializer = new KeyValueSerializer<>(Serdes.Integer(), Serdes.String()); KeyValueDeserializer<Integer, String> innerDeserializer = new KeyValueDeserializer<>(Serdes.Integer(), Serdes.String());
try(CachingDeserializer<KeyValue<Integer, String>> deserializer = new CachingDeserializer<>(2, innerDeserializer)) { assertDoesNotThrow(() -> deserializer.configure(Collections.emptyMap(), false));
byte[] value1 = innerSerializer.serialize(TOPIC, keyValue1); byte[] value2= innerSerializer.serialize(TOPIC, keyValue2); byte[] value3 = innerSerializer.serialize(TOPIC, keyValue3);
assertEquals(keyValue1, deserializer.deserialize(TOPIC, value1)); assertEquals(1, deserializer.getCache().size(), "Should contain one item in the cache");
assertEquals(keyValue1, deserializer.deserialize(TOPIC, value1)); assertEquals(1, deserializer.getCache().size(), "Should contain one item in the cache"); assertEquals(keyValue1, deserializer.getCache().entrySet().iterator().next().getValue(), "Should contain keyValue1");
assertEquals(keyValue2, deserializer.deserialize(TOPIC, value2)); assertEquals(2, deserializer.getCache().size(), "Should contain two items in the cache");
Iterator<Map.Entry<Bytes, KeyValue<Integer, String>>> iterator = deserializer.getCache().entrySet().iterator(); assertEquals(keyValue1, iterator.next().getValue(), "Should contain keyValue1"); assertEquals(keyValue2, iterator.next().getValue(), "Should contain keyValue2");
assertEquals(keyValue3, deserializer.deserialize(TOPIC, value3)); assertEquals(2, deserializer.getCache().size(), "Should contain two items in the cache");
iterator = deserializer.getCache().entrySet().iterator(); assertEquals(keyValue2, iterator.next().getValue(), "Should contain keyValue2"); assertEquals(keyValue3, iterator.next().getValue(), "Should contain keyValue3");
} }
|