public void setUp()

in hollow-perf/src/jmh/java/com/netflix/hollow/core/read/engine/object/HollowObjectTypeReadStateDeltaTransitionBenchmark.java [75:157]


    public void setUp() throws ExecutionException, InterruptedException {
        final List<String> readStrings = new ArrayList<>();
        final Set<Integer> readKeys = new HashSet<>();
        refreshExecutor = Executors.newSingleThreadExecutor();

        refreshExecutor.submit(() -> {
            writeStateEngine = new HollowWriteStateEngine();
            writeStateEngine.setTargetMaxTypeShardSize((long) shardSizeKBs * 1000l);
            objectMapper = new HollowObjectMapper(writeStateEngine);
            objectMapper.initializeTypeState(String.class);

            readOrder = new ArrayList<>(countStringsToRead);
            for (int i = 0; i < countStringsToRead; i++) {
                readOrder.add(r.nextInt(countStringsDb));
            }
            readKeys.addAll(readOrder);

            for (int i = 0; i < countStringsDb; i++) {
                StringBuilder sb = new StringBuilder();
                sb.append("string_");
                sb.append(i);
                sb.append("_");
                int thisStringLength = r.nextInt(maxStringLength) - sb.length() + 1;
                for (int j = 0; j < thisStringLength; j++) {
                    sb.append((char) (r.nextInt(26) + 'a'));
                }
                String s = sb.toString();
                objectMapper.add(s);
                if (readKeys.contains(i)) {
                    readStrings.add(s);
                }
            }

            readStateEngine = new HollowReadStateEngine();
            try {
                StateEngineRoundTripper.roundTripSnapshot(writeStateEngine, readStateEngine, null);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            dataAccess = (HollowObjectTypeDataAccess) readStateEngine.getTypeDataAccess("String", 0);
        }).get();

        doneBenchmark = new CountDownLatch(1);
        reshardingFuture = refreshExecutor.submit(() -> {
            Random r = new Random();
            long origShardSize = shardSizeKBs * 1000l;
            long newShardSize = origShardSize;
            do {
                for (int i=0; i<readStrings.size(); i++) {
                    objectMapper.add(readStrings.get(i));
                }
                for (int i = 0; i < deltaChanges; i++) {
                    int changeKey = r.nextInt(countStringsDb);
                    if (readKeys.contains(changeKey)) {
                        continue;
                    }
                    StringBuilder sb = new StringBuilder();
                    sb.append("string_");
                    sb.append(changeKey);
                    sb.append("_");
                    int thisStringLength = r.nextInt(maxStringLength) - sb.length() + 1;
                    for (int j = 0; j < thisStringLength; j++) {
                        sb.append((char) (r.nextInt(26) + 'a'));
                    }
                    objectMapper.add(sb.toString());
                }

                try {
                    if (isReshardingEnabled) {
                        if (newShardSize == origShardSize) {
                            newShardSize = origShardSize / 10;
                        } else {
                            newShardSize = origShardSize;
                        }
                        writeStateEngine.setTargetMaxTypeShardSize(newShardSize);
                    }
                    StateEngineRoundTripper.roundTripDelta(writeStateEngine, readStateEngine);
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            } while (doneBenchmark.getCount() > 0);
        });
    }