@Test public void test() throws Exception { log.info("You can ignore exceptions and scary stack traces from this test"); IdService idService = new CachingIdService(5, new MapIdService(), "test"); Configuration conf = getTestUtil().getConfiguration(); HTablePool pool = new HTablePool(conf, Integer.MAX_VALUE); DbHarness<LongOp> dbHarness = new HBaseDbHarness<LongOp>( pool, "XY".getBytes(), "nonexistentTable".getBytes(), "nonexistentCf".getBytes(), LongOp.DESERIALIZER, idService, CommitType.INCREMENT, 5, 2, 2, null); DataCube<LongOp> cube; Dimension<String> zipcode = new Dimension<String>("zipcode", new StringToBytesBucketer(), true, 5); Rollup zipRollup = new Rollup(zipcode); List<Dimension<?>> dimensions = ImmutableList.<Dimension<?>>of(zipcode); List<Rollup> rollups = ImmutableList.of(zipRollup); cube = new DataCube<LongOp>(dimensions, rollups); DataCubeIo<LongOp> dataCubeIo = new DataCubeIo<LongOp>(cube, dbHarness, 1, Long.MAX_VALUE, SyncLevel.BATCH_ASYNC); dataCubeIo.writeAsync(new LongOp(1), new WriteBuilder(cube).at(zipcode, "97212")); dataCubeIo.writeAsync(new LongOp(1), new WriteBuilder(cube).at(zipcode, "97212")); dataCubeIo.flush(); try { dataCubeIo.writeAsync(new LongOp(1), new WriteBuilder(cube).at(zipcode, "97212")); Assert.fail("Cube should not have accepted more writes after an error!"); } catch (AsyncException e) { // This exception *should* happen. Because we wrote to a nonexistent table. Assert.assertTrue(e.getCause().getCause().getCause() instanceof TableNotFoundException); } }
/** Write all batched/cached changes to the backing database. */ public void flush() throws InterruptedException { dataCubeIo.flush(); }