protected void assertLoadedKeyValueData(final List<Tuple3<MapDefinition, String, StringValue>> keyValueLoadedData) {

        LOGGER.info("Starting key value asserts on {} entries", keyValueLoadedData.size());

        final Instant startTime = Instant.now();
        final AtomicInteger counter = new AtomicInteger();
        final int tenPercent = keyValueLoadedData.size() / 10;

        // query all values from the key/value store
        keyValueLoadedData.forEach(tuple3 -> {
            final MapDefinition mapDefinition = tuple3._1;
            final String key = tuple3._2;
            final StringValue expectedValue = tuple3._3;

            if (keyValueLoadedData.size() > 10_000) {
                if (counter.incrementAndGet() % tenPercent == 0) {
                    // Show progress for big loads
                    final Duration duration = Duration.between(startTime, Instant.now());
                    LOGGER.info("Count so far: {}, in {}, gets/ms: {}",
                            counter.get(),
                            duration,
                            counter.get() / (double) duration.toMillis());
                }
            }
            // get the proxy object
            final RefDataValueProxy valueProxy = refDataStore.getValueProxy(mapDefinition, key);

            // Trigger the lookup
            final RefDataValue refDataValue = valueProxy.supplyValue().get();

            assertThat(refDataValue).isInstanceOf(StringValue.class);
            assertThat((StringValue) refDataValue)
                    .isEqualTo(expectedValue);

            // now consume the proxied value in a txn
            valueProxy.consumeBytes(typedByteBuffer -> {
                assertThat(typedByteBuffer.getTypeId())
                        .isEqualTo(StringValue.TYPE_ID);
                String foundStrVal = StandardCharsets.UTF_8.decode(typedByteBuffer.getByteBuffer()).toString();
                assertThat(foundStrVal)
                        .isEqualTo(expectedValue.getValue());
            });
        });
    }
@param refStreamDefinitionCount  Number of {@link RefStreamDefinition}s to create.
@param keyValueMapCount          Number of KeyValue type maps to create per {@link RefStreamDefinition}
@param rangeValueMapCount        Number of RangeValue type maps to create per {@link RefStreamDefinition}
@param entryCount                Number of map entries to create per map
@param refStreamDefinitionOffset The offset from zero for the refStreamDefinition partIndex
@return The created {@link RefStreamDefinition} objects
stroom-pipeline/src/test/java/stroom/pipeline/refdata/store/offheapstore/AbstractRefDataOffHeapStoreTest.java