diff --git a/clustering/infinispan/spi/pom.xml b/clustering/infinispan/spi/pom.xml
index 98b7244e8e96..3ca434f76aec 100644
--- a/clustering/infinispan/spi/pom.xml
+++ b/clustering/infinispan/spi/pom.xml
@@ -65,4 +65,20 @@
test
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ test-jar
+
+
+
+
+
+
diff --git a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyFormatTester.java b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyFormatTester.java
new file mode 100644
index 000000000000..8cbb6c4cce98
--- /dev/null
+++ b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyFormatTester.java
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2017, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.wildfly.clustering.infinispan.spi.persistence;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.function.BiConsumer;
+
+import org.junit.Assert;
+
+/**
+ * Tester for a {@link KeyFormat}.
+ * @author Paul Ferraro
+ */
+public class KeyFormatTester {
+
+ private final KeyFormat format;
+ private final BiConsumer assertion;
+
+ public KeyFormatTester(KeyFormat format) {
+ this(format, Assert::assertEquals);
+ }
+
+ public KeyFormatTester(KeyFormat format, BiConsumer assertion) {
+ this.format = format;
+ this.assertion = assertion;
+ }
+
+ public void test(K subject) {
+ assertTrue(this.format.getTargetClass().isInstance(subject));
+
+ String formatted = this.format.format(subject);
+
+ K result = this.format.parse(formatted);
+
+ assertTrue(this.format.getTargetClass().isInstance(result));
+
+ this.assertion.accept(subject, result);
+ }
+}
diff --git a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyMapperTester.java b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyMapperTester.java
new file mode 100644
index 000000000000..73aad55f883e
--- /dev/null
+++ b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/KeyMapperTester.java
@@ -0,0 +1,51 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2017, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.wildfly.clustering.infinispan.spi.persistence;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import org.infinispan.persistence.keymappers.TwoWayKey2StringMapper;
+
+/**
+ * Tester for a {@link TwoWayKey2StringMapper}.
+ * @author Paul Ferraro
+ */
+public class KeyMapperTester {
+
+ private final TwoWayKey2StringMapper mapper;
+
+ public KeyMapperTester(TwoWayKey2StringMapper mapper) {
+ this.mapper = mapper;
+ }
+
+ public void test(Object key) {
+ assertTrue(this.mapper.isSupportedType(key.getClass()));
+
+ String mapping = this.mapper.getStringMapping(key);
+
+ Object result = this.mapper.getKeyMapping(mapping);
+
+ assertEquals(key, result);
+ }
+}
diff --git a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java
index bf7775211ec7..f6cbced22653 100644
--- a/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java
+++ b/clustering/infinispan/spi/src/test/java/org/wildfly/clustering/infinispan/spi/persistence/SimpleKeyFormatTestCase.java
@@ -37,7 +37,7 @@ public class SimpleKeyFormatTestCase {
public void test() {
Function parser = mock(Function.class);
Function