Skip to content

Commit

Permalink
Move test Block creation methods to presto-tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cberner committed Aug 16, 2015
1 parent 99de6e5 commit eaeda42
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 39 deletions.
Expand Up @@ -76,9 +76,6 @@

import static com.facebook.presto.hive.HivePartitionKey.HIVE_DEFAULT_DYNAMIC_PARTITION;
import static com.facebook.presto.hive.HiveTestUtils.SESSION;
import static com.facebook.presto.hive.HiveTestUtils.arrayBlockOf;
import static com.facebook.presto.hive.HiveTestUtils.mapBlockOf;
import static com.facebook.presto.hive.HiveTestUtils.rowBlockOf;
import static com.facebook.presto.hive.HiveType.getType;
import static com.facebook.presto.hive.HiveUtil.isStructuralType;
import static com.facebook.presto.spi.type.BigintType.BIGINT;
Expand All @@ -87,6 +84,9 @@
import static com.facebook.presto.spi.type.VarbinaryType.VARBINARY;
import static com.facebook.presto.spi.type.VarcharType.VARCHAR;
import static com.facebook.presto.testing.MaterializedResult.materializeSourceDataStream;
import static com.facebook.presto.tests.StructuralTestUtil.arrayBlockOf;
import static com.facebook.presto.tests.StructuralTestUtil.mapBlockOf;
import static com.facebook.presto.tests.StructuralTestUtil.rowBlockOf;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Predicates.not;
import static com.google.common.collect.Iterables.filter;
Expand Down
Expand Up @@ -20,10 +20,6 @@
import com.facebook.presto.hive.rcfile.RcFilePageSourceFactory;
import com.facebook.presto.spi.ColumnHandle;
import com.facebook.presto.spi.ConnectorSession;
import com.facebook.presto.spi.block.Block;
import com.facebook.presto.spi.block.BlockBuilder;
import com.facebook.presto.spi.block.BlockBuilderStatus;
import com.facebook.presto.spi.block.InterleavedBlockBuilder;
import com.facebook.presto.spi.type.Type;
import com.facebook.presto.testing.TestingConnectorSession;
import com.facebook.presto.type.TypeRegistry;
Expand All @@ -34,7 +30,6 @@
import java.util.List;

import static com.facebook.presto.spi.type.TimeZoneKey.UTC_KEY;
import static com.facebook.presto.type.TypeUtils.appendToBlockBuilder;
import static java.util.Locale.ENGLISH;

public final class HiveTestUtils
Expand Down Expand Up @@ -76,30 +71,4 @@ public static List<Type> getTypes(List<? extends ColumnHandle> columnHandles)
}
return types.build();
}

public static Block arrayBlockOf(Type elementType, Object... values)
{
BlockBuilder blockBuilder = elementType.createBlockBuilder(new BlockBuilderStatus(), 1024);
for (Object value : values) {
appendToBlockBuilder(elementType, value, blockBuilder);
}
return blockBuilder.build();
}

public static Block mapBlockOf(Type keyType, Type valueType, Object key, Object value)
{
BlockBuilder blockBuilder = new InterleavedBlockBuilder(ImmutableList.of(keyType, valueType), new BlockBuilderStatus(), 1024);
appendToBlockBuilder(keyType, key, blockBuilder);
appendToBlockBuilder(valueType, value, blockBuilder);
return blockBuilder.build();
}

public static Block rowBlockOf(List<Type> parameterTypes, Object... values)
{
InterleavedBlockBuilder blockBuilder = new InterleavedBlockBuilder(parameterTypes, new BlockBuilderStatus(), 1024);
for (int i = 0; i < values.length; i++) {
appendToBlockBuilder(parameterTypes.get(i), values[i], blockBuilder);
}
return blockBuilder.build();
}
}
Expand Up @@ -62,11 +62,11 @@
import java.util.Properties;
import java.util.TimeZone;

import static com.facebook.presto.hive.HiveTestUtils.arrayBlockOf;
import static com.facebook.presto.hive.HiveTestUtils.getTypes;
import static com.facebook.presto.hive.HiveTestUtils.rowBlockOf;
import static com.facebook.presto.spi.type.BigintType.BIGINT;
import static com.facebook.presto.spi.type.VarcharType.VARCHAR;
import static com.facebook.presto.tests.StructuralTestUtil.arrayBlockOf;
import static com.facebook.presto.tests.StructuralTestUtil.rowBlockOf;
import static com.google.common.base.Predicates.not;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
Expand Down
Expand Up @@ -42,16 +42,16 @@
import java.util.Optional;
import java.util.TreeMap;

