diff options
author | Steven Phillips <sphillips@maprtech.com> | 2013-10-21 23:03:49 -0700 |
---|---|---|
committer | Steven Phillips <sphillips@maprtech.com> | 2013-10-30 15:31:37 -0700 |
commit | fe94aa8147beb8c67fca5a184748b151c2b4b7ba (patch) | |
tree | aafffaeee1b1adebe36a34591fbce6607129659a /exec/java-exec/src/test/java/org | |
parent | 5ca503c141f76d8c01c89d0e3a58e1c117ef051f (diff) |
DRILL-230: Addressing comments in code review, abstract out references to HazelCache and add comments
Diffstat (limited to 'exec/java-exec/src/test/java/org')
3 files changed, 116 insertions, 21 deletions
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestVectorCache.java b/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestVectorCache.java index f08993232..39ec7207b 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestVectorCache.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestVectorCache.java @@ -18,26 +18,21 @@ package org.apache.drill.exec.cache; import com.beust.jcommander.internal.Lists; -import com.hazelcast.core.MultiMap; -import com.hazelcast.nio.FastByteArrayInputStream; -import com.hazelcast.nio.FastByteArrayOutputStream; -import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.drill.common.config.DrillConfig; import org.apache.drill.common.expression.ExpressionPosition; import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.common.types.TypeProtos; import org.apache.drill.common.types.Types; import org.apache.drill.exec.expr.TypeHelper; -import org.apache.drill.exec.ops.FragmentContext; import org.apache.drill.exec.record.MaterializedField; +import org.apache.drill.exec.record.VectorContainer; +import org.apache.drill.exec.record.VectorWrapper; import org.apache.drill.exec.server.Drillbit; import org.apache.drill.exec.server.DrillbitContext; import org.apache.drill.exec.server.RemoteServiceSet; import org.apache.drill.exec.vector.*; import org.junit.Test; -import java.io.ByteArrayInputStream; -import java.io.DataOutput; import java.util.List; public class TestVectorCache { @@ -69,20 +64,17 @@ public class TestVectorCache { intVector.getMutator().setValueCount(4); binVector.getMutator().setValueCount(4); - VectorWrap wrap = new VectorWrap(vectorList); - /* - FastByteArrayOutputStream out = new FastByteArrayOutputStream(); - wrap.writeData(out); - FastByteArrayInputStream in = new FastByteArrayInputStream(out.getBytes()); - VectorWrap newWrap = new VectorWrap(); - newWrap.readData(in); - */ - MultiMap<String, VectorWrap> mmap = cache.getMultiMap("testMap"); + VectorContainer container = new VectorContainer(); + container.addCollection(vectorList); + VectorContainerSerializable wrap = new VectorContainerSerializable(container); + + DistributedMultiMap<VectorContainerSerializable> mmap = cache.getMultiMap(VectorContainerSerializable.class); mmap.put("vectors", wrap); - VectorWrap newWrap = mmap.get("vectors").iterator().next(); + VectorContainerSerializable newWrap = (VectorContainerSerializable)mmap.get("vectors").iterator().next(); - List<ValueVector> vectors = newWrap.get(); - for (ValueVector vv : vectors) { + VectorContainer newContainer = newWrap.get(); + for (VectorWrapper w : newContainer) { + ValueVector vv = w.getValueVector(); int values = vv.getAccessor().getValueCount(); for (int i = 0; i < values; i++) { Object o = vv.getAccessor().getObject(i); diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/orderedpartitioner/TestOrderedPartitionExchange.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/orderedpartitioner/TestOrderedPartitionExchange.java index 850a40abe..d35a09e98 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/orderedpartitioner/TestOrderedPartitionExchange.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/orderedpartitioner/TestOrderedPartitionExchange.java @@ -46,12 +46,22 @@ import java.util.List; import static org.junit.Assert.assertEquals; - +/** + * Tests the OrderedPartitionExchange Operator + */ public class TestOrderedPartitionExchange extends PopUnitTestBase { static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(TestOrderedPartitionExchange.class); + /** + * Starts two drillbits and runs a physical plan with a Mock scan, project, OrderedParititionExchange, Union Exchange, + * and sort. The final sort is done first on the partition column, and verifies that the partitions are correct, in that + * all rows in partition 0 should come in the sort order before any row in partition 1, etc. Also verifies that the standard + * deviation of the size of the partitions is less than one tenth the mean size of the partitions, because we expect all + * the partitions to be roughly equal in size. + * @throws Exception + */ @Test - public void twoBitTwoExchangeTwoEntryRun() throws Exception { + public void twoBitTwoExchangeRun() throws Exception { RemoteServiceSet serviceSet = RemoteServiceSet.getLocalServiceSet(); try(Drillbit bit1 = new Drillbit(CONFIG, serviceSet); diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/util/BatchPrinter.java b/exec/java-exec/src/test/java/org/apache/drill/exec/util/BatchPrinter.java new file mode 100644 index 000000000..aa68752b7 --- /dev/null +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/util/BatchPrinter.java @@ -0,0 +1,93 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.drill.exec.util; + +import com.beust.jcommander.internal.Lists; +import org.apache.commons.lang.StringUtils; +import org.apache.drill.exec.exception.SchemaChangeException; +import org.apache.drill.exec.record.VectorAccessible; +import org.apache.drill.exec.record.VectorWrapper; +import org.apache.drill.exec.record.selection.SelectionVector4; +import org.apache.drill.exec.rpc.RpcException; +import org.apache.drill.exec.vector.ValueVector; + +import java.util.List; + +/** + * This is a tool for printing the content of record batches to screen. Used for debugging. + */ +public class BatchPrinter { + public static void printHyperBatch(VectorAccessible batch) { + List<String> columns = Lists.newArrayList(); + List<ValueVector> vectors = Lists.newArrayList(); + int numBatches = 0; + for (VectorWrapper vw : batch) { + columns.add(vw.getValueVectors()[0].getField().getName()); + numBatches = vw.getValueVectors().length; + } + int width = columns.size(); + for (int i = 0; i < numBatches; i++) { + int rows = batch.iterator().next().getValueVectors()[i].getMetadata().getValueCount(); + for (int j = 0; j < rows; j++) { + for (VectorWrapper vw : batch) { + Object o = vw.getValueVectors()[i].getAccessor().getObject(j); + if (o instanceof byte[]) { + String value = new String((byte[]) o); + System.out.printf("| %-15s",value.length() <= 15 ? value : value.substring(0, 14)); + } else { + String value = o.toString(); + System.out.printf("| %-15s",value.length() <= 15 ? value : value.substring(0,14)); + } + } + System.out.printf("|\n"); + } + } + System.out.printf("|\n"); + } + public static void printBatch(VectorAccessible batch) { + List<String> columns = Lists.newArrayList(); + List<ValueVector> vectors = Lists.newArrayList(); + for (VectorWrapper vw : batch) { + columns.add(vw.getValueVector().getField().getName()); + vectors.add(vw.getValueVector()); + } + int width = columns.size(); + int rows = vectors.get(0).getMetadata().getValueCount(); + for (int row = 0; row < rows; row++) { + if (row%50 == 0) { + System.out.println(StringUtils.repeat("-", width * 17 + 1)); + for (String column : columns) { + System.out.printf("| %-15s", width <= 15 ? column : column.substring(0, 14)); + } + System.out.printf("|\n"); + System.out.println(StringUtils.repeat("-", width*17 + 1)); + } + for (ValueVector vv : vectors) { + Object o = vv.getAccessor().getObject(row); + if (o instanceof byte[]) { + String value = new String((byte[]) o); + System.out.printf("| %-15s",value.length() <= 15 ? value : value.substring(0, 14)); + } else { + String value = o.toString(); + System.out.printf("| %-15s",value.length() <= 15 ? value : value.substring(0,14)); + } + } + System.out.printf("|\n"); + } + } +} |