@Test public void testMultipleProvidersMixedSizes() throws Exception { RemoteServiceSet serviceSet = RemoteServiceSet.getLocalServiceSet(); try (Drillbit bit1 = new Drillbit(CONFIG, serviceSet); Drillbit bit2 = new Drillbit(CONFIG, serviceSet); DrillClient client = new DrillClient(CONFIG, serviceSet.getCoordinator()); ) { bit1.run(); bit2.run(); client.connect(); List<QueryResultBatch> results = client.runQuery( org.apache.drill.exec.proto.UserBitShared.QueryType.PHYSICAL, Files.toString( FileUtils.getResourceAsFile("/mergerecv/multiple_providers.json"), Charsets.UTF_8)); int count = 0; RecordBatchLoader batchLoader = new RecordBatchLoader(client.getAllocator()); // print the results Long lastBlueValue = null; for (QueryResultBatch b : results) { count += b.getHeader().getRowCount(); for (int valueIdx = 0; valueIdx < b.getHeader().getRowCount(); valueIdx++) { List<Object> row = Lists.newArrayList(); batchLoader.load(b.getHeader().getDef(), b.getData()); for (VectorWrapper vw : batchLoader) { row.add( vw.getValueVector().getField().toExpr() + ":" + vw.getValueVector().getAccessor().getObject(valueIdx)); if (vw.getValueVector() .getField() .getAsSchemaPath() .getRootSegment() .getPath() .equals("blue")) { // assert order is ascending if (((Long) vw.getValueVector().getAccessor().getObject(valueIdx)).longValue() == 0) continue; // ignore initial 0's from sort if (lastBlueValue != null) assertTrue( ((Long) vw.getValueVector().getAccessor().getObject(valueIdx)).longValue() >= ((Long) lastBlueValue).longValue()); lastBlueValue = (Long) vw.getValueVector().getAccessor().getObject(valueIdx); } } for (Object cell : row) { int len = cell.toString().length(); System.out.print(cell + " "); for (int i = 0; i < (30 - len); ++i) System.out.print(" "); } System.out.println(); } b.release(); batchLoader.clear(); } assertEquals(400, count); } }
@Test public void twoBitTwoExchange() throws Exception { RemoteServiceSet serviceSet = RemoteServiceSet.getLocalServiceSet(); try (Drillbit bit1 = new Drillbit(CONFIG, serviceSet); Drillbit bit2 = new Drillbit(CONFIG, serviceSet); DrillClient client = new DrillClient(CONFIG, serviceSet.getCoordinator()); ) { bit1.run(); bit2.run(); client.connect(); List<QueryResultBatch> results = client.runQuery( org.apache.drill.exec.proto.UserBitShared.QueryType.PHYSICAL, Files.toString( FileUtils.getResourceAsFile("/mergerecv/merging_receiver.json"), Charsets.UTF_8)); int count = 0; RecordBatchLoader batchLoader = new RecordBatchLoader(client.getAllocator()); // print the results for (QueryResultBatch b : results) { count += b.getHeader().getRowCount(); for (int valueIdx = 0; valueIdx < b.getHeader().getRowCount(); valueIdx++) { List<Object> row = Lists.newArrayList(); batchLoader.load(b.getHeader().getDef(), b.getData()); for (VectorWrapper<?> vw : batchLoader) row.add( vw.getValueVector().getField().toExpr() + ":" + vw.getValueVector().getAccessor().getObject(valueIdx)); for (Object cell : row) { if (cell == null) { System.out.print("<null> "); continue; } int len = cell.toString().length(); System.out.print(cell + " "); for (int i = 0; i < (30 - len); ++i) System.out.print(" "); } System.out.println(); } b.release(); batchLoader.clear(); } assertEquals(200, count); } }