import static com.facebook.presto.hive.HiveTestUtils.arrayBlockOf;
import static com.facebook.presto.hive.HiveTestUtils.mapBlockOf;
import static com.facebook.presto.hive.HiveTestUtils.rowBlockOf;
import static com.facebook.presto.hive.util.SerDeUtils.getBlockObject;
import static com.facebook.presto.hive.util.SerDeUtils.serializeObject;
import static com.facebook.presto.spi.type.BigintType.BIGINT;
import static com.facebook.presto.spi.type.BooleanType.BOOLEAN;
import static com.facebook.presto.spi.type.DoubleType.DOUBLE;
import static com.facebook.presto.spi.type.VarbinaryType.VARBINARY;
import static com.facebook.presto.spi.type.VarcharType.VARCHAR;
import static com.facebook.presto.tests.StructuralTestUtil.arrayBlockOf;
import static com.facebook.presto.tests.StructuralTestUtil.mapBlockOf;
import static com.facebook.presto.tests.StructuralTestUtil.rowBlockOf;
import static io.airlift.slice.Slices.utf8Slice;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory.ObjectInspectorOptions;
Expand Down
@@ -0,0 +1,91 @@
/*
* Licensed 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 com.facebook.presto.tests;

import com.facebook.presto.spi.block.Block;
import com.facebook.presto.spi.block.BlockBuilder;
import com.facebook.presto.spi.block.BlockBuilderStatus;
import com.facebook.presto.spi.block.InterleavedBlockBuilder;
import com.facebook.presto.spi.type.Type;
import com.google.common.collect.ImmutableList;

import java.util.List;

import static com.facebook.presto.type.TypeUtils.appendToBlockBuilder;

public final class StructuralTestUtil
{
private StructuralTestUtil() {}

public static boolean arrayBlocksEqual(Type elementType, Block block1, Block block2)
{
if (block1.getPositionCount() != block2.getPositionCount()) {
return false;
}
for (int i = 0; i < block1.getPositionCount(); i++) {
if (block1.isNull(i) != block2.isNull(i)) {
return false;
}
if (!block1.isNull(i) && !elementType.equalTo(block1, i, block2, i)) {
return false;
}
}
return true;
}

public static boolean mapBlocksEqual(Type keyType, Type valueType, Block block1, Block block2)
{
if (block1.getPositionCount() != block2.getPositionCount()) {
return false;
}
for (int i = 0; i < block1.getPositionCount(); i += 2) {
if (block1.isNull(i) != block2.isNull(i) || block1.isNull(i + 1) != block2.isNull(i + 1)) {
return false;
}
if (!block1.isNull(i) && !keyType.equalTo(block1, i, block2, i)) {
return false;
}
if (!block1.isNull(i + 1) && !valueType.equalTo(block1, i + 1, block2, i + 1)) {
return false;
}
}
return true;
}

public static Block arrayBlockOf(Type elementType, Object... values)
{
BlockBuilder blockBuilder = elementType.createBlockBuilder(new BlockBuilderStatus(), 1024);
for (Object value : values) {
appendToBlockBuilder(elementType, value, blockBuilder);
}
return blockBuilder.build();
}

public static Block mapBlockOf(Type keyType, Type valueType, Object key, Object value)
{
BlockBuilder blockBuilder = new InterleavedBlockBuilder(ImmutableList.of(keyType, valueType), new BlockBuilderStatus(), 1024);
appendToBlockBuilder(keyType, key, blockBuilder);
appendToBlockBuilder(valueType, value, blockBuilder);
return blockBuilder.build();
}

public static Block rowBlockOf(List<Type> parameterTypes, Object... values)
{
InterleavedBlockBuilder blockBuilder = new InterleavedBlockBuilder(parameterTypes, new BlockBuilderStatus(), 1024);
for (int i = 0; i < values.length; i++) {
appendToBlockBuilder(parameterTypes.get(i), values[i], blockBuilder);
}
return blockBuilder.build();
}
}

0 comments on commit eaeda42

Please sign in to comment.