aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/test/java/org
diff options
context:
space:
mode:
authorSteven Phillips <sphillips@maprtech.com>2013-10-21 23:03:49 -0700
committerSteven Phillips <sphillips@maprtech.com>2013-10-30 15:31:37 -0700
commitfe94aa8147beb8c67fca5a184748b151c2b4b7ba (patch)
treeaafffaeee1b1adebe36a34591fbce6607129659a /exec/java-exec/src/test/java/org
parent5ca503c141f76d8c01c89d0e3a58e1c117ef051f (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')
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestVectorCache.java30
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/orderedpartitioner/TestOrderedPartitionExchange.java14
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/exec/util/BatchPrinter.java93
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");
+ }
+ }
+}