@Test public void test() throws Exception { createTable(TABLE_NAME, getBasicSchema(), getBasicCreateTableOptions()); KuduTableOutputFormat output = new KuduTableOutputFormat(); Configuration conf = new Configuration(); conf.set(KuduTableOutputFormat.MASTER_ADDRESSES_KEY, getMasterAddresses()); conf.set(KuduTableOutputFormat.OUTPUT_TABLE_KEY, TABLE_NAME); output.setConf(conf); String multitonKey = conf.get(KuduTableOutputFormat.MULTITON_KEY); KuduTable table = KuduTableOutputFormat.getKuduTable(multitonKey); assertNotNull(table); Insert insert = table.newInsert(); PartialRow row = insert.getRow(); row.addInt(0, 1); row.addInt(1, 2); row.addInt(2, 3); row.addString(3, "a string"); row.addBoolean(4, true); RecordWriter<NullWritable, Operation> rw = output.getRecordWriter(null); rw.write(NullWritable.get(), insert); rw.close(null); AsyncKuduScanner.AsyncKuduScannerBuilder builder = client.newScannerBuilder(table); assertEquals(1, countRowsInScan(builder.build())); }
@Test(timeout = 10000) public void testOverWritingValues() throws Exception { String tableName = TABLE_NAME_PREFIX + "-OverridingValues"; table = createTable(tableName, basicSchema, null); KuduSession session = syncClient.newSession(); Insert insert = createInsert(0); PartialRow row = insert.getRow(); // Overwrite all the normal columns. int magicNumber = 9999; row.addInt(1, magicNumber); row.addInt(2, magicNumber); row.addBoolean(4, false); // Spam the string column since it's backed by an array. for (int i = 0; i <= magicNumber; i++) { row.addString(3, i + ""); } // We're supposed to keep a constant size. assertEquals(5, row.getVarLengthData().size()); session.apply(insert); KuduScanner scanner = syncClient.newScannerBuilder(table).build(); RowResult rr = scanner.nextRows().next(); assertEquals(magicNumber, rr.getInt(1)); assertEquals(magicNumber, rr.getInt(2)); assertEquals(magicNumber + "", rr.getString(3)); assertEquals(false, rr.getBoolean(4)); // Test setting a value post-apply. try { row.addInt(1, 0); fail("Row should be frozen and throw"); } catch (IllegalStateException ex) { // Ok. } }