private void doGets(Region region) throws IOException{ for (int i = 0; i < NUM_ROWS; ++i) { final byte[] rowKey = LoadTestKVGenerator.md5PrefixedKey(i).getBytes(); for (int j = 0; j < NUM_COLS_PER_ROW; ++j) { final String qualStr = String.valueOf(j); if (VERBOSE) { System.err.println("Reading row " + i + ", column " + j + " " + Bytes.toString(rowKey)+"/" +qualStr); } final byte[] qualBytes = Bytes.toBytes(qualStr); Get get = new Get(rowKey); get.addColumn(CF_BYTES, qualBytes); Result result = region.get(get); assertEquals(1, result.size()); byte[] value = result.getValue(CF_BYTES, qualBytes); assertTrue(LoadTestKVGenerator.verify(value, rowKey, qualBytes)); } } }
private void generateTestData(Region region, int numRows) throws IOException { // generating 1Mb values LoadTestKVGenerator dataGenerator = new LoadTestKVGenerator(1024 * 1024, 1024 * 1024); for (int i = 0; i < numRows; ++i) { byte[] key = Bytes.add(region.getRegionInfo().getStartKey(), Bytes.toBytes(i)); for (int j = 0; j < 1; ++j) { Put put = new Put(key); byte[] col = Bytes.toBytes(String.valueOf(j)); byte[] value = dataGenerator.generateRandomSizeValue(key, col); put.addColumn(FAMILYNAME, col, value); region.put(put); } } }
private void doPuts(HRegion region) throws IOException{ LoadTestKVGenerator dataGenerator = new LoadTestKVGenerator(MIN_VALUE_SIZE, MAX_VALUE_SIZE); for (int i = 0; i < NUM_ROWS; ++i) { byte[] key = LoadTestKVGenerator.md5PrefixedKey(i).getBytes(); for (int j = 0; j < NUM_COLS_PER_ROW; ++j) { Put put = new Put(key); put.setDurability(Durability.ASYNC_WAL); byte[] col = Bytes.toBytes(String.valueOf(j)); byte[] value = dataGenerator.generateRandomSizeValue(key, col); if (includeTags) { Tag[] tag = new Tag[1]; tag[0] = new ArrayBackedTag((byte) 1, "Visibility"); KeyValue kv = new KeyValue(key, CF_BYTES, col, HConstants.LATEST_TIMESTAMP, value, tag); put.add(kv); } else { put.addColumn(CF_BYTES, col, value); } if(VERBOSE){ KeyValue kvPut = new KeyValue(key, CF_BYTES, col, value); System.err.println(Strings.padFront(i+"", ' ', 4)+" "+kvPut); } region.put(put); } if (i % NUM_ROWS_PER_FLUSH == 0) { region.flush(true); } } }
@Override public boolean verify(byte[] rowKey, byte[] cf, byte[] column, byte[] value) { if (Bytes.BYTES_COMPARATOR.compare(column, FILTER_COLUMN) == 0) { // Relies on the filter from getScanFilter being used. return Bytes.toLong(value) == ACCEPTED_VALUE; } else if (Bytes.BYTES_COMPARATOR.compare(column, VALUE_COLUMN) == 0) { return LoadTestKVGenerator.verify(value, rowKey, cf, column); } return false; // some bogus value from read, we don't expect any such thing. }
private byte[] longToByteArrayKey(long rowKey) { return LoadTestKVGenerator.md5PrefixedKey(rowKey).getBytes(); }
@Override public boolean verify(byte[] rowKey, byte[] cf, byte[] column, byte[] value) { return LoadTestKVGenerator.verify(value, rowKey, cf, column); }
@Override public byte[] getDeterministicUniqueKey(long keyBase) { return LoadTestKVGenerator.md5PrefixedKey(keyBase).getBytes(); }
/** * Initializes the object. * @param minValueSize minimum size of the value generated by * {@link #generateValue(byte[], byte[], byte[])}. * @param maxValueSize maximum size of the value generated by * {@link #generateValue(byte[], byte[], byte[])}. */ public LoadTestDataGenerator(int minValueSize, int maxValueSize) { this.kvGenerator = new LoadTestKVGenerator(minValueSize, maxValueSize); }