@SuppressWarnings("unchecked") public void insertStringTuples(IIndexTestContext ctx, int numTuples, Random rnd) throws Exception { int fieldCount = ctx.getFieldCount(); int numKeyFields = ctx.getKeyFieldCount(); String[] fieldValues = new String[fieldCount]; for (int i = 0; i < numTuples; i++) { if (LOGGER.isLoggable(Level.INFO)) { if ((i + 1) % (numTuples / Math.min(10, numTuples)) == 0) { LOGGER.info("Inserting Tuple " + (i + 1) + "/" + numTuples); } } // Set keys. for (int j = 0; j < numKeyFields; j++) { int length = (Math.abs(rnd.nextInt()) % 10) + 1; fieldValues[j] = getRandomString(length, rnd); } // Set values. for (int j = numKeyFields; j < fieldCount; j++) { fieldValues[j] = getRandomString(5, rnd); } TupleUtils.createTuple( ctx.getTupleBuilder(), ctx.getTuple(), ctx.getFieldSerdes(), (Object[]) fieldValues); try { ctx.getIndexAccessor().insert(ctx.getTuple()); // Set expected values. Do this only after insertion succeeds // because we ignore duplicate keys. ctx.insertCheckTuple( createStringCheckTuple(fieldValues, ctx.getKeyFieldCount()), ctx.getCheckTuples()); } catch (TreeIndexDuplicateKeyException e) { // Ignore duplicate key insertions. } } }