/** * 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.hive.hcatalog.pig; import static org.junit.Assume.assumeTrue; import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.hadoop.hive.ql.CommandNeedRetryException; import org.apache.hadoop.hive.ql.io.IOConstants; import org.apache.hadoop.hive.ql.io.StorageFormats; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @RunWith(Parameterized.class) public class TestHCatStorer extends AbstractHCatStorerTest { static Logger LOG = LoggerFactory.getLogger(TestHCatStorer.class); private static final Set<String> allTests = new HashSet<String>() { { add("testBagNStruct"); add("testDateCharTypes"); add("testDynamicPartitioningMultiPartColsInDataNoSpec"); add("testDynamicPartitioningMultiPartColsInDataPartialSpec"); add("testDynamicPartitioningMultiPartColsNoDataInDataNoSpec"); add("testEmptyStore"); add("testMultiPartColsInData"); add("testNoAlias"); add("testPartColsInData"); add("testPartitionPublish"); add("testStoreFuncAllSimpleTypes"); add("testStoreFuncSimple"); add("testStoreInPartiitonedTbl"); add("testStoreMultiTables"); add("testStoreWithNoCtorArgs"); add("testStoreWithNoSchema"); add("testWriteChar"); add("testWriteDate"); add("testWriteDate2"); add("testWriteDate3"); add("testWriteDecimal"); add("testWriteDecimalX"); add("testWriteDecimalXY"); add("testWriteSmallint"); add("testWriteTimestamp"); add("testWriteTinyint"); add("testWriteVarchar"); } }; /** * We're disabling these tests as they're going to be run from their individual * Test<FileFormat>HCatStorer classes. However, we're still leaving this test in case new file * formats in future are added. */ private static final Map<String, Set<String>> DISABLED_STORAGE_FORMATS = new HashMap<String, Set<String>>() { { put(IOConstants.AVRO, allTests); put(IOConstants.ORCFILE, allTests); put(IOConstants.PARQUETFILE, allTests); put(IOConstants.RCFILE, allTests); put(IOConstants.SEQUENCEFILE, allTests); put(IOConstants.TEXTFILE, allTests); } }; private String storageFormat; @Parameterized.Parameters public static Collection<Object[]> generateParameters() { return StorageFormats.names(); } public TestHCatStorer(String storageFormat) { this.storageFormat = storageFormat; } @Override String getStorageFormat() { return null; } @Test @Override public void testWriteTinyint() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteTinyint(); } @Test @Override public void testWriteSmallint() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteSmallint(); } @Test @Override public void testWriteChar() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteChar(); } @Test @Override public void testWriteVarchar() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteVarchar(); } @Test @Override public void testWriteDecimalXY() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteDecimalXY(); } @Test @Override public void testWriteDecimalX() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteDecimalX(); } @Test @Override public void testWriteDecimal() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteDecimal(); } @Test @Override public void testWriteDate() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteDate(); } @Test @Override public void testWriteDate3() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteDate3(); } @Test @Override public void testWriteDate2() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteDate2(); } @Test @Override public void testWriteTimestamp() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testWriteTimestamp(); } @Test @Override public void testDateCharTypes() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testDateCharTypes(); } @Test @Override public void testPartColsInData() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testPartColsInData(); } @Test @Override public void testMultiPartColsInData() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testMultiPartColsInData(); } @Test @Override public void testStoreInPartiitonedTbl() throws Exception { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testStoreInPartiitonedTbl(); } @Test @Override public void testNoAlias() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testNoAlias(); } @Test @Override public void testStoreMultiTables() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testStoreMultiTables(); } @Test @Override public void testStoreWithNoSchema() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testStoreWithNoSchema(); } @Test @Override public void testStoreWithNoCtorArgs() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testStoreWithNoCtorArgs(); } @Test @Override public void testEmptyStore() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testEmptyStore(); } @Test @Override public void testBagNStruct() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testBagNStruct(); } @Test @Override public void testStoreFuncAllSimpleTypes() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testStoreFuncAllSimpleTypes(); } @Test @Override public void testStoreFuncSimple() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testStoreFuncSimple(); } @Test @Override public void testDynamicPartitioningMultiPartColsInDataPartialSpec() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testDynamicPartitioningMultiPartColsInDataPartialSpec(); } @Test @Override public void testDynamicPartitioningMultiPartColsInDataNoSpec() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testDynamicPartitioningMultiPartColsInDataNoSpec(); } @Test @Override public void testDynamicPartitioningMultiPartColsNoDataInDataNoSpec() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testDynamicPartitioningMultiPartColsNoDataInDataNoSpec(); } @Test @Override public void testPartitionPublish() throws IOException, CommandNeedRetryException { assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS)); super.testPartitionPublish(); } }