# 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.

# This configuration has two hosts
hosts = hiveptest-2 hiveptest-3
host.hiveptest-2.user = hiveptest
host.hiveptest-2.host = hiveptest-2.some.domain.com
host.hiveptest-2.threads = 2
# Each host has two disks
host.hiveptest-2.localDirs = /media/ephemeral0/hiveptest/,/media/ephemeral1/hiveptest/
host.hiveptest-3.user = hiveptest
host.hiveptest-3.host = hiveptest-3.some.domain.com
host.hiveptest-3.threads = 2
host.hiveptest-3.localDirs = /media/ephemeral0/hiveptest/,/media/ephemeral1/hiveptest/

privateKey = /home/hiveptest/.ssh/id_rsa
repository = git://github.com/apache/hive.git
repositoryName = apache-github
branch = trunk
workingDirectory = /media/ephemeral0/hiveptest/
antArgs = -Dtest.continue.on.failure=true
# antEnvOpts can be used to set ANT_OPTS properties

unitTests.directories = build/anttasks/test/classes build/beeline/test/classes build/cli/test/classes \
   build/common/test/classes build/contrib/test/classes build/hbase-handler/test/classes \
   build/hwi/test/classes build/jdbc/test/classes build/metastore/test/classes build/odbc/test/classes \
   build/ql/test/classes build/serde/test/classes build/service/test/classes build/shims/test/classes \
   build/testutils/test/classes \
   hcatalog/core/build/test/classes hcatalog/hcatalog-pig-adapter/build/test/classes \
   hcatalog/server-extensions/build/test/classes hcatalog/webhcat/svr/build/test/classes \
   hcatalog/webhcat/java-client/build/test/classes hcatalog/storage-handlers/hbase/build/test/classes

unitTests.isolate = TestRemoteHiveMetaStore TestEmbeddedHiveMetaStore TestSetUGIOnBothClientServer TestSetUGIOnOnlyClient TestSetUGIOnOnlyServer TestHiveRemote TestAuthorizationPreEventListener TestRemoteHiveMetaStoreIpAddress TestMetaStoreEventListener TestRemoteUGIHiveMetaStoreIpAddress TestDefaultHiveMetastoreAuthorizationProvider TestExecDriver TestMetaStoreAuthorization TestHiveMetaStoreWithEnvironmentContext TestHBaseMinimrCliDriver TestHadoop20SAuthBridge TestHCatPartitionPublish TestMultiOutputFormat TestHCatMultiOutputFormat TestHBaseInputFormat TestIDGenerator TestRevisionManager TestZNodeSetUp TestHBaseBulkOutputFormat TestHBaseDirectOutputFormat TestHBaseInputFormat TestSnapshots TestHCatStorerWrapper
unitTests.exclude = TestHiveMetaStore TestSerDe TestBeeLineDriver TestHiveServer2Concurrency TestJdbcDriver2 TestHiveServer2Concurrency TestBeeLineDriver

qFileTests = clientPositive miniMr clientNegative miniMrNegative

qFileTest.clientPositive.driver = TestCliDriver
qFileTest.clientPositive.directory = ql/src/test/queries/clientpositive
qFileTest.clientPositive.batchSize = 15
qFileTest.clientPositive.queryFilesProperty = qfile
qFileTest.clientPositive.exclude = minimr
qFileTest.clientPositive.groups.minimr = input16_cc.q scriptfile1.q bucket4.q bucketmapjoin6.q disable_merge_for_bucketing.q reduce_deduplicate.q smb_mapjoin_8.q join1.q groupby2.q bucketizedhiveinputformat.q bucketmapjoin7.q optrstat_groupby.q bucket_num_reducers.q 

qFileTest.miniMr.driver = TestMinimrCliDriver
qFileTest.miniMr.directory = ql/src/test/queries/clientpositive
qFileTest.miniMr.batchSize = 1000
qFileTest.miniMr.queryFilesProperty = minimr.query.files
qFileTest.miniMr.include = normal
qFileTest.miniMr.isolate = flaky
# normal are tests that run in minimr mode via build-common.xml
qFileTest.miniMr.groups.normal = input16_cc.q scriptfile1.q bucket4.q bucketmapjoin6.q disable_merge_for_bucketing.q reduce_deduplicate.q smb_mapjoin_8.q join1.q groupby2.q bucketizedhiveinputformat.q bucketmapjoin7.q optrstat_groupby.q bucket_num_reducers.q
qFileTest.miniMr.groups.flaky = bucketizedhiveinputformat.q

qFileTest.miniMrNegative.driver = TestNegativeMinimrCliDriver
qFileTest.miniMrNegative.directory = ql/src/test/queries/clientnegative
qFileTest.miniMrNegative.batchSize = 1000
qFileTest.miniMrNegative.queryFilesProperty = minimr.query.negative.files
qFileTest.miniMrNegative.include = normal
qFileTest.miniMrNegative.isolate = flaky
# normal are tests that run in minimr mode via build-common.xml
qFileTest.miniMrNegative.groups.normal = cluster_tasklog_retrieval.q minimr_broken_pipe.q mapreduce_stack_trace.q mapreduce_stack_trace_turnoff.q mapreduce_stack_trace_hadoop20.q mapreduce_stack_trace_turnoff_hadoop20.q
qFileTest.miniMrNegative.groups.flaky = mapreduce_stack_trace_hadoop20.q

qFileTest.clientNegative.driver = TestNegativeCliDriver
qFileTest.clientNegative.directory = ql/src/test/queries/clientnegative
qFileTest.clientNegative.batchSize = 1000
qFileTest.clientNegative.queryFilesProperty = qfile
qFileTest.clientNegative.exclude = miniMrNormal failing
# stats_aggregator_error_1.q fails in both negative client and minimr mode
qFileTest.clientNegative.groups.failing = stats_aggregator_error_1.q 
# normal are run via minimr
qFileTest.clientNegative.groups.miniMrNormal = cluster_tasklog_retrieval.q minimr_broken_pipe.q mapreduce_stack_trace.q mapreduce_stack_trace_turnoff.q mapreduce_stack_trace_hadoop20.q mapreduce_stack_trace_turnoff_hadoop20.q